3N low storage method for ssprk(5,4)

20 Views Asked by At

I am trying to understand how the SSPRK(5,4) integrator can be implemented using 3N storage registers (as is done in Athena++). I cannot seem to find a reference explicitly stating the algoirthm anywhere, and I cannot decipher it from the source code. From my understanding, the other integrators in the software are implemented using the 2S method given by (Ketcheson, 2010):

m = number of stages

$S_{2}=0$

$S_{1} = \boldsymbol{U}_{i,j,k}^{n}$

For $I=2,~I\leq m+1,~I= I+1$ {

$S_{2} = S_{2}+\delta_{I-1}S_{1}$

$S_{1} = \gamma_{I,1}S_{1}+\gamma_{I,2}S_{2}+\beta_{I,I-1}\Delta t \vec{\nabla}\cdot[\mathcal{F}_{i,j,k}^{(S_{1})}]$

} End for

$\boldsymbol{U}^{n+1}_{i,j,k}=S_{1}$

The low storage coeffecients for ssprk(5,4) are

$I$ $\gamma{i,1}$ $\gamma_{i,2}$ $\gamma_{i,3}$ $\beta_{i,i−1}$ $\delta_{i}$
1 0.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.000000000000
2 0.000000000000000 1.000000000000000 0.000000000000000 0.391752226571890 0.000000000000
3 0.555629506348765 0.444370493651235 0.000000000000000 0.368410593050371 0.517231671970
4 0.379898148511597 0.000000000000000 0.620101851488403 0.251891774271694 0.096059710526
5 0.821920045606868 0.000000000000000 0.178079954393132 0.544974750228521 0.000000000000
6 0.386708617503268 1.000000000000000 1.000000000000000 0.226007483236906