Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

NodeMaskPoissonOp Class Reference

Node-centered Poisson operator. More...

#include <NodeMaskPoissonOp.H>

Inheritance diagram for NodeMaskPoissonOp:

Inheritance graph
[legend]
Collaboration diagram for NodeMaskPoissonOp:

Collaboration graph
[legend]
List of all members.

Public Methods

 NodeMaskPoissonOp ()
 {\bf constructors, destructor and defines}

virtual NodeMaskLevelOpnew_levelop () const
 ~NodeMaskPoissonOp ()
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)
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)
void define (const NodeMaskLevelOp *a_opfine, int a_refToFine)
virtual bool isDefined () const
void setBottomSmoother (const NodeMaskBaseBottomSmoother &a_bottomSmoother)
void CFInterp (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_phiCoarse, bool a_inhomogeneous)
 {\bf data modification functions}

void homogeneousCFInterp (LevelData< NodeFArrayBox > &a_phi)
void smooth (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)
void applyOpI (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr)
void applyOpH (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi)
void applyOpIcfHphys (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr)
void applyOpHcfIphys (LevelData< NodeFArrayBox > &a_LofPhi, LevelData< NodeFArrayBox > &a_phi)
void bottomSmoother (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)
virtual void levelPreconditioner (LevelData< NodeFArrayBox > &a_phihat, const LevelData< NodeFArrayBox > &a_rhshat)
void setDomainNodeBC (const DomainNodeBC &a_dombcin)
void setInterpolationDegree (int a_interpolationDegree)
void residualI (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr, const LevelData< NodeFArrayBox > &a_rhs)
void residualH (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)
void residualHcfIphys (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs)
void residualIcfHphys (LevelData< NodeFArrayBox > &a_resid, LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarsePtr, const LevelData< NodeFArrayBox > &a_rhs)

Protected Attributes

DomainNodeBC m_dombc
int m_interpolationDegree
ProblemDomain m_domainInteriorNodes
DisjointBoxLayout m_grids
BoxLayout m_gridsNodes
DisjointBoxLayout m_gridsCoarse
int m_ncomp
int m_refToCoarse
Real m_dx
Real m_dxCoarse
bool m_isDefined
bool m_isBCDefined
bool m_ihcfiEnabled
LayoutData< NodeCFIVSm_loCFIVS [SpaceDim]
LayoutData< NodeCFIVSm_hiCFIVS [SpaceDim]
NodeQuadCFInterp m_qcfi
NodeMaskBaseBottomSmootherm_bottomSmootherPtr
LayoutData< Vector< IntVectSet > > m_IVSV
BoxLayoutData< BaseFab< int > > m_mask
BoxLayoutData< BaseFab< Real > > m_coeffs

Detailed Description

Node-centered Poisson operator.

This class contains stuff to solve div (grad phi) = rhs.


Constructor & Destructor Documentation

NodeMaskPoissonOp::NodeMaskPoissonOp  
 

{\bf constructors, destructor and defines}

Default constructor. User must subsequently call define().

NodeMaskPoissonOp::~NodeMaskPoissonOp  
 

Destructor.


Member Function Documentation

void NodeMaskPoissonOp::applyOpH LevelData< NodeFArrayBox > &    a_LofPhi,
LevelData< NodeFArrayBox > &    a_phi
[virtual]
 

Evaluate Operator, homogeneous C/F boundary conditions. homogeneous phys boundary conditions. \ The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying homogeneous physical boundary conditions.

{\bf Arguments:}\ a_LofPhi (modified): the value of the operator, at interior nodes.\ a_phi (modified): the data at this level.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::applyOpHcfIphys LevelData< NodeFArrayBox > &    a_LofPhi,
LevelData< NodeFArrayBox > &    a_phi
[virtual]
 

Evaluate Operator, homogeneous C/F boundary conditions. inhomogeneous phys boundary conditions. \ The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying the physical boundary conditions.

{\bf Arguments:}\ a_LofPhi (modified): the value of the operator, at interior nodes.\ a_phi (modified): the data at this level.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::applyOpI LevelData< NodeFArrayBox > &    a_LofPhi,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > *    a_phiCoarsePtr
[virtual]
 

