#include <EBLevelTGA.H>
Public Member Functions | |
EBLevelBackwardEuler (const Vector< DisjointBoxLayout > &a_grids, const Vector< int > &a_refRat, const ProblemDomain &a_level0Domain, RefCountedPtr< AMRLevelOpFactory< LevelData< EBCellFAB > > > &a_opFact, const RefCountedPtr< AMRMultiGrid< LevelData< EBCellFAB > > > &a_solver) | |
virtual | ~EBLevelBackwardEuler () |
Destructor. | |
void | computeDiffusion (LevelData< EBCellFAB > &a_DiffusiveTerm, LevelData< EBCellFAB > &a_phiOld, LevelData< EBCellFAB > &a_src, EBFluxRegister *a_FineFluxRegPtr, EBFluxRegister *a_crseFluxRegPtr, const LevelData< EBCellFAB > *a_crsePhiOldPtr, const LevelData< EBCellFAB > *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) |
void | updateSoln (LevelData< EBCellFAB > &a_phiNew, LevelData< EBCellFAB > &a_phiOld, LevelData< EBCellFAB > &a_src, EBFluxRegister *a_fineFluxRegPtr, EBFluxRegister *a_crseFluxRegPtr, const LevelData< EBCellFAB > *a_crsePhiOldPtr, const LevelData< EBCellFAB > *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) |
void | setEBLG (Vector< EBLevelGrid > &a_eblg) |
Protected Attributes | |
bool | m_isEBLGSet |
Vector< EBLevelGrid > | m_eblg |
EBLevelBackwardEuler::EBLevelBackwardEuler | ( | const Vector< DisjointBoxLayout > & | a_grids, | |
const Vector< int > & | a_refRat, | |||
const ProblemDomain & | a_level0Domain, | |||
RefCountedPtr< AMRLevelOpFactory< LevelData< EBCellFAB > > > & | a_opFact, | |||
const RefCountedPtr< AMRMultiGrid< LevelData< EBCellFAB > > > & | a_solver | |||
) | [inline] |
Create a new BackwardEuler level integrator.
a_grids | The disjoint box layout on which the level integrator is defined. | |
a_refRat | The refinement ratios for the boxes. | |
a_level0Domain | The coarsest grid level defining the problem domain. | |
a_opFact | A factory that generates level diffusion operators. | |
a_solver | A multigrid solver. |
References m_isEBLGSet.
virtual EBLevelBackwardEuler::~EBLevelBackwardEuler | ( | ) | [inline, virtual] |
Destructor.
void EBLevelBackwardEuler::computeDiffusion | ( | LevelData< EBCellFAB > & | a_DiffusiveTerm, | |
LevelData< EBCellFAB > & | a_phiOld, | |||
LevelData< EBCellFAB > & | a_src, | |||
EBFluxRegister * | a_FineFluxRegPtr, | |||
EBFluxRegister * | a_crseFluxRegPtr, | |||
const LevelData< EBCellFAB > * | a_crsePhiOldPtr, | |||
const LevelData< EBCellFAB > * | 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 | |||
) |
Computes the time-centered diffusive term for explicit updating. This integrates the diffusion equation for a new value of a quantity phi and then computes the diffusion term using a finite difference stencil in time.
a_diffusionTerm | The term computed by this method. | |
a_phiOld | The value of phi at the beginning of the time step, at the current grid level. | |
a_src | The source term in the diffusion equation at the current grid level. | |
a_fineFluxRegPtr | A pointer to the flux register at the finer adjacent grid level (or NULL if there is none). | |
a_crseFluxRegPtr | A pointer to the flux register at the coarser adjacent grid level (or NULL if there is none). | |
a_crsePhiOldPtr | A pointer to the LevelData object holding the old value of phi on the coarser adjacent grid level (or NULL if there is none). | |
a_crsePhiNewPtr | A pointer to the LevelData object holding the updated value of phi on the coarser adjacent grid level (or NULL if there is none). | |
a_oldTime | The time at the beginning of the integration step on the current grid level. | |
a_crseOldTime | The time at the beginning of the integration step on the coarser adjacent grid level. | |
a_crseNewTime | The time at the end of the integration step on the coarser adjacent grid level. | |
a_dt | The time step on the current grid level. | |
a_level | The current grid level. | |
a_zeroPhi | If this flag is true, the initial estimate of phi will be set to zero. Otherwise, a_phiOld will be used. |
void EBLevelBackwardEuler::updateSoln | ( | LevelData< EBCellFAB > & | a_phiNew, | |
LevelData< EBCellFAB > & | a_phiOld, | |||
LevelData< EBCellFAB > & | a_src, | |||
EBFluxRegister * | a_fineFluxRegPtr, | |||
EBFluxRegister * | a_crseFluxRegPtr, | |||
const LevelData< EBCellFAB > * | a_crsePhiOldPtr, | |||
const LevelData< EBCellFAB > * | 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] |
Integrates the diffusion equation, storing the result in a_phiNew.
a_phiNew | The new value of phi at the current grid level. | |
a_phiOld | The value of phi at the beginning of the time step, at the current grid level. | |
a_src | The source term in the diffusion equation at the current grid level. | |
a_fineFluxRegPtr | A pointer to the flux register at the finer adjacent grid level (or NULL if there is none). | |
a_crseFluxRegPtr | A pointer to the flux register at the coarser adjacent grid level (or NULL if there is none). | |
a_crsePhiOldPtr | A pointer to the LevelData object holding the old value of phi on the coarser adjacent grid level (or NULL if there is none). | |
a_crsePhiNewPtr | A pointer to the LevelData object holding the updated value of phi on the coarser adjacent grid level (or NULL if there is none). | |
a_oldTime | The time at the beginning of the integration step on the current grid level. | |
a_crseOldTime | The time at the beginning of the integration step on the coarser adjacent grid level. | |
a_crseNewTime | The time at the end of the integration step on the coarser adjacent grid level. | |
a_dt | The time step on the current grid level. | |
a_level | The current grid level. | |
a_zeroPhi | If this flag is true, the initial estimate of phi will be set to zero. Otherwise, a_phiOld will be used. |
Reimplemented from BaseLevelHeatSolver< LevelData< EBCellFAB >, EBFluxFAB, EBFluxRegister >.
void EBLevelBackwardEuler::setEBLG | ( | Vector< EBLevelGrid > & | a_eblg | ) | [inline] |
References m_eblg, and m_isEBLGSet.
bool EBLevelBackwardEuler::m_isEBLGSet [protected] |
Referenced by EBLevelBackwardEuler(), and setEBLG().
Vector<EBLevelGrid> EBLevelBackwardEuler::m_eblg [protected] |
Referenced by setEBLG().