@@ -525,8 +525,8 @@ Runge--Kutta--Chebyshev (RKC), :cite:p:`VSH:04` and Runge--Kutta--Legendre (RKL)
525
525
526
526
.. math ::
527
527
z_0 &= y_n,\\
528
- z_1 &= z_0 + h \tilde {\mu }_1 f(t_n,z_0 ),\\
529
- z_j &= (1 -\mu _j-\nu _j)z_0 + \mu _j z_{j-1 } + \nu _jz_{j-2 } + h \tilde {\gamma }_j f(t_n,z_0 ) + h \tilde {\mu }_j f(t_n + c_{j-1 }h, z_{j-1 }) \\
528
+ z_1 &= z_0 + h_n \tilde {\mu }_1 f(t_n,z_0 ),\\
529
+ z_j &= (1 -\mu _j-\nu _j)z_0 + \mu _j z_{j-1 } + \nu _jz_{j-2 } + h_n \tilde {\gamma }_j f(t_n,z_0 ) + h_n \tilde {\mu }_j f(t_n + c_{j-1 }h, z_{j-1 }) \\
530
530
y_{n+1 } &= z_s.
531
531
:label: ARKODE_RKC_RKL
532
532
@@ -546,7 +546,7 @@ The SSPRK methods in ARKODE use the following Shu--Osher representation :cite:p:
546
546
547
547
.. math ::
548
548
z_1 &= y_n,\\
549
- z_i &= \sum _{j = 1 }^{i-1 } \left (\alpha _{i,j}y_j + \beta _{i,j}h f(t_n + c_jh , z_j)\right ),\\
549
+ z_i &= \sum _{j = 1 }^{i-1 } \left (\alpha _{i,j}y_j + \beta _{i,j}h f(t_n + c_jh_n , z_j)\right ),\\
550
550
y_{n+1 } &= z_s.
551
551
:label: ARKODE_SSP
552
552
@@ -574,15 +574,15 @@ components:
574
574
575
575
* :math: `f^E(t,y)` contains the "slow-nonstiff" components of the system
576
576
(this will be integrated using an explicit method and a large time step
577
- :math: `h^S `),
577
+ :math: `h^S_n `),
578
578
579
579
* :math: `f^I(t,y)` contains the "slow-stiff" components of the system
580
580
(this will be integrated using an implicit method and a large time step
581
- :math: `h^S `), and
581
+ :math: `h^S_n `), and
582
582
583
583
* :math: `f^F(t,y)` contains the "fast" components of the system (this will be
584
584
integrated using a possibly different method than the slow time scale and a
585
- small time step :math: `h^F \ll h^S `).
585
+ small time step :math: `h^F_n \ll h^S_n `).
586
586
587
587
As with ERKStep, MRIStep currently requires that problems be posed with
588
588
an identity mass matrix, :math: `M(t)=I`. The slow time scale may consist of only
@@ -626,10 +626,10 @@ algorithm for a single step:
626
626
diagonally-implicit, or additive Runge--Kutta stage update,
627
627
628
628
.. math ::
629
- z_i - \theta _{i,i} h^S f^I(t_{n,i}^S, z_i) = a_i.
629
+ z_i - \theta _{i,i} h^S_n f^I(t_{n,i}^S, z_i) = a_i.
630
630
:label: MRI_implicit_solve
631
631
632
- where :math: `t_{n,j}^S = t_{n-1 } + h^S c^S_j`.
632
+ where :math: `t_{n,j}^S = t_{n-1 } + h^S_n c^S_j`.
633
633
634
634
#. Set :math: `y_{n} = z_{s}`.
635
635
@@ -645,7 +645,7 @@ algorithm for a single step:
645
645
stage update,
646
646
647
647
.. math ::
648
- \tilde {y}_n - \tilde {\theta } h^S f^I(t_n, \tilde {y}_n) = \tilde {a}.
648
+ \tilde {y}_n - \tilde {\theta } h^S_n f^I(t_n, \tilde {y}_n) = \tilde {a}.
649
649
:label: MRI_embedding_implicit_solve
650
650
651
651
Whether a fast IVP evolution or a stage update (or both) is needed depends on
@@ -684,7 +684,7 @@ given by
684
684
+ \frac {1 }{\Delta c_i^S} \sum \limits _{j=1 }^i \gamma _{i,j}(\tau ) f^I(t_{n,j}^S, z_j)
685
685
686
686
where :math: `\Delta c_i^S=\left (c^S_i - c^S_{i-1 }\right )`, :math: `\tau = (t -
687
- t_{n,i-1 }^S)/(h^S \Delta c_i^S)` is the normalized time, the coefficients
687
+ t_{n,i-1 }^S)/(h^S_n \Delta c_i^S)` is the normalized time, the coefficients
688
688
:math: `\omega _{i,j}` and :math: `\gamma _{i,j}` are polynomials in time of degree
689
689
:math: `k-1 ` given by
690
690
@@ -701,9 +701,9 @@ stage is computed as
701
701
702
702
.. math ::
703
703
z_i = z_{i-1 }
704
- + h^S \sum _{j=1 }^{i-1 } \left (\sum _{\ell = 1 }^{k}
704
+ + h^S_n \sum _{j=1 }^{i-1 } \left (\sum _{\ell = 1 }^{k}
705
705
\frac {\Omega _{i,j,\ell }}{\ell }\right ) f^E(t_{n,j}^S, z_j)
706
- + h^S \sum _{j=1 }^i \left (\sum _{\ell = 1 }^{k}
706
+ + h^S_n \sum _{j=1 }^i \left (\sum _{\ell = 1 }^{k}
707
707
\frac {\Gamma _{i,j,\ell }}{\ell }\right ) f^I(t_{n,j}^S, z_j).
708
708
:label: ARKODE_MRI_delta_c_zero
709
709
@@ -747,15 +747,15 @@ given by
747
747
r_i(t) = \frac {1 }{c_i^S} \sum \limits _{j=1 }^{i-1 } \omega _{i,j}(\tau ) \left ( f^E(t_{n,j}^S, z_j) + f^I(t_{n,j}^S, z_j)\right ),
748
748
:label: IMEXMRISR_forcing
749
749
750
- where :math: `\tau = (t - t_n)/(h^S c_i^S)` is the normalized time, and the coefficients
750
+ where :math: `\tau = (t - t_n)/(h^S_n c_i^S)` is the normalized time, and the coefficients
751
751
:math: `\omega _{i,j}` are polynomials in time of degree :math: `k-1 ` that are also given by
752
752
:eq: `ARKODE_MRI_coupling `. The solution of these fast IVPs defines an intermediate stage
753
753
solution, :math: `\tilde {z}_i`.
754
754
755
755
The implicit solve that follows each fast IVP must solve the algebraic equation for :math: `z_i`
756
756
757
757
.. math ::
758
- z_i = \tilde {z}_i + h^S \sum _{j=1 }^{i} \gamma _{i,j} f^I(t_{n,j}^S, z_j).
758
+ z_i = \tilde {z}_i + h^S_n \sum _{j=1 }^{i} \gamma _{i,j} f^I(t_{n,j}^S, z_j).
759
759
:label: ARKODE_MRISR_implicit
760
760
761
761
We note that IMEX-MRI-SR methods are solve-decoupled by construction, and thus the structure
@@ -798,10 +798,10 @@ solutions at these times as the stages :math:`z_i`. For example, the
798
798
groups. The fourth group contains stages 7, 8, 9, and the embedding, corresponding to
799
799
the :math: `c_i^S` values :math: `7 /10 `, :math: `1 /2 `, :math: `2 /3 `, and :math: `1 `.
800
800
Sorting these, a single fast IVP for this group must be evolved over the interval
801
- :math: `[t_{0 ,i},t_{F,i}] = [t_{n-1 }, t_{n}]`, first pausing at :math: `t_{n-1 }+\frac12 h^S `
802
- to store :math: `z_8 `, then pausing at :math: `t_{n-1 }+\frac {2 }{3 } h^S ` to store
803
- :math: `z_9 `, then pausing at :math: `t_{n-1 }+\frac {7 }{10 } h^S ` to store :math: `z_7 `,
804
- and finally finishing the IVP solve to :math: `t_{n-1 }+h^S ` to obtain :math: `\tilde {y}_n`.
801
+ :math: `[t_{0 ,i},t_{F,i}] = [t_{n-1 }, t_{n}]`, first pausing at :math: `t_{n-1 }+\frac12 h^S_n `
802
+ to store :math: `z_8 `, then pausing at :math: `t_{n-1 }+\frac {2 }{3 } h^S_n ` to store
803
+ :math: `z_9 `, then pausing at :math: `t_{n-1 }+\frac {7 }{10 } h^S_n ` to store :math: `z_7 `,
804
+ and finally finishing the IVP solve to :math: `t_{n-1 }+h^S_n ` to obtain :math: `\tilde {y}_n`.
805
805
806
806
.. note ::
807
807
@@ -1257,8 +1257,8 @@ Multirate time step adaptivity (MRIStep)
1257
1257
1258
1258
Since multirate applications evolve on multiple time scales,
1259
1259
MRIStep supports additional forms of temporal adaptivity. Specifically,
1260
- we consider time steps at two adjacent levels, :math: `h^S > h^F `, where
1261
- :math: `h^S ` is the step size used by MRIStep, and :math: `h^F ` is the
1260
+ we consider time steps at two adjacent levels, :math: `h^S_n > h^F_n `, where
1261
+ :math: `h^S_n ` is the step size used by MRIStep, and :math: `h^F_n ` is the
1262
1262
step size used to solve the corresponding fast-time-scale IVPs in
1263
1263
MRIStep, :eq: `MRI_fast_IVP ` and :eq: `MRI_embedding_fast_IVP `.
1264
1264
@@ -1271,8 +1271,8 @@ Multirate temporal controls
1271
1271
We consider two categories of temporal controllers that may be used within MRI
1272
1272
methods. The first (and simplest), are "decoupled" controllers, that consist of
1273
1273
two separate single-rate temporal controllers: one that adapts the slow time scale
1274
- step size, :math: `h^S `, and the other that adapts the fast time scale step size,
1275
- :math: `h^F `. As these ignore any coupling between the two time scales, these
1274
+ step size, :math: `h^S_n `, and the other that adapts the fast time scale step size,
1275
+ :math: `h^F_n `. As these ignore any coupling between the two time scales, these
1276
1276
methods should work well for multirate problems where the time scales are somewhat
1277
1277
decoupled, and that errors introduced at one scale do not "pollute" the other.
1278
1278
@@ -1319,7 +1319,7 @@ adaptivity controllers:
1319
1319
* scontrol-Tol -- this is a single-rate controller that adapts :math: `\text {RTOL}^F_n`
1320
1320
using the strategy described above.
1321
1321
1322
- * fcontrol -- this adapts time steps :math: `h^F ` within the fast integrator to achieve
1322
+ * fcontrol -- this adapts time steps :math: `h^F_n ` within the fast integrator to achieve
1323
1323
the current tolerance, :math: `\text {RTOL}^F_n`.
1324
1324
1325
1325
We note that both the decoupled and :math: `h^S`-:math: `Tol` controller families may be used in
@@ -1670,26 +1670,26 @@ differently based on the type of mass-matrix supplied by the user.
1670
1670
have the residual
1671
1671
1672
1672
.. math ::
1673
- G(z_i) \equiv z_i - h^S \left (\sum _{k\geq 1 } \frac {\Gamma _{i,i,k}}{k}\right )
1673
+ G(z_i) \equiv z_i - h^S_n \left (\sum _{k\geq 1 } \frac {\Gamma _{i,i,k}}{k}\right )
1674
1674
f^I(t_{n,i}^S, z_i) - a_i = 0
1675
1675
:label: ARKODE_IMEX-MRI-GARK_Residual
1676
1676
1677
1677
where
1678
1678
1679
1679
.. math ::
1680
- a_i \equiv z_{i-1 } + h^S \sum _{j=1 }^{i-1 } \left (\sum _{k\geq 1 }
1680
+ a_i \equiv z_{i-1 } + h^S_n \sum _{j=1 }^{i-1 } \left (\sum _{k\geq 1 }
1681
1681
\frac {\Gamma _{i,j,k}}{k}\right )f^I(t_{n,j}^S, z_j).
1682
1682
1683
1683
IMEX-MRI-SR methods have the residual
1684
1684
1685
1685
.. math ::
1686
- G(z_i) \equiv z_i - h^S \Gamma _{i,i} f^I(t_{n,i}^S, z_i) - a_i = 0
1686
+ G(z_i) \equiv z_i - h^S_n \Gamma _{i,i} f^I(t_{n,i}^S, z_i) - a_i = 0
1687
1687
:label: ARKODE_IMEX-MRI-SR_Residual
1688
1688
1689
1689
where
1690
1690
1691
1691
.. math ::
1692
- a_i \equiv z_{i-1 } + h^S \sum _{j=1 }^{i-1 } \Gamma _{i,j} f^I(t_{n,j}^S, z_j).
1692
+ a_i \equiv z_{i-1 } + h^S_n \sum _{j=1 }^{i-1 } \Gamma _{i,j} f^I(t_{n,j}^S, z_j).
1693
1693
1694
1694
1695
1695
Upon solving for :math: `z_i`, method stages must store
@@ -1748,7 +1748,7 @@ within ARKStep, or
1748
1748
.. math ::
1749
1749
{\mathcal A}(t,z) \approx I - \gamma J(t,z), \quad
1750
1750
J(t,z) = \frac {\partial f^I(t,z)}{\partial z}, \quad\text {and}\quad
1751
- \gamma = h^S \sum _{k\geq 1 } \frac {\Gamma _{i,i,k}}{k}
1751
+ \gamma = h^S_n \sum _{k\geq 1 } \frac {\Gamma _{i,i,k}}{k}
1752
1752
:label: ARKODE_NewtonMatrix_MRIStep
1753
1753
1754
1754
within MRIStep.
0 commit comments