METHOD
RKSplit Class Reference

#include <rkSplit.h>

Inheritance diagram for RKSplit:
Collaboration diagram for RKSplit:

Public Member Functions

 RKSplit (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod, ModelExtension *modelExtension=NULL)
 
virtual ~RKSplit ()
 
- Public Member Functions inherited from RK2
 RK2 (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod, ModelExtension *modelExtension=NULL)
 
virtual ~RK2 ()
 
void predictorStep (double *cons, double *prims, double *aux, double dt)
 
void correctorStep (double *cons, double *prims, double *aux, double dt)
 
void step (double *cons, double *prims, double *aux, double dt=0)
 
- 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 ()
 

Additional Inherited Members

- Public Attributes inherited from RK2
double * p1cons
 
double * p1prims
 
double * p1aux
 
double * args1
 
double * args2
 
- Public Attributes inherited from TimeIntegratorBase
Datadata
 
Modelmodel
 
Bcsbcs
 
FluxMethodfluxMethod
 
ModelExtensionmodelExtension
 

Detailed Description

Operator splitting RK2 integrator, first order accurate in time

Integrator deals with the flux and source contributions separately, first performing the two stages as a result of the flux integration, and the adds the contribution of the source with the new values of the fields.
Note
This is a fully explicit method at dealing with the source contributions, do not expect this integrator to converge for large source contributions, i.e. for sources that act on a fast timescale compared to the flux terms. For stiff hyperbolic systems, we need to solve the sources implicitly to ensure stability.
The step function performs the RK2 step:

\begin{align} U^{*} = \frac{1}{2} U^n + \frac{1}{2} U^{(1)} + \frac{1}{2} \Delta t \mathcal{F}(U^{(1)}) \end{align}

where the first stage result is

\begin{align} U^{(1)} = U^n + \Delta t \mathcal{F}(U^n), \end{align}

and then adds the source due to this stage,

\begin{align} U^{n+1} = U^* + \Delta t \Psi(U^*), \end{align}

where \(\Psi(U)\) is the source vector due to the state \(U\).
See also
RKSplit2
RK2

Definition at line 37 of file rkSplit.h.

Constructor & Destructor Documentation

◆ RKSplit()

RKSplit::RKSplit ( Data data,
Model model,
Bcs bcs,
FluxMethod fluxMethod,
ModelExtension modelExtension = NULL 
)
inline

Constructor.

Constructor requires simulation data and the flux and source functions from the model class.

Parameters
[in]*datapointer to Data class containing global simulation data
[in]*modelpointer to Model object
[in]*bcspointer to Bcs object
[in]*fluxMethodpointer to FluxMethod object
[in]*modelExtensionpointer to the ModelExtension object
See also
TimeIntegrator::TimeIntegrator
RK2::RK2

Definition at line 55 of file rkSplit.h.

◆ ~RKSplit()

virtual RKSplit::~RKSplit ( )
inlinevirtual

Destructor.

Definition at line 59 of file rkSplit.h.


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