METHOD
SSP3 Class Reference

#include <SSP3.h>

Inheritance diagram for SSP3:
Collaboration diagram for SSP3:

Public Member Functions

 SSP3 (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod)
 
virtual ~SSP3 ()
 
void step (double *cons, double *prims, double *aux, double dt=0)
 
- Public Member Functions inherited from SSP2
 SSP2 (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod)
 
virtual ~SSP2 ()
 
- Public Member Functions inherited from TimeIntegrator
 TimeIntegrator (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod, ModelExtension *modelExtension=NULL)
 
virtual ~TimeIntegrator ()
 
void finalise (double *cons, double *prims, double *aux)
 
- Public Member Functions inherited from TimeIntegratorBase
 TimeIntegratorBase (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod, ModelExtension *modelExtension=NULL)
 
virtual ~TimeIntegratorBase ()
 

Public Attributes

IMEX3Arguments args
 
double * U3
 
double * U3guess
 
double * source3
 
double * flux3
 
double * tempprims
 
double * tempaux
 
- Public Attributes inherited from SSP2
IMEX2Arguments args
 
double * x
 
double * fvec
 
double * wa
 
double * U1
 
double * U2
 
double * source1
 
double * flux1
 
double * source2
 
double * flux2
 
- Public Attributes inherited from TimeIntegratorBase
Datadata
 
Modelmodel
 
Bcsbcs
 
FluxMethodfluxMethod
 
ModelExtensionmodelExtension
 

Detailed Description

Implicit-Explicit Runge-Kutta third order SSP3(332) time integrator

Integrator is third order, solves the non-stiff fluxes explicitly and the (possibly) stiff sources implicitly. Values for the constants and general methods are from Pareschi & Russo 2004.
What follows is a brief description of the method. For a system of conservation equations, given in general by

\begin{align} \partial_t U = F(U) + \psi(U) \end{align}

the third order SSP3(332) IMEX scheme takes the following form:

\begin{align} U^{(1)} &= U^n + \gamma dt \psi(U^{(1)}) \\ U^{(2)} &= U^n + dt \big[F(U^{(1)}) + (1-2\gamma)\psi(U^{(1)}) + \gamma \psi(U^{(2)})\big] \\ U^{(3)} &= U^n + \frac{dt}{4} \big[F(U^{(1)}) + F(U^{(2)})\big] + dt \big[(0.5 - \gamma) \psi(U^{(1)}) + \gamma \psi(U^{(3)})\big] \\ U^{n+1} &= U^n + \frac{dt}{6} \big[F(U^{(1)}) + F(U^{(2)}) + 4F(U^{(3)}) + \psi{U^{(1)}} + \psi(U^{(2)}) + 4\psi(U^{(3)}) \big] \end{align}

.
The sources are necessarily solved via an implicit rootfind, using a multidimensional Newton-Secant method found here.

Definition at line 34 of file SSP3.h.

Constructor & Destructor Documentation

◆ SSP3()

SSP3::SSP3 ( Data data,
Model model,
Bcs bcs,
FluxMethod fluxMethod 
)

Constructor.

Constructor requires simulation data and the flux and source functions from the model class.
Parameters
*dataPointer to Data class containing global simulation data
*modelpointer to Model object
*bcspointer to Bcs object
*fluxMethodpointer to FluxMethod object
See also
TimeIntegrator::TimeIntegrator
SSP2::SSP2

◆ ~SSP3()

virtual SSP3::~SSP3 ( )
virtual

Destructor.

Member Function Documentation

◆ step()

void SSP3::step ( double *  cons,
double *  prims,
double *  aux,
double  dt = 0 
)
virtual

Performs a single time step.

The timestep will use the current values of the conserved, primitive and auxiliary variables at t=t0 and compute the values of all of them at time t=t0 + dt. I.e. the conserved vector is evolved forward, and the corresponding prims and aux vars are found.
Parameters
*conspointer to conserved vector work array. Size is Ncons*Nx*Ny*Nz
*primspointer to primitive vector work array. Size is Nprims*Nx*Ny*Nz
*auxpointer to auxiliary vector work array. Size is Naux*Nx*Ny*Nz
dtthe step size desired to move by. Defaults to the value in the Data class
See also
TimeIntegrator::step
SSP2::step

Reimplemented from SSP2.

Member Data Documentation

◆ args

IMEX3Arguments SSP3::args

IMEX3Arguments, additional arguments class, stores single cell data for hydrb rootfinder.

Definition at line 38 of file SSP3.h.

◆ flux3

double * SSP3::flux3

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.

◆ source3

double * SSP3::source3

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.

◆ tempaux

double * SSP3::tempaux

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.

◆ tempprims

double * SSP3::tempprims

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.

◆ U3

double* SSP3::U3

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.

◆ U3guess

double * SSP3::U3guess

Work array for specified variable. Size is \(N_{cons}*N_x*N_y*N_z\).

Definition at line 44 of file SSP3.h.


The documentation for this class was generated from the following file: