explicit
Definitions of explicit time integration schemes for conservative methods.
- class CRK4(mesh, root=None, **default)
Class responsible for implementing an explicit 4th-order (classic) Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)). Assuming a standard DG formulation,
\[\begin{split}\bm{k}_{1} &= -\widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{U}^{n} \big),\\[2ex] \bm{k}_{2} &= -\widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{U}^{n} + \bm{k}_1 / 2 \big),\\[2ex] \bm{k}_{3} &= -\widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{U}^{n} + \bm{k}_2 / 2 \big),\\[2ex] \bm{k}_{4} &= -\widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{U}^{n} + \bm{k}_3 \big),\\[2ex] \bm{U}^{n+1} &= \bm{U}^{n} + \big( \bm{k}_1 + 2\bm{k}_2 + 2\bm{k}_3 + \bm{k}_4 \big) / 6,\end{split}\]where \(\widetilde{\bm{M}} = \bm{M} / \delta t\) is the weighted mass matrix, \(\bm{M}\) is the mass matrix and \(\bm{f}\) arises from the spatial discretization of the PDE.
- class ExplicitEuler(mesh, root=None, **default)
Class responsible for implementing an explicit (forwards-)Euler time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)). Assuming a standard DG formulation,
\[\widetilde{\bm{M}} \bm{U}^{n+1} = \widetilde{\bm{M}} \bm{U}^{n} - \bm{f} \big( \bm{U}^{n} \big),\]where \(\widetilde{\bm{M}} = \bm{M} / \delta t\) is the weighted mass matrix, \(\bm{M}\) is the mass matrix and \(\bm{f}\) arises from the spatial discretization of the PDE.
- class ExplicitSchemes(mesh, root=None, **default)
- add_symbolic_temporal_forms(blf, lf)
Not used in explicit schemes, since the temporal forms are not needed.
- class RK_ARS22(mesh, root=None, **default)
Class responsible for implementing an explicit 2-stage, 2nd-order Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)), see Section 2.6, Equation in [2]. Assuming a standard DG formulation,
- class RK_ARS232(mesh, root=None, **default)
Class responsible for implementing an explicit 2-stage, 2nd-order Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)), see Section 2.5, Equation in [2]. Assuming a standard DG formulation,
- update_final_stage_solution() None
Updates the final stage solution
This method is needed in case the time scheme is not stiffly accurate.
- class RK_ARS33(mesh, root=None, **default)
Class responsible for implementing an explicit 3-stage, 3rd-order Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)), see Section 2.7, Equation in [2]. Assuming a standard DG formulation,
- update_final_stage_solution() None
Updates the final stage solution
This method is needed in case the time scheme is not stiffly accurate.
- class RK_ARS43(mesh, root=None, **default)
Class responsible for implementing an explicit 4-stage, 3rd-order Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)), see Section 2.8, Equation in [2]. Assuming a standard DG formulation,
- class SSPRK3(mesh, root=None, **default)
Class responsible for implementing an explicit 3rd-order strong-stability-preserving Runge-Kutta time-marching scheme that updates the current solution (\(t = t^{n}\)) to the next time step (\(t = t^{n+1}\)), see Section 4.1, Equation 4.2 in [1]. Assuming a standard DG formulation,
\[\begin{split}\bm{y}_{1} &= \bm{U}^{n} - \widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{U}^{n} \big),\\[2ex] \bm{y}_{2} &= \frac{3}{4} \bm{U}^{n} + \frac{1}{4} \bm{y}_{1} - \frac{1}{4} \widetilde{\bm{M}}^{-1} \bm{f} \big( \bm{y}_{1} \big),\\[2ex] \bm{U}^{n+1} &= \frac{1}{3} \bm{U}^{n} + \frac{2}{3} \bm{y}_{2} - \frac{2}{3} \widetilde{\bm{M}}^{-1 }\bm{f} \big( \bm{y}_{2} \big),\end{split}\]where \(\widetilde{\bm{M}} = \bm{M} / \delta t\) is the weighted mass matrix, \(\bm{M}\) is the mass matrix and \(\bm{f}\) arises from the spatial discretization of the PDE.