From 9082cfa5f7d993ddb9f47f8dab88dacfca69418c Mon Sep 17 00:00:00 2001 From: "Documenter.jl" <documenter@juliadocs.github.io> Date: Sat, 6 Jan 2024 17:25:14 +0000 Subject: [PATCH] build based on 6d7d87d --- dev/.documenter-siteinfo.json | 2 +- dev/fundamentals/FAQ/index.html | 2 +- dev/index.html | 2 +- dev/interfaces/Algorithms/index.html | 2 +- dev/interfaces/Array_and_Number/index.html | 2 +- dev/interfaces/Common_Keywords/index.html | 2 +- dev/interfaces/Differentiation/index.html | 2 +- dev/interfaces/Init_Solve/index.html | 2 +- dev/interfaces/PDE/index.html | 2 +- dev/interfaces/Problems/index.html | 24 +++++++++++----------- dev/interfaces/SciMLFunctions/index.html | 2 +- dev/interfaces/Solutions/index.html | 2 +- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index a13d4f457..e642772c0 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2024-01-06T16:54:44","documenter_version":"1.2.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2024-01-06T17:25:07","documenter_version":"1.2.1"}} \ No newline at end of file diff --git a/dev/fundamentals/FAQ/index.html b/dev/fundamentals/FAQ/index.html index 876765554..fad5de0e9 100644 --- a/dev/fundamentals/FAQ/index.html +++ b/dev/fundamentals/FAQ/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Frequently Asked Questions · SciMLBase.jl</title><meta name="title" content="Frequently Asked Questions · SciMLBase.jl"/><meta property="og:title" content="Frequently Asked Questions · SciMLBase.jl"/><meta property="twitter:title" content="Frequently Asked Questions · 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/fundamentals/FAQ/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/fundamentals/FAQ/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/fundamentals/FAQ/"/><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="../../interfaces/Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><li><a class="tocitem" href="../../interfaces/Problems/">SciMLProblems</a></li><li><a class="tocitem" href="../../interfaces/SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.)</a></li><li><a class="tocitem" href="../../interfaces/Algorithms/">SciMLAlgorithms</a></li><li><a class="tocitem" href="../../interfaces/Solutions/">SciMLSolutions</a></li><li><a class="tocitem" href="../../interfaces/Init_Solve/">The SciML init and solve Functions</a></li><li><a class="tocitem" href="../../interfaces/Common_Keywords/">Common Keyword Arguments</a></li><li><a class="tocitem" href="../../interfaces/Differentiation/">Automatic Differentiation and Sensitivity Algorithms (Adjoints)</a></li><li><a class="tocitem" href="../../interfaces/PDE/">The PDE Definition Interface</a></li></ul></li><li><span class="tocitem">Fundamentals</span><ul><li class="is-active"><a class="tocitem" href>Frequently Asked Questions</a><ul class="internal"><li><a class="tocitem" href="#What-are-the-code-styling-rules-for-SciML?"><span>What are the code styling rules for SciML?</span></a></li><li><a class="tocitem" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?"><span>Where do I find more information on the internals of some packages?</span></a></li><li><a class="tocitem" href="#What-are-the-community-practices-that-SciML-developers-should-use?"><span>What are the community practices that SciML developers should use?</span></a></li><li><a class="tocitem" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?"><span>Are there developer programs to help fund parties interested in helping develop SciML?</span></a></li></ul></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">Fundamentals</a></li><li class="is-active"><a href>Frequently Asked Questions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Frequently Asked Questions</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/fundamentals/FAQ.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="Frequently-Asked-Questions"><a class="docs-heading-anchor" href="#Frequently-Asked-Questions">Frequently Asked Questions</a><a id="Frequently-Asked-Questions-1"></a><a class="docs-heading-anchor-permalink" href="#Frequently-Asked-Questions" title="Permalink"></a></h1><h2 id="What-are-the-code-styling-rules-for-SciML?"><a class="docs-heading-anchor" href="#What-are-the-code-styling-rules-for-SciML?">What are the code styling rules for SciML?</a><a id="What-are-the-code-styling-rules-for-SciML?-1"></a><a class="docs-heading-anchor-permalink" href="#What-are-the-code-styling-rules-for-SciML?" title="Permalink"></a></h2><p>All SciML libraries are supposed to follow <a href="https://docs.sciml.ai/SciMLStyle/stable/">SciMLStyle</a>. Any deviation from that style is something to be fixed.</p><h2 id="Where-do-I-find-more-information-on-the-internals-of-some-packages?"><a class="docs-heading-anchor" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?">Where do I find more information on the internals of some packages?</a><a id="Where-do-I-find-more-information-on-the-internals-of-some-packages?-1"></a><a class="docs-heading-anchor-permalink" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?" title="Permalink"></a></h2><p>The <a href="https://docs.sciml.ai/DiffEqDevDocs/stable/">SciML Developer Documentation</a> describes the internals of some of the larger solver libraries at length.</p><h2 id="What-are-the-community-practices-that-SciML-developers-should-use?"><a class="docs-heading-anchor" href="#What-are-the-community-practices-that-SciML-developers-should-use?">What are the community practices that SciML developers should use?</a><a id="What-are-the-community-practices-that-SciML-developers-should-use?-1"></a><a class="docs-heading-anchor-permalink" href="#What-are-the-community-practices-that-SciML-developers-should-use?" title="Permalink"></a></h2><p>See <a href="https://docs.sciml.ai/ColPrac/stable/">ColPrac: Contributor's Guide on Collaborative Practices for Community Packages</a></p><h2 id="Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?"><a class="docs-heading-anchor" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?">Are there developer programs to help fund parties interested in helping develop SciML?</a><a id="Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?-1"></a><a class="docs-heading-anchor-permalink" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?" title="Permalink"></a></h2><p>Yes! See <a href="https://sciml.ai/dev/">the SciML Developer Programs</a> webpage.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../interfaces/PDE/">« The PDE Definition Interface</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Frequently Asked Questions · SciMLBase.jl</title><meta name="title" content="Frequently Asked Questions · SciMLBase.jl"/><meta property="og:title" content="Frequently Asked Questions · SciMLBase.jl"/><meta property="twitter:title" content="Frequently Asked Questions · 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/fundamentals/FAQ/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/fundamentals/FAQ/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/fundamentals/FAQ/"/><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="../../interfaces/Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><li><a class="tocitem" href="../../interfaces/Problems/">SciMLProblems</a></li><li><a class="tocitem" href="../../interfaces/SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.)</a></li><li><a class="tocitem" href="../../interfaces/Algorithms/">SciMLAlgorithms</a></li><li><a class="tocitem" href="../../interfaces/Solutions/">SciMLSolutions</a></li><li><a class="tocitem" href="../../interfaces/Init_Solve/">The SciML init and solve Functions</a></li><li><a class="tocitem" href="../../interfaces/Common_Keywords/">Common Keyword Arguments</a></li><li><a class="tocitem" href="../../interfaces/Differentiation/">Automatic Differentiation and Sensitivity Algorithms (Adjoints)</a></li><li><a class="tocitem" href="../../interfaces/PDE/">The PDE Definition Interface</a></li></ul></li><li><span class="tocitem">Fundamentals</span><ul><li class="is-active"><a class="tocitem" href>Frequently Asked Questions</a><ul class="internal"><li><a class="tocitem" href="#What-are-the-code-styling-rules-for-SciML?"><span>What are the code styling rules for SciML?</span></a></li><li><a class="tocitem" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?"><span>Where do I find more information on the internals of some packages?</span></a></li><li><a class="tocitem" href="#What-are-the-community-practices-that-SciML-developers-should-use?"><span>What are the community practices that SciML developers should use?</span></a></li><li><a class="tocitem" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?"><span>Are there developer programs to help fund parties interested in helping develop SciML?</span></a></li></ul></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">Fundamentals</a></li><li class="is-active"><a href>Frequently Asked Questions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Frequently Asked Questions</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/fundamentals/FAQ.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="Frequently-Asked-Questions"><a class="docs-heading-anchor" href="#Frequently-Asked-Questions">Frequently Asked Questions</a><a id="Frequently-Asked-Questions-1"></a><a class="docs-heading-anchor-permalink" href="#Frequently-Asked-Questions" title="Permalink"></a></h1><h2 id="What-are-the-code-styling-rules-for-SciML?"><a class="docs-heading-anchor" href="#What-are-the-code-styling-rules-for-SciML?">What are the code styling rules for SciML?</a><a id="What-are-the-code-styling-rules-for-SciML?-1"></a><a class="docs-heading-anchor-permalink" href="#What-are-the-code-styling-rules-for-SciML?" title="Permalink"></a></h2><p>All SciML libraries are supposed to follow <a href="https://docs.sciml.ai/SciMLStyle/stable/">SciMLStyle</a>. Any deviation from that style is something to be fixed.</p><h2 id="Where-do-I-find-more-information-on-the-internals-of-some-packages?"><a class="docs-heading-anchor" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?">Where do I find more information on the internals of some packages?</a><a id="Where-do-I-find-more-information-on-the-internals-of-some-packages?-1"></a><a class="docs-heading-anchor-permalink" href="#Where-do-I-find-more-information-on-the-internals-of-some-packages?" title="Permalink"></a></h2><p>The <a href="https://docs.sciml.ai/DiffEqDevDocs/stable/">SciML Developer Documentation</a> describes the internals of some of the larger solver libraries at length.</p><h2 id="What-are-the-community-practices-that-SciML-developers-should-use?"><a class="docs-heading-anchor" href="#What-are-the-community-practices-that-SciML-developers-should-use?">What are the community practices that SciML developers should use?</a><a id="What-are-the-community-practices-that-SciML-developers-should-use?-1"></a><a class="docs-heading-anchor-permalink" href="#What-are-the-community-practices-that-SciML-developers-should-use?" title="Permalink"></a></h2><p>See <a href="https://docs.sciml.ai/ColPrac/stable/">ColPrac: Contributor's Guide on Collaborative Practices for Community Packages</a></p><h2 id="Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?"><a class="docs-heading-anchor" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?">Are there developer programs to help fund parties interested in helping develop SciML?</a><a id="Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?-1"></a><a class="docs-heading-anchor-permalink" href="#Are-there-developer-programs-to-help-fund-parties-interested-in-helping-develop-SciML?" title="Permalink"></a></h2><p>Yes! See <a href="https://sciml.ai/dev/">the SciML Developer Programs</a> webpage.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../interfaces/PDE/">« The PDE Definition Interface</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/index.html b/dev/index.html index e07e7b9a9..0241b40d7 100644 --- a/dev/index.html +++ b/dev/index.html @@ -236,4 +236,4 @@ [8e850b90] libblastrampoline_jll v5.8.0+1 [8e850ede] nghttp2_jll v1.52.0+1 [3f19e933] p7zip_jll v17.4.0+2 -Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`</code></pre></details><p>You can also download the <a href="https://github.com/SciML/SciMLBase.jl/tree/gh-pages/v2.16.4/assets/Manifest.toml">manifest</a> file and the <a href="https://github.com/SciML/SciMLBase.jl/tree/gh-pages/v2.16.4/assets/Project.toml">project</a> file.</p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="interfaces/Array_and_Number/">SciML Container (Array) and Number Interfaces »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`</code></pre></details><p>You can also download the <a href="https://github.com/SciML/SciMLBase.jl/tree/gh-pages/v2.16.4/assets/Manifest.toml">manifest</a> file and the <a href="https://github.com/SciML/SciMLBase.jl/tree/gh-pages/v2.16.4/assets/Project.toml">project</a> file.</p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="interfaces/Array_and_Number/">SciML Container (Array) and Number Interfaces »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Algorithms/index.html b/dev/interfaces/Algorithms/index.html index 1b3d4e416..d1ee07496 100644 --- a/dev/interfaces/Algorithms/index.html +++ b/dev/interfaces/Algorithms/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciMLAlgorithms · SciMLBase.jl</title><meta name="title" content="SciMLAlgorithms · SciMLBase.jl"/><meta property="og:title" content="SciMLAlgorithms · SciMLBase.jl"/><meta property="twitter:title" content="SciMLAlgorithms · 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/Algorithms/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Algorithms/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Algorithms/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><li><a class="tocitem" href="../Problems/">SciMLProblems</a></li><li><a class="tocitem" href="../SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.)</a></li><li class="is-active"><a class="tocitem" href>SciMLAlgorithms</a><ul class="internal"><li><a class="tocitem" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface"><span>Definition of the AbstractSciMLAlgorithm Interface</span></a></li><li><a class="tocitem" href="#Common-Algorithm-Keyword-Arguments"><span>Common Algorithm Keyword Arguments</span></a></li><li><a class="tocitem" href="#Traits"><span>Traits</span></a></li></ul></li><li><a class="tocitem" href="../Solutions/">SciMLSolutions</a></li><li><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciMLAlgorithms</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciMLAlgorithms</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/Algorithms.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="SciMLAlgorithms"><a class="docs-heading-anchor" href="#SciMLAlgorithms">SciMLAlgorithms</a><a id="SciMLAlgorithms-1"></a><a class="docs-heading-anchor-permalink" href="#SciMLAlgorithms" title="Permalink"></a></h1><h2 id="Definition-of-the-AbstractSciMLAlgorithm-Interface"><a class="docs-heading-anchor" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface">Definition of the AbstractSciMLAlgorithm Interface</a><a id="Definition-of-the-AbstractSciMLAlgorithm-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface" title="Permalink"></a></h2><p><code>SciMLAlgorithms</code> are defined as types which have dispatches to the function signature:</p><pre><code class="language-julia hljs">CommonSolve.solve(prob::AbstractSciMLProblem,alg::AbstractSciMLAlgorithm;kwargs...)</code></pre><h3 id="Algorithm-Specific-Arguments"><a class="docs-heading-anchor" href="#Algorithm-Specific-Arguments">Algorithm-Specific Arguments</a><a id="Algorithm-Specific-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Algorithm-Specific-Arguments" title="Permalink"></a></h3><p>Note that because the keyword arguments of <code>solve</code> are designed to be common across the whole problem type, algorithms should have the algorithm-specific keyword arguments defined as part of the algorithm constructor. For example, <code>Rodas5</code> has a choice of <code>autodiff::Bool</code> which is not common across all ODE solvers, and thus <code>autodiff</code> is a algorithm-specific keyword argument handled via <code>Rodas5(autodiff=true)</code>.</p><h3 id="Remake"><a class="docs-heading-anchor" href="#Remake">Remake</a><a id="Remake-1"></a><a class="docs-heading-anchor-permalink" href="#Remake" title="Permalink"></a></h3><p>Note that <code>remake</code> is applicable to <code>AbstractSciMLAlgorithm</code> types, but this is not used in the public API. It's used for solvers to swap out components like ForwardDiff chunk sizes.</p><h2 id="Common-Algorithm-Keyword-Arguments"><a class="docs-heading-anchor" href="#Common-Algorithm-Keyword-Arguments">Common Algorithm Keyword Arguments</a><a id="Common-Algorithm-Keyword-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Algorithm-Keyword-Arguments" title="Permalink"></a></h2><p>Commonly used algorithm keyword arguments are:</p><h2 id="Traits"><a class="docs-heading-anchor" href="#Traits">Traits</a><a id="Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Traits" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isautodifferentiable" href="#SciMLBase.isautodifferentiable"><code>SciMLBase.isautodifferentiable</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isautodifferentiable(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with direct automatic differentiation, i.e. can have algorithms like ForwardDiff or ReverseDiff attempt to differentiate directly through the solver.</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L1-L10">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.allows_arbitrary_number_types" href="#SciMLBase.allows_arbitrary_number_types"><code>SciMLBase.allows_arbitrary_number_types</code></a> — <span class="docstring-category">Function</span></header><section><div><p>allows<em>arbitrary</em>number_types(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with direct automatic differentiation, i.e. can have algorithms like ForwardDiff or ReverseDiff attempt to differentiate directly through the solver.</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L34-L43">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.allowscomplex" href="#SciMLBase.allowscomplex"><code>SciMLBase.allowscomplex</code></a> — <span class="docstring-category">Function</span></header><section><div><p>allowscomplex(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with having complex numbers as the state variables.</p><p>Defaults to false.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L46-L53">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isadaptive" href="#SciMLBase.isadaptive"><code>SciMLBase.isadaptive</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isadaptive(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses adaptivity, i.e. has a non-quasi-static compute graph.</p><p>Defaults to true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L56-L63">source</a></section><section><div><pre><code class="language-julia hljs">is_integrator_adaptive(i::DEIntegrator)</code></pre><p>Checks if the integrator is adaptive</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/integrator_interface.jl#L894-L898">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isdiscrete" href="#SciMLBase.isdiscrete"><code>SciMLBase.isdiscrete</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isdiscrete(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm allows for discrete state values, such as integers.</p><p>Defaults to false.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L67-L74">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.forwarddiffs_model" href="#SciMLBase.forwarddiffs_model"><code>SciMLBase.forwarddiffs_model</code></a> — <span class="docstring-category">Function</span></header><section><div><p>forwarddiffs_model(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses ForwardDiff.jl on the model function is called with ForwardDiff.jl</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L13-L20">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.forwarddiffs_model_time" href="#SciMLBase.forwarddiffs_model_time"><code>SciMLBase.forwarddiffs_model_time</code></a> — <span class="docstring-category">Function</span></header><section><div><p>forwarddiffs<em>model</em>time(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses ForwardDiff.jl on the model <code>f(u,p,t)</code> function is called with ForwardDiff.jl on the <code>t</code> argument.</p><p>Defaults to false as only a few pure-Julia algorithms (Rosenbrock methods) have this as true</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/alg_traits.jl#L23-L31">source</a></section></article><h3 id="Abstract-SciML-Algorithms"><a class="docs-heading-anchor" href="#Abstract-SciML-Algorithms">Abstract SciML Algorithms</a><a id="Abstract-SciML-Algorithms-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Algorithms" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLAlgorithm" href="#SciMLBase.AbstractSciMLAlgorithm"><code>SciMLBase.AbstractSciMLAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L215">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDEAlgorithm" href="#SciMLBase.AbstractDEAlgorithm"><code>SciMLBase.AbstractDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDEAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L220">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearAlgorithm" href="#SciMLBase.AbstractLinearAlgorithm"><code>SciMLBase.AbstractLinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L225">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearAlgorithm" href="#SciMLBase.AbstractNonlinearAlgorithm"><code>SciMLBase.AbstractNonlinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L230">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntervalNonlinearAlgorithm" href="#SciMLBase.AbstractIntervalNonlinearAlgorithm"><code>SciMLBase.AbstractIntervalNonlinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntervalNonlinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L235">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractQuadratureAlgorithm" href="#SciMLBase.AbstractQuadratureAlgorithm"><code>SciMLBase.AbstractQuadratureAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L240">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractOptimizationAlgorithm" href="#SciMLBase.AbstractOptimizationAlgorithm"><code>SciMLBase.AbstractOptimizationAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractOptimizationAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L245">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSteadyStateAlgorithm" href="#SciMLBase.AbstractSteadyStateAlgorithm"><code>SciMLBase.AbstractSteadyStateAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSteadyStateAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L250">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEAlgorithm" href="#SciMLBase.AbstractODEAlgorithm"><code>SciMLBase.AbstractODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L260">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSecondOrderODEAlgorithm" href="#SciMLBase.AbstractSecondOrderODEAlgorithm"><code>SciMLBase.AbstractSecondOrderODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSecondOrderODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L265">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEAlgorithm" href="#SciMLBase.AbstractRODEAlgorithm"><code>SciMLBase.AbstractRODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L270">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEAlgorithm" href="#SciMLBase.AbstractSDEAlgorithm"><code>SciMLBase.AbstractSDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEAlgorithm" href="#SciMLBase.AbstractDAEAlgorithm"><code>SciMLBase.AbstractDAEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L280">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEAlgorithm" href="#SciMLBase.AbstractDDEAlgorithm"><code>SciMLBase.AbstractDDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L285">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEAlgorithm" href="#SciMLBase.AbstractSDDEAlgorithm"><code>SciMLBase.AbstractSDDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L290">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../SciMLFunctions/">« SciMLFunctions (Jacobians, Sparsity, Etc.)</a><a class="docs-footer-nextpage" href="../Solutions/">SciMLSolutions »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciMLAlgorithms · SciMLBase.jl</title><meta name="title" content="SciMLAlgorithms · SciMLBase.jl"/><meta property="og:title" content="SciMLAlgorithms · SciMLBase.jl"/><meta property="twitter:title" content="SciMLAlgorithms · 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/Algorithms/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Algorithms/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Algorithms/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><li><a class="tocitem" href="../Problems/">SciMLProblems</a></li><li><a class="tocitem" href="../SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.)</a></li><li class="is-active"><a class="tocitem" href>SciMLAlgorithms</a><ul class="internal"><li><a class="tocitem" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface"><span>Definition of the AbstractSciMLAlgorithm Interface</span></a></li><li><a class="tocitem" href="#Common-Algorithm-Keyword-Arguments"><span>Common Algorithm Keyword Arguments</span></a></li><li><a class="tocitem" href="#Traits"><span>Traits</span></a></li></ul></li><li><a class="tocitem" href="../Solutions/">SciMLSolutions</a></li><li><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciMLAlgorithms</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciMLAlgorithms</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/Algorithms.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="SciMLAlgorithms"><a class="docs-heading-anchor" href="#SciMLAlgorithms">SciMLAlgorithms</a><a id="SciMLAlgorithms-1"></a><a class="docs-heading-anchor-permalink" href="#SciMLAlgorithms" title="Permalink"></a></h1><h2 id="Definition-of-the-AbstractSciMLAlgorithm-Interface"><a class="docs-heading-anchor" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface">Definition of the AbstractSciMLAlgorithm Interface</a><a id="Definition-of-the-AbstractSciMLAlgorithm-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Definition-of-the-AbstractSciMLAlgorithm-Interface" title="Permalink"></a></h2><p><code>SciMLAlgorithms</code> are defined as types which have dispatches to the function signature:</p><pre><code class="language-julia hljs">CommonSolve.solve(prob::AbstractSciMLProblem,alg::AbstractSciMLAlgorithm;kwargs...)</code></pre><h3 id="Algorithm-Specific-Arguments"><a class="docs-heading-anchor" href="#Algorithm-Specific-Arguments">Algorithm-Specific Arguments</a><a id="Algorithm-Specific-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Algorithm-Specific-Arguments" title="Permalink"></a></h3><p>Note that because the keyword arguments of <code>solve</code> are designed to be common across the whole problem type, algorithms should have the algorithm-specific keyword arguments defined as part of the algorithm constructor. For example, <code>Rodas5</code> has a choice of <code>autodiff::Bool</code> which is not common across all ODE solvers, and thus <code>autodiff</code> is a algorithm-specific keyword argument handled via <code>Rodas5(autodiff=true)</code>.</p><h3 id="Remake"><a class="docs-heading-anchor" href="#Remake">Remake</a><a id="Remake-1"></a><a class="docs-heading-anchor-permalink" href="#Remake" title="Permalink"></a></h3><p>Note that <code>remake</code> is applicable to <code>AbstractSciMLAlgorithm</code> types, but this is not used in the public API. It's used for solvers to swap out components like ForwardDiff chunk sizes.</p><h2 id="Common-Algorithm-Keyword-Arguments"><a class="docs-heading-anchor" href="#Common-Algorithm-Keyword-Arguments">Common Algorithm Keyword Arguments</a><a id="Common-Algorithm-Keyword-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Algorithm-Keyword-Arguments" title="Permalink"></a></h2><p>Commonly used algorithm keyword arguments are:</p><h2 id="Traits"><a class="docs-heading-anchor" href="#Traits">Traits</a><a id="Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Traits" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isautodifferentiable" href="#SciMLBase.isautodifferentiable"><code>SciMLBase.isautodifferentiable</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isautodifferentiable(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with direct automatic differentiation, i.e. can have algorithms like ForwardDiff or ReverseDiff attempt to differentiate directly through the solver.</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L1-L10">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.allows_arbitrary_number_types" href="#SciMLBase.allows_arbitrary_number_types"><code>SciMLBase.allows_arbitrary_number_types</code></a> — <span class="docstring-category">Function</span></header><section><div><p>allows<em>arbitrary</em>number_types(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with direct automatic differentiation, i.e. can have algorithms like ForwardDiff or ReverseDiff attempt to differentiate directly through the solver.</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L34-L43">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.allowscomplex" href="#SciMLBase.allowscomplex"><code>SciMLBase.allowscomplex</code></a> — <span class="docstring-category">Function</span></header><section><div><p>allowscomplex(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm is compatible with having complex numbers as the state variables.</p><p>Defaults to false.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L46-L53">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isadaptive" href="#SciMLBase.isadaptive"><code>SciMLBase.isadaptive</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isadaptive(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses adaptivity, i.e. has a non-quasi-static compute graph.</p><p>Defaults to true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L56-L63">source</a></section><section><div><pre><code class="language-julia hljs">is_integrator_adaptive(i::DEIntegrator)</code></pre><p>Checks if the integrator is adaptive</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/integrator_interface.jl#L894-L898">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isdiscrete" href="#SciMLBase.isdiscrete"><code>SciMLBase.isdiscrete</code></a> — <span class="docstring-category">Function</span></header><section><div><p>isdiscrete(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm allows for discrete state values, such as integers.</p><p>Defaults to false.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L67-L74">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.forwarddiffs_model" href="#SciMLBase.forwarddiffs_model"><code>SciMLBase.forwarddiffs_model</code></a> — <span class="docstring-category">Function</span></header><section><div><p>forwarddiffs_model(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses ForwardDiff.jl on the model function is called with ForwardDiff.jl</p><p>Defaults to false as only pure-Julia algorithms can have this be true.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L13-L20">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.forwarddiffs_model_time" href="#SciMLBase.forwarddiffs_model_time"><code>SciMLBase.forwarddiffs_model_time</code></a> — <span class="docstring-category">Function</span></header><section><div><p>forwarddiffs<em>model</em>time(alg::AbstractDEAlgorithm)</p><p>Trait declaration for whether an algorithm uses ForwardDiff.jl on the model <code>f(u,p,t)</code> function is called with ForwardDiff.jl on the <code>t</code> argument.</p><p>Defaults to false as only a few pure-Julia algorithms (Rosenbrock methods) have this as true</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/alg_traits.jl#L23-L31">source</a></section></article><h3 id="Abstract-SciML-Algorithms"><a class="docs-heading-anchor" href="#Abstract-SciML-Algorithms">Abstract SciML Algorithms</a><a id="Abstract-SciML-Algorithms-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Algorithms" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLAlgorithm" href="#SciMLBase.AbstractSciMLAlgorithm"><code>SciMLBase.AbstractSciMLAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L215">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDEAlgorithm" href="#SciMLBase.AbstractDEAlgorithm"><code>SciMLBase.AbstractDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDEAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L220">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearAlgorithm" href="#SciMLBase.AbstractLinearAlgorithm"><code>SciMLBase.AbstractLinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L225">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearAlgorithm" href="#SciMLBase.AbstractNonlinearAlgorithm"><code>SciMLBase.AbstractNonlinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L230">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntervalNonlinearAlgorithm" href="#SciMLBase.AbstractIntervalNonlinearAlgorithm"><code>SciMLBase.AbstractIntervalNonlinearAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntervalNonlinearAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L235">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractQuadratureAlgorithm" href="#SciMLBase.AbstractQuadratureAlgorithm"><code>SciMLBase.AbstractQuadratureAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralAlgorithm <: SciMLBase.AbstractSciMLAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L240">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractOptimizationAlgorithm" href="#SciMLBase.AbstractOptimizationAlgorithm"><code>SciMLBase.AbstractOptimizationAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractOptimizationAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L245">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSteadyStateAlgorithm" href="#SciMLBase.AbstractSteadyStateAlgorithm"><code>SciMLBase.AbstractSteadyStateAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSteadyStateAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L250">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEAlgorithm" href="#SciMLBase.AbstractODEAlgorithm"><code>SciMLBase.AbstractODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L260">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSecondOrderODEAlgorithm" href="#SciMLBase.AbstractSecondOrderODEAlgorithm"><code>SciMLBase.AbstractSecondOrderODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSecondOrderODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L265">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEAlgorithm" href="#SciMLBase.AbstractRODEAlgorithm"><code>SciMLBase.AbstractRODEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L270">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEAlgorithm" href="#SciMLBase.AbstractSDEAlgorithm"><code>SciMLBase.AbstractSDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEAlgorithm" href="#SciMLBase.AbstractDAEAlgorithm"><code>SciMLBase.AbstractDAEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L280">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEAlgorithm" href="#SciMLBase.AbstractDDEAlgorithm"><code>SciMLBase.AbstractDDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L285">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEAlgorithm" href="#SciMLBase.AbstractSDDEAlgorithm"><code>SciMLBase.AbstractSDDEAlgorithm</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEAlgorithm <: SciMLBase.AbstractDEAlgorithm</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L290">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../SciMLFunctions/">« SciMLFunctions (Jacobians, Sparsity, Etc.)</a><a class="docs-footer-nextpage" href="../Solutions/">SciMLSolutions »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Array_and_Number/index.html b/dev/interfaces/Array_and_Number/index.html index 3ebe35b63..97443a961 100644 --- a/dev/interfaces/Array_and_Number/index.html +++ b/dev/interfaces/Array_and_Number/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciML Container (Array) and Number Interfaces · SciMLBase.jl</title><meta name="title" content="SciML Container (Array) and Number Interfaces · SciMLBase.jl"/><meta property="og:title" content="SciML Container (Array) and Number Interfaces · SciMLBase.jl"/><meta property="twitter:title" content="SciML Container (Array) and Number Interfaces · 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/Array_and_Number/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Array_and_Number/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Array_and_Number/"/><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 class="is-active"><a class="tocitem" href>SciML Container (Array) and Number Interfaces</a><ul class="internal"><li><a class="tocitem" href="#Note-About-Wrapped-Solvers"><span>Note About Wrapped Solvers</span></a></li><li><a class="tocitem" href="#SciML-Number-Types"><span>SciML Number Types</span></a></li><li><a class="tocitem" href="#SciML-Container-(Array)-Types"><span>SciML Container (Array) Types</span></a></li></ul></li><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><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciML Container (Array) and Number Interfaces</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciML Container (Array) and Number Interfaces</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/Array_and_Number.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="arrayandnumber"><a class="docs-heading-anchor" href="#arrayandnumber">SciML Container (Array) and Number Interfaces</a><a id="arrayandnumber-1"></a><a class="docs-heading-anchor-permalink" href="#arrayandnumber" title="Permalink"></a></h1><p>We live in a society, and therefore there are rules. In this tutorial we outline the rules which are required on container and number types which are allowable in SciML tools.</p><div class="admonition is-category-warn"><header class="admonition-header">Warn</header><div class="admonition-body"><p>In general as of 2023, strict adherence to this interface is an early work-in-progress. If anything does not conform to the documented interface, please open an issue.</p></div></div><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>There are many types which can work with a specific solver that do satisfy this interface. Many times as part of prototyping you may want to side-step the high level interface checks in order to simply test whether a new type is working. To do this, set <code>interface_checks = false</code> as a keyword argument to <code>init</code>/<code>solve</code> to bypass any of the internal interface checks. This means you will no longer get a nice high-level error message and instead it will attempt to use the type without restrictions. Note that not every problem/solver has implemented this new keyword argument as of 2023.</p></div></div><h2 id="Note-About-Wrapped-Solvers"><a class="docs-heading-anchor" href="#Note-About-Wrapped-Solvers">Note About Wrapped Solvers</a><a id="Note-About-Wrapped-Solvers-1"></a><a class="docs-heading-anchor-permalink" href="#Note-About-Wrapped-Solvers" title="Permalink"></a></h2><p>Due to limitations of wrapped solvers, any solver that is a wrapped solver from an existing C/Fortran code is inherently limited to <code>Float64</code> and <code>Vector{Float64}</code> for its operations. This includes packages like Sundials.jl, LSODA.jl, DASKR.jl, MINPACK.jl, and many more. This is fundamental to these solvers and it is not expected that they will allow the full set of SciML types in the future. If more abstract number/container definitions are required, then these are not the appropriate solvers to use.</p><h2 id="SciML-Number-Types"><a class="docs-heading-anchor" href="#SciML-Number-Types">SciML Number Types</a><a id="SciML-Number-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Number-Types" title="Permalink"></a></h2><p>The number types are the types used to define the dependent variables (i.e. <code>u0</code>) and the independent variables (<code>t</code> or <code>tspan</code>). These two types can be different, and can have different restrictions depending on the type of solver which is employed. The following rules for a Number type are held in general:</p><ul><li>Number types can be used in SciML directly or in containers. If a problem defines a value like <code>u0</code> using a Number type, the out-of-place form must be used for the problem definition.</li><li><code>x::T + y::T = z::T</code></li><li><code>x::T * y::T = z::T</code></li><li><code>oneunit(x::T)::T</code></li><li><code>one(x::T) * oneunit(x::T) = z::T</code></li><li><code>t::T2 * x::T + y::T = z::T</code> for <code>T2</code> a time type and <code>T</code> the dependent variable type (this includes the <code>muladd</code> equivalent form).</li></ul><p>Additionally, the following rules apply to subsets of uses:</p><h3 id="Adaptive-Number-Types"><a class="docs-heading-anchor" href="#Adaptive-Number-Types">Adaptive Number Types</a><a id="Adaptive-Number-Types-1"></a><a class="docs-heading-anchor-permalink" href="#Adaptive-Number-Types" title="Permalink"></a></h3><ul><li><code>x::T / y::T = z::T</code></li><li>Default choices of norms can assume <code>sqrt(x::T)::T</code> exists. If <code>internalnorm</code> is overridden then this may not be required (for example, changing the norm to inf-norm).</li><li><code>x::T ^ y::T = z::T</code></li></ul><h3 id="Time-Types-(Independent-Variables)"><a class="docs-heading-anchor" href="#Time-Types-(Independent-Variables)">Time Types (Independent Variables)</a><a id="Time-Types-(Independent-Variables)-1"></a><a class="docs-heading-anchor-permalink" href="#Time-Types-(Independent-Variables)" title="Permalink"></a></h3><ul><li>If a solver is time adaptive, the time type must be a floating point number. <code>Rational</code> is only allowed for non-adaptive solves.</li></ul><h2 id="SciML-Container-(Array)-Types"><a class="docs-heading-anchor" href="#SciML-Container-(Array)-Types">SciML Container (Array) Types</a><a id="SciML-Container-(Array)-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Container-(Array)-Types" title="Permalink"></a></h2><p>Container types are types which hold number types. They can be used to define objects like the state vector (<code>u0</code>) of a problem. The following operations are required in a container type to be used with SciML solvers:</p><ul><li>Broadcast is defined <a href="https://docs.julialang.org/en/v1/manual/interfaces/#man-interfaces-broadcasting">according to the Julia broadcast interface</a>.</li><li>The container type correctly defines <a href="https://docs.sciml.ai/ArrayInterface/stable/">interface overloads to satisfy the ArrayInterface.jl specification</a>.</li><li><code>ArrayInterface.zeromatrix(x::T)::T2</code> defines a compatible matrix type (see below)</li><li><code>eltype(x::T)::T2</code> is a compatible Number type.</li><li><code>x::T .+ y::T = z::T</code> (i.e. broadcast similar is defined to be type-presurving)</li><li>Indexing is only required if <code>ArrayInterface.fast_scalar_indexing(x::T)==true</code>. If true, scalar indexing <code>x[i]</code> is assumed to be defined and run through all variables.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>"<code>eltype(x::T)::T2</code> is a compatible Number type" excludes <code>Array{Array{T}}</code> types of types. However, recursive vectors can conformed to the interface with zero overhead using tools from RecursiveArrayTools.jl such as <code>VectorOfArray(x)</code>. Since this greatly simplifies the interfaces and the ability to check for correctness, doing this wrapping is highly recommended and there are no plans to relax this requirement.</p></div></div><p>Additionally, the following rules apply to subsets of uses:</p><h3 id="SciML-Mutable-Array-Types"><a class="docs-heading-anchor" href="#SciML-Mutable-Array-Types">SciML Mutable Array Types</a><a id="SciML-Mutable-Array-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Mutable-Array-Types" title="Permalink"></a></h3><ul><li><code>similar(x::T)::T</code></li><li><code>zero(x::T)::T</code></li><li><code>z::T .= x::T .+ y::T</code> is defined</li><li><code>z::T .= x::T .* y::T</code> is defined</li><li><code>z::T .= t::T2 .* x::T</code> where <code>T2</code> is the time type (a Number) and <code>T</code> is the container type.</li><li>(Optional) <code>Base.resize!(x,i)</code> is required for <code>resize!(integrator,i)</code> to be supported.</li></ul><h3 id="SciML-Matrix-(Operator)-Type"><a class="docs-heading-anchor" href="#SciML-Matrix-(Operator)-Type">SciML Matrix (Operator) Type</a><a id="SciML-Matrix-(Operator)-Type-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Matrix-(Operator)-Type" title="Permalink"></a></h3><p>Note that the matrix type may not match the type of the initial container <code>u0</code>. An example is <code>ComponentMatrix</code> as the matrix structure corresponding to a <code>ComponentArray</code>. However, the following actions are assumed to hold on the resulting matrix type:</p><ul><li><code>solve(LinearProblem(A::T,b::T2),linsolve)</code> must be defined for a solver to work on a given SciML matrix type <code>T2</code>.</li><li>If the matrix is an operator, i.e. a lazy construct, it should conform to the <a href="https://docs.sciml.ai/SciMLOperators/stable/">SciMLOperators</a> interface.</li><li>If not a SciMLOperator, <code>diagind(W::T)</code> should be defined and <code>@view(A[idxs])=@view(A[idxs]) + λ::T</code></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../">« Home</a><a class="docs-footer-nextpage" href="../Problems/">SciMLProblems »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciML Container (Array) and Number Interfaces · SciMLBase.jl</title><meta name="title" content="SciML Container (Array) and Number Interfaces · SciMLBase.jl"/><meta property="og:title" content="SciML Container (Array) and Number Interfaces · SciMLBase.jl"/><meta property="twitter:title" content="SciML Container (Array) and Number Interfaces · 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/Array_and_Number/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Array_and_Number/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Array_and_Number/"/><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 class="is-active"><a class="tocitem" href>SciML Container (Array) and Number Interfaces</a><ul class="internal"><li><a class="tocitem" href="#Note-About-Wrapped-Solvers"><span>Note About Wrapped Solvers</span></a></li><li><a class="tocitem" href="#SciML-Number-Types"><span>SciML Number Types</span></a></li><li><a class="tocitem" href="#SciML-Container-(Array)-Types"><span>SciML Container (Array) Types</span></a></li></ul></li><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><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciML Container (Array) and Number Interfaces</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciML Container (Array) and Number Interfaces</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/Array_and_Number.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="arrayandnumber"><a class="docs-heading-anchor" href="#arrayandnumber">SciML Container (Array) and Number Interfaces</a><a id="arrayandnumber-1"></a><a class="docs-heading-anchor-permalink" href="#arrayandnumber" title="Permalink"></a></h1><p>We live in a society, and therefore there are rules. In this tutorial we outline the rules which are required on container and number types which are allowable in SciML tools.</p><div class="admonition is-category-warn"><header class="admonition-header">Warn</header><div class="admonition-body"><p>In general as of 2023, strict adherence to this interface is an early work-in-progress. If anything does not conform to the documented interface, please open an issue.</p></div></div><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>There are many types which can work with a specific solver that do satisfy this interface. Many times as part of prototyping you may want to side-step the high level interface checks in order to simply test whether a new type is working. To do this, set <code>interface_checks = false</code> as a keyword argument to <code>init</code>/<code>solve</code> to bypass any of the internal interface checks. This means you will no longer get a nice high-level error message and instead it will attempt to use the type without restrictions. Note that not every problem/solver has implemented this new keyword argument as of 2023.</p></div></div><h2 id="Note-About-Wrapped-Solvers"><a class="docs-heading-anchor" href="#Note-About-Wrapped-Solvers">Note About Wrapped Solvers</a><a id="Note-About-Wrapped-Solvers-1"></a><a class="docs-heading-anchor-permalink" href="#Note-About-Wrapped-Solvers" title="Permalink"></a></h2><p>Due to limitations of wrapped solvers, any solver that is a wrapped solver from an existing C/Fortran code is inherently limited to <code>Float64</code> and <code>Vector{Float64}</code> for its operations. This includes packages like Sundials.jl, LSODA.jl, DASKR.jl, MINPACK.jl, and many more. This is fundamental to these solvers and it is not expected that they will allow the full set of SciML types in the future. If more abstract number/container definitions are required, then these are not the appropriate solvers to use.</p><h2 id="SciML-Number-Types"><a class="docs-heading-anchor" href="#SciML-Number-Types">SciML Number Types</a><a id="SciML-Number-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Number-Types" title="Permalink"></a></h2><p>The number types are the types used to define the dependent variables (i.e. <code>u0</code>) and the independent variables (<code>t</code> or <code>tspan</code>). These two types can be different, and can have different restrictions depending on the type of solver which is employed. The following rules for a Number type are held in general:</p><ul><li>Number types can be used in SciML directly or in containers. If a problem defines a value like <code>u0</code> using a Number type, the out-of-place form must be used for the problem definition.</li><li><code>x::T + y::T = z::T</code></li><li><code>x::T * y::T = z::T</code></li><li><code>oneunit(x::T)::T</code></li><li><code>one(x::T) * oneunit(x::T) = z::T</code></li><li><code>t::T2 * x::T + y::T = z::T</code> for <code>T2</code> a time type and <code>T</code> the dependent variable type (this includes the <code>muladd</code> equivalent form).</li></ul><p>Additionally, the following rules apply to subsets of uses:</p><h3 id="Adaptive-Number-Types"><a class="docs-heading-anchor" href="#Adaptive-Number-Types">Adaptive Number Types</a><a id="Adaptive-Number-Types-1"></a><a class="docs-heading-anchor-permalink" href="#Adaptive-Number-Types" title="Permalink"></a></h3><ul><li><code>x::T / y::T = z::T</code></li><li>Default choices of norms can assume <code>sqrt(x::T)::T</code> exists. If <code>internalnorm</code> is overridden then this may not be required (for example, changing the norm to inf-norm).</li><li><code>x::T ^ y::T = z::T</code></li></ul><h3 id="Time-Types-(Independent-Variables)"><a class="docs-heading-anchor" href="#Time-Types-(Independent-Variables)">Time Types (Independent Variables)</a><a id="Time-Types-(Independent-Variables)-1"></a><a class="docs-heading-anchor-permalink" href="#Time-Types-(Independent-Variables)" title="Permalink"></a></h3><ul><li>If a solver is time adaptive, the time type must be a floating point number. <code>Rational</code> is only allowed for non-adaptive solves.</li></ul><h2 id="SciML-Container-(Array)-Types"><a class="docs-heading-anchor" href="#SciML-Container-(Array)-Types">SciML Container (Array) Types</a><a id="SciML-Container-(Array)-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Container-(Array)-Types" title="Permalink"></a></h2><p>Container types are types which hold number types. They can be used to define objects like the state vector (<code>u0</code>) of a problem. The following operations are required in a container type to be used with SciML solvers:</p><ul><li>Broadcast is defined <a href="https://docs.julialang.org/en/v1/manual/interfaces/#man-interfaces-broadcasting">according to the Julia broadcast interface</a>.</li><li>The container type correctly defines <a href="https://docs.sciml.ai/ArrayInterface/stable/">interface overloads to satisfy the ArrayInterface.jl specification</a>.</li><li><code>ArrayInterface.zeromatrix(x::T)::T2</code> defines a compatible matrix type (see below)</li><li><code>eltype(x::T)::T2</code> is a compatible Number type.</li><li><code>x::T .+ y::T = z::T</code> (i.e. broadcast similar is defined to be type-presurving)</li><li>Indexing is only required if <code>ArrayInterface.fast_scalar_indexing(x::T)==true</code>. If true, scalar indexing <code>x[i]</code> is assumed to be defined and run through all variables.</li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>"<code>eltype(x::T)::T2</code> is a compatible Number type" excludes <code>Array{Array{T}}</code> types of types. However, recursive vectors can conformed to the interface with zero overhead using tools from RecursiveArrayTools.jl such as <code>VectorOfArray(x)</code>. Since this greatly simplifies the interfaces and the ability to check for correctness, doing this wrapping is highly recommended and there are no plans to relax this requirement.</p></div></div><p>Additionally, the following rules apply to subsets of uses:</p><h3 id="SciML-Mutable-Array-Types"><a class="docs-heading-anchor" href="#SciML-Mutable-Array-Types">SciML Mutable Array Types</a><a id="SciML-Mutable-Array-Types-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Mutable-Array-Types" title="Permalink"></a></h3><ul><li><code>similar(x::T)::T</code></li><li><code>zero(x::T)::T</code></li><li><code>z::T .= x::T .+ y::T</code> is defined</li><li><code>z::T .= x::T .* y::T</code> is defined</li><li><code>z::T .= t::T2 .* x::T</code> where <code>T2</code> is the time type (a Number) and <code>T</code> is the container type.</li><li>(Optional) <code>Base.resize!(x,i)</code> is required for <code>resize!(integrator,i)</code> to be supported.</li></ul><h3 id="SciML-Matrix-(Operator)-Type"><a class="docs-heading-anchor" href="#SciML-Matrix-(Operator)-Type">SciML Matrix (Operator) Type</a><a id="SciML-Matrix-(Operator)-Type-1"></a><a class="docs-heading-anchor-permalink" href="#SciML-Matrix-(Operator)-Type" title="Permalink"></a></h3><p>Note that the matrix type may not match the type of the initial container <code>u0</code>. An example is <code>ComponentMatrix</code> as the matrix structure corresponding to a <code>ComponentArray</code>. However, the following actions are assumed to hold on the resulting matrix type:</p><ul><li><code>solve(LinearProblem(A::T,b::T2),linsolve)</code> must be defined for a solver to work on a given SciML matrix type <code>T2</code>.</li><li>If the matrix is an operator, i.e. a lazy construct, it should conform to the <a href="https://docs.sciml.ai/SciMLOperators/stable/">SciMLOperators</a> interface.</li><li>If not a SciMLOperator, <code>diagind(W::T)</code> should be defined and <code>@view(A[idxs])=@view(A[idxs]) + λ::T</code></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../">« Home</a><a class="docs-footer-nextpage" href="../Problems/">SciMLProblems »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Common_Keywords/index.html b/dev/interfaces/Common_Keywords/index.html index 3fab6e895..d7dd1e2fa 100644 --- a/dev/interfaces/Common_Keywords/index.html +++ b/dev/interfaces/Common_Keywords/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Common Keyword Arguments · SciMLBase.jl</title><meta name="title" content="Common Keyword Arguments · SciMLBase.jl"/><meta property="og:title" content="Common Keyword Arguments · SciMLBase.jl"/><meta property="twitter:title" content="Common Keyword Arguments · 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/Common_Keywords/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Common_Keywords/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Common_Keywords/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><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><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></li><li class="is-active"><a class="tocitem" href>Common Keyword Arguments</a><ul class="internal"><li><a class="tocitem" href="#Default-Algorithm-Hinting"><span>Default Algorithm Hinting</span></a></li><li><a class="tocitem" href="#Output-Control"><span>Output Control</span></a></li><li><a class="tocitem" href="#Stepsize-Control"><span>Stepsize Control</span></a></li><li><a class="tocitem" href="#Memory-Optimizations"><span>Memory Optimizations</span></a></li><li><a class="tocitem" href="#Miscellaneous"><span>Miscellaneous</span></a></li><li><a class="tocitem" href="#Progress-Monitoring"><span>Progress Monitoring</span></a></li><li><a class="tocitem" href="#Error-Calculations"><span>Error Calculations</span></a></li><li><a class="tocitem" href="#Automatic-Differentiation-Control"><span>Automatic Differentiation Control</span></a></li></ul></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>Common Keyword Arguments</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Common Keyword Arguments</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/Common_Keywords.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="Common-Keyword-Arguments"><a class="docs-heading-anchor" href="#Common-Keyword-Arguments">Common Keyword Arguments</a><a id="Common-Keyword-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Keyword-Arguments" title="Permalink"></a></h1><p>The following defines the keyword arguments which are meant to be preserved throughout all of the AbstractSciMLProblem cases (where applicable).</p><h2 id="Default-Algorithm-Hinting"><a class="docs-heading-anchor" href="#Default-Algorithm-Hinting">Default Algorithm Hinting</a><a id="Default-Algorithm-Hinting-1"></a><a class="docs-heading-anchor-permalink" href="#Default-Algorithm-Hinting" title="Permalink"></a></h2><p>To help choose the default algorithm, the keyword argument <code>alg_hints</code> is provided to <code>solve</code>. <code>alg_hints</code> is a <code>Vector{Symbol}</code> which describe the problem at a high level to the solver. The options are:</p><p>This functionality is derived via the benchmarks in <a href="https://docs.sciml.ai/SciMLBenchmarksOutput/stable/">SciMLBenchmarks.jl</a></p><p>Currently this is only implemented for the differential equation solvers.</p><h2 id="Output-Control"><a class="docs-heading-anchor" href="#Output-Control">Output Control</a><a id="Output-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Output-Control" title="Permalink"></a></h2><p>These arguments control the output behavior of the solvers. It defaults to maximum output to give the best interactive user experience, but can be reduced all the way to only saving the solution at the final timepoint.</p><p>The following options are all related to output control. See the "Examples" section at the end of this page for some example usage.</p><ul><li><code>dense</code>: Denotes whether to save the extra pieces required for dense (continuous) output. Default is <code>save_everystep && !isempty(saveat)</code> for algorithms which have the ability to produce dense output, i.e. by default it's <code>true</code> unless the user has turned off saving on steps or has chosen a <code>saveat</code> value. If <code>dense=false</code>, the solution still acts like a function, and <code>sol(t)</code> is a linear interpolation between the saved time points.</li><li><code>saveat</code>: Denotes specific times to save the solution at, during the solving phase. The solver will save at each of the timepoints in this array in the most efficient manner available to the solver. If only <code>saveat</code> is given, then the arguments <code>save_everystep</code> and <code>dense</code> are <code>false</code> by default. If <code>saveat</code> is given a number, then it will automatically expand to <code>tspan[1]:saveat:tspan[2]</code>. For methods where interpolation is not possible, <code>saveat</code> may be equivalent to <code>tstops</code>. The default value is <code>[]</code>.</li><li><code>save_idxs</code>: Denotes the indices for the components of the equation to save. Defaults to saving all indices. For example, if you are solving a 3-dimensional ODE, and given <code>save_idxs = [1, 3]</code>, only the first and third components of the solution will be outputted. Notice that of course in this case the outputted solution will be two-dimensional.</li><li><code>tstops</code>: Denotes <em>extra</em> times that the timestepping algorithm must step to. This should be used to help the solver deal with discontinuities and singularities, since stepping exactly at the time of the discontinuity will improve accuracy. If a method cannot change timesteps (fixed timestep multistep methods), then <code>tstops</code> will use an interpolation, matching the behavior of <code>saveat</code>. If a method cannot change timesteps and also cannot interpolate, then <code>tstops</code> must be a multiple of <code>dt</code> or else an error will be thrown. Default is <code>[]</code>.</li><li><code>d_discontinuities:</code> Denotes locations of discontinuities in low order derivatives. This will force FSAL algorithms which assume derivative continuity to re-evaluate the derivatives at the point of discontinuity. The default is <code>[]</code>.</li><li><code>save_everystep</code>: Saves the result at every step. Default is true if <code>isempty(saveat)</code>.</li><li><code>save_on</code>: Denotes whether intermediate solutions are saved. This overrides the settings of <code>dense</code>, <code>saveat</code> and <code>save_everystep</code> and is used by some applications to manually turn off saving temporarily. Everyday use of the solvers should leave this unchanged. Defaults to <code>true</code>.</li><li><code>save_start</code>: Denotes whether the initial condition should be included in the solution type as the first timepoint. Defaults to <code>true</code>.</li><li><code>save_end</code>: Denotes whether the final timepoint is forced to be saved, regardless of the other saving settings. Defaults to <code>true</code>.</li><li><code>initialize_save</code>: Denotes whether to save after the callback initialization phase (when <code>u_modified=true</code>). Defaults to <code>true</code>.</li></ul><p>Note that <code>dense</code> requires <code>save_everystep=true</code> and <code>saveat=false</code>.</p><h2 id="Stepsize-Control"><a class="docs-heading-anchor" href="#Stepsize-Control">Stepsize Control</a><a id="Stepsize-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Stepsize-Control" title="Permalink"></a></h2><p>These arguments control the timestepping routines.</p><h4 id="Basic-Stepsize-Control"><a class="docs-heading-anchor" href="#Basic-Stepsize-Control">Basic Stepsize Control</a><a id="Basic-Stepsize-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Basic-Stepsize-Control" title="Permalink"></a></h4><ul><li><code>adaptive</code>: Turns on adaptive timestepping for appropriate methods. Default is true.</li><li><code>abstol</code>: Absolute tolerance in adaptive timestepping. This is the tolerance on local error estimates, not necessarily the global error (though these quantities are related).</li><li><code>reltol</code>: Relative tolerance in adaptive timestepping. This is the tolerance on local error estimates, not necessarily the global error (though these quantities are related).</li><li><code>dt</code>: Sets the initial stepsize. This is also the stepsize for fixed timestep methods. Defaults to an automatic choice if the method is adaptive.</li><li><code>dtmax</code>: Maximum dt for adaptive timestepping. Defaults are package-dependent.</li><li><code>dtmin</code>: Minimum dt for adaptive timestepping. Defaults are package-dependent.</li></ul><h4 id="Fixed-Stepsize-Usage"><a class="docs-heading-anchor" href="#Fixed-Stepsize-Usage">Fixed Stepsize Usage</a><a id="Fixed-Stepsize-Usage-1"></a><a class="docs-heading-anchor-permalink" href="#Fixed-Stepsize-Usage" title="Permalink"></a></h4><p>Note that if a method does not have adaptivity, the following rules apply:</p><ul><li>If <code>dt</code> is set, then the algorithm will step with size <code>dt</code> each iteration.</li><li>If <code>tstops</code> and <code>dt</code> are both set, then the algorithm will step with either a size <code>dt</code>, or use a smaller step to hit the <code>tstops</code> point.</li><li>If <code>tstops</code> is set without <code>dt</code>, then the algorithm will step directly to each value in <code>tstops</code></li><li>If neither <code>dt</code> nor <code>tstops</code> are set, the solver will throw an error.</li></ul><h2 id="Memory-Optimizations"><a class="docs-heading-anchor" href="#Memory-Optimizations">Memory Optimizations</a><a id="Memory-Optimizations-1"></a><a class="docs-heading-anchor-permalink" href="#Memory-Optimizations" title="Permalink"></a></h2><ul><li><code>alias_u0</code>: allows the solver to alias the initial condition array that is contained in the problem struct. Defaults to false.</li><li><code>cache</code>: pass a solver cache to decrease the construction time. This is not implemented for any of the problem interfaces at this moment.</li></ul><h2 id="Miscellaneous"><a class="docs-heading-anchor" href="#Miscellaneous">Miscellaneous</a><a id="Miscellaneous-1"></a><a class="docs-heading-anchor-permalink" href="#Miscellaneous" title="Permalink"></a></h2><ul><li><code>maxiters</code>: Maximum number of iterations before stopping.</li><li><code>callback</code>: Specifies a callback function that is called between iterations.</li><li><code>verbose</code>: Toggles whether warnings are thrown when the solver exits early. Defaults to true.</li></ul><h2 id="Progress-Monitoring"><a class="docs-heading-anchor" href="#Progress-Monitoring">Progress Monitoring</a><a id="Progress-Monitoring-1"></a><a class="docs-heading-anchor-permalink" href="#Progress-Monitoring" title="Permalink"></a></h2><p>These arguments control the usage of the progressbar in the logger.</p><ul><li><code>progress</code>: Turns on/off the Juno progressbar. Default is false.</li><li><code>progress_steps</code>: Numbers of steps between updates of the progress bar. Default is 1000.</li><li><code>progress_name</code>: Controls the name of the progressbar. Default is the name of the problem type.</li><li><code>progress_message</code>: Controls the message with the progressbar. Defaults to showing <code>dt</code>, <code>t</code>, the maximum of <code>u</code>.</li></ul><p>The progress bars all use the Julia Logging interface in order to be generic to the IDE or programming tool that is used. For more information on how this is all put together, see <a href="https://github.com/FedeClaudi/Term.jl/discussions/67">this discussion</a>.</p><h2 id="Error-Calculations"><a class="docs-heading-anchor" href="#Error-Calculations">Error Calculations</a><a id="Error-Calculations-1"></a><a class="docs-heading-anchor-permalink" href="#Error-Calculations" title="Permalink"></a></h2><p>If you are using the test problems (i.e. <code>SciMLFunction</code>s where <code>f.analytic</code> is defined), then options control the errors which are calculated. By default, any cheap error estimates are always calculated. Extra keyword arguments include:</p><ul><li><code>timeseries_errors</code></li><li><code>dense_errors</code></li></ul><p>for specifying more expensive errors.</p><h2 id="Automatic-Differentiation-Control"><a class="docs-heading-anchor" href="#Automatic-Differentiation-Control">Automatic Differentiation Control</a><a id="Automatic-Differentiation-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Automatic-Differentiation-Control" title="Permalink"></a></h2><p>See the <a href="../Differentiation/#sensealg">Automatic Differentiation page for a full description of <code>sensealg</code></a></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Init_Solve/">« The SciML init and solve Functions</a><a class="docs-footer-nextpage" href="../Differentiation/">Automatic Differentiation and Sensitivity Algorithms (Adjoints) »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Common Keyword Arguments · SciMLBase.jl</title><meta name="title" content="Common Keyword Arguments · SciMLBase.jl"/><meta property="og:title" content="Common Keyword Arguments · SciMLBase.jl"/><meta property="twitter:title" content="Common Keyword Arguments · 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/Common_Keywords/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Common_Keywords/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Common_Keywords/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><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><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></li><li class="is-active"><a class="tocitem" href>Common Keyword Arguments</a><ul class="internal"><li><a class="tocitem" href="#Default-Algorithm-Hinting"><span>Default Algorithm Hinting</span></a></li><li><a class="tocitem" href="#Output-Control"><span>Output Control</span></a></li><li><a class="tocitem" href="#Stepsize-Control"><span>Stepsize Control</span></a></li><li><a class="tocitem" href="#Memory-Optimizations"><span>Memory Optimizations</span></a></li><li><a class="tocitem" href="#Miscellaneous"><span>Miscellaneous</span></a></li><li><a class="tocitem" href="#Progress-Monitoring"><span>Progress Monitoring</span></a></li><li><a class="tocitem" href="#Error-Calculations"><span>Error Calculations</span></a></li><li><a class="tocitem" href="#Automatic-Differentiation-Control"><span>Automatic Differentiation Control</span></a></li></ul></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>Common Keyword Arguments</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Common Keyword Arguments</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/Common_Keywords.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="Common-Keyword-Arguments"><a class="docs-heading-anchor" href="#Common-Keyword-Arguments">Common Keyword Arguments</a><a id="Common-Keyword-Arguments-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Keyword-Arguments" title="Permalink"></a></h1><p>The following defines the keyword arguments which are meant to be preserved throughout all of the AbstractSciMLProblem cases (where applicable).</p><h2 id="Default-Algorithm-Hinting"><a class="docs-heading-anchor" href="#Default-Algorithm-Hinting">Default Algorithm Hinting</a><a id="Default-Algorithm-Hinting-1"></a><a class="docs-heading-anchor-permalink" href="#Default-Algorithm-Hinting" title="Permalink"></a></h2><p>To help choose the default algorithm, the keyword argument <code>alg_hints</code> is provided to <code>solve</code>. <code>alg_hints</code> is a <code>Vector{Symbol}</code> which describe the problem at a high level to the solver. The options are:</p><p>This functionality is derived via the benchmarks in <a href="https://docs.sciml.ai/SciMLBenchmarksOutput/stable/">SciMLBenchmarks.jl</a></p><p>Currently this is only implemented for the differential equation solvers.</p><h2 id="Output-Control"><a class="docs-heading-anchor" href="#Output-Control">Output Control</a><a id="Output-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Output-Control" title="Permalink"></a></h2><p>These arguments control the output behavior of the solvers. It defaults to maximum output to give the best interactive user experience, but can be reduced all the way to only saving the solution at the final timepoint.</p><p>The following options are all related to output control. See the "Examples" section at the end of this page for some example usage.</p><ul><li><code>dense</code>: Denotes whether to save the extra pieces required for dense (continuous) output. Default is <code>save_everystep && !isempty(saveat)</code> for algorithms which have the ability to produce dense output, i.e. by default it's <code>true</code> unless the user has turned off saving on steps or has chosen a <code>saveat</code> value. If <code>dense=false</code>, the solution still acts like a function, and <code>sol(t)</code> is a linear interpolation between the saved time points.</li><li><code>saveat</code>: Denotes specific times to save the solution at, during the solving phase. The solver will save at each of the timepoints in this array in the most efficient manner available to the solver. If only <code>saveat</code> is given, then the arguments <code>save_everystep</code> and <code>dense</code> are <code>false</code> by default. If <code>saveat</code> is given a number, then it will automatically expand to <code>tspan[1]:saveat:tspan[2]</code>. For methods where interpolation is not possible, <code>saveat</code> may be equivalent to <code>tstops</code>. The default value is <code>[]</code>.</li><li><code>save_idxs</code>: Denotes the indices for the components of the equation to save. Defaults to saving all indices. For example, if you are solving a 3-dimensional ODE, and given <code>save_idxs = [1, 3]</code>, only the first and third components of the solution will be outputted. Notice that of course in this case the outputted solution will be two-dimensional.</li><li><code>tstops</code>: Denotes <em>extra</em> times that the timestepping algorithm must step to. This should be used to help the solver deal with discontinuities and singularities, since stepping exactly at the time of the discontinuity will improve accuracy. If a method cannot change timesteps (fixed timestep multistep methods), then <code>tstops</code> will use an interpolation, matching the behavior of <code>saveat</code>. If a method cannot change timesteps and also cannot interpolate, then <code>tstops</code> must be a multiple of <code>dt</code> or else an error will be thrown. Default is <code>[]</code>.</li><li><code>d_discontinuities:</code> Denotes locations of discontinuities in low order derivatives. This will force FSAL algorithms which assume derivative continuity to re-evaluate the derivatives at the point of discontinuity. The default is <code>[]</code>.</li><li><code>save_everystep</code>: Saves the result at every step. Default is true if <code>isempty(saveat)</code>.</li><li><code>save_on</code>: Denotes whether intermediate solutions are saved. This overrides the settings of <code>dense</code>, <code>saveat</code> and <code>save_everystep</code> and is used by some applications to manually turn off saving temporarily. Everyday use of the solvers should leave this unchanged. Defaults to <code>true</code>.</li><li><code>save_start</code>: Denotes whether the initial condition should be included in the solution type as the first timepoint. Defaults to <code>true</code>.</li><li><code>save_end</code>: Denotes whether the final timepoint is forced to be saved, regardless of the other saving settings. Defaults to <code>true</code>.</li><li><code>initialize_save</code>: Denotes whether to save after the callback initialization phase (when <code>u_modified=true</code>). Defaults to <code>true</code>.</li></ul><p>Note that <code>dense</code> requires <code>save_everystep=true</code> and <code>saveat=false</code>.</p><h2 id="Stepsize-Control"><a class="docs-heading-anchor" href="#Stepsize-Control">Stepsize Control</a><a id="Stepsize-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Stepsize-Control" title="Permalink"></a></h2><p>These arguments control the timestepping routines.</p><h4 id="Basic-Stepsize-Control"><a class="docs-heading-anchor" href="#Basic-Stepsize-Control">Basic Stepsize Control</a><a id="Basic-Stepsize-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Basic-Stepsize-Control" title="Permalink"></a></h4><ul><li><code>adaptive</code>: Turns on adaptive timestepping for appropriate methods. Default is true.</li><li><code>abstol</code>: Absolute tolerance in adaptive timestepping. This is the tolerance on local error estimates, not necessarily the global error (though these quantities are related).</li><li><code>reltol</code>: Relative tolerance in adaptive timestepping. This is the tolerance on local error estimates, not necessarily the global error (though these quantities are related).</li><li><code>dt</code>: Sets the initial stepsize. This is also the stepsize for fixed timestep methods. Defaults to an automatic choice if the method is adaptive.</li><li><code>dtmax</code>: Maximum dt for adaptive timestepping. Defaults are package-dependent.</li><li><code>dtmin</code>: Minimum dt for adaptive timestepping. Defaults are package-dependent.</li></ul><h4 id="Fixed-Stepsize-Usage"><a class="docs-heading-anchor" href="#Fixed-Stepsize-Usage">Fixed Stepsize Usage</a><a id="Fixed-Stepsize-Usage-1"></a><a class="docs-heading-anchor-permalink" href="#Fixed-Stepsize-Usage" title="Permalink"></a></h4><p>Note that if a method does not have adaptivity, the following rules apply:</p><ul><li>If <code>dt</code> is set, then the algorithm will step with size <code>dt</code> each iteration.</li><li>If <code>tstops</code> and <code>dt</code> are both set, then the algorithm will step with either a size <code>dt</code>, or use a smaller step to hit the <code>tstops</code> point.</li><li>If <code>tstops</code> is set without <code>dt</code>, then the algorithm will step directly to each value in <code>tstops</code></li><li>If neither <code>dt</code> nor <code>tstops</code> are set, the solver will throw an error.</li></ul><h2 id="Memory-Optimizations"><a class="docs-heading-anchor" href="#Memory-Optimizations">Memory Optimizations</a><a id="Memory-Optimizations-1"></a><a class="docs-heading-anchor-permalink" href="#Memory-Optimizations" title="Permalink"></a></h2><ul><li><code>alias_u0</code>: allows the solver to alias the initial condition array that is contained in the problem struct. Defaults to false.</li><li><code>cache</code>: pass a solver cache to decrease the construction time. This is not implemented for any of the problem interfaces at this moment.</li></ul><h2 id="Miscellaneous"><a class="docs-heading-anchor" href="#Miscellaneous">Miscellaneous</a><a id="Miscellaneous-1"></a><a class="docs-heading-anchor-permalink" href="#Miscellaneous" title="Permalink"></a></h2><ul><li><code>maxiters</code>: Maximum number of iterations before stopping.</li><li><code>callback</code>: Specifies a callback function that is called between iterations.</li><li><code>verbose</code>: Toggles whether warnings are thrown when the solver exits early. Defaults to true.</li></ul><h2 id="Progress-Monitoring"><a class="docs-heading-anchor" href="#Progress-Monitoring">Progress Monitoring</a><a id="Progress-Monitoring-1"></a><a class="docs-heading-anchor-permalink" href="#Progress-Monitoring" title="Permalink"></a></h2><p>These arguments control the usage of the progressbar in the logger.</p><ul><li><code>progress</code>: Turns on/off the Juno progressbar. Default is false.</li><li><code>progress_steps</code>: Numbers of steps between updates of the progress bar. Default is 1000.</li><li><code>progress_name</code>: Controls the name of the progressbar. Default is the name of the problem type.</li><li><code>progress_message</code>: Controls the message with the progressbar. Defaults to showing <code>dt</code>, <code>t</code>, the maximum of <code>u</code>.</li></ul><p>The progress bars all use the Julia Logging interface in order to be generic to the IDE or programming tool that is used. For more information on how this is all put together, see <a href="https://github.com/FedeClaudi/Term.jl/discussions/67">this discussion</a>.</p><h2 id="Error-Calculations"><a class="docs-heading-anchor" href="#Error-Calculations">Error Calculations</a><a id="Error-Calculations-1"></a><a class="docs-heading-anchor-permalink" href="#Error-Calculations" title="Permalink"></a></h2><p>If you are using the test problems (i.e. <code>SciMLFunction</code>s where <code>f.analytic</code> is defined), then options control the errors which are calculated. By default, any cheap error estimates are always calculated. Extra keyword arguments include:</p><ul><li><code>timeseries_errors</code></li><li><code>dense_errors</code></li></ul><p>for specifying more expensive errors.</p><h2 id="Automatic-Differentiation-Control"><a class="docs-heading-anchor" href="#Automatic-Differentiation-Control">Automatic Differentiation Control</a><a id="Automatic-Differentiation-Control-1"></a><a class="docs-heading-anchor-permalink" href="#Automatic-Differentiation-Control" title="Permalink"></a></h2><p>See the <a href="../Differentiation/#sensealg">Automatic Differentiation page for a full description of <code>sensealg</code></a></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Init_Solve/">« The SciML init and solve Functions</a><a class="docs-footer-nextpage" href="../Differentiation/">Automatic Differentiation and Sensitivity Algorithms (Adjoints) »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Differentiation/index.html b/dev/interfaces/Differentiation/index.html index 25102f32e..aa83333d2 100644 --- a/dev/interfaces/Differentiation/index.html +++ b/dev/interfaces/Differentiation/index.html @@ -25,4 +25,4 @@ function _concrete_solve_forward(args...; kwargs...) error("No sensitivity rules exist. Check that you added `using DiffEqSensitivity`") -end</code></pre><p>The sensitivity mechanism is kept in a separate package because of the high dependency and load time cost introduced by the automatic differentiation libraries. Different choices of automatic differentiation are then selected by the <code>sensealg</code> keyword argument in <code>solve</code>, which is made into a positional argument in the <code>_solve_adjoint</code> and other functions in order to allow dispatch.</p><h2 id="SensitivityADPassThrough"><a class="docs-heading-anchor" href="#SensitivityADPassThrough">SensitivityADPassThrough</a><a id="SensitivityADPassThrough-1"></a><a class="docs-heading-anchor-permalink" href="#SensitivityADPassThrough" title="Permalink"></a></h2><p>The special sensitivity algorithm <code>SensitivityADPassThrough</code> is used to ignore the internal sensitivity dispatches and instead do automatic differentiation directly through the solver. Generally this <code>sensealg</code> is only used internally.</p><h2 id="Note-about-ForwardDiff"><a class="docs-heading-anchor" href="#Note-about-ForwardDiff">Note about ForwardDiff</a><a id="Note-about-ForwardDiff-1"></a><a class="docs-heading-anchor-permalink" href="#Note-about-ForwardDiff" title="Permalink"></a></h2><p>ForwardDiff does not use ChainRules.jl and thus it completely ignores the special handling.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Common_Keywords/">« Common Keyword Arguments</a><a class="docs-footer-nextpage" href="../PDE/">The PDE Definition Interface »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><p>The sensitivity mechanism is kept in a separate package because of the high dependency and load time cost introduced by the automatic differentiation libraries. Different choices of automatic differentiation are then selected by the <code>sensealg</code> keyword argument in <code>solve</code>, which is made into a positional argument in the <code>_solve_adjoint</code> and other functions in order to allow dispatch.</p><h2 id="SensitivityADPassThrough"><a class="docs-heading-anchor" href="#SensitivityADPassThrough">SensitivityADPassThrough</a><a id="SensitivityADPassThrough-1"></a><a class="docs-heading-anchor-permalink" href="#SensitivityADPassThrough" title="Permalink"></a></h2><p>The special sensitivity algorithm <code>SensitivityADPassThrough</code> is used to ignore the internal sensitivity dispatches and instead do automatic differentiation directly through the solver. Generally this <code>sensealg</code> is only used internally.</p><h2 id="Note-about-ForwardDiff"><a class="docs-heading-anchor" href="#Note-about-ForwardDiff">Note about ForwardDiff</a><a id="Note-about-ForwardDiff-1"></a><a class="docs-heading-anchor-permalink" href="#Note-about-ForwardDiff" title="Permalink"></a></h2><p>ForwardDiff does not use ChainRules.jl and thus it completely ignores the special handling.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Common_Keywords/">« Common Keyword Arguments</a><a class="docs-footer-nextpage" href="../PDE/">The PDE Definition Interface »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Init_Solve/index.html b/dev/interfaces/Init_Solve/index.html index 0a6645c62..c7e244c7c 100644 --- a/dev/interfaces/Init_Solve/index.html +++ b/dev/interfaces/Init_Solve/index.html @@ -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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/PDE/index.html b/dev/interfaces/PDE/index.html index 193799a8e..7d9f6b8d0 100644 --- a/dev/interfaces/PDE/index.html +++ b/dev/interfaces/PDE/index.html @@ -23,4 +23,4 @@ @named pde_system = PDESystem(eq,bcs,domains,[t,x],[u])</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/v8.75.0/src/systems/pde/pdesystem.jl#L1">source</a></section></article><h3 id="Domains-(WIP)"><a class="docs-heading-anchor" href="#Domains-(WIP)">Domains (WIP)</a><a id="Domains-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#Domains-(WIP)" title="Permalink"></a></h3><p>Domains are specifying by saying <code>indepvar in domain</code>, where <code>indepvar</code> is a single or a collection of independent variables, and <code>domain</code> is the chosen domain type. A 2-tuple can be used to indicate an <code>Interval</code>. Thus forms for the <code>indepvar</code> can be like:</p><pre><code class="language-julia hljs">t ∈ (0.0,1.0) (t,x) ∈ UnitDisk() -[v,w,x,y,z] ∈ VectorUnitBall(5)</code></pre><h4 id="Domain-Types-(WIP)"><a class="docs-heading-anchor" href="#Domain-Types-(WIP)">Domain Types (WIP)</a><a id="Domain-Types-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#Domain-Types-(WIP)" title="Permalink"></a></h4><ul><li><code>Interval(a,b)</code>: Defines the domain of an interval from <code>a</code> to <code>b</code> (requires explicit</li></ul><p>import from <code>DomainSets.jl</code>, but a 2-tuple can be used instead)</p><h2 id="discretize-and-symbolic_discretize"><a class="docs-heading-anchor" href="#discretize-and-symbolic_discretize"><code>discretize</code> and <code>symbolic_discretize</code></a><a id="discretize-and-symbolic_discretize-1"></a><a class="docs-heading-anchor-permalink" href="#discretize-and-symbolic_discretize" title="Permalink"></a></h2><p>The only functions which act on a PDESystem are the following:</p><ul><li><code>discretize(sys,discretizer)</code>: produces the outputted <code>AbstractSystem</code> or <code>AbstractSciMLProblem</code>.</li><li><code>symbolic_discretize(sys,discretizer)</code>: produces a debugging symbolic description of the discretized problem.</li></ul><h2 id="Boundary-Conditions-(WIP)"><a class="docs-heading-anchor" href="#Boundary-Conditions-(WIP)">Boundary Conditions (WIP)</a><a id="Boundary-Conditions-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#Boundary-Conditions-(WIP)" title="Permalink"></a></h2><h2 id="Transformations"><a class="docs-heading-anchor" href="#Transformations">Transformations</a><a id="Transformations-1"></a><a class="docs-heading-anchor-permalink" href="#Transformations" title="Permalink"></a></h2><h2 id="Analyses"><a class="docs-heading-anchor" href="#Analyses">Analyses</a><a id="Analyses-1"></a><a class="docs-heading-anchor-permalink" href="#Analyses" title="Permalink"></a></h2><h2 id="Discretizer-Ecosystem"><a class="docs-heading-anchor" href="#Discretizer-Ecosystem">Discretizer Ecosystem</a><a id="Discretizer-Ecosystem-1"></a><a class="docs-heading-anchor-permalink" href="#Discretizer-Ecosystem" title="Permalink"></a></h2><h3 id="NeuralPDE.jl:-PhysicsInformedNN"><a class="docs-heading-anchor" href="#NeuralPDE.jl:-PhysicsInformedNN">NeuralPDE.jl: PhysicsInformedNN</a><a id="NeuralPDE.jl:-PhysicsInformedNN-1"></a><a class="docs-heading-anchor-permalink" href="#NeuralPDE.jl:-PhysicsInformedNN" title="Permalink"></a></h3><p><a href="https://docs.sciml.ai/NeuralPDE/stable/">NeuralPDE.jl</a> defines the <code>PhysicsInformedNN</code> discretizer which uses a <a href="https://docs.sciml.ai/DiffEqFlux/stable/">DiffEqFlux.jl</a> neural network to solve the differential equation.</p><h3 id="MethodOfLines.jl:-MOLFiniteDifference-(WIP)"><a class="docs-heading-anchor" href="#MethodOfLines.jl:-MOLFiniteDifference-(WIP)">MethodOfLines.jl: MOLFiniteDifference (WIP)</a><a id="MethodOfLines.jl:-MOLFiniteDifference-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#MethodOfLines.jl:-MOLFiniteDifference-(WIP)" title="Permalink"></a></h3><p><a href="https://docs.sciml.ai/MethodOfLines/stable/">MethodOfLines.jl</a> defines the <code>MOLFiniteDifference</code> discretizer which performs a finite difference discretization using the DiffEqOperators.jl stencils. These stencils make use of NNLib.jl for fast operations on semi-linear domains.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Differentiation/">« Automatic Differentiation and Sensitivity Algorithms (Adjoints)</a><a class="docs-footer-nextpage" href="../../fundamentals/FAQ/">Frequently Asked Questions »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +[v,w,x,y,z] ∈ VectorUnitBall(5)</code></pre><h4 id="Domain-Types-(WIP)"><a class="docs-heading-anchor" href="#Domain-Types-(WIP)">Domain Types (WIP)</a><a id="Domain-Types-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#Domain-Types-(WIP)" title="Permalink"></a></h4><ul><li><code>Interval(a,b)</code>: Defines the domain of an interval from <code>a</code> to <code>b</code> (requires explicit</li></ul><p>import from <code>DomainSets.jl</code>, but a 2-tuple can be used instead)</p><h2 id="discretize-and-symbolic_discretize"><a class="docs-heading-anchor" href="#discretize-and-symbolic_discretize"><code>discretize</code> and <code>symbolic_discretize</code></a><a id="discretize-and-symbolic_discretize-1"></a><a class="docs-heading-anchor-permalink" href="#discretize-and-symbolic_discretize" title="Permalink"></a></h2><p>The only functions which act on a PDESystem are the following:</p><ul><li><code>discretize(sys,discretizer)</code>: produces the outputted <code>AbstractSystem</code> or <code>AbstractSciMLProblem</code>.</li><li><code>symbolic_discretize(sys,discretizer)</code>: produces a debugging symbolic description of the discretized problem.</li></ul><h2 id="Boundary-Conditions-(WIP)"><a class="docs-heading-anchor" href="#Boundary-Conditions-(WIP)">Boundary Conditions (WIP)</a><a id="Boundary-Conditions-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#Boundary-Conditions-(WIP)" title="Permalink"></a></h2><h2 id="Transformations"><a class="docs-heading-anchor" href="#Transformations">Transformations</a><a id="Transformations-1"></a><a class="docs-heading-anchor-permalink" href="#Transformations" title="Permalink"></a></h2><h2 id="Analyses"><a class="docs-heading-anchor" href="#Analyses">Analyses</a><a id="Analyses-1"></a><a class="docs-heading-anchor-permalink" href="#Analyses" title="Permalink"></a></h2><h2 id="Discretizer-Ecosystem"><a class="docs-heading-anchor" href="#Discretizer-Ecosystem">Discretizer Ecosystem</a><a id="Discretizer-Ecosystem-1"></a><a class="docs-heading-anchor-permalink" href="#Discretizer-Ecosystem" title="Permalink"></a></h2><h3 id="NeuralPDE.jl:-PhysicsInformedNN"><a class="docs-heading-anchor" href="#NeuralPDE.jl:-PhysicsInformedNN">NeuralPDE.jl: PhysicsInformedNN</a><a id="NeuralPDE.jl:-PhysicsInformedNN-1"></a><a class="docs-heading-anchor-permalink" href="#NeuralPDE.jl:-PhysicsInformedNN" title="Permalink"></a></h3><p><a href="https://docs.sciml.ai/NeuralPDE/stable/">NeuralPDE.jl</a> defines the <code>PhysicsInformedNN</code> discretizer which uses a <a href="https://docs.sciml.ai/DiffEqFlux/stable/">DiffEqFlux.jl</a> neural network to solve the differential equation.</p><h3 id="MethodOfLines.jl:-MOLFiniteDifference-(WIP)"><a class="docs-heading-anchor" href="#MethodOfLines.jl:-MOLFiniteDifference-(WIP)">MethodOfLines.jl: MOLFiniteDifference (WIP)</a><a id="MethodOfLines.jl:-MOLFiniteDifference-(WIP)-1"></a><a class="docs-heading-anchor-permalink" href="#MethodOfLines.jl:-MOLFiniteDifference-(WIP)" title="Permalink"></a></h3><p><a href="https://docs.sciml.ai/MethodOfLines/stable/">MethodOfLines.jl</a> defines the <code>MOLFiniteDifference</code> discretizer which performs a finite difference discretization using the DiffEqOperators.jl stencils. These stencils make use of NNLib.jl for fast operations on semi-linear domains.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Differentiation/">« Automatic Differentiation and Sensitivity Algorithms (Adjoints)</a><a class="docs-footer-nextpage" href="../../fundamentals/FAQ/">Frequently Asked Questions »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Problems/index.html b/dev/interfaces/Problems/index.html index da27ad70b..d027e34f5 100644 --- a/dev/interfaces/Problems/index.html +++ b/dev/interfaces/Problems/index.html @@ -1,19 +1,19 @@ <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciMLProblems · SciMLBase.jl</title><meta name="title" content="SciMLProblems · SciMLBase.jl"/><meta property="og:title" content="SciMLProblems · SciMLBase.jl"/><meta property="twitter:title" content="SciMLProblems · 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/Problems/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Problems/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Problems/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><li class="is-active"><a class="tocitem" href>SciMLProblems</a><ul class="internal"><li><a class="tocitem" href="#Definition-of-the-AbstractSciMLProblem-Interface"><span>Definition of the AbstractSciMLProblem Interface</span></a></li><li><a class="tocitem" href="#Problem-Traits"><span>Problem Traits</span></a></li><li><a class="tocitem" href="#AbstractSciMLProblem-API"><span>AbstractSciMLProblem API</span></a></li></ul></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><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciMLProblems</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciMLProblems</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/Problems.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="scimlproblems"><a class="docs-heading-anchor" href="#scimlproblems">SciMLProblems</a><a id="scimlproblems-1"></a><a class="docs-heading-anchor-permalink" href="#scimlproblems" title="Permalink"></a></h1><p>The cornerstone of the SciML common interface is the problem type definition. These definitions are the encoding of mathematical problems into a numerically computable form.</p><h3 id="Note-About-Symbolics-and-ModelingToolkit"><a class="docs-heading-anchor" href="#Note-About-Symbolics-and-ModelingToolkit">Note About Symbolics and ModelingToolkit</a><a id="Note-About-Symbolics-and-ModelingToolkit-1"></a><a class="docs-heading-anchor-permalink" href="#Note-About-Symbolics-and-ModelingToolkit" title="Permalink"></a></h3><p>The symbolic analog to the problem interface is the ModelingToolkit <code>AbstractSystem</code>. For example, <code>ODESystem</code> is the symbolic analog to <code>ODEProblem</code>. Each of these system types have a method for constructing the associated problem and function types.</p><h2 id="Definition-of-the-AbstractSciMLProblem-Interface"><a class="docs-heading-anchor" href="#Definition-of-the-AbstractSciMLProblem-Interface">Definition of the AbstractSciMLProblem Interface</a><a id="Definition-of-the-AbstractSciMLProblem-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Definition-of-the-AbstractSciMLProblem-Interface" title="Permalink"></a></h2><p>The following standard principles should be adhered to across all <code>AbstractSciMLProblem</code> instantiations.</p><h3 id="In-place-Specification"><a class="docs-heading-anchor" href="#In-place-Specification">In-place Specification</a><a id="In-place-Specification-1"></a><a class="docs-heading-anchor-permalink" href="#In-place-Specification" title="Permalink"></a></h3><p>Each <code>AbstractSciMLProblem</code> type can be called with an "is inplace" (iip) choice. For example:</p><pre><code class="language-julia hljs">ODEProblem(f,u0,tspan,p) -ODEProblem{iip}(f,u0,tspan,p)</code></pre><p>which is a boolean for whether the function is in the inplace form (mutating to change the first value). This is automatically determined using the methods table but note that for full type-inferability of the <code>AbstractSciMLProblem</code> this iip-ness should be specified.</p><p>Additionally, the functions are fully specialized to reduce the runtimes. If one would instead like to not specialize on the functions to reduce compile time, then one can set <code>recompile</code> to false.</p><h3 id="Specialization-Levels"><a class="docs-heading-anchor" href="#Specialization-Levels">Specialization Levels</a><a id="Specialization-Levels-1"></a><a class="docs-heading-anchor-permalink" href="#Specialization-Levels" title="Permalink"></a></h3><p>Specialization levels in problem definitions are used to control the amount of compilation specialization is performed on the model functions in order to trade off between runtime performance, simplicity, and compile-time performance. The default choice of specialization is <code>AutoSpecialize</code>, which seeks to allow for using fully precompiled solvers in common scenarios but falls back to a runtime-optimal approach when further customization is used.</p><p>Specialization levels are given as the second type parameter in <code>AbstractSciMLProblem</code> constructors. For example, this is done via:</p><pre><code class="language-julia hljs">ODEProblem{iip,specialization}(f,u0,tspan,p)</code></pre><p>Note that <code>iip</code> choice is required for specialization choices to be made.</p><h4 id="Specialization-Choices"><a class="docs-heading-anchor" href="#Specialization-Choices">Specialization Choices</a><a id="Specialization-Choices-1"></a><a class="docs-heading-anchor-permalink" href="#Specialization-Choices" title="Permalink"></a></h4><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSpecialization" href="#SciMLBase.AbstractSpecialization"><code>SciMLBase.AbstractSpecialization</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSpecialization</code></pre><p>Supertype for the specialization types. Controls the compilation and function specialization behavior of SciMLFunctions, ultimately controlling the runtime vs compile-time trade-off.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L3">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AutoSpecialize" href="#SciMLBase.AutoSpecialize"><code>SciMLBase.AutoSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct AutoSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p>The default specialization level for problem functions. <code>AutoSpecialize</code> works by applying a function wrap just-in-time before the solve process to disable just-in-time re-specialization of the solver to the specific choice of model <code>f</code> and thus allow for using a cached solver compilation from a different <code>f</code>. This wrapping process can lead to a small decreased runtime performance with a benefit of a greatly decreased compile-time.</p><p><strong>Note About Benchmarking and Runtime Optimality</strong></p><p>It is recommended that <code>AutoSpecialize</code> is not used in any benchmarking due to the potential effect of function wrapping on runtimes. <code>AutoSpecialize</code>'s use case is targeted at decreased latency for REPL performance and not for cases where where top runtime performance is required (such as in optimization loops). Generally, for non-stiff equations the cost will be minimal and potentially not even measurable. For stiff equations, function wrapping has the limitation that only chunk sized 1 Dual numbers are allowed, which can decrease Jacobian construction performance.</p><p><strong>Limitations of <code>AutoSpecialize</code></strong></p><p>The following limitations are not fundamental to the implementation of <code>AutoSpecialize</code>, but are instead chosen as a compromise between default precompilation times and ease of maintenance. Please open an issue to discuss lifting any potential limitations.</p><ul><li><code>AutoSpecialize</code> is only setup to wrap the functions from in-place ODEs. Other cases are excluded for the time being due to time limitations.</li><li><code>AutoSpecialize</code> will only lead to compilation reuse if the ODEFunction's other functions (such as jac and tgrad) are the default <code>nothing</code>. These could be JIT wrapped as well in a future version.</li><li><code>AutoSpecialize</code>'d functions are only compatible with Jacobian calculations performed with chunk size 1, and only with tag <code>DiffEqBase.OrdinaryDiffEqTag()</code>. Thus ODE solvers written on the common interface must be careful to detect the <code>AutoSpecialize</code> case and perform differentiation under these constraints, use finite differencing, or manually unwrap before solving. This will lead to decreased runtime performance for sufficiently large Jacobians.</li><li><code>AutoSpecialize</code> only wraps on Julia v1.8 and higher.</li><li><code>AutoSpecialize</code> does not handle cases with units. If unitful values are detected, wrapping is automatically disabled.</li><li><code>AutoSpecialize</code> only wraps cases for which <code>promote_rule</code> is defined between <code>u0</code> and dual numbers, <code>u0</code> and <code>t</code>, and for which <code>ArrayInterface.promote_eltype</code> is defined on <code>u0</code> to dual numbers.</li><li><code>AutoSpecialize</code> only wraps cases for which <code>f.mass_matrix isa UniformScaling</code>, the default.</li><li><code>AutoSpecialize</code> does not wrap cases where <code>f isa AbstractSciMLOperator</code></li><li>By default, only the <code>u0 isa Vector{Float64}</code>, <code>eltype(tspan) isa Float64</code>, and <code>typeof(p) isa Union{Vector{Float64},SciMLBase.NullParameters}</code> are specialized by the solver libraries. Other forms can be specialized with <code>AutoSpecialize</code>, but must be done in the precompilation of downstream libraries.</li><li><code>AutoSpecialize</code>d functions are manually unwrapped in adjoint methods in SciMLSensitivity.jl in order to allow compiler support for automatic differentiation. Improved versions of adjoints which decrease the recompilation surface will come in non-breaking updates.</li></ul><p>Cases where automatic wrapping is disabled are equivalent to <code>FullSpecialize</code>.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) +ODEProblem{iip}(f,u0,tspan,p)</code></pre><p>which is a boolean for whether the function is in the inplace form (mutating to change the first value). This is automatically determined using the methods table but note that for full type-inferability of the <code>AbstractSciMLProblem</code> this iip-ness should be specified.</p><p>Additionally, the functions are fully specialized to reduce the runtimes. If one would instead like to not specialize on the functions to reduce compile time, then one can set <code>recompile</code> to false.</p><h3 id="Specialization-Levels"><a class="docs-heading-anchor" href="#Specialization-Levels">Specialization Levels</a><a id="Specialization-Levels-1"></a><a class="docs-heading-anchor-permalink" href="#Specialization-Levels" title="Permalink"></a></h3><p>Specialization levels in problem definitions are used to control the amount of compilation specialization is performed on the model functions in order to trade off between runtime performance, simplicity, and compile-time performance. The default choice of specialization is <code>AutoSpecialize</code>, which seeks to allow for using fully precompiled solvers in common scenarios but falls back to a runtime-optimal approach when further customization is used.</p><p>Specialization levels are given as the second type parameter in <code>AbstractSciMLProblem</code> constructors. For example, this is done via:</p><pre><code class="language-julia hljs">ODEProblem{iip,specialization}(f,u0,tspan,p)</code></pre><p>Note that <code>iip</code> choice is required for specialization choices to be made.</p><h4 id="Specialization-Choices"><a class="docs-heading-anchor" href="#Specialization-Choices">Specialization Choices</a><a id="Specialization-Choices-1"></a><a class="docs-heading-anchor-permalink" href="#Specialization-Choices" title="Permalink"></a></h4><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSpecialization" href="#SciMLBase.AbstractSpecialization"><code>SciMLBase.AbstractSpecialization</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSpecialization</code></pre><p>Supertype for the specialization types. Controls the compilation and function specialization behavior of SciMLFunctions, ultimately controlling the runtime vs compile-time trade-off.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L3">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AutoSpecialize" href="#SciMLBase.AutoSpecialize"><code>SciMLBase.AutoSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct AutoSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p>The default specialization level for problem functions. <code>AutoSpecialize</code> works by applying a function wrap just-in-time before the solve process to disable just-in-time re-specialization of the solver to the specific choice of model <code>f</code> and thus allow for using a cached solver compilation from a different <code>f</code>. This wrapping process can lead to a small decreased runtime performance with a benefit of a greatly decreased compile-time.</p><p><strong>Note About Benchmarking and Runtime Optimality</strong></p><p>It is recommended that <code>AutoSpecialize</code> is not used in any benchmarking due to the potential effect of function wrapping on runtimes. <code>AutoSpecialize</code>'s use case is targeted at decreased latency for REPL performance and not for cases where where top runtime performance is required (such as in optimization loops). Generally, for non-stiff equations the cost will be minimal and potentially not even measurable. For stiff equations, function wrapping has the limitation that only chunk sized 1 Dual numbers are allowed, which can decrease Jacobian construction performance.</p><p><strong>Limitations of <code>AutoSpecialize</code></strong></p><p>The following limitations are not fundamental to the implementation of <code>AutoSpecialize</code>, but are instead chosen as a compromise between default precompilation times and ease of maintenance. Please open an issue to discuss lifting any potential limitations.</p><ul><li><code>AutoSpecialize</code> is only setup to wrap the functions from in-place ODEs. Other cases are excluded for the time being due to time limitations.</li><li><code>AutoSpecialize</code> will only lead to compilation reuse if the ODEFunction's other functions (such as jac and tgrad) are the default <code>nothing</code>. These could be JIT wrapped as well in a future version.</li><li><code>AutoSpecialize</code>'d functions are only compatible with Jacobian calculations performed with chunk size 1, and only with tag <code>DiffEqBase.OrdinaryDiffEqTag()</code>. Thus ODE solvers written on the common interface must be careful to detect the <code>AutoSpecialize</code> case and perform differentiation under these constraints, use finite differencing, or manually unwrap before solving. This will lead to decreased runtime performance for sufficiently large Jacobians.</li><li><code>AutoSpecialize</code> only wraps on Julia v1.8 and higher.</li><li><code>AutoSpecialize</code> does not handle cases with units. If unitful values are detected, wrapping is automatically disabled.</li><li><code>AutoSpecialize</code> only wraps cases for which <code>promote_rule</code> is defined between <code>u0</code> and dual numbers, <code>u0</code> and <code>t</code>, and for which <code>ArrayInterface.promote_eltype</code> is defined on <code>u0</code> to dual numbers.</li><li><code>AutoSpecialize</code> only wraps cases for which <code>f.mass_matrix isa UniformScaling</code>, the default.</li><li><code>AutoSpecialize</code> does not wrap cases where <code>f isa AbstractSciMLOperator</code></li><li>By default, only the <code>u0 isa Vector{Float64}</code>, <code>eltype(tspan) isa Float64</code>, and <code>typeof(p) isa Union{Vector{Float64},SciMLBase.NullParameters}</code> are specialized by the solver libraries. Other forms can be specialized with <code>AutoSpecialize</code>, but must be done in the precompilation of downstream libraries.</li><li><code>AutoSpecialize</code>d functions are manually unwrapped in adjoint methods in SciMLSensitivity.jl in order to allow compiler support for automatic differentiation. Improved versions of adjoints which decrease the recompilation surface will come in non-breaking updates.</li></ul><p>Cases where automatic wrapping is disabled are equivalent to <code>FullSpecialize</code>.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) # Note this is the same as ODEProblem(f, [1.0], (0.0,1.0)) # If no preferences are set -ODEProblem{true, SciMLBase.AutoSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L12">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.NoSpecialize" href="#SciMLBase.NoSpecialize"><code>SciMLBase.NoSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct NoSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>NoSpecialize</code> forces SciMLFunctions to not specialize on the types of functions wrapped within it. This ultimately contributes to a form such that every <code>prob.f</code> type is the same, meaning compilation caches are fully reused, with the downside of losing runtime performance. <code>NoSpecialize</code> is the form that most fully trades off runtime for compile time. Unlike <code>AutoSpecialize</code>, <code>NoSpecialize</code> can be used with any <code>SciMLFunction</code>.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) -ODEProblem{true, SciMLBase.NoSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.FunctionWrapperSpecialize" href="#SciMLBase.FunctionWrapperSpecialize"><code>SciMLBase.FunctionWrapperSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct FunctionWrapperSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>FunctionWrapperSpecialize</code> is an eager wrapping choice which performs a function wrapping during the <code>ODEProblem</code> construction. This performs the function wrapping at the earliest possible point, giving the best compile-time vs runtime performance, but with the difficulty that any usage of <code>prob.f</code> needs to account for the function wrapper's presence. While optimal in a performance sense, this method has many usability issues with nonstandard solvers and analyses as it requires unwrapping before re-wrapping for any type changes. Thus this method is not used by default. Given that the compile-time different is almost undetectable from AutoSpecialize, this method is mostly used as a benchmarking reference for speed of light for <code>AutoSpecialize</code>.</p><p><strong>Limitations of <code>FunctionWrapperSpecialize</code></strong></p><p><code>FunctionWrapperSpecialize</code> has all of the limitations of <code>AutoSpecialize</code>, but also includes the limitations:</p><ul><li><code>prob.f</code> is directly specialized to the types of <code>(u,p,t)</code>, and any usage of <code>prob.f</code> on other types first requires using <code>SciMLBase.unwrapped_f(prob.f)</code> to remove the function wrapper.</li><li><code>FunctionWrapperSpecialize</code> can only be used by the <code>ODEProblem</code> constructor. If an <code>ODEFunction</code> is being constructed, the user must manually use <code>DiffEqBase.wrap_iip</code> on <code>f</code> before calling <code>ODEFunction{true,FunctionWrapperSpecialize}(f)</code>. This is a fundamental limitation of the approach as the types of <code>(u,p,t)</code> are required in the construction process and not accessible in the <code>AbstractSciMLFunction</code> constructors.</li></ul><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) -ODEProblem{true, SciMLBase.FunctionWrapperSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L103">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.FullSpecialize" href="#SciMLBase.FullSpecialize"><code>SciMLBase.FullSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct FullSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>FullSpecialize</code> is an eager specialization choice which directly types the <code>AbstractSciMLFunction</code> struct to match the type of the model <code>f</code>. This forces recompilation of the solver on each new function type <code>f</code>, leading to the most compile times with the benefit of having the best runtime performance.</p><p><code>FullSpecialize</code> should be used in all cases where top runtime performance is required, such as in long-running simulations and benchmarking.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) -ODEProblem{true, SciMLBase.FullSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L143">source</a></section></article><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The specialization level must be precompile snooped in the appropriate solver package in order to enable the full precompilation and system image generation for zero-latency usage. By default, this is only done with AutoSpecialize and on types <code>u isa Vector{Float64}</code>, <code>eltype(tspan) isa Float64</code>, and <code>p isa Union{Vector{Float64}, SciMLBase.NullParameters}</code>. Precompilation snooping in the solvers can be done using the Preferences.jl setup on the appropriate solver. See the solver library's documentation for more details.</p></div></div><h3 id="Default-Parameters"><a class="docs-heading-anchor" href="#Default-Parameters">Default Parameters</a><a id="Default-Parameters-1"></a><a class="docs-heading-anchor-permalink" href="#Default-Parameters" title="Permalink"></a></h3><p>By default, <code>AbstractSciMLProblem</code> types use the <code>SciMLBase.NullParameters()</code> singleton to define the absence of parameters by default. The reason is because this throws an informative error if the parameter is used or accessed within the user's function, for example, <code>p[1]</code> will throw an informative error about forgetting to pass parameters.</p><h3 id="Keyword-Argument-Splatting"><a class="docs-heading-anchor" href="#Keyword-Argument-Splatting">Keyword Argument Splatting</a><a id="Keyword-Argument-Splatting-1"></a><a class="docs-heading-anchor-permalink" href="#Keyword-Argument-Splatting" title="Permalink"></a></h3><p>All <code>AbstractSciMLProblem</code> types allow for passing keyword arguments that would get forwarded to the solver. The reason for this is that in many cases, like in <code>EnsembleProblem</code> usage, a <code>AbstractSciMLProblem</code> might be associated with some solver configuration, such as a callback or tolerance. Thus, for flexibility the extra keyword arguments to the <code>AbstractSciMLProblem</code> are carried to the solver.</p><h3 id="problem_type"><a class="docs-heading-anchor" href="#problem_type">problem_type</a><a id="problem_type-1"></a><a class="docs-heading-anchor-permalink" href="#problem_type" title="Permalink"></a></h3><p><code>AbstractSciMLProblem</code> types include a non-public API definition of <code>problem_type</code> which holds a trait type corresponding to the way the <code>AbstractSciMLProblem</code> was constructed. For example, if a <code>SecondOrderODEProblem</code> constructor is used, the returned problem is simply a <code>ODEProblem</code> for interoperability with any <code>ODEProblem</code> algorithm. However, in this case the <code>problem_type</code> will be populated with the <code>SecondOrderODEProblem</code> type, indicating the original definition and extra structure.</p><h3 id="Remake"><a class="docs-heading-anchor" href="#Remake">Remake</a><a id="Remake-1"></a><a class="docs-heading-anchor-permalink" href="#Remake" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.remake" href="#SciMLBase.remake"><code>SciMLBase.remake</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">remake(thing; <keyword arguments>)</code></pre><p>Re-construct <code>thing</code> with new field values specified by the keyword arguments.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L22-L27">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::ODEProblem; f = missing, u0 = missing, tspan = missing, - p = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>ODEProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L45-L51">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::BVProblem; f = missing, u0 = missing, tspan = missing, - p = missing, kwargs = missing, problem_type = missing, _kwargs...)</code></pre><p>Remake the given <code>BVProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L123-L128">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::SDEProblem; f = missing, u0 = missing, tspan = missing, +ODEProblem{true, SciMLBase.AutoSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L12">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.NoSpecialize" href="#SciMLBase.NoSpecialize"><code>SciMLBase.NoSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct NoSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>NoSpecialize</code> forces SciMLFunctions to not specialize on the types of functions wrapped within it. This ultimately contributes to a form such that every <code>prob.f</code> type is the same, meaning compilation caches are fully reused, with the downside of losing runtime performance. <code>NoSpecialize</code> is the form that most fully trades off runtime for compile time. Unlike <code>AutoSpecialize</code>, <code>NoSpecialize</code> can be used with any <code>SciMLFunction</code>.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) +ODEProblem{true, SciMLBase.NoSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.FunctionWrapperSpecialize" href="#SciMLBase.FunctionWrapperSpecialize"><code>SciMLBase.FunctionWrapperSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct FunctionWrapperSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>FunctionWrapperSpecialize</code> is an eager wrapping choice which performs a function wrapping during the <code>ODEProblem</code> construction. This performs the function wrapping at the earliest possible point, giving the best compile-time vs runtime performance, but with the difficulty that any usage of <code>prob.f</code> needs to account for the function wrapper's presence. While optimal in a performance sense, this method has many usability issues with nonstandard solvers and analyses as it requires unwrapping before re-wrapping for any type changes. Thus this method is not used by default. Given that the compile-time different is almost undetectable from AutoSpecialize, this method is mostly used as a benchmarking reference for speed of light for <code>AutoSpecialize</code>.</p><p><strong>Limitations of <code>FunctionWrapperSpecialize</code></strong></p><p><code>FunctionWrapperSpecialize</code> has all of the limitations of <code>AutoSpecialize</code>, but also includes the limitations:</p><ul><li><code>prob.f</code> is directly specialized to the types of <code>(u,p,t)</code>, and any usage of <code>prob.f</code> on other types first requires using <code>SciMLBase.unwrapped_f(prob.f)</code> to remove the function wrapper.</li><li><code>FunctionWrapperSpecialize</code> can only be used by the <code>ODEProblem</code> constructor. If an <code>ODEFunction</code> is being constructed, the user must manually use <code>DiffEqBase.wrap_iip</code> on <code>f</code> before calling <code>ODEFunction{true,FunctionWrapperSpecialize}(f)</code>. This is a fundamental limitation of the approach as the types of <code>(u,p,t)</code> are required in the construction process and not accessible in the <code>AbstractSciMLFunction</code> constructors.</li></ul><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) +ODEProblem{true, SciMLBase.FunctionWrapperSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L103">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.FullSpecialize" href="#SciMLBase.FullSpecialize"><code>SciMLBase.FullSpecialize</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">struct FullSpecialize <: SciMLBase.AbstractSpecialization</code></pre><p><code>FullSpecialize</code> is an eager specialization choice which directly types the <code>AbstractSciMLFunction</code> struct to match the type of the model <code>f</code>. This forces recompilation of the solver on each new function type <code>f</code>, leading to the most compile times with the benefit of having the best runtime performance.</p><p><code>FullSpecialize</code> should be used in all cases where top runtime performance is required, such as in long-running simulations and benchmarking.</p><p><strong>Example</strong></p><pre><code class="nohighlight hljs">f(du,u,p,t) = (du .= u) +ODEProblem{true, SciMLBase.FullSpecialize}(f, [1.0], (0.0,1.0))</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L143">source</a></section></article><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The specialization level must be precompile snooped in the appropriate solver package in order to enable the full precompilation and system image generation for zero-latency usage. By default, this is only done with AutoSpecialize and on types <code>u isa Vector{Float64}</code>, <code>eltype(tspan) isa Float64</code>, and <code>p isa Union{Vector{Float64}, SciMLBase.NullParameters}</code>. Precompilation snooping in the solvers can be done using the Preferences.jl setup on the appropriate solver. See the solver library's documentation for more details.</p></div></div><h3 id="Default-Parameters"><a class="docs-heading-anchor" href="#Default-Parameters">Default Parameters</a><a id="Default-Parameters-1"></a><a class="docs-heading-anchor-permalink" href="#Default-Parameters" title="Permalink"></a></h3><p>By default, <code>AbstractSciMLProblem</code> types use the <code>SciMLBase.NullParameters()</code> singleton to define the absence of parameters by default. The reason is because this throws an informative error if the parameter is used or accessed within the user's function, for example, <code>p[1]</code> will throw an informative error about forgetting to pass parameters.</p><h3 id="Keyword-Argument-Splatting"><a class="docs-heading-anchor" href="#Keyword-Argument-Splatting">Keyword Argument Splatting</a><a id="Keyword-Argument-Splatting-1"></a><a class="docs-heading-anchor-permalink" href="#Keyword-Argument-Splatting" title="Permalink"></a></h3><p>All <code>AbstractSciMLProblem</code> types allow for passing keyword arguments that would get forwarded to the solver. The reason for this is that in many cases, like in <code>EnsembleProblem</code> usage, a <code>AbstractSciMLProblem</code> might be associated with some solver configuration, such as a callback or tolerance. Thus, for flexibility the extra keyword arguments to the <code>AbstractSciMLProblem</code> are carried to the solver.</p><h3 id="problem_type"><a class="docs-heading-anchor" href="#problem_type">problem_type</a><a id="problem_type-1"></a><a class="docs-heading-anchor-permalink" href="#problem_type" title="Permalink"></a></h3><p><code>AbstractSciMLProblem</code> types include a non-public API definition of <code>problem_type</code> which holds a trait type corresponding to the way the <code>AbstractSciMLProblem</code> was constructed. For example, if a <code>SecondOrderODEProblem</code> constructor is used, the returned problem is simply a <code>ODEProblem</code> for interoperability with any <code>ODEProblem</code> algorithm. However, in this case the <code>problem_type</code> will be populated with the <code>SecondOrderODEProblem</code> type, indicating the original definition and extra structure.</p><h3 id="Remake"><a class="docs-heading-anchor" href="#Remake">Remake</a><a id="Remake-1"></a><a class="docs-heading-anchor-permalink" href="#Remake" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.remake" href="#SciMLBase.remake"><code>SciMLBase.remake</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">remake(thing; <keyword arguments>)</code></pre><p>Re-construct <code>thing</code> with new field values specified by the keyword arguments.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L22-L27">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::ODEProblem; f = missing, u0 = missing, tspan = missing, + p = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>ODEProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L45-L51">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::BVProblem; f = missing, u0 = missing, tspan = missing, + p = missing, kwargs = missing, problem_type = missing, _kwargs...)</code></pre><p>Remake the given <code>BVProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L123-L128">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::SDEProblem; f = missing, u0 = missing, tspan = missing, p = missing, noise = missing, noise_rate_prototype = missing, - seed = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>SDEProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L184-L190">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::OptimizationProblem; f = missing, u0 = missing, p = missing, + seed = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>SDEProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L184-L190">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::OptimizationProblem; f = missing, u0 = missing, p = missing, lb = missing, ub = missing, int = missing, lcons = missing, ucons = missing, - sense = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>OptimizationProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L246-L253">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::NonlinearProblem; f = missing, u0 = missing, p = missing, - problem_type = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>NonlinearProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L321-L327">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::NonlinearLeastSquaresProblem; f = missing, u0 = missing, p = missing, - kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>NonlinearLeastSquaresProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/remake.jl#L373-L378">source</a></section></article><h2 id="Problem-Traits"><a class="docs-heading-anchor" href="#Problem-Traits">Problem Traits</a><a id="Problem-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Problem-Traits" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isinplace-Tuple{SciMLBase.AbstractDEProblem}" href="#SciMLBase.isinplace-Tuple{SciMLBase.AbstractDEProblem}"><code>SciMLBase.isinplace</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">isinplace(prob::AbstractSciMLProblem)</code></pre><p>Determine whether the function of the given problem operates in place or not.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/problems/problem_traits.jl#L32-L36">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.is_diagonal_noise" href="#SciMLBase.is_diagonal_noise"><code>SciMLBase.is_diagonal_noise</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">is_diagonal_noise(prob::AbstractSciMLProblem)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/problems/problem_traits.jl#L1-L3">source</a></section></article><h2 id="AbstractSciMLProblem-API"><a class="docs-heading-anchor" href="#AbstractSciMLProblem-API">AbstractSciMLProblem API</a><a id="AbstractSciMLProblem-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLProblem-API" title="Permalink"></a></h2><h3 id="Defaults-and-Preferences"><a class="docs-heading-anchor" href="#Defaults-and-Preferences">Defaults and Preferences</a><a id="Defaults-and-Preferences-1"></a><a class="docs-heading-anchor-permalink" href="#Defaults-and-Preferences" title="Permalink"></a></h3><p><code>SpecializationLevel</code> at <code>SciMLBase</code> can be used to set the default specialization level. The following shows how to set the specialization default to <code>FullSpecialize</code>:</p><pre><code class="language-julia hljs">using Preferences, UUIDs -set_preferences!(UUID("0bca4576-84f4-4d90-8ffe-ffa030f20462"), "SpecializationLevel" => "FullSpecialize")</code></pre><p>The default is <code>AutoSpecialize</code>.</p><h3 id="Abstract-SciMLProblems"><a class="docs-heading-anchor" href="#Abstract-SciMLProblems">Abstract SciMLProblems</a><a id="Abstract-SciMLProblems-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciMLProblems" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLProblem" href="#SciMLBase.AbstractSciMLProblem"><code>SciMLBase.AbstractSciMLProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSciMLProblem</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L46">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDEProblem" href="#SciMLBase.AbstractDEProblem"><code>SciMLBase.AbstractDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDEProblem <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base type for all DifferentialEquations.jl problems. Concrete subtypes of <code>AbstractDEProblem</code> contain the necessary information to fully define a differential equation of the corresponding type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L52">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearProblem" href="#SciMLBase.AbstractLinearProblem"><code>SciMLBase.AbstractLinearProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearProblem{bType, isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define linear systems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L71">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearProblem" href="#SciMLBase.AbstractNonlinearProblem"><code>SciMLBase.AbstractNonlinearProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearProblem{uType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define nonlinear solve problems (f(u)=0).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L100">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntegralProblem" href="#SciMLBase.AbstractIntegralProblem"><code>SciMLBase.AbstractIntegralProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralProblem{isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define integrals suitable for quadrature.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L78">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractOptimizationProblem" href="#SciMLBase.AbstractOptimizationProblem"><code>SciMLBase.AbstractOptimizationProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractOptimizationProblem{isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define equations for optimization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L85">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoiseProblem" href="#SciMLBase.AbstractNoiseProblem"><code>SciMLBase.AbstractNoiseProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoiseProblem <: SciMLBase.AbstractDEProblem</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L112">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEProblem" href="#SciMLBase.AbstractODEProblem"><code>SciMLBase.AbstractODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEProblem{uType, tType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define ODE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiscreteProblem" href="#SciMLBase.AbstractDiscreteProblem"><code>SciMLBase.AbstractDiscreteProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiscreteProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre><p>Base for types which define discrete problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L124">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractAnalyticalProblem" href="#SciMLBase.AbstractAnalyticalProblem"><code>SciMLBase.AbstractAnalyticalProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractAnalyticalProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L132">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEProblem" href="#SciMLBase.AbstractRODEProblem"><code>SciMLBase.AbstractRODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEProblem{uType, tType, isinplace, ND} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define RODE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L138">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEProblem" href="#SciMLBase.AbstractSDEProblem"><code>SciMLBase.AbstractSDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEProblem{uType, tType, isinplace, ND} <: SciMLBase.AbstractRODEProblem{uType, tType, isinplace, ND}</code></pre><p>Base for types which define SDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L145">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEProblem" href="#SciMLBase.AbstractDAEProblem"><code>SciMLBase.AbstractDAEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEProblem{uType, duType, tType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define DAE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L153">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEProblem" href="#SciMLBase.AbstractDDEProblem"><code>SciMLBase.AbstractDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEProblem{uType, tType, lType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define DDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L160">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractConstantLagDDEProblem" href="#SciMLBase.AbstractConstantLagDDEProblem"><code>SciMLBase.AbstractConstantLagDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractConstantLagDDEProblem{uType, tType, lType, isinplace} <: SciMLBase.AbstractDDEProblem{uType, tType, lType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L167">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSecondOrderODEProblem" href="#SciMLBase.AbstractSecondOrderODEProblem"><code>SciMLBase.AbstractSecondOrderODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSecondOrderODEProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L173">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractBVProblem" href="#SciMLBase.AbstractBVProblem"><code>SciMLBase.AbstractBVProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractBVProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre><p>Base for types which define BVP problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L179">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractJumpProblem" href="#SciMLBase.AbstractJumpProblem"><code>SciMLBase.AbstractJumpProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractJumpProblem{P, J} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define jump problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L187">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEProblem" href="#SciMLBase.AbstractSDDEProblem"><code>SciMLBase.AbstractSDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEProblem{uType, tType, lType, isinplace, ND} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define SDDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L194">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractConstantLagSDDEProblem" href="#SciMLBase.AbstractConstantLagSDDEProblem"><code>SciMLBase.AbstractConstantLagSDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractConstantLagSDDEProblem{uType, tType, lType, isinplace, ND} <: SciMLBase.AbstractSDDEProblem{uType, tType, lType, isinplace, ND}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L201">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractPDEProblem" href="#SciMLBase.AbstractPDEProblem"><code>SciMLBase.AbstractPDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractPDEProblem <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define PDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L207">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Array_and_Number/">« SciML Container (Array) and Number Interfaces</a><a class="docs-footer-nextpage" href="../SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.) »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + sense = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>OptimizationProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L246-L253">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::NonlinearProblem; f = missing, u0 = missing, p = missing, + problem_type = missing, kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>NonlinearProblem</code>. If <code>u0</code> or <code>p</code> are given as symbolic maps <code>ModelingToolkit.jl</code> has to be loaded.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L321-L327">source</a></section><section><div><pre><code class="language-julia hljs">remake(prob::NonlinearLeastSquaresProblem; f = missing, u0 = missing, p = missing, + kwargs = missing, _kwargs...)</code></pre><p>Remake the given <code>NonlinearLeastSquaresProblem</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/remake.jl#L373-L378">source</a></section></article><h2 id="Problem-Traits"><a class="docs-heading-anchor" href="#Problem-Traits">Problem Traits</a><a id="Problem-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Problem-Traits" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.isinplace-Tuple{SciMLBase.AbstractDEProblem}" href="#SciMLBase.isinplace-Tuple{SciMLBase.AbstractDEProblem}"><code>SciMLBase.isinplace</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">isinplace(prob::AbstractSciMLProblem)</code></pre><p>Determine whether the function of the given problem operates in place or not.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/problems/problem_traits.jl#L32-L36">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.is_diagonal_noise" href="#SciMLBase.is_diagonal_noise"><code>SciMLBase.is_diagonal_noise</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">is_diagonal_noise(prob::AbstractSciMLProblem)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/problems/problem_traits.jl#L1-L3">source</a></section></article><h2 id="AbstractSciMLProblem-API"><a class="docs-heading-anchor" href="#AbstractSciMLProblem-API">AbstractSciMLProblem API</a><a id="AbstractSciMLProblem-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLProblem-API" title="Permalink"></a></h2><h3 id="Defaults-and-Preferences"><a class="docs-heading-anchor" href="#Defaults-and-Preferences">Defaults and Preferences</a><a id="Defaults-and-Preferences-1"></a><a class="docs-heading-anchor-permalink" href="#Defaults-and-Preferences" title="Permalink"></a></h3><p><code>SpecializationLevel</code> at <code>SciMLBase</code> can be used to set the default specialization level. The following shows how to set the specialization default to <code>FullSpecialize</code>:</p><pre><code class="language-julia hljs">using Preferences, UUIDs +set_preferences!(UUID("0bca4576-84f4-4d90-8ffe-ffa030f20462"), "SpecializationLevel" => "FullSpecialize")</code></pre><p>The default is <code>AutoSpecialize</code>.</p><h3 id="Abstract-SciMLProblems"><a class="docs-heading-anchor" href="#Abstract-SciMLProblems">Abstract SciMLProblems</a><a id="Abstract-SciMLProblems-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciMLProblems" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLProblem" href="#SciMLBase.AbstractSciMLProblem"><code>SciMLBase.AbstractSciMLProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSciMLProblem</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L46">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDEProblem" href="#SciMLBase.AbstractDEProblem"><code>SciMLBase.AbstractDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDEProblem <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base type for all DifferentialEquations.jl problems. Concrete subtypes of <code>AbstractDEProblem</code> contain the necessary information to fully define a differential equation of the corresponding type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L52">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearProblem" href="#SciMLBase.AbstractLinearProblem"><code>SciMLBase.AbstractLinearProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearProblem{bType, isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define linear systems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L71">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearProblem" href="#SciMLBase.AbstractNonlinearProblem"><code>SciMLBase.AbstractNonlinearProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearProblem{uType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define nonlinear solve problems (f(u)=0).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L100">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntegralProblem" href="#SciMLBase.AbstractIntegralProblem"><code>SciMLBase.AbstractIntegralProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralProblem{isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define integrals suitable for quadrature.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L78">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractOptimizationProblem" href="#SciMLBase.AbstractOptimizationProblem"><code>SciMLBase.AbstractOptimizationProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractOptimizationProblem{isinplace} <: SciMLBase.AbstractSciMLProblem</code></pre><p>Base for types which define equations for optimization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L85">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoiseProblem" href="#SciMLBase.AbstractNoiseProblem"><code>SciMLBase.AbstractNoiseProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoiseProblem <: SciMLBase.AbstractDEProblem</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L112">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEProblem" href="#SciMLBase.AbstractODEProblem"><code>SciMLBase.AbstractODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEProblem{uType, tType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define ODE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiscreteProblem" href="#SciMLBase.AbstractDiscreteProblem"><code>SciMLBase.AbstractDiscreteProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiscreteProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre><p>Base for types which define discrete problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L124">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractAnalyticalProblem" href="#SciMLBase.AbstractAnalyticalProblem"><code>SciMLBase.AbstractAnalyticalProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractAnalyticalProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L132">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEProblem" href="#SciMLBase.AbstractRODEProblem"><code>SciMLBase.AbstractRODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEProblem{uType, tType, isinplace, ND} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define RODE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L138">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEProblem" href="#SciMLBase.AbstractSDEProblem"><code>SciMLBase.AbstractSDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEProblem{uType, tType, isinplace, ND} <: SciMLBase.AbstractRODEProblem{uType, tType, isinplace, ND}</code></pre><p>Base for types which define SDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L145">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEProblem" href="#SciMLBase.AbstractDAEProblem"><code>SciMLBase.AbstractDAEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEProblem{uType, duType, tType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define DAE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L153">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEProblem" href="#SciMLBase.AbstractDDEProblem"><code>SciMLBase.AbstractDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEProblem{uType, tType, lType, isinplace} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define DDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L160">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractConstantLagDDEProblem" href="#SciMLBase.AbstractConstantLagDDEProblem"><code>SciMLBase.AbstractConstantLagDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractConstantLagDDEProblem{uType, tType, lType, isinplace} <: SciMLBase.AbstractDDEProblem{uType, tType, lType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L167">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSecondOrderODEProblem" href="#SciMLBase.AbstractSecondOrderODEProblem"><code>SciMLBase.AbstractSecondOrderODEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSecondOrderODEProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L173">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractBVProblem" href="#SciMLBase.AbstractBVProblem"><code>SciMLBase.AbstractBVProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractBVProblem{uType, tType, isinplace} <: SciMLBase.AbstractODEProblem{uType, tType, isinplace}</code></pre><p>Base for types which define BVP problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L179">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractJumpProblem" href="#SciMLBase.AbstractJumpProblem"><code>SciMLBase.AbstractJumpProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractJumpProblem{P, J} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define jump problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L187">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEProblem" href="#SciMLBase.AbstractSDDEProblem"><code>SciMLBase.AbstractSDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEProblem{uType, tType, lType, isinplace, ND} <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define SDDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L194">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractConstantLagSDDEProblem" href="#SciMLBase.AbstractConstantLagSDDEProblem"><code>SciMLBase.AbstractConstantLagSDDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractConstantLagSDDEProblem{uType, tType, lType, isinplace, ND} <: SciMLBase.AbstractSDDEProblem{uType, tType, lType, isinplace, ND}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L201">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractPDEProblem" href="#SciMLBase.AbstractPDEProblem"><code>SciMLBase.AbstractPDEProblem</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractPDEProblem <: SciMLBase.AbstractDEProblem</code></pre><p>Base for types which define PDE problems.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L207">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Array_and_Number/">« SciML Container (Array) and Number Interfaces</a><a class="docs-footer-nextpage" href="../SciMLFunctions/">SciMLFunctions (Jacobians, Sparsity, Etc.) »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/SciMLFunctions/index.html b/dev/interfaces/SciMLFunctions/index.html index 1f6f5f786..bf53d46fe 100644 --- a/dev/interfaces/SciMLFunctions/index.html +++ b/dev/interfaces/SciMLFunctions/index.html @@ -4,4 +4,4 @@ f = (du,u,p,t) -> du .= t .* u jac = (J,u,p,t) -> (J[1,1] = t; J[2,2] = t; J) jp = Diagonal(zeros(2)) -fun = ODEFunction(f; jac=jac, jac_prototype=jp)</code></pre><p>Note that the integrators will always make a deep copy of <code>fun.jac_prototype</code>, so there's no worry of aliasing.</p><p>In general the jacobian prototype can be anything that has <code>mul!</code> defined, in particular sparse matrices or custom lazy types that support <code>mul!</code>. A special case is when the <code>jac_prototype</code> is a <code>AbstractSciMLOperator</code>, in which case you do not need to supply <code>jac</code> as it is automatically set to <code>update_coefficients!</code>. Refer to the <a href="https://docs.sciml.ai/SciMLOperators/stable/premade_operators/">SciMLOperators</a> section for more information on setting up time/parameter dependent operators.</p><h3 id="Sparsity-Handling"><a class="docs-heading-anchor" href="#Sparsity-Handling">Sparsity Handling</a><a id="Sparsity-Handling-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-Handling" title="Permalink"></a></h3><p>The solver libraries internally use packages such as <a href="https://docs.sciml.ai/FiniteDiff/stable/">FiniteDiff.jl</a> and <a href="https://docs.sciml.ai/SparseDiffTools/stable/">SparseDiffTools.jl</a> for high performance calculation of sparse Jacobians and Hessians, along with matrix-free calculations of Jacobian-Vector products (J<em>v), vector-Jacobian products (v'</em>J), and Hessian-vector products (H*v). The SciML interface gives users the ability to control these connections in order to allow for top notch performance.</p><p>The key arguments in the SciMLFunction is the <code>prototype</code>, which is an object that will be used as the underlying Jacobian/Hessian. Thus if one wants to use a sparse Jacobian, one should specify <code>jac_prototype</code> to be a sparse matrix. The sparsity pattern used in the differentiation scheme is defined by <code>sparsity</code>. By default, <code>sparsity=jac_prototype</code>, meaning that the sparse automatic differentiation scheme should specialize on the sparsity pattern given by the actual sparsity pattern. This can be overridden to say perform partial matrix coloring approximations. Additionally, the color vector for the sparse differentiation directions can be specified directly via <code>colorvec</code>. For more information on how these arguments control the differentiation process, see the aforementioned differentiation library documentations.</p><h2 id="Traits"><a class="docs-heading-anchor" href="#Traits">Traits</a><a id="Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Traits" title="Permalink"></a></h2><div class="admonition is-warning"><header class="admonition-header">Missing docstring.</header><div class="admonition-body"><p>Missing docstring for <code>SciMLBase.isinplace(f::SciMLBase.AbstractSciMLFunction)</code>. Check Documenter's build log for details.</p></div></div><h2 id="AbstractSciMLFunction-API"><a class="docs-heading-anchor" href="#AbstractSciMLFunction-API">AbstractSciMLFunction API</a><a id="AbstractSciMLFunction-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLFunction-API" title="Permalink"></a></h2><h3 id="Abstract-SciML-Functions"><a class="docs-heading-anchor" href="#Abstract-SciML-Functions">Abstract SciML Functions</a><a id="Abstract-SciML-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Functions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiffEqFunction" href="#SciMLBase.AbstractDiffEqFunction"><code>SciMLBase.AbstractDiffEqFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiffEqFunction{iip} <: SciMLBase.AbstractSciMLFunction{iip}</code></pre><p>Base for types defining differential equation functions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L580">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEFunction" href="#SciMLBase.AbstractODEFunction"><code>SciMLBase.AbstractODEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEFunction" href="#SciMLBase.AbstractSDEFunction"><code>SciMLBase.AbstractSDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L1045">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEFunction" href="#SciMLBase.AbstractDDEFunction"><code>SciMLBase.AbstractDDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L679">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEFunction" href="#SciMLBase.AbstractDAEFunction"><code>SciMLBase.AbstractDAEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L1521">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEFunction" href="#SciMLBase.AbstractRODEFunction"><code>SciMLBase.AbstractRODEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L1402">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiscreteFunction" href="#SciMLBase.AbstractDiscreteFunction"><code>SciMLBase.AbstractDiscreteFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiscreteFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L909">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEFunction" href="#SciMLBase.AbstractSDDEFunction"><code>SciMLBase.AbstractSDDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L1671">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearFunction" href="#SciMLBase.AbstractNonlinearFunction"><code>SciMLBase.AbstractNonlinearFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearFunction{iip} <: SciMLBase.AbstractSciMLFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/scimlfunctions.jl#L1786">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Problems/">« SciMLProblems</a><a class="docs-footer-nextpage" href="../Algorithms/">SciMLAlgorithms »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +fun = ODEFunction(f; jac=jac, jac_prototype=jp)</code></pre><p>Note that the integrators will always make a deep copy of <code>fun.jac_prototype</code>, so there's no worry of aliasing.</p><p>In general the jacobian prototype can be anything that has <code>mul!</code> defined, in particular sparse matrices or custom lazy types that support <code>mul!</code>. A special case is when the <code>jac_prototype</code> is a <code>AbstractSciMLOperator</code>, in which case you do not need to supply <code>jac</code> as it is automatically set to <code>update_coefficients!</code>. Refer to the <a href="https://docs.sciml.ai/SciMLOperators/stable/premade_operators/">SciMLOperators</a> section for more information on setting up time/parameter dependent operators.</p><h3 id="Sparsity-Handling"><a class="docs-heading-anchor" href="#Sparsity-Handling">Sparsity Handling</a><a id="Sparsity-Handling-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-Handling" title="Permalink"></a></h3><p>The solver libraries internally use packages such as <a href="https://docs.sciml.ai/FiniteDiff/stable/">FiniteDiff.jl</a> and <a href="https://docs.sciml.ai/SparseDiffTools/stable/">SparseDiffTools.jl</a> for high performance calculation of sparse Jacobians and Hessians, along with matrix-free calculations of Jacobian-Vector products (J<em>v), vector-Jacobian products (v'</em>J), and Hessian-vector products (H*v). The SciML interface gives users the ability to control these connections in order to allow for top notch performance.</p><p>The key arguments in the SciMLFunction is the <code>prototype</code>, which is an object that will be used as the underlying Jacobian/Hessian. Thus if one wants to use a sparse Jacobian, one should specify <code>jac_prototype</code> to be a sparse matrix. The sparsity pattern used in the differentiation scheme is defined by <code>sparsity</code>. By default, <code>sparsity=jac_prototype</code>, meaning that the sparse automatic differentiation scheme should specialize on the sparsity pattern given by the actual sparsity pattern. This can be overridden to say perform partial matrix coloring approximations. Additionally, the color vector for the sparse differentiation directions can be specified directly via <code>colorvec</code>. For more information on how these arguments control the differentiation process, see the aforementioned differentiation library documentations.</p><h2 id="Traits"><a class="docs-heading-anchor" href="#Traits">Traits</a><a id="Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Traits" title="Permalink"></a></h2><div class="admonition is-warning"><header class="admonition-header">Missing docstring.</header><div class="admonition-body"><p>Missing docstring for <code>SciMLBase.isinplace(f::SciMLBase.AbstractSciMLFunction)</code>. Check Documenter's build log for details.</p></div></div><h2 id="AbstractSciMLFunction-API"><a class="docs-heading-anchor" href="#AbstractSciMLFunction-API">AbstractSciMLFunction API</a><a id="AbstractSciMLFunction-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLFunction-API" title="Permalink"></a></h2><h3 id="Abstract-SciML-Functions"><a class="docs-heading-anchor" href="#Abstract-SciML-Functions">Abstract SciML Functions</a><a id="Abstract-SciML-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Functions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiffEqFunction" href="#SciMLBase.AbstractDiffEqFunction"><code>SciMLBase.AbstractDiffEqFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiffEqFunction{iip} <: SciMLBase.AbstractSciMLFunction{iip}</code></pre><p>Base for types defining differential equation functions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L580">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODEFunction" href="#SciMLBase.AbstractODEFunction"><code>SciMLBase.AbstractODEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDEFunction" href="#SciMLBase.AbstractSDEFunction"><code>SciMLBase.AbstractSDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L1045">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDEFunction" href="#SciMLBase.AbstractDDEFunction"><code>SciMLBase.AbstractDDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L679">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAEFunction" href="#SciMLBase.AbstractDAEFunction"><code>SciMLBase.AbstractDAEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L1521">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODEFunction" href="#SciMLBase.AbstractRODEFunction"><code>SciMLBase.AbstractRODEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L1402">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDiscreteFunction" href="#SciMLBase.AbstractDiscreteFunction"><code>SciMLBase.AbstractDiscreteFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDiscreteFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L909">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSDDEFunction" href="#SciMLBase.AbstractSDDEFunction"><code>SciMLBase.AbstractSDDEFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractSDDEFunction{iip} <: SciMLBase.AbstractDiffEqFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L1671">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearFunction" href="#SciMLBase.AbstractNonlinearFunction"><code>SciMLBase.AbstractNonlinearFunction</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearFunction{iip} <: SciMLBase.AbstractSciMLFunction{iip}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/scimlfunctions.jl#L1786">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Problems/">« SciMLProblems</a><a class="docs-footer-nextpage" href="../Algorithms/">SciMLAlgorithms »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/interfaces/Solutions/index.html b/dev/interfaces/Solutions/index.html index 3e34b2c02..87fe8989a 100644 --- a/dev/interfaces/Solutions/index.html +++ b/dev/interfaces/Solutions/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciMLSolutions · SciMLBase.jl</title><meta name="title" content="SciMLSolutions · SciMLBase.jl"/><meta property="og:title" content="SciMLSolutions · SciMLBase.jl"/><meta property="twitter:title" content="SciMLSolutions · 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/Solutions/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Solutions/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Solutions/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><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 class="is-active"><a class="tocitem" href>SciMLSolutions</a><ul class="internal"><li><a class="tocitem" href="#Definition-of-the-AbstractSciMLSolution-Interface"><span>Definition of the AbstractSciMLSolution Interface</span></a></li><li><a class="tocitem" href="#retcodes"><span>Return Codes (RetCodes)</span></a></li><li><a class="tocitem" href="#Solution-Traits"><span>Solution Traits</span></a></li><li><a class="tocitem" href="#AbstractSciMLSolution-API"><span>AbstractSciMLSolution API</span></a></li></ul></li><li><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciMLSolutions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciMLSolutions</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/Solutions.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="SciMLSolutions"><a class="docs-heading-anchor" href="#SciMLSolutions">SciMLSolutions</a><a id="SciMLSolutions-1"></a><a class="docs-heading-anchor-permalink" href="#SciMLSolutions" title="Permalink"></a></h1><h2 id="Definition-of-the-AbstractSciMLSolution-Interface"><a class="docs-heading-anchor" href="#Definition-of-the-AbstractSciMLSolution-Interface">Definition of the AbstractSciMLSolution Interface</a><a id="Definition-of-the-AbstractSciMLSolution-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Definition-of-the-AbstractSciMLSolution-Interface" title="Permalink"></a></h2><p>All <code>AbstractSciMLSolution</code> types are a subset of some <code>AbstractArray</code>. Types with time series (like <code>ODESolution</code>) are subtypes of <code>RecursiveArrayTools.AbstractVectorOfArray</code> and <code>RecursiveArrayTools.AbstractDiffEqArray</code> where appropriate. Types without a time series (like <code>OptimizationSolution</code>) are directly subsets of <code>AbstractArray</code>.</p><h3 id="Array-Interface"><a class="docs-heading-anchor" href="#Array-Interface">Array Interface</a><a id="Array-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Array-Interface" title="Permalink"></a></h3><p>Instead of working on the <code>Vector{uType}</code> directly, we can use the provided array interface.</p><pre><code class="language-julia hljs">sol[j]</code></pre><p>to access the value at timestep <code>j</code> (if the timeseries was saved), and</p><pre><code class="language-julia hljs">sol.t[j]</code></pre><p>to access the value of <code>t</code> at timestep <code>j</code>. For multi-dimensional systems, this will address first by component and lastly by time, and thus</p><pre><code class="language-julia hljs">sol[i,j]</code></pre><p>will be the <code>i</code>th component at timestep <code>j</code>. Hence, <code>sol[j][i] == sol[i, j]</code>. This is done because Julia is column-major, so the leading dimension should be contiguous in memory. If the independent variables had shape (for example, was a matrix), then <code>i</code> is the linear index. We can also access solutions with shape:</p><pre><code class="language-julia hljs">sol[i,k,j]</code></pre><p>gives the <code>[i,k]</code> component of the system at timestep <code>j</code>. The colon operator is supported, meaning that</p><pre><code class="language-julia hljs">sol[i,:]</code></pre><p>gives the timeseries for the <code>i</code>th component.</p><h3 id="Common-Field-Names"><a class="docs-heading-anchor" href="#Common-Field-Names">Common Field Names</a><a id="Common-Field-Names-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Field-Names" title="Permalink"></a></h3><ul><li><code>u</code>: the solution values</li><li><code>t</code>: the independent variable values, matching the length of the solution, if applicable</li><li><code>resid</code>: the residual of the solution, if applicable</li><li><code>original</code>: the solution object from the original solver, if it's a wrapper algorithm</li><li><code>retcode</code>: see the documentation section on return codes</li><li><code>prob</code>: the problem that was solved</li><li><code>alg</code>: the algorithm used to solve the problem</li></ul><h2 id="retcodes"><a class="docs-heading-anchor" href="#retcodes">Return Codes (RetCodes)</a><a id="retcodes-1"></a><a class="docs-heading-anchor-permalink" href="#retcodes" title="Permalink"></a></h2><p>The solution types have a <code>retcode</code> field which returns a <code>SciMLBase.ReturnCode.T</code> (from <a href="https://github.com/fredrikekre/EnumX.jl">EnumX.jl</a>, see that package for the semantics of handling EnumX types) signifying the error or satisfaction state of the solution.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode" href="#SciMLBase.ReturnCode"><code>SciMLBase.ReturnCode</code></a> — <span class="docstring-category">Module</span></header><section><div><p><code>SciML.ReturnCode</code></p><p><code>SciML.ReturnCode</code> is the standard return code enum interface for the SciML interface. Return codes are notes given by the solvers to indicate the state of the solution, for example whether it successfully solved the equations, whether it failed to solve the equations, and importantly, why it exited.</p><p><strong>Using <code>SciML.ReturnCode</code></strong></p><p><code>SciML.ReturnCode</code> use the interface of <a href="https://github.com/fredrikekre/EnumX.jl">EnumX.jl</a> and thus inherits all of the behaviors of being an EnumX. This includes the Enum type itself being referred to as <code>SciML.ReturnCode.T</code>, and each of the constituent enum states being referred to via <code>getproperty</code>, i.e. <code>SciML.ReturnCode.Success</code>.</p><p><strong>Note About Success Checking</strong></p><p>Previous iterations of the interface suggested using <code>sol.retcode == :Success</code>, however, that is now not advised instead should be replaced with <code>SciMLBase.successful_retcode(sol)</code>. The reason is that there are many different codes that can be interpreted as successful, such as <code>ReturnCode.Terminated</code> which means successfully used <code>terminate!(integrator)</code> to end an integration at a user-specified condition. As such, <code>successful_retcode</code> is the most general way to query for if the solver did not error.</p><p><strong>Properties</strong></p><ul><li><code>successful_retcode(retcode::ReturnCode.T)</code>: Determines whether the output enum is considered a success state of the solver, i.e. the solver successfully solved the equations. <code>ReturnCode.Success</code> is the most basic form, simply declaring that it was successful, but many more informative success return codes exist as well.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L1-L32">source</a></section></article><h3 id="Return-Code-Traits"><a class="docs-heading-anchor" href="#Return-Code-Traits">Return Code Traits</a><a id="Return-Code-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Return-Code-Traits" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.successful_retcode" href="#SciMLBase.successful_retcode"><code>SciMLBase.successful_retcode</code></a> — <span class="docstring-category">Function</span></header><section><div><p><code>successful_retcode(retcode::ReturnCode.T)::Bool</code> <code>successful_retcode(sol::AbstractSciMLSolution)::Bool</code></p><p>Returns a boolean for whether a return code should be interpreted as a form of success.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L425-L430">source</a></section></article><h3 id="Specific-Return-Codes"><a class="docs-heading-anchor" href="#Specific-Return-Codes">Specific Return Codes</a><a id="Specific-Return-Codes-1"></a><a class="docs-heading-anchor-permalink" href="#Specific-Return-Codes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Default" href="#SciMLBase.ReturnCode.Default"><code>SciMLBase.ReturnCode.Default</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Default</code></p><p>The default state of the solver. If this return code is given, then the solving process is either still in process or the solver library has not been setup with the return code interface and thus the return code is undetermined.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>A common reason for <code>Default</code> return codes is that a solver is a non-SciML solver which does not fully conform to the interface. Please open an issue if this is seen and it will be improved.</li><li>Another common reason for a <code>Default</code> return code is if the solver is probed internally before the solving process is done, such as through the callback interface. Return codes are set to <code>Default</code> to start and are changed to <code>Success</code> and other return codes upon finishing the solving process or hitting a numerical difficulty.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L34-L54">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Success" href="#SciMLBase.ReturnCode.Success"><code>SciMLBase.ReturnCode.Success</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Success</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, but no extra information about that success is given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>This is the most common return code and most solvers will give this return code if the solving process went as expected without any errors or detected numerical issues.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L57-L71">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Terminated" href="#SciMLBase.ReturnCode.Terminated"><code>SciMLBase.ReturnCode.Terminated</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Terminated</code></p><p>The successful termination state of the solver. If this return code is given, then the solving process was successful at terminating the solve, usually through a callback <code>affect!</code> via <code>terminate!(integrator)</code>.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is if a user calls a callback which uses <code>terminate!(integrator)</code> to halt the integration at a user-chosen stopping point.</li><li>Another common reason for this return code is due to implicit <code>terminate!</code> statements in some library callbacks. For example, <code>SteadyStateCallback</code> uses <code>terminate!</code> internally, so solutions which reach steady state will have a <code>ReturnCode.Terminated</code> state instead of a <code>ReturnCode.Success</code> state. Similarly, problems solved via SteadyStateDiffEq.jl will have this <code>ReturnCode.Terminated</code> state if a timestepping method is used to solve to steady state.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L74-L95">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.DtNaN" href="#SciMLBase.ReturnCode.DtNaN"><code>SciMLBase.ReturnCode.DtNaN</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.DtNaN</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>dt</code> of the integration was determined to be <code>NaN</code> and thus the solver could not continue.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the automatic <code>dt</code> selection algorithm is used but the starting derivative has a <code>NaN</code> or <code>Inf</code> derivative term. Double check that the <code>f(u0,p,t0)</code> term is well-defined without <code>NaN</code> or <code>Inf</code> values.</li><li>Another common reason for this return code is because of a user set <code>dt</code> which is calculated to be a <code>NaN</code>. If <code>solve(prob,alg,dt=x)</code>, double check that <code>x</code> is not <code>NaN</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L98-L118">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.MaxIters" href="#SciMLBase.ReturnCode.MaxIters"><code>SciMLBase.ReturnCode.MaxIters</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.MaxIters</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the solver's iterations hit the <code>maxiters</code> either set by default or by the user in the <code>solve</code>/<code>init</code> command.</p><p><strong>Note about Nonlinear Optimization</strong></p><p>In nonlinear optimization, many solvers (such as <code>OptimizationOptimisers.Adam</code>) do not have an exit criteria other than <code>iters == maxiters</code>. In this case, the solvers will iterate until <code>maxiters</code> and exit with a <code>Success</code> return code, as that is a successful run of the solver and not considered to be an error state. Solves with early termination criteria, such as <code>Optim.BFGS</code> exiting when the gradient is sufficiently close to zero, will give <code>ReturnCode.MaxIters</code> on exits which require the maximum iteration.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>This commonly occurs in ODE solving if a non-stiff method (e.g. <code>Tsit5</code>) is used in an algorithm choice for a stiff ODE. It is recommended that in such cases, one tries a stiff ODE solver.</li><li>This commonly occurs in optimization and nonlinear solvers if the tolerance on <code>solve</code> to too low and cannot be achieved due to floating point error or the condition number of the solver matrix. Double check that the chosen tolerance is numerically possible.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L121-L150">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.DtLessThanMin" href="#SciMLBase.ReturnCode.DtLessThanMin"><code>SciMLBase.ReturnCode.DtLessThanMin</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.DtLessThanMin</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>dt</code> of the integration was made to be less than <code>dtmin</code>, i.e. <code>dt < dtmin</code>.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the integration is going unstable. As <code>f(u,p,t) -> infinity</code>, the time steps required by the solver to accurately handle the dynamics decreases. When it gets sufficiently small, <code>dtmin</code>, an exit is thrown as the solution is likely unstable. <code>dtmin</code> is also chosen to be around the value where floating point issues cause <code>t + dt == t</code>, and thus a <code>dt</code> of that size is impossible at floating point precision.</li><li>Another common reason for this return code is if domain constraints are set, such as by using <code>isoutofdomain</code>, but the domain constraint is incorrect. For example, if one is solving the ODE <code>f(u,p,t) = -u - 1</code>, one may think "but I want a solution with <code>u > 0</code> and thus I will set <code>isoutofdomain(u,p,t) = u < 0</code>. However, the true solution of this ODE is not positive, and thus what will occur is that the solver will try to decrease <code>dt</code> until it can give an accurate solution that is positive. As this is impossible, it will continue to shrink the <code>dt</code> until <code>dt < dtmin</code> and then exit with this return code.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L153-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Unstable" href="#SciMLBase.ReturnCode.Unstable"><code>SciMLBase.ReturnCode.Unstable</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Unstable</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>unstable_check</code> function, as given by the <code>unstable_check</code> common keyword argument (or its default), give a <code>true</code> at the current state.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because <code>u</code> contains a <code>NaN</code> or <code>Inf</code> value. The default <code>unstable_check</code> only checks for these values.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L183-L199">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.InitialFailure" href="#SciMLBase.ReturnCode.InitialFailure"><code>SciMLBase.ReturnCode.InitialFailure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.InitialFailure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful because the initialization process failed.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the initialization process of a DAE solver failed to find consistent initial conditions, which can occur if the differentiation index of the DAE solver is too high. Most DAE solvers only allow for index-1 DAEs, and so an index-2 DAE will fail during this initialization. To solve this kind of problem, use <code>ModelingToolkit.jl</code> and its <code>structural_simplify</code> method to reduce the index of the DAE.</li><li>Another common reason for this return code is if the initial condition was not suitable for the numerical solve. For example, the initial point had a <code>NaN</code> or <code>Inf</code>. Or in optimization, this can occur if the initial point is outside of the bound constraints given by the user.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L202-L224">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ConvergenceFailure" href="#SciMLBase.ReturnCode.ConvergenceFailure"><code>SciMLBase.ReturnCode.ConvergenceFailure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ConvergenceFailure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful because internal nonlinear solver iterations failed to converge.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because an inappropriate nonlinear solver was chosen. If fixed point iteration is used on a stiff problem, it will be faster by avoiding the Jacobian but it will make a stiff ODE solver not stable for stiff problems!</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L227-L244">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Failure" href="#SciMLBase.ReturnCode.Failure"><code>SciMLBase.ReturnCode.Failure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Failure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful but no extra information is given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the solver is a wrapped solver (i.e. a Fortran code) which does not provide any extra information about its exit state. If this is from a Julia-based solver, please open an issue.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L247-L262">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ExactSolutionLeft" href="#SciMLBase.ReturnCode.ExactSolutionLeft"><code>SciMLBase.ReturnCode.ExactSolutionLeft</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ExactSolutionLeft</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the left solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a bracketing nonlinear solver, such as bisection, iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the first floating point value to the left for <code>x</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L265-L281">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ExactSolutionRight" href="#SciMLBase.ReturnCode.ExactSolutionRight"><code>SciMLBase.ReturnCode.ExactSolutionRight</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ExactSolutionRight</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the right solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a bracketing nonlinear solver, such as bisection, iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the first floating point value to the right for <code>x</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L284-L300">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.FloatingPointLimit" href="#SciMLBase.ReturnCode.FloatingPointLimit"><code>SciMLBase.ReturnCode.FloatingPointLimit</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.FloatingPointLimit</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the closest floating point value to the solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a nonlinear solver, such as Falsi,</li></ul><p>iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the closest floating point value to the true solution for <code>x</code>.</p><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/retcodes.jl#L303-L319">source</a></section></article><h2 id="Solution-Traits"><a class="docs-heading-anchor" href="#Solution-Traits">Solution Traits</a><a id="Solution-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Solution-Traits" title="Permalink"></a></h2><h2 id="AbstractSciMLSolution-API"><a class="docs-heading-anchor" href="#AbstractSciMLSolution-API">AbstractSciMLSolution API</a><a id="AbstractSciMLSolution-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLSolution-API" title="Permalink"></a></h2><h3 id="Abstract-SciML-Solutions"><a class="docs-heading-anchor" href="#Abstract-SciML-Solutions">Abstract SciML Solutions</a><a id="Abstract-SciML-Solutions-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Solutions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLSolution" href="#SciMLBase.AbstractSciMLSolution"><code>SciMLBase.AbstractSciMLSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><p>Union of all base solution types.</p><p>Uses a Union so that solution types can be <code><: AbstractArray</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L472-L476">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoTimeSolution" href="#SciMLBase.AbstractNoTimeSolution"><code>SciMLBase.AbstractNoTimeSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoTimeSolution{T, N} <: AbstractArray{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L452">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractTimeseriesSolution" href="#SciMLBase.AbstractTimeseriesSolution"><code>SciMLBase.AbstractTimeseriesSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractTimeseriesSolution{T, N, A} <: RecursiveArrayTools.AbstractDiffEqArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L457">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoiseProcess" href="#SciMLBase.AbstractNoiseProcess"><code>SciMLBase.AbstractNoiseProcess</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoiseProcess{T, N, A, isinplace} <: RecursiveArrayTools.AbstractDiffEqArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L467">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractEnsembleSolution" href="#SciMLBase.AbstractEnsembleSolution"><code>SciMLBase.AbstractEnsembleSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractEnsembleSolution{T, N, A} <: RecursiveArrayTools.AbstractVectorOfArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L462">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearSolution" href="#SciMLBase.AbstractLinearSolution"><code>SciMLBase.AbstractLinearSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L482">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearSolution" href="#SciMLBase.AbstractNonlinearSolution"><code>SciMLBase.AbstractNonlinearSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L487">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntegralSolution" href="#SciMLBase.AbstractIntegralSolution"><code>SciMLBase.AbstractIntegralSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L492">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSteadyStateSolution" href="#SciMLBase.AbstractSteadyStateSolution"><code>SciMLBase.AbstractSteadyStateSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L502">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractAnalyticalSolution" href="#SciMLBase.AbstractAnalyticalSolution"><code>SciMLBase.AbstractAnalyticalSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractAnalyticalSolution{T, N, S} <: SciMLBase.AbstractTimeseriesSolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L507">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODESolution" href="#SciMLBase.AbstractODESolution"><code>SciMLBase.AbstractODESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODESolution{T, N, S} <: SciMLBase.AbstractTimeseriesSolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L512">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDESolution" href="#SciMLBase.AbstractDDESolution"><code>SciMLBase.AbstractDDESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L518">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODESolution" href="#SciMLBase.AbstractRODESolution"><code>SciMLBase.AbstractRODESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L523">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAESolution" href="#SciMLBase.AbstractDAESolution"><code>SciMLBase.AbstractDAESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/d96d18da572d664991ebc18fcf4b9737addedf23/src/SciMLBase.jl#L528">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Algorithms/">« SciMLAlgorithms</a><a class="docs-footer-nextpage" href="../Init_Solve/">The SciML init and solve Functions »</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="Saturday 6 January 2024 16:54">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>SciMLSolutions · SciMLBase.jl</title><meta name="title" content="SciMLSolutions · SciMLBase.jl"/><meta property="og:title" content="SciMLSolutions · SciMLBase.jl"/><meta property="twitter:title" content="SciMLSolutions · 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/Solutions/"/><meta property="twitter:url" content="https://docs.sciml.ai/SciMLBase/stable/interfaces/Solutions/"/><link rel="canonical" href="https://docs.sciml.ai/SciMLBase/stable/interfaces/Solutions/"/><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="../Array_and_Number/">SciML Container (Array) and Number Interfaces</a></li><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 class="is-active"><a class="tocitem" href>SciMLSolutions</a><ul class="internal"><li><a class="tocitem" href="#Definition-of-the-AbstractSciMLSolution-Interface"><span>Definition of the AbstractSciMLSolution Interface</span></a></li><li><a class="tocitem" href="#retcodes"><span>Return Codes (RetCodes)</span></a></li><li><a class="tocitem" href="#Solution-Traits"><span>Solution Traits</span></a></li><li><a class="tocitem" href="#AbstractSciMLSolution-API"><span>AbstractSciMLSolution API</span></a></li></ul></li><li><a class="tocitem" href="../Init_Solve/">The SciML init and solve Functions</a></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>SciMLSolutions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>SciMLSolutions</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/Solutions.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="SciMLSolutions"><a class="docs-heading-anchor" href="#SciMLSolutions">SciMLSolutions</a><a id="SciMLSolutions-1"></a><a class="docs-heading-anchor-permalink" href="#SciMLSolutions" title="Permalink"></a></h1><h2 id="Definition-of-the-AbstractSciMLSolution-Interface"><a class="docs-heading-anchor" href="#Definition-of-the-AbstractSciMLSolution-Interface">Definition of the AbstractSciMLSolution Interface</a><a id="Definition-of-the-AbstractSciMLSolution-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Definition-of-the-AbstractSciMLSolution-Interface" title="Permalink"></a></h2><p>All <code>AbstractSciMLSolution</code> types are a subset of some <code>AbstractArray</code>. Types with time series (like <code>ODESolution</code>) are subtypes of <code>RecursiveArrayTools.AbstractVectorOfArray</code> and <code>RecursiveArrayTools.AbstractDiffEqArray</code> where appropriate. Types without a time series (like <code>OptimizationSolution</code>) are directly subsets of <code>AbstractArray</code>.</p><h3 id="Array-Interface"><a class="docs-heading-anchor" href="#Array-Interface">Array Interface</a><a id="Array-Interface-1"></a><a class="docs-heading-anchor-permalink" href="#Array-Interface" title="Permalink"></a></h3><p>Instead of working on the <code>Vector{uType}</code> directly, we can use the provided array interface.</p><pre><code class="language-julia hljs">sol[j]</code></pre><p>to access the value at timestep <code>j</code> (if the timeseries was saved), and</p><pre><code class="language-julia hljs">sol.t[j]</code></pre><p>to access the value of <code>t</code> at timestep <code>j</code>. For multi-dimensional systems, this will address first by component and lastly by time, and thus</p><pre><code class="language-julia hljs">sol[i,j]</code></pre><p>will be the <code>i</code>th component at timestep <code>j</code>. Hence, <code>sol[j][i] == sol[i, j]</code>. This is done because Julia is column-major, so the leading dimension should be contiguous in memory. If the independent variables had shape (for example, was a matrix), then <code>i</code> is the linear index. We can also access solutions with shape:</p><pre><code class="language-julia hljs">sol[i,k,j]</code></pre><p>gives the <code>[i,k]</code> component of the system at timestep <code>j</code>. The colon operator is supported, meaning that</p><pre><code class="language-julia hljs">sol[i,:]</code></pre><p>gives the timeseries for the <code>i</code>th component.</p><h3 id="Common-Field-Names"><a class="docs-heading-anchor" href="#Common-Field-Names">Common Field Names</a><a id="Common-Field-Names-1"></a><a class="docs-heading-anchor-permalink" href="#Common-Field-Names" title="Permalink"></a></h3><ul><li><code>u</code>: the solution values</li><li><code>t</code>: the independent variable values, matching the length of the solution, if applicable</li><li><code>resid</code>: the residual of the solution, if applicable</li><li><code>original</code>: the solution object from the original solver, if it's a wrapper algorithm</li><li><code>retcode</code>: see the documentation section on return codes</li><li><code>prob</code>: the problem that was solved</li><li><code>alg</code>: the algorithm used to solve the problem</li></ul><h2 id="retcodes"><a class="docs-heading-anchor" href="#retcodes">Return Codes (RetCodes)</a><a id="retcodes-1"></a><a class="docs-heading-anchor-permalink" href="#retcodes" title="Permalink"></a></h2><p>The solution types have a <code>retcode</code> field which returns a <code>SciMLBase.ReturnCode.T</code> (from <a href="https://github.com/fredrikekre/EnumX.jl">EnumX.jl</a>, see that package for the semantics of handling EnumX types) signifying the error or satisfaction state of the solution.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode" href="#SciMLBase.ReturnCode"><code>SciMLBase.ReturnCode</code></a> — <span class="docstring-category">Module</span></header><section><div><p><code>SciML.ReturnCode</code></p><p><code>SciML.ReturnCode</code> is the standard return code enum interface for the SciML interface. Return codes are notes given by the solvers to indicate the state of the solution, for example whether it successfully solved the equations, whether it failed to solve the equations, and importantly, why it exited.</p><p><strong>Using <code>SciML.ReturnCode</code></strong></p><p><code>SciML.ReturnCode</code> use the interface of <a href="https://github.com/fredrikekre/EnumX.jl">EnumX.jl</a> and thus inherits all of the behaviors of being an EnumX. This includes the Enum type itself being referred to as <code>SciML.ReturnCode.T</code>, and each of the constituent enum states being referred to via <code>getproperty</code>, i.e. <code>SciML.ReturnCode.Success</code>.</p><p><strong>Note About Success Checking</strong></p><p>Previous iterations of the interface suggested using <code>sol.retcode == :Success</code>, however, that is now not advised instead should be replaced with <code>SciMLBase.successful_retcode(sol)</code>. The reason is that there are many different codes that can be interpreted as successful, such as <code>ReturnCode.Terminated</code> which means successfully used <code>terminate!(integrator)</code> to end an integration at a user-specified condition. As such, <code>successful_retcode</code> is the most general way to query for if the solver did not error.</p><p><strong>Properties</strong></p><ul><li><code>successful_retcode(retcode::ReturnCode.T)</code>: Determines whether the output enum is considered a success state of the solver, i.e. the solver successfully solved the equations. <code>ReturnCode.Success</code> is the most basic form, simply declaring that it was successful, but many more informative success return codes exist as well.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L1-L32">source</a></section></article><h3 id="Return-Code-Traits"><a class="docs-heading-anchor" href="#Return-Code-Traits">Return Code Traits</a><a id="Return-Code-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Return-Code-Traits" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.successful_retcode" href="#SciMLBase.successful_retcode"><code>SciMLBase.successful_retcode</code></a> — <span class="docstring-category">Function</span></header><section><div><p><code>successful_retcode(retcode::ReturnCode.T)::Bool</code> <code>successful_retcode(sol::AbstractSciMLSolution)::Bool</code></p><p>Returns a boolean for whether a return code should be interpreted as a form of success.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L425-L430">source</a></section></article><h3 id="Specific-Return-Codes"><a class="docs-heading-anchor" href="#Specific-Return-Codes">Specific Return Codes</a><a id="Specific-Return-Codes-1"></a><a class="docs-heading-anchor-permalink" href="#Specific-Return-Codes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Default" href="#SciMLBase.ReturnCode.Default"><code>SciMLBase.ReturnCode.Default</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Default</code></p><p>The default state of the solver. If this return code is given, then the solving process is either still in process or the solver library has not been setup with the return code interface and thus the return code is undetermined.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>A common reason for <code>Default</code> return codes is that a solver is a non-SciML solver which does not fully conform to the interface. Please open an issue if this is seen and it will be improved.</li><li>Another common reason for a <code>Default</code> return code is if the solver is probed internally before the solving process is done, such as through the callback interface. Return codes are set to <code>Default</code> to start and are changed to <code>Success</code> and other return codes upon finishing the solving process or hitting a numerical difficulty.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L34-L54">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Success" href="#SciMLBase.ReturnCode.Success"><code>SciMLBase.ReturnCode.Success</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Success</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, but no extra information about that success is given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>This is the most common return code and most solvers will give this return code if the solving process went as expected without any errors or detected numerical issues.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L57-L71">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Terminated" href="#SciMLBase.ReturnCode.Terminated"><code>SciMLBase.ReturnCode.Terminated</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Terminated</code></p><p>The successful termination state of the solver. If this return code is given, then the solving process was successful at terminating the solve, usually through a callback <code>affect!</code> via <code>terminate!(integrator)</code>.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is if a user calls a callback which uses <code>terminate!(integrator)</code> to halt the integration at a user-chosen stopping point.</li><li>Another common reason for this return code is due to implicit <code>terminate!</code> statements in some library callbacks. For example, <code>SteadyStateCallback</code> uses <code>terminate!</code> internally, so solutions which reach steady state will have a <code>ReturnCode.Terminated</code> state instead of a <code>ReturnCode.Success</code> state. Similarly, problems solved via SteadyStateDiffEq.jl will have this <code>ReturnCode.Terminated</code> state if a timestepping method is used to solve to steady state.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L74-L95">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.DtNaN" href="#SciMLBase.ReturnCode.DtNaN"><code>SciMLBase.ReturnCode.DtNaN</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.DtNaN</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>dt</code> of the integration was determined to be <code>NaN</code> and thus the solver could not continue.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the automatic <code>dt</code> selection algorithm is used but the starting derivative has a <code>NaN</code> or <code>Inf</code> derivative term. Double check that the <code>f(u0,p,t0)</code> term is well-defined without <code>NaN</code> or <code>Inf</code> values.</li><li>Another common reason for this return code is because of a user set <code>dt</code> which is calculated to be a <code>NaN</code>. If <code>solve(prob,alg,dt=x)</code>, double check that <code>x</code> is not <code>NaN</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L98-L118">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.MaxIters" href="#SciMLBase.ReturnCode.MaxIters"><code>SciMLBase.ReturnCode.MaxIters</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.MaxIters</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the solver's iterations hit the <code>maxiters</code> either set by default or by the user in the <code>solve</code>/<code>init</code> command.</p><p><strong>Note about Nonlinear Optimization</strong></p><p>In nonlinear optimization, many solvers (such as <code>OptimizationOptimisers.Adam</code>) do not have an exit criteria other than <code>iters == maxiters</code>. In this case, the solvers will iterate until <code>maxiters</code> and exit with a <code>Success</code> return code, as that is a successful run of the solver and not considered to be an error state. Solves with early termination criteria, such as <code>Optim.BFGS</code> exiting when the gradient is sufficiently close to zero, will give <code>ReturnCode.MaxIters</code> on exits which require the maximum iteration.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>This commonly occurs in ODE solving if a non-stiff method (e.g. <code>Tsit5</code>) is used in an algorithm choice for a stiff ODE. It is recommended that in such cases, one tries a stiff ODE solver.</li><li>This commonly occurs in optimization and nonlinear solvers if the tolerance on <code>solve</code> to too low and cannot be achieved due to floating point error or the condition number of the solver matrix. Double check that the chosen tolerance is numerically possible.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L121-L150">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.DtLessThanMin" href="#SciMLBase.ReturnCode.DtLessThanMin"><code>SciMLBase.ReturnCode.DtLessThanMin</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.DtLessThanMin</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>dt</code> of the integration was made to be less than <code>dtmin</code>, i.e. <code>dt < dtmin</code>.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the integration is going unstable. As <code>f(u,p,t) -> infinity</code>, the time steps required by the solver to accurately handle the dynamics decreases. When it gets sufficiently small, <code>dtmin</code>, an exit is thrown as the solution is likely unstable. <code>dtmin</code> is also chosen to be around the value where floating point issues cause <code>t + dt == t</code>, and thus a <code>dt</code> of that size is impossible at floating point precision.</li><li>Another common reason for this return code is if domain constraints are set, such as by using <code>isoutofdomain</code>, but the domain constraint is incorrect. For example, if one is solving the ODE <code>f(u,p,t) = -u - 1</code>, one may think "but I want a solution with <code>u > 0</code> and thus I will set <code>isoutofdomain(u,p,t) = u < 0</code>. However, the true solution of this ODE is not positive, and thus what will occur is that the solver will try to decrease <code>dt</code> until it can give an accurate solution that is positive. As this is impossible, it will continue to shrink the <code>dt</code> until <code>dt < dtmin</code> and then exit with this return code.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L153-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Unstable" href="#SciMLBase.ReturnCode.Unstable"><code>SciMLBase.ReturnCode.Unstable</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Unstable</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful and exited early because the <code>unstable_check</code> function, as given by the <code>unstable_check</code> common keyword argument (or its default), give a <code>true</code> at the current state.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because <code>u</code> contains a <code>NaN</code> or <code>Inf</code> value. The default <code>unstable_check</code> only checks for these values.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L183-L199">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.InitialFailure" href="#SciMLBase.ReturnCode.InitialFailure"><code>SciMLBase.ReturnCode.InitialFailure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.InitialFailure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful because the initialization process failed.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the initialization process of a DAE solver failed to find consistent initial conditions, which can occur if the differentiation index of the DAE solver is too high. Most DAE solvers only allow for index-1 DAEs, and so an index-2 DAE will fail during this initialization. To solve this kind of problem, use <code>ModelingToolkit.jl</code> and its <code>structural_simplify</code> method to reduce the index of the DAE.</li><li>Another common reason for this return code is if the initial condition was not suitable for the numerical solve. For example, the initial point had a <code>NaN</code> or <code>Inf</code>. Or in optimization, this can occur if the initial point is outside of the bound constraints given by the user.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L202-L224">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ConvergenceFailure" href="#SciMLBase.ReturnCode.ConvergenceFailure"><code>SciMLBase.ReturnCode.ConvergenceFailure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ConvergenceFailure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful because internal nonlinear solver iterations failed to converge.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because an inappropriate nonlinear solver was chosen. If fixed point iteration is used on a stiff problem, it will be faster by avoiding the Jacobian but it will make a stiff ODE solver not stable for stiff problems!</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L227-L244">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.Failure" href="#SciMLBase.ReturnCode.Failure"><code>SciMLBase.ReturnCode.Failure</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.Failure</code></p><p>A failure exit state of the solver. If this return code is given, then the solving process was unsuccessful but no extra information is given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for seeing this return code is because the solver is a wrapped solver (i.e. a Fortran code) which does not provide any extra information about its exit state. If this is from a Julia-based solver, please open an issue.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = false</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L247-L262">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ExactSolutionLeft" href="#SciMLBase.ReturnCode.ExactSolutionLeft"><code>SciMLBase.ReturnCode.ExactSolutionLeft</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ExactSolutionLeft</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the left solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a bracketing nonlinear solver, such as bisection, iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the first floating point value to the left for <code>x</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L265-L281">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.ExactSolutionRight" href="#SciMLBase.ReturnCode.ExactSolutionRight"><code>SciMLBase.ReturnCode.ExactSolutionRight</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.ExactSolutionRight</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the right solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a bracketing nonlinear solver, such as bisection, iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the first floating point value to the right for <code>x</code>.</li></ul><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L284-L300">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.ReturnCode.FloatingPointLimit" href="#SciMLBase.ReturnCode.FloatingPointLimit"><code>SciMLBase.ReturnCode.FloatingPointLimit</code></a> — <span class="docstring-category">Constant</span></header><section><div><p><code>ReturnCode.FloatingPointLimit</code></p><p>The success state of the solver. If this return code is given, then the solving process was successful, and the closest floating point value to the solution was given.</p><p><strong>Common Reasons for Seeing this Return Code</strong></p><ul><li>The most common reason for this return code is via a nonlinear solver, such as Falsi,</li></ul><p>iterating to convergence is unable to give the exact <code>f(x)=0</code> solution due to floating point precision issues, and thus it gives the closest floating point value to the true solution for <code>x</code>.</p><p><strong>Properties</strong></p><ul><li>successful_retcode = true</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/retcodes.jl#L303-L319">source</a></section></article><h2 id="Solution-Traits"><a class="docs-heading-anchor" href="#Solution-Traits">Solution Traits</a><a id="Solution-Traits-1"></a><a class="docs-heading-anchor-permalink" href="#Solution-Traits" title="Permalink"></a></h2><h2 id="AbstractSciMLSolution-API"><a class="docs-heading-anchor" href="#AbstractSciMLSolution-API">AbstractSciMLSolution API</a><a id="AbstractSciMLSolution-API-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSciMLSolution-API" title="Permalink"></a></h2><h3 id="Abstract-SciML-Solutions"><a class="docs-heading-anchor" href="#Abstract-SciML-Solutions">Abstract SciML Solutions</a><a id="Abstract-SciML-Solutions-1"></a><a class="docs-heading-anchor-permalink" href="#Abstract-SciML-Solutions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSciMLSolution" href="#SciMLBase.AbstractSciMLSolution"><code>SciMLBase.AbstractSciMLSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><p>Union of all base solution types.</p><p>Uses a Union so that solution types can be <code><: AbstractArray</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L472-L476">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoTimeSolution" href="#SciMLBase.AbstractNoTimeSolution"><code>SciMLBase.AbstractNoTimeSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoTimeSolution{T, N} <: AbstractArray{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L452">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractTimeseriesSolution" href="#SciMLBase.AbstractTimeseriesSolution"><code>SciMLBase.AbstractTimeseriesSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractTimeseriesSolution{T, N, A} <: RecursiveArrayTools.AbstractDiffEqArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L457">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNoiseProcess" href="#SciMLBase.AbstractNoiseProcess"><code>SciMLBase.AbstractNoiseProcess</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNoiseProcess{T, N, A, isinplace} <: RecursiveArrayTools.AbstractDiffEqArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L467">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractEnsembleSolution" href="#SciMLBase.AbstractEnsembleSolution"><code>SciMLBase.AbstractEnsembleSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractEnsembleSolution{T, N, A} <: RecursiveArrayTools.AbstractVectorOfArray{T, N, A}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L462">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractLinearSolution" href="#SciMLBase.AbstractLinearSolution"><code>SciMLBase.AbstractLinearSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractLinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L482">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractNonlinearSolution" href="#SciMLBase.AbstractNonlinearSolution"><code>SciMLBase.AbstractNonlinearSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L487">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractIntegralSolution" href="#SciMLBase.AbstractIntegralSolution"><code>SciMLBase.AbstractIntegralSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractIntegralSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L492">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractSteadyStateSolution" href="#SciMLBase.AbstractSteadyStateSolution"><code>SciMLBase.AbstractSteadyStateSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractNonlinearSolution{T, N} <: SciMLBase.AbstractNoTimeSolution{T, N}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L502">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractAnalyticalSolution" href="#SciMLBase.AbstractAnalyticalSolution"><code>SciMLBase.AbstractAnalyticalSolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractAnalyticalSolution{T, N, S} <: SciMLBase.AbstractTimeseriesSolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L507">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractODESolution" href="#SciMLBase.AbstractODESolution"><code>SciMLBase.AbstractODESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractODESolution{T, N, S} <: SciMLBase.AbstractTimeseriesSolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L512">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDDESolution" href="#SciMLBase.AbstractDDESolution"><code>SciMLBase.AbstractDDESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDDESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L518">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractRODESolution" href="#SciMLBase.AbstractRODESolution"><code>SciMLBase.AbstractRODESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractRODESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L523">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="SciMLBase.AbstractDAESolution" href="#SciMLBase.AbstractDAESolution"><code>SciMLBase.AbstractDAESolution</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">abstract type AbstractDAESolution{T, N, S} <: SciMLBase.AbstractODESolution{T, N, S}</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/SciMLBase.jl/blob/6d7d87d2579ee56b16324191b1489a9973ad0c58/src/SciMLBase.jl#L528">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../Algorithms/">« SciMLAlgorithms</a><a class="docs-footer-nextpage" href="../Init_Solve/">The SciML init and solve Functions »</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="Saturday 6 January 2024 17:25">Saturday 6 January 2024</span>. Using Julia version 1.10.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>