|
METHOD
|
#include <rkSplit2ndOrder.h>


Public Member Functions | |
| RKSplit2 (Data *data, Model *model, Bcs *bcs, FluxMethod *fluxMethod, ModelExtension *modelExtension=NULL) | |
| virtual | ~RKSplit2 () |
| void | setSource (double *cons, double *prims, double *aux) |
| void | step (double *cons, double *prims, double *aux, double dt=0) |
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) |
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 | |
| Data * | data |
| Model * | model |
| Bcs * | bcs |
| FluxMethod * | fluxMethod |
| ModelExtension * | modelExtension |
Operator splitting RK2 integrator, second order accurate in time
\begin{align} U^{*} = U^n + \frac{1}{2} \Delta t \Psi(U^n) \end{align}
then perform the RK2 step,\begin{align} U^{**} = \frac{1}{2} U^* + \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^* + \Delta t \mathcal{F}(U^*), \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\).Definition at line 42 of file rkSplit2ndOrder.h.
|
inline |
Constructor.
Constructor requires simulation data and the flux and source functions from the model class.
| [in] | *data | pointer to Data class containing global simulation data |
| [in] | *model | pointer to Model object |
| [in] | *bcs | pointer to Bcs object |
| [in] | *fluxMethod | pointer to FluxMethod object |
| [in] | *modelExtension | pointer to the ModelExtension object |
Definition at line 59 of file rkSplit2ndOrder.h.
|
inlinevirtual |
Destructor.
Definition at line 63 of file rkSplit2ndOrder.h.
| void RKSplit2::setSource | ( | double * | cons, |
| double * | prims, | ||
| double * | aux | ||
| ) |
Set the source vector.
| [in] | cons | pointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\) |
| [in] | prims | pointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\) |
| [in] | aux | pointer to auxilliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\) |
| [out] | source | pointer to data->source vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\) |
|
virtual |
Performs a single time step.
The timestep will use the current values of the conserved, primitive and auxilliary 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.
| [in] | *cons | pointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\) |
| [in] | *prims | pointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\) |
| [in] | *aux | pointer to auxilliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\) |
| dt | the step size desired to move by. Defaults to the value in the Data class |
Reimplemented from RK2.