BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType > Class Template Reference

#include <BaseLevelBackwardEuler.H>

Inheritance diagram for BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >:

Inheritance graph
[legend]

List of all members.


Detailed Description

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.

Public Member Functions

 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.
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)

Private Member Functions

BaseLevelBackwardEuleroperator= (const BaseLevelBackwardEuler &)
 BaseLevelBackwardEuler (const BaseLevelBackwardEuler &a_opin)
 BaseLevelBackwardEuler ()

Constructor & Destructor Documentation

template<class LevelDataType, class FluxDataType, class FluxRegisterType>
BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::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 
) [inline]

Initializes the base class of a BackwardEuler time integrator. This must be called by any subclass of BaseLevelBackwardEuler.

Parameters:
a_grids The DisjointBoxLayout on which the BackwardEuler scheme is to operate.
a_refRatio An array containing the refinement ratios between the hierarchical AMR grid levels for the domain.
a_level0Domain The domain at the coarsest AMR grid level.
a_opFact A factory typename LevelDataTypehat is used to generate Helmholtz operators to be used by the scheme.
a_solver An AMR Multigrid solver for solving the linear systems at each stage of the BackwardEuler integration scheme.

template<class LevelDataType, class FluxDataType, class FluxRegisterType>
virtual BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::~BaseLevelBackwardEuler (  )  [inline, virtual]

Destructor, called after destructors of BaseLevelBackwardEuler subclasses.

template<class LevelDataType, class FluxDataType, class FluxRegisterType>
BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::BaseLevelBackwardEuler ( const BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType > &  a_opin  )  [private]

template<class LevelDataType, class FluxDataType, class FluxRegisterType>
BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::BaseLevelBackwardEuler (  )  [private]


Member Function Documentation

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 
) [inline, virtual]

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 >.

template<class LevelDataType, class FluxDataType, class FluxRegisterType>
BaseLevelBackwardEuler& BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType >::operator= ( const BaseLevelBackwardEuler< LevelDataType, FluxDataType, FluxRegisterType > &   )  [private]


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

Generated on Wed Nov 22 03:27:18 2017 for Chombo + EB + MF by  doxygen 1.5.5