-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Documenter.jl
committed
Oct 5, 2023
0 parents
commit 96010eb
Showing
1,695 changed files
with
745,180 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-10-05T23:20:59","documenter_version":"1.1.0"}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Old LSRK Formulations · ClimaTimeSteppers</title><meta name="title" content="Old LSRK Formulations · ClimaTimeSteppers"/><meta property="og:title" content="Old LSRK Formulations · ClimaTimeSteppers"/><meta property="twitter:title" content="Old LSRK Formulations · ClimaTimeSteppers"/><meta name="description" content="Documentation for ClimaTimeSteppers."/><meta property="og:description" content="Documentation for ClimaTimeSteppers."/><meta property="twitter:description" content="Documentation for ClimaTimeSteppers."/><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></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href="../../">ClimaTimeSteppers</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="../../">ClimaTimeSteppers.jl</a></li><li><input class="collapse-toggle" id="menuitem-2" type="checkbox" checked/><label class="tocitem" for="menuitem-2"><span class="docs-label">Algorithm Formulations</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../ode_solvers/">ODE Solvers</a></li><li><a class="tocitem" href="../newtons_method/">Newtons Method</a></li><li class="is-active"><a class="tocitem" href>Old LSRK Formulations</a></li><li><a class="tocitem" href="../mrrk/">Old MRRK Formulations</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Test problems</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../test_problems/">Test problems</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">API docs</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../api/ode_solvers/">ODE Solvers</a></li><li><a class="tocitem" href="../../api/newtons_method/">Newtons Method</a></li><li><a class="tocitem" href="../../api/callbacks/">Callbacks</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">Developer docs</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../dev/types/">Types</a></li><li><a class="tocitem" href="../../dev/report_gen/">Report generator</a></li></ul></li><li><a class="tocitem" href="../../references/">References</a></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">Algorithm Formulations</a></li><li class="is-active"><a href>Old LSRK Formulations</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Old LSRK Formulations</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/CliMA/ClimaTimeSteppers.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/CliMA/ClimaTimeSteppers.jl/blob/main/docs/src/algorithm_formulations/lsrk.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="Low-storage-Runge–Kutta-methods"><a class="docs-heading-anchor" href="#Low-storage-Runge–Kutta-methods">Low-storage Runge–Kutta methods</a><a id="Low-storage-Runge–Kutta-methods-1"></a><a class="docs-heading-anchor-permalink" href="#Low-storage-Runge–Kutta-methods" title="Permalink"></a></h1><p>LSRK methods are self-starting, with <span>$U^{(1)} = u^n$</span>, and then using stage updates of the form</p><p class="math-container">\[\begin{aligned} | ||
dU^{(i)} &= f(U^{(i)}, t + c_i \Delta t) + A_i dU^{(i-1)}\\ | ||
U^{(i+1)} &= U^{(i)} + \Delta t B_i dU^{(i)} | ||
\end{aligned}\]</p><p>where <span>$A_1 = c_1 = 0$</span> (implying <span>$dU^{(1)} = f(u^n, t)$</span>), with the value at the next step being the <span>$N+1$</span>th stage value <span>$u^{n+1} = U^{(N+1)})$</span>.</p><p>This allows the updates to be performed with only two copies of the state vector (so long as <code>f</code> can be evaluated in incrementing form).</p><p>It can be written as an RK scheme with Butcher tableau coefficients defined by the recurrences</p><p class="math-container">\[\begin{aligned} | ||
a_{i,i} &= 0 \\ | ||
a_{i,j} &= B_j + A_{j+1} a_{i,j+1}\\ | ||
b_N &= B_N \\ | ||
b_i &= B_i + A_{i+1} b_{i+1} | ||
\end{aligned}\]</p><p>or equivalently</p><p class="math-container">\[\begin{aligned} | ||
a_{j,j} &= 0 \\ | ||
a_{i,j} &= a_{i-1,j} + B_{i-1} \prod_{k=j+1}^{i-1} A_k | ||
\end{aligned}\]</p><p>with <span>$b_j$</span> treated analogously as <span>$a_{N+1,j}$</span>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../newtons_method/">« Newtons Method</a><a class="docs-footer-nextpage" href="../mrrk/">Old MRRK Formulations »</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.1.0 on <span class="colophon-date" title="Thursday 5 October 2023 23:20">Thursday 5 October 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Old MRRK Formulations · ClimaTimeSteppers</title><meta name="title" content="Old MRRK Formulations · ClimaTimeSteppers"/><meta property="og:title" content="Old MRRK Formulations · ClimaTimeSteppers"/><meta property="twitter:title" content="Old MRRK Formulations · ClimaTimeSteppers"/><meta name="description" content="Documentation for ClimaTimeSteppers."/><meta property="og:description" content="Documentation for ClimaTimeSteppers."/><meta property="twitter:description" content="Documentation for ClimaTimeSteppers."/><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></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href="../../">ClimaTimeSteppers</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="../../">ClimaTimeSteppers.jl</a></li><li><input class="collapse-toggle" id="menuitem-2" type="checkbox" checked/><label class="tocitem" for="menuitem-2"><span class="docs-label">Algorithm Formulations</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../ode_solvers/">ODE Solvers</a></li><li><a class="tocitem" href="../newtons_method/">Newtons Method</a></li><li><a class="tocitem" href="../lsrk/">Old LSRK Formulations</a></li><li class="is-active"><a class="tocitem" href>Old MRRK Formulations</a><ul class="internal"><li><a class="tocitem" href="#Low-storage"><span>Low-storage</span></a></li><li><a class="tocitem" href="#Multirate-Infinitesimal-Step-(MIS)"><span>Multirate Infinitesimal Step (MIS)</span></a></li><li><a class="tocitem" href="#Wicker-Skamarock"><span>Wicker Skamarock</span></a></li></ul></li></ul></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Test problems</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../test_problems/">Test problems</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">API docs</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../api/ode_solvers/">ODE Solvers</a></li><li><a class="tocitem" href="../../api/newtons_method/">Newtons Method</a></li><li><a class="tocitem" href="../../api/callbacks/">Callbacks</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">Developer docs</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../dev/types/">Types</a></li><li><a class="tocitem" href="../../dev/report_gen/">Report generator</a></li></ul></li><li><a class="tocitem" href="../../references/">References</a></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">Algorithm Formulations</a></li><li class="is-active"><a href>Old MRRK Formulations</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Old MRRK Formulations</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/CliMA/ClimaTimeSteppers.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/CliMA/ClimaTimeSteppers.jl/blob/main/docs/src/algorithm_formulations/mrrk.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="Multirate-Runge-Kutta"><a class="docs-heading-anchor" href="#Multirate-Runge-Kutta">Multirate Runge Kutta</a><a id="Multirate-Runge-Kutta-1"></a><a class="docs-heading-anchor-permalink" href="#Multirate-Runge-Kutta" title="Permalink"></a></h1><p>Given a problem with two components that operate at two rates:</p><p class="math-container">\[\frac{du}{dt} = f_F(u,t) + f_S(u,t)\]</p><p>where <span>$f_F$</span> is the <em>fast</em> component, and <span>$f_S$</span> is the <em>slow</em> component.</p><p><a href="../../references/#SKAW2012">[3]</a> defines the following method.</p><p>Given an outer explicit Runge–Kutta scheme with tableau <span>$(a,b,c)$</span></p><p>We can define the stage values <span>$U^{(i)} = v_i(\tau_i)$</span> as the solution to the <em>inner</em> ODE problem</p><p class="math-container">\[\frac{dv_i}{d\tau} | ||
= \sum_{j=1}^i \frac{a_{ij} - a_{i-1,j}}{c_i - c_{i-1}} f_S (U^{(j)}, \tau_j) | ||
+ f_F(v_i, \tau), | ||
\quad \tau \in [\tau_{i-1}, \tau]\]</p><p>where <span>$\tau_i = t + \Delta t c_i$</span>, with initial condition <span>$v_i(\tau_{i-1}) = U^{(i-1)}$</span>. If <span>$c_i == c_{i-1}$</span>, we can treat it as a correction step:</p><p class="math-container">\[U^{(i)} = U^{(i-1)} + \Delta t \frac{\sum_{j=1}^i (a_{ij} - a_{i-1,j})}{c_i - c_{i-1}} f_S (U^{(j)}, \tau_i)\]</p><p>The final summation stage treating analogously to <span>$i=N+1$</span>, with <span>$a_{N+1,j} = b_j$</span> and <span>$c_{N+1} = 1$</span>.</p><h2 id="Low-storage"><a class="docs-heading-anchor" href="#Low-storage">Low-storage</a><a id="Low-storage-1"></a><a class="docs-heading-anchor-permalink" href="#Low-storage" title="Permalink"></a></h2><p>If using a low-storage Runge–Kutta method is used as an outer solver, then this reduces to</p><p class="math-container">\[\frac{dv_i}{d\tau} | ||
= \frac{B_{i-1}}{c_i - c_{i-1}} dU_S^{(i-1)} | ||
+ f_F(v_i, \tau), | ||
\quad \tau \in [\tau_{i-1}, \tau]\]</p><p>where</p><p class="math-container">\[dU_S^{(i)} = f_S(U^{(i)}, \tau_i) + A_i dU_S^{(i-1)}\]</p><h2 id="Multirate-Infinitesimal-Step-(MIS)"><a class="docs-heading-anchor" href="#Multirate-Infinitesimal-Step-(MIS)">Multirate Infinitesimal Step (MIS)</a><a id="Multirate-Infinitesimal-Step-(MIS)-1"></a><a class="docs-heading-anchor-permalink" href="#Multirate-Infinitesimal-Step-(MIS)" title="Permalink"></a></h2><p>Multirate Infinitesimal Step (MIS) methods (<a href="../../references/#WKG2009">[4]</a>, <a href="../../references/#KW2014">[5]</a>)</p><p class="math-container">\[\begin{aligned} | ||
v_i (0) | ||
&= u^n + \sum_{j=1}^{i-1} \alpha_{ij} (U^{(j)} - u^n) | ||
\\ | ||
\frac{dv_i}{d\tau} | ||
&= \sum_{j=1}^{i-1} \frac{\gamma_{ij}}{d_i \Delta t} (U^{(j)} - u^n) | ||
+ \sum_{j=1}^i \frac{\beta_{ij}}{d_i} f_S (U^{(j)}, t + \Delta t c_i) | ||
+ f_F(v_i, t^n + \Delta t \tilde c_i + \frac{c_i - \tilde c_i}{d_i} \tau), | ||
\quad \tau \in [0, \Delta t d_i] | ||
\\ | ||
U^{(i)} &= v_i(\Delta t d_i) | ||
\end{aligned}\]</p><p>The method is defined in terms of the lower-triangular matrices <span>$\alpha$</span>, <span>$\beta$</span> and <span>$\gamma$</span>, with <span>$d_i = \sum_j \beta_{ij}$</span>, <span>$c_i = (I - \alpha - \gamma)^{-1} d$</span> and <span>$\tilde c = \alpha c$</span>.</p><h2 id="Wicker-Skamarock"><a class="docs-heading-anchor" href="#Wicker-Skamarock">Wicker Skamarock</a><a id="Wicker-Skamarock-1"></a><a class="docs-heading-anchor-permalink" href="#Wicker-Skamarock" title="Permalink"></a></h2><p><a href="../../references/#WS1998">[6]</a> and <a href="../../references/#WS2002">[7]</a> define RK2 and RK3 multirate schemes:</p><p class="math-container">\[\begin{aligned} | ||
v_i (t) &= u^n | ||
\\ | ||
\frac{dv_i}{d\tau} | ||
&= f_S (U^{(i-1)}, t + \Delta t c_{i-1}) | ||
+ f_F(v_i, \tau), | ||
\quad \tau \in [t, t+ \Delta t c_i ] | ||
\\ | ||
U^{(i)} &= v_i(t + \Delta t c_i) | ||
\end{aligned}\]</p><p>which corresponds to an MIS method with <span>$\alpha = \gamma = 0$</span> and <span>$\beta = \operatorname{diag}(c)$</span>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../lsrk/">« Old LSRK Formulations</a><a class="docs-footer-nextpage" href="../../test_problems/">Test problems »</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.1.0 on <span class="colophon-date" title="Thursday 5 October 2023 23:20">Thursday 5 October 2023</span>. Using Julia version 1.9.3.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> |
Oops, something went wrong.