Evaluate Operator, inhomogeneous C/F boundary conditions, inhomogeneous phys 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.

{\bf Arguments:}\ a_LofPhi (modified): the value of the operator, at interior nodes.\ a_phi (modified): the data at this level. Interpolated from a_phiCoarsePtr at coarse/fine boundary.\ a_phiCoarsePtr (not modified): pointer to data at next coarser level.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::applyOpIcfHphys LevelData< NodeFArrayBox > &    a_LofPhi,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > *    a_phiCoarsePtr
[virtual]
 

Evaluate Operator, inhomogeneous C/F boundary conditions, homogeneous phys 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.

{\bf Arguments:}\ a_LofPhi (modified): the value of the operator, at interior nodes.\ a_phi (modified): the data at this level. Interpolated from a_phiCoarsePtr at coarse/fine boundary.\ a_phiCoarsePtr (not modified): pointer to data at next coarser level.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::bottomSmoother LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

This does a GSRB Pre/Conditioned BiCGStab on a level for the bottom solver.

{\bf Arguments:}\ a_phi (modified): the data at this level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::CFInterp LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > &    a_phiCoarse,
bool    a_inhomogeneous
[virtual]
 

{\bf data modification functions}

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

{\bf Arguments:}\ a_phi (modified): the data at this level.\ a_phiCoarse (not modified): the data at the next coarser level.\ a_inhomogeneous (not modified): inhomogeneous physical boundary condition?\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::define const NodeMaskLevelOp   a_opfine,
int    a_refToFine
[virtual]
 

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

{\bf Arguments:}\ a_opfine: pointer to NodeMaskLevelOp at next finer level.\ a_refToFine: refinement ratio between a_opfine's and this level.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::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
[virtual]
 

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::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
[virtual]
 

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

{\bf Arguments:}\ a_grids: domain of this level.\ a_gridsCoarsePtr: pointer to next coarser level domain, 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.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::homogeneousCFInterp LevelData< NodeFArrayBox > &    a_phi [virtual]
 

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

{\bf Arguments:}\ a_phi (modified): the data at this level.\

Implements NodeMaskLevelOp.

virtual bool NodeMaskPoissonOp::isDefined   const [virtual]
 

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

Implements NodeMaskLevelOp.

virtual void NodeMaskPoissonOp::levelPreconditioner LevelData< NodeFArrayBox > &    a_phihat,
const LevelData< NodeFArrayBox > &    a_rhshat
[virtual]
 

apply preconditioning to the solution on this level. Given rhshat, returns phihat from M(phihat) = rhshat

{\bf Arguments:}\ a_phihat (modified): the data at this level.\ a_rhshat (not modified): right-hand side.\

Implements NodeMaskLevelOp.

virtual NodeMaskLevelOp* NodeMaskPoissonOp::new_levelop   const [virtual]
 

Virtual constructor workaround. Sets these to be the same as this:\

  • m_dombc, boundary condition;\
  • m_interpolationDegree, degree of c/f interpolation;\
  • m_bottomSmootherPtr, pointer to bottom smoother.

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::residualH LevelData< NodeFArrayBox > &    a_resid,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

Evaluate residual of operator, a_resid = a_rhs - operator \ with homogeneous C/F boundary conditions. homogeneous phys boundary conditions. \ The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying homogeneous physical boundary conditions.

{\bf Arguments:}\ a_resid (modified): the residual, at interior nodes.\ a_phi (modified): the data at this level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::residualHcfIphys LevelData< NodeFArrayBox > &    a_resid,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

Evaluate residual of operator, a_resid = a_rhs - operator \ with homogeneous C/F boundary conditions, inhomogeneous phys boundary conditions. \ The operator is evaluated on a_phi, after setting to zero at the coarse/fine boundary and applying the physical boundary conditions.

{\bf Arguments:}\ a_resid (modified): the residual, at interior nodes.\ a_phi (modified): the data at this level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::residualI LevelData< NodeFArrayBox > &    a_resid,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > *    a_phiCoarsePtr,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

