Chombo + EB
3.0
|
Go to the source code of this file.
Macros | |
#define | _LEVELRK4_H__ |
Functions | |
template<class TSoln , class TFR , class TOp > | |
void | RK4LevelAdvance (TSoln &a_newSoln, TSoln &a_oldSoln, const TSoln &a_oldCrseSoln, Real a_oldCrseTime, const TSoln &a_newCrseSoln, Real a_newCrseTime, TFR &a_crseFRPtr, TFR &a_fineFRPtr, Real a_time, Real a_dt, TOp &a_op, const bool a_initializeNewSoln=true) |
Basic templated implementation of RK4 advance for a single AMRLevel. More... | |
template<class TSoln , class TInterp , class TFR , class TOp > | |
void | RK4LevelAdvance (TSoln &a_newSoln, TSoln &a_oldSoln, TInterp &a_interpPtr, const TSoln &a_oldCrseSoln, Real a_oldCrseTime, const TSoln &a_newCrseSoln, Real a_newCrseTime, TFR &a_crseFRPtr, TFR &a_fineFRPtr, Real a_time, Real a_dt, TOp &a_op, const bool a_initializeNewSoln=true) |
Templated implementation of RK4 advance for a single AMRLevel, allowing interpolation in time. More... | |
#define _LEVELRK4_H__ |
void RK4LevelAdvance | ( | TSoln & | a_newSoln, |
TSoln & | a_oldSoln, | ||
const TSoln & | a_oldCrseSoln, | ||
Real | a_oldCrseTime, | ||
const TSoln & | a_newCrseSoln, | ||
Real | a_newCrseTime, | ||
TFR & | a_crseFRPtr, | ||
TFR & | a_fineFRPtr, | ||
Real | a_time, | ||
Real | a_dt, | ||
TOp & | a_op, | ||
const bool | a_initializeNewSoln = true |
||
) |
Basic templated implementation of RK4 advance for a single AMRLevel.
This implements fourth-order Runge-Kutta time advance of an ODE. ODE is d(Soln)/dt = RHS
Template types:
TOp requirements: TOp must have the following functions:
a_newSoln | the cell-centered solution at the new time (a_time + a_dt) |
a_oldSoln | the cell-centered solution at the old time (a_time) |
a_oldCrseSoln | old-time coarse-level solution (if it exists) |
a_oldCrseTime | time-centering of a_oldCrseSoln |
a_newCrseSoln | new-time coarse-level solution (if it exists) |
a_newCrseTime | time-centering of a_newCrseSoln |
a_crseFRPtr | the pointer to the flux register between this level and the next coarser level |
a_fineFRPtr | the pointer to the flux register between this level and the next finer level |
a_time | time centering of a_oldSoln |
a_dt | time step |
a_op | object which encapsulates the ODE functionality (must meet the requirements detailed above) |
a_initializeNewSoln | whether a_newSoln is initialized with a_oldSoln (default true) |
void RK4LevelAdvance | ( | TSoln & | a_newSoln, |
TSoln & | a_oldSoln, | ||
TInterp & | a_interpPtr, | ||
const TSoln & | a_oldCrseSoln, | ||
Real | a_oldCrseTime, | ||
const TSoln & | a_newCrseSoln, | ||
Real | a_newCrseTime, | ||
TFR & | a_crseFRPtr, | ||
TFR & | a_fineFRPtr, | ||
Real | a_time, | ||
Real | a_dt, | ||
TOp & | a_op, | ||
const bool | a_initializeNewSoln = true |
||
) |
Templated implementation of RK4 advance for a single AMRLevel, allowing interpolation in time.
This implements fourth-order Runge-Kutta time advance of an ODE, and saves intermediate results for use in interpolation in time. ODE is d(Soln)/dt = RHS
Template types:
TInterp requirements: TInterp must have the following functions:
TOp requirements: TOp must have the following functions:
a_newSoln | the cell-centered solution at the new time (a_time + a_dt) |
a_oldSoln | the cell-centered solution at the old time (a_time) |
a_interpPtr | object that encapsulates time interpolation |
a_oldCrseSoln | old-time coarse-level solution (if it exists) |
a_oldCrseTime | time-centering of a_oldCrseSoln |
a_newCrseSoln | new-time coarse-level solution (if it exists) |
a_newCrseTime | time-centering of a_newCrseSoln |
a_crseFRPtr | the pointer to the flux register between this level and the next coarser level |
a_fineFRPtr | the pointer to the flux register between this level and the next finer level |
a_time | time centering of a_oldSoln |
a_dt | time step |
a_op | object which encapsulates the ODE functionality (must meet the requirements detailed above) |
a_initializeNewSoln | whether a_newSoln is initialized with a_oldSoln (default true) |