NodeLevelOp Class Reference

#include <NodeLevelOp.H>

Inheritance diagram for NodeLevelOp:

Inheritance graph
[legend]
Collaboration diagram for NodeLevelOp:

Collaboration graph
[legend]

List of all members.


Detailed Description

Pure base class to encapsulate level operations API for node-centered elliptic solvers.

NodeLevelOp is a pure base class to encapsulate level operations API for node-centered elliptic solvers. All elliptic operators used by AMRNodeSolver inherit the NodeLevelOp interface.

Public Member Functions

Constructors, destructor and defines
 NodeLevelOp ()
virtual NodeLevelOpnew_levelop () const =0
virtual ~NodeLevelOp ()
virtual void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, Real a_dx, int a_refToCoarse, const ProblemDomain &a_domain, bool a_homogeneousOnly=false, int a_ncomp=1, bool a_verbose=false)=0
virtual void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, Real a_dx, int a_refToCoarse, const Box &a_domain, bool a_homogeneousOnly=false, int a_ncomp=1, bool a_verbose=false)=0
virtual void define (const NodeLevelOp *a_opfine, int a_refToFine)=0
Access functions
virtual bool isDefined () const =0
Parameter-setting functions
virtual void setVerbose (bool a_verbose)
Coarse/fine interpolation functions
virtual void CFInterp (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_phiCoarse, bool a_inhomogeneous)=0
virtual void homogeneousCFInterp (LevelData< NodeFArrayBox > &a_phi)=0
Evaluation of residual
virtual void residualI (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr, const LevelData< NodeFArrayBox > &a_rhs)=0
virtual void residualH (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)=0
virtual void residualIcfHphys (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr, const LevelData< NodeFArrayBox > &a_rhs)=0
virtual void residualHcfIphys (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)=0
Evaluation of operator
virtual void applyOpI (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr)=0
virtual void applyOpH (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi)=0
virtual void applyOpIcfHphys (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr)=0
virtual void applyOpHcfIphys (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi)=0
Evaluation of gradient
virtual void gradient (LevelData< NodeFArrayBox > &a_gradPhi, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr)=0
Smoothing functions
virtual void smooth (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)=0
virtual void levelPreconditioner (LevelData< NodeFArrayBox > &a_phihat, const LevelData< NodeFArrayBox > &a_rhshat)=0
virtual void bottomSmoother (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)=0

Public Attributes

ProblemDomain m_domain
LayoutData< Vector< IntVectSet > > m_IVSVext
bool m_verbose


Constructor & Destructor Documentation

NodeLevelOp::NodeLevelOp (  )  [inline]

Default constructor. User must subsequently call define().

virtual NodeLevelOp::~NodeLevelOp (  )  [inline, virtual]

Destructor.


Member Function Documentation

virtual NodeLevelOp* NodeLevelOp::new_levelop (  )  const [pure virtual]

This gets around the "no virtual constructor" rule.

Implemented in NodePoissonOp.

virtual void NodeLevelOp::define ( const DisjointBoxLayout a_grids,
const DisjointBoxLayout a_gridsCoarsePtr,
Real  a_dx,
int  a_refToCoarse,
const ProblemDomain a_domain,
bool  a_homogeneousOnly = false,
int  a_ncomp = 1,
bool  a_verbose = false 
) [pure virtual]

Full define function. Makes all coarse/fine information and sets internal variables. The current level is taken to be the fine level.

Parameters:
a_grids  grids at this level
a_gridsCoarsePtr  pointer to grids at next coarser AMR level, or NULL if none
a_dx  mesh spacing at this level
a_refToCoarse  refinement ratio between this and next coarser level
a_domain  physical domain at this level
a_homogeneousOnly  only homogeneous coarse/fine interpolation?
a_ncomp  number of components
a_verbose  verbose output?

Implemented in NodePoissonOp.

virtual void NodeLevelOp::define ( const DisjointBoxLayout a_grids,
const DisjointBoxLayout a_gridsCoarsePtr,
Real  a_dx,
int  a_refToCoarse,
const Box a_domain,
bool  a_homogeneousOnly = false,
int  a_ncomp = 1,
bool  a_verbose = false 
) [pure virtual]

