-
-
Notifications
You must be signed in to change notification settings - Fork 105
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Documenter.jl
committed
Dec 15, 2023
1 parent
2b59366
commit cbbcdec
Showing
12 changed files
with
101 additions
and
169 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-12-11T15:15:23","documenter_version":"1.2.1"}} | ||
{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-12-15T14:50:30","documenter_version":"1.2.1"}} |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>The SciML init and solve Functions · SciMLBase.jl</title><meta name="title" content="The SciML init and solve Functions · SciMLBase.jl"/><meta property="og:title" content="The SciML init and solve Functions · SciMLBase.jl"/><meta property="twitter:title" content="The SciML init and solve Functions · SciMLBase.jl"/><meta name="description" content="Documentation for SciMLBase.jl."/><meta property="og:description" content="Documentation for SciMLBase.jl."/><meta property="twitter:description" content="Documentation for SciMLBase.jl."/><meta property="og:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Init_Solve/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Init_Solve/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Init_Solve/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.png" alt="SciMLBase.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">SciMLBase.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><span class="tocitem">Interfaces</span><ul><li><a class="tocitem" href="../Problems/">SciMLProblems</a></li><li><a class="tocitem" href="../SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.)</a></li><li><a class="tocitem" href="../Algorithms/">SciMLAlgorithms</a></li><li><a class="tocitem" href="../Solutions/">SciMLSolutions</a></li><li class="is-active"><a class="tocitem" href>The SciML init and solve Functions</a><ul class="internal"><li><a class="tocitem" href="#init-and-the-Iterator-Interface"><span><code>init</code> and the Iterator Interface</span></a></li><li><a class="tocitem" href="#__solve-and-High-Level-Handling"><span>__solve and High-Level Handling</span></a></li></ul></li><li><a class="tocitem" href="../Common_Keywords/">Common Keyword Arguments</a></li><li><a class="tocitem" href="../Differentiation/">Automatic Differentiation and Sensitivity Algorithms (Adjoints)</a></li><li><a class="tocitem" href="../PDE/">The PDE Definition Interface</a></li></ul></li><li><span class="tocitem">Fundamentals</span><ul><li><a class="tocitem" href="../../fundamentals/FAQ/">Frequently Asked Questions</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Interfaces</a></li><li class="is-active"><a href>The SciML init and solve Functions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>The SciML init and solve Functions</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/SciML/SciMLBase.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/SciML/SciMLBase.jl/blob/master/docs/src/interfaces/Init_Solve.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="The-SciML-init-and-solve-Functions"><a class="docs-heading-anchor" href="#The-SciML-init-and-solve-Functions">The SciML init and solve Functions</a><a id="The-SciML-init-and-solve-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#The-SciML-init-and-solve-Functions" title="Permalink"></a></h1><p><code>solve</code> function has the default definition</p><pre><code class="language-julia hljs">solve(args...; kwargs...) = solve!(init(args...; kwargs...))</code></pre><p>The interface for the three functions is as follows:</p><pre><code class="language-julia hljs">init(::ProblemType, args...; kwargs...) :: IteratorType | ||
solve!(::IteratorType) :: SolutionType</code></pre><p>where <code>ProblemType</code>, <code>IteratorType</code>, and <code>SolutionType</code> are the types defined in your package.</p><p>To avoid method ambiguity, the first argument of <code>solve</code>, <code>solve!</code>, and <code>init</code> <em>must</em> be dispatched on the type defined in your package. For example, do <em>not</em> define a method such as</p><pre><code class="language-julia hljs">init(::AbstractVector, ::AlgorithmType)</code></pre><h2 id="init-and-the-Iterator-Interface"><a class="docs-heading-anchor" href="#init-and-the-Iterator-Interface"><code>init</code> and the Iterator Interface</a><a id="init-and-the-Iterator-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#init-and-the-Iterator-Interface" title="Permalink"></a></h2><p><code>init</code>'s return gives an <code>IteratorType</code> which is designed to allow the user to have more direct handling over the internal solving process. Because of this internal nature, the <code>IteratorType</code> has a less unified interface across problem types than other portions like <code>ProblemType</code> and <code>SolutionType</code>. For example, for differential equations this is the <a href="https://docs.sciml.ai/DiffEqDocs/stable/basics/integrator/">Integrator Interface</a> designed for mutating solutions in a manner for callback implementation, which is distinctly different from the <a href="https://docs.sciml.ai/LinearSolve/stable/tutorials/caching_interface">LinearSolve init interface</a> which is designed for caching efficiency with reusing factorizations.</p><h2 id="__solve-and-High-Level-Handling"><a class="docs-heading-anchor" href="#__solve-and-High-Level-Handling">__solve and High-Level Handling</a><a id="__solve-and-High-Level-Handling-1"></a><a class="docs-heading-anchor-permalink" href="#__solve-and-High-Level-Handling" title="Permalink"></a></h2><p>While <code>init</code> and <code>solve</code> are the common entry point for users, solver packages will mostly define dispatches on <code>SciMLBase.__init</code> and <code>SciMLBase.__solve</code>. The reason is because this allows for <code>SciMLBase.init</code> and <code>SciMLBase.solve</code> to have common implementations across all solvers for doing things such as checking for common errors and throwing high level messages. Solvers can opt-out of the high level error handling by directly defining <code>SciMLBase.init</code> and <code>SciMLBase.solve</code> instead, though this is not recommended in order to allow for uniformity of the error messages.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Solutions/">« SciMLSolutions</a><a class="docs-footer-nextpage" href="../Common_Keywords/">Common Keyword Arguments »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <span class="colophon-date" title="Monday 11 December 2023 15:15">Monday 11 December 2023</span>. Using Julia version 1.9.4.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> | ||
solve!(::IteratorType) :: SolutionType</code></pre><p>where <code>ProblemType</code>, <code>IteratorType</code>, and <code>SolutionType</code> are the types defined in your package.</p><p>To avoid method ambiguity, the first argument of <code>solve</code>, <code>solve!</code>, and <code>init</code> <em>must</em> be dispatched on the type defined in your package. For example, do <em>not</em> define a method such as</p><pre><code class="language-julia hljs">init(::AbstractVector, ::AlgorithmType)</code></pre><h2 id="init-and-the-Iterator-Interface"><a class="docs-heading-anchor" href="#init-and-the-Iterator-Interface"><code>init</code> and the Iterator Interface</a><a id="init-and-the-Iterator-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#init-and-the-Iterator-Interface" title="Permalink"></a></h2><p><code>init</code>'s return gives an <code>IteratorType</code> which is designed to allow the user to have more direct handling over the internal solving process. Because of this internal nature, the <code>IteratorType</code> has a less unified interface across problem types than other portions like <code>ProblemType</code> and <code>SolutionType</code>. For example, for differential equations this is the <a href="https://docs.sciml.ai/DiffEqDocs/stable/basics/integrator/">Integrator Interface</a> designed for mutating solutions in a manner for callback implementation, which is distinctly different from the <a href="https://docs.sciml.ai/LinearSolve/stable/tutorials/caching_interface">LinearSolve init interface</a> which is designed for caching efficiency with reusing factorizations.</p><h2 id="__solve-and-High-Level-Handling"><a class="docs-heading-anchor" href="#__solve-and-High-Level-Handling">__solve and High-Level Handling</a><a id="__solve-and-High-Level-Handling-1"></a><a class="docs-heading-anchor-permalink" href="#__solve-and-High-Level-Handling" title="Permalink"></a></h2><p>While <code>init</code> and <code>solve</code> are the common entry point for users, solver packages will mostly define dispatches on <code>SciMLBase.__init</code> and <code>SciMLBase.__solve</code>. The reason is because this allows for <code>SciMLBase.init</code> and <code>SciMLBase.solve</code> to have common implementations across all solvers for doing things such as checking for common errors and throwing high level messages. Solvers can opt-out of the high level error handling by directly defining <code>SciMLBase.init</code> and <code>SciMLBase.solve</code> instead, though this is not recommended in order to allow for uniformity of the error messages.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Solutions/">« SciMLSolutions</a><a class="docs-footer-nextpage" href="../Common_Keywords/">Common Keyword Arguments »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="auto">Automatic (OS)</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.2.1 on <span class="colophon-date" title="Friday 15 December 2023 14:50">Friday 15 December 2023</span>. Using Julia version 1.9.4.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> |
Oops, something went wrong.