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 |