|
| BaseLevelBackwardEuler (const Vector< DisjointBoxLayout > &a_grids, const Vector< int > &a_refRat, const ProblemDomain &a_level0Domain, RefCountedPtr< AMRLevelOpFactory< LevelDataType > > &a_opFact, const RefCountedPtr< AMRMultiGrid< LevelDataType > > &a_solver) |
|
virtual | ~BaseLevelBackwardEuler () |
| Destructor, called after destructors of BaseLevelBackwardEuler subclasses. More...
|
|
void | updateSoln (LevelDataType &a_phiNew, LevelDataType &a_phiOld, LevelDataType &a_src, LevelData< FluxDataType > &a_flux, FluxRegisterType *a_fineFluxRegPtr, FluxRegisterType *a_crseFluxRegPtr, const LevelDataType *a_crsePhiOldPtr, const LevelDataType *a_crsePhiNewPtr, Real a_oldTime, Real a_crseOldTime, Real a_crseNewTime, Real a_dt, int a_level, bool a_zeroPhi=true, bool a_rhsAlreadyKappaWeighted=false, int a_fluxStartComponent=0) |
|
| BaseLevelHeatSolver (const Vector< DisjointBoxLayout > &a_grids, const Vector< int > &a_refRat, const ProblemDomain &a_level0Domain, RefCountedPtr< AMRLevelOpFactory< LevelDataType > > &a_opFact, const RefCountedPtr< AMRMultiGrid< LevelDataType > > &a_solver) |
|
virtual | ~BaseLevelHeatSolver () |
| Destructor, called after destructors of BaseLevelHeatSolver subclasses. More...
|
|
virtual void | updateSoln (LevelDataType &a_phiNew, LevelDataType &a_phiOld, LevelDataType &a_src, FluxRegisterType *a_fineFluxRegPtr, FluxRegisterType *a_crseFluxRegPtr, const LevelDataType *a_crsePhiOldPtr, const LevelDataType *a_crsePhiNewPtr, Real a_oldTime, Real a_crseOldTime, Real a_crseNewTime, Real a_dt, int a_level, bool a_zeroPhi=true, bool a_rhsAlreadyKappaWeighted=false, int a_fluxStartComponent=0) |
|
virtual void | computeDiffusion (LevelDataType &a_diffusiveTerm, LevelDataType &a_phiOld, LevelDataType &a_src, LevelData< FluxDataType > &a_flux, FluxRegisterType *a_fineFluxRegPtr, FluxRegisterType *a_crseFluxRegPtr, const LevelDataType *a_crsePhiOldPtr, const LevelDataType *a_crsePhiNewPtr, Real a_oldTime, Real a_crseOldTime, Real a_crseNewTime, Real a_dt, int a_level, bool a_zeroPhi=true, bool a_rhsAlreadyKappaWeighted=false) |
|
virtual void | applyOperator (LevelDataType &a_ans, const LevelDataType &a_phi, const LevelDataType *a_phiC, int a_level, Real a_alpha, Real a_beta, bool a_applyBC) |
|
void | applyHelm (LevelDataType &a_ans, const LevelDataType &a_phi, const LevelDataType *a_phiC, int a_level, Real a_mu, Real a_dt, bool a_homogeneousBC) |
|
void | incrementFlux (LevelData< FluxDataType > &a_diffusiveFlux, LevelDataType &a_phi, int a_level, Real a_mu, Real a_dt, Real a_sign, bool a_setToZero) |
|
void | solveHelm (LevelDataType &a_phi, LevelDataType &a_phiC, LevelDataType &a_rhs, int a_level, Real a_mu, Real a_dt, bool a_zeroPhi=true) |
|
void | resetSolverAlphaAndBeta (const Real &a_alpha, const Real &a_beta) |
|
virtual LevelTGAHelmOp< LevelDataType, FluxDataType > * | newOp (const ProblemDomain &a_indexSpace, RefCountedPtr< AMRLevelOpFactory< LevelDataType > > &a_opFact) |
|
int | size () const |
| Returns the number of grid levels on which this integrator operates. More...
|
|
template<class LevelDataType, class FluxDataType, class FluxRegisterType>
class BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >
This base class implements the 1st-order implicit L0-stable time integration algorithm for solving elliptic equations. It relies upon linear algebraic operations defined in the underlying Helmholtz operators.
- Template Parameters
-
LevelDataType | The type used to store data at a grid level. This is usually LevelData<T>, where T is some cell-centered FArrayBox type. |
FluxDataType | The type used to store flux data at a grid level. This is usually an array box clas that stores fluxes. |
FluxRegisterType | The type used to store flux register data for interactions between different grid levels. This is usually a flux register class. |
template<class LevelDataType, class FluxDataType, class FluxRegisterType>
void BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::updateSoln |
( |
LevelDataType & |
a_phiNew, |
|
|
LevelDataType & |
a_phiOld, |
|
|
LevelDataType & |
a_src, |
|
|
LevelData< FluxDataType > & |
a_flux, |
|
|
FluxRegisterType * |
a_fineFluxRegPtr, |
|
|
FluxRegisterType * |
a_crseFluxRegPtr, |
|
|
const LevelDataType * |
a_crsePhiOldPtr, |
|
|
const LevelDataType * |
a_crsePhiNewPtr, |
|
|
Real |
a_oldTime, |
|
|
Real |
a_crseOldTime, |
|
|
Real |
a_crseNewTime, |
|
|
Real |
a_dt, |
|
|
int |
a_level, |
|
|
bool |
a_zeroPhi = true , |
|
|
bool |
a_rhsAlreadyKappaWeighted = false , |
|
|
int |
a_fluxStartComponent = 0 |
|
) |
| |
|
inlinevirtual |
Integrates the helmholtz equation represented by this object, placing the new solution in a_phiNew.
- Parameters
-
a_phiNew | The new solution (the value of phi at time n + 1) will be stored here. |
a_phiOld | The old solution (the value of phi at time n). |
a_src | The source term on the right hand side of the Helmholtz equation. |
a_flux | This will store the flux computed at the current grid level during the solution of the Helmholtz equation. |
a_fineFluxRegPtr | A pointer to the flux register representing the finer grid level adjacent to this one, or NULL if there is no finer grid level. |
a_crseFluxRegPtr | A pointer to the flux register representing the coarser grid level adjacent to this one, or NULL if there is no coarser grid level. |
a_oldTime | The time at the beginning of the integration step at the current grid level. |
a_crseOldTime | The time at the beginning of the integration step at the coarser adjacent grid level. This parameter is ignored if there is no coarser grid level. |
a_crseNewTime | The time at the end of the integration step at the coarser adjacent grid level. This parameter is ignored if there is no coarser grid level. |
a_dt | The size of the integration step at the current grid level. |
a_level | The current grid level. |
a_zeroPhi | If set to true, a_phiNew will be set to zero before the integration takes place. Otherwise, a_phiNew is assumed to be an initial estimate for the solution in the iterative linear solve. |
a_fluxStartComponent | An index identifying the component at which flux data begins within a_fineFluxRegPtr and a_crseFluxRegPtr. |
Implements BaseLevelHeatSolver< LevelDataType, FluxDataType, FluxRegisterType >.