Full define function. Makes all coarse/fine information and sets internal variables. The current level is taken to be the fine level.

Parameters:
a_grids  grids at this level
a_gridsCoarsePtr  pointer to grids at next coarser AMR level, or NULL if none
a_dx  mesh spacing at this level
a_refToCoarse  refinement ratio between this and next coarser level
a_domain  physical domain at this level
a_homogeneousOnly  only homogeneous coarse/fine interpolation?
a_ncomp  number of components
a_verbose  verbose output?

Implemented in NodePoissonOp.

virtual void NodeLevelOp::define ( const NodeLevelOp a_opfine,
int  a_refToFine 
) [pure virtual]

Full define function, based on a coarsening of the finer NodeLevelOp. Coarse-level grids are not set because only homogeneous interpolation is used.

Parameters:
a_opfine  pointer to NodeLevelOp at next finer level
a_refToFine  refinement ratio between a_opfine's and this level

Implemented in NodePoissonOp.

virtual bool NodeLevelOp::isDefined (  )  const [pure virtual]

Returns true if this object was created with the defining constructor or if define() has been called.

Implemented in NodePoissonOp.

virtual void NodeLevelOp::setVerbose ( bool  a_verbose  )  [inline, virtual]

Control output to stdout.

Reimplemented in NodePoissonOp.

References m_verbose.

virtual void NodeLevelOp::CFInterp ( LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > &  a_phiCoarse,
bool  a_inhomogeneous 
) [pure virtual]

Coarse / Fine (inhomogeneous) interpolation operator. Fill the nodes of a_phi on the coarse/fine interface with interpolated data from a_phiCoarse.

Parameters:
a_phi  the data at this level
a_phiCoarse  the data at the next coarser level
a_inhomogeneous  inhomogeneous physical boundary condition?

Implemented in NodePoissonOp.

virtual void NodeLevelOp::homogeneousCFInterp ( LevelData< NodeFArrayBox > &  a_phi  )  [pure virtual]

Homogeneous coarse/fine interpolation operator. Fill the nodes of a_phi on the coarse/fine interface with zeroes.