Evaluate residual of operator, a_resid = a_rhs - operator \ with inhomogeneous C/F boundary conditions, inhomogeneous phys 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.

{\bf Arguments:}\ a_resid (modified): the residual, at interior nodes.\ a_phi (modified): the data at this level. Interpolated from a_phiCoarsePtr at coarse/fine boundary.\ a_phiCoarsePtr (not modified): pointer to data at next coarser level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::residualIcfHphys LevelData< NodeFArrayBox > &    a_resid,
LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > *    a_phiCoarsePtr,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

Evaluate residual of operator, a_resid = a_rhs - operator \ with inhomogeneous C/F boundary conditions, homogeneous phys 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.

{\bf Arguments:}\ a_resid (modified): the residual, at interior nodes.\ a_phi (modified): the data at this level. Interpolated from a_phiCoarsePtr at coarse/fine boundary.\ a_phiCoarsePtr (not modified): pointer to data at next coarser level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.

void NodeMaskPoissonOp::setBottomSmoother const NodeMaskBaseBottomSmoother   a_bottomSmoother
 

Set bottom smoother.

void NodeMaskPoissonOp::setDomainNodeBC const DomainNodeBC   a_dombcin
 

Set physical boundary conditions.

void NodeMaskPoissonOp::setInterpolationDegree int    a_interpolationDegree
 

Set interpolation degree in NodeQuadCFInterp: \ 1 for linear in 2-D or bilinear in 3-D; \ 2 for quadratic in 2-D or biquadratic in 3-D. \ Default is 2.

Like setDomainNodeBC, this function must be called before define(). You cannot change the interpolation degree later.

void NodeMaskPoissonOp::smooth LevelData< NodeFArrayBox > &    a_phi,
const LevelData< NodeFArrayBox > &    a_rhs
[virtual]
 

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

{\bf Arguments:}\ a_phi (modified): the data at this level.\ a_rhs (not modified): right-hand side.\

Implements NodeMaskLevelOp.


Member Data Documentation

NodeMaskBaseBottomSmoother* NodeMaskPoissonOp::m_bottomSmootherPtr [protected]
 

BoxLayoutData< BaseFab<Real> > NodeMaskPoissonOp::m_coeffs [protected]
 

ProblemDomain NodeMaskPoissonOp::m_domainInteriorNodes [protected]
 

DomainNodeBC NodeMaskPoissonOp::m_dombc [protected]
 

Real NodeMaskPoissonOp::m_dx [protected]
 

Real NodeMaskPoissonOp::m_dxCoarse [protected]
 

DisjointBoxLayout NodeMaskPoissonOp::m_grids [protected]
 

DisjointBoxLayout NodeMaskPoissonOp::m_gridsCoarse [protected]
 

BoxLayout NodeMaskPoissonOp::m_gridsNodes [protected]
 

LayoutData<NodeCFIVS> NodeMaskPoissonOp::m_hiCFIVS[SpaceDim] [protected]
 

bool NodeMaskPoissonOp::m_ihcfiEnabled [protected]
 

int NodeMaskPoissonOp::m_interpolationDegree [protected]
 

bool NodeMaskPoissonOp::m_isBCDefined [protected]
 

bool NodeMaskPoissonOp::m_isDefined [protected]
 

LayoutData< Vector<IntVectSet> > NodeMaskPoissonOp::m_IVSV [protected]
 

LayoutData<NodeCFIVS> NodeMaskPoissonOp::m_loCFIVS[SpaceDim] [protected]
 

BoxLayoutData< BaseFab<int> > NodeMaskPoissonOp::m_mask [protected]
 

int NodeMaskPoissonOp::m_ncomp [protected]
 

NodeQuadCFInterp NodeMaskPoissonOp::m_qcfi [protected]
 

int NodeMaskPoissonOp::m_refToCoarse [protected]
 


The documentation for this class was generated from the following file:
Generated on Tue Apr 15 18:32:10 2003 for AMRNodeElliptic by doxygen1.2.16