EBLevelCrankNicolson Class Reference

#include <EBLevelTGA.H>

Inheritance diagram for EBLevelCrankNicolson:

Inheritance graph
[legend]

List of all members.


Detailed Description

This class implements an imlplicit integrator for a diffusion equation using an approach devised by Twizzell, Gumel, and Arigu.

Public Member Functions

 EBLevelCrankNicolson (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 ~EBLevelCrankNicolson ()
 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< EBLevelGridm_eblg

Constructor & Destructor Documentation

EBLevelCrankNicolson::EBLevelCrankNicolson ( 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 CrankNicolson level integrator.

Parameters:
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 EBLevelCrankNicolson::~EBLevelCrankNicolson (  )  [inline, virtual]

Destructor.


Member Function Documentation

void EBLevelCrankNicolson::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.

Parameters:
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 EBLevelCrankNicolson::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.

Parameters:
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 EBLevelCrankNicolson::setEBLG ( Vector< EBLevelGrid > &  a_eblg  )  [inline]

References m_eblg, and m_isEBLGSet.


Member Data Documentation

Referenced by EBLevelCrankNicolson(), and setEBLG().

Referenced by setEBLG().


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

Generated on Fri Apr 5 04:25:02 2019 for Chombo + EB by  doxygen 1.5.5