Parameters:
a_phi  the data at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::residualI ( LevelData< NodeFArrayBox > &  a_resid,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > *  a_phiCoarsePtr,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Evaluate residual of operator,
a_resid = a_rhs - operator(a_phi),
with inhomogeneous coarse/fine boundary conditions, inhomogeneous physical boundary conditions.

The operator is evaluated on a_phi, after interpolating from *a_phiCoarsePtr at the coarse/fine boundary and applying the physical boundary conditions.

Parameters:
a_resid  the residual, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary
a_phiCoarsePtr  pointer to data at next coarser level
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::residualH ( LevelData< NodeFArrayBox > &  a_resid,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Evaluate residual of operator,
a_resid = a_rhs - operator(a_phi),
with homogeneous coarse/fine boundary conditions, homogeneous physical boundary conditions.

The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying homogeneous physical boundary conditions.

Parameters:
a_resid  the residual, at interior nodes
a_phi  the data at this level, set to zero at coarse/fine boundary
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::residualIcfHphys ( LevelData< NodeFArrayBox > &  a_resid,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > *  a_phiCoarsePtr,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Evaluate residual of operator,
a_resid = a_rhs - operator(a_phi),
with inhomogeneous coarse/fine boundary conditions, homogeneous physical boundary conditions.

The operator is evaluated on a_phi, after interpolating from *a_phiCoarsePtr at the coarse/fine boundary and applying homogeneous physical boundary conditions.

Parameters:
a_resid  the residual, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary
a_phiCoarsePtr  pointer to data at next coarser level
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::residualHcfIphys ( LevelData< NodeFArrayBox > &  a_resid,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Evaluate residual of operator,
a_resid = a_rhs - operator(a_phi),
with homogeneous coarse/fine boundary conditions, inhomogeneous physical boundary conditions.

The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying the physical boundary conditions.

Parameters:
a_resid  the residual, at interior nodes
a_phi  the data at this level, set to zero at coarse/fine boundary
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::applyOpI ( LevelData< NodeFArrayBox > &  a_LofPhi,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > *  a_phiCoarsePtr 
) [pure virtual]

Evaluate operator, inhomogeneous coarse/fine boundary conditions, inhomogeneous physical boundary conditions.

The operator is evaluated on a_phi after interpolating from *a_phiCoarsePtr at the coarse/fine boundary and applying the physical boundary conditions.

Parameters:
a_LofPhi  value of the operator, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary
a_phiCoarsePtr  pointer to data at next coarser level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::applyOpH ( LevelData< NodeFArrayBox > &  a_LofPhi,
LevelData< NodeFArrayBox > &  a_phi 
) [pure virtual]

Evaluate operator, homogeneous coarse/fine boundary conditions, homogeneous physical boundary conditions.

The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying homogeneous physical boundary conditions.

Parameters:
a_LofPhi  value of the operator, at interior nodes
a_phi  the data at this level, set to zero at coarse/fine boundary

Implemented in NodePoissonOp.

virtual void NodeLevelOp::applyOpIcfHphys ( LevelData< NodeFArrayBox > &  a_LofPhi,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > *  a_phiCoarsePtr 
) [pure virtual]

Evaluate operator, inhomogeneous coarse/fine boundary conditions, homogeneous physical boundary conditions.

The operator is evaluated on a_phi, after interpolating from *a_phiCoarsePtr at the coarse/fine boundary and applying homogeneous physical boundary conditions.

Parameters:
a_LofPhi  value of the operator, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary
a_phiCoarsePtr  pointer to data at next coarser level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::applyOpHcfIphys ( LevelData< NodeFArrayBox > &  a_LofPhi,
LevelData< NodeFArrayBox > &  a_phi 
) [pure virtual]

Evaluate operator, homogeneous coarse/fine boundary conditions, inhomogeneous physical boundary conditions.

The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying the physical boundary conditions.

Parameters:
a_LofPhi  value of the operator, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary

Implemented in NodePoissonOp.

virtual void NodeLevelOp::gradient ( LevelData< NodeFArrayBox > &  a_gradPhi,
LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > *  a_phiCoarsePtr 
) [pure virtual]

Evaluate gradient, inhomogeneous coarse/fine boundary conditions, inhomogeneous physical boundary conditions.

The gradient is evaluated on a_phi after interpolating from *a_phiCoarsePtr at the coarse/fine boundary and applying the physical boundary conditions.

Parameters:
a_gradPhi  value of the gradient, at interior nodes
a_phi  the data at this level, interpolated from *a_phiCoarsePtr at coarse/fine boundary
a_phiCoarsePtr  pointer to data at next coarser level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::smooth ( LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Smoother. Assumes that problem has already been put in residual-correction form, so that coarse/fine boundary conditions are homogeneous.

Parameters:
a_phi  the data at this level
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::levelPreconditioner ( LevelData< NodeFArrayBox > &  a_phihat,
const LevelData< NodeFArrayBox > &  a_rhshat 
) [pure virtual]

Apply preconditioning to the solution on this level. Given a_rhshat, returns a_phihat from M(a_phihat) = a_rhshat .

Parameters:
a_phihat  data at this level
a_rhshat  right-hand side at this level

Implemented in NodePoissonOp.

virtual void NodeLevelOp::bottomSmoother ( LevelData< NodeFArrayBox > &  a_phi,
const LevelData< NodeFArrayBox > &  a_rhs 
) [pure virtual]

Smoother at bottom level.

Parameters:
a_phi  data at this level
a_rhs  right-hand side at this level

Implemented in NodePoissonOp.


Member Data Documentation

CELL-centered physical domain of current level

exterior boundary nodes

enable output to stdout if true

Referenced by setVerbose().


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

Generated on Tue Apr 14 14:23:51 2009 for Chombo + EB by  doxygen 1.5.5