Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

LevelOp Class Reference

Pure base class to encapsulate level operations API for elliptic solvers. More...

#include <LevelOp.H>

Inheritance diagram for LevelOp:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 LevelOp ()
 Null constructor.
virtual ~LevelOp ()
 Destructor.
virtual void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, bool a_homogeneousOnly, int a_ncomp=1)=0
 Full define function.
virtual void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const Box &a_domain, bool a_homogeneousOnly, int a_ncomp=1)=0
 Full define function. (Deprecated -- use the ProblemDomain version).
virtual void define (const LevelOp *a_opfine, int a_reftoFine)=0
 Full define function.
virtual void CFInterp (LevelData< FArrayBox > &a_phif, const LevelData< FArrayBox > &a_phic)=0
 Coarse / Fine interpolation operator.
virtual void homogeneousCFInterp (LevelData< FArrayBox > &a_phif)=0
 Homogeneous coarse/fine interpolation operator.
virtual LevelOpnew_levelop () const =0
 "Virtual constructor" workaround"
virtual bool isDefined () const =0
 Has this object been fully defined?
virtual void smooth (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)=0
 Smoother.
virtual void levelPreconditioner (LevelData< FArrayBox > &a_phihat, const LevelData< FArrayBox > &a_rhshat)=0
 Apply preconditioning to the solution on this level.
virtual void applyOpI (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phicPtr, LevelData< FArrayBox > &a_lofPhi)=0
 Evaluate operator, inhomogeneous boundary conditions.
virtual void applyOpIcfHphys (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phicPtr, LevelData< FArrayBox > &a_lofPhi)=0
 Evaluate operator.
virtual void applyOpHcfIphys (LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_lofPhi)=0
 Evaluate operator.
virtual void applyOpH (LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_lofPhi)=0
 Evaluate Operator with homogeneous boundary conditions.
virtual void bottomSmoother (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)=0
 Smoother at bottom level.
virtual void getFlux (FArrayBox &a_fineFlux, const FArrayBox &a_data, const DataIndex &a_datInd, int a_dir)=0
 Get flux at this level in the direction dir over the given Box.
virtual void setConvergenceMetric (Real a_metric, int a_comp)=0
 set the convergence metrics (if appropriate) for this problem

Detailed Description

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

LevelOp is a pure base class to encapsulate level operations API for elliptic solvers. All elliptic operators used by AMRSolver inherit the LevelOp interface.


Constructor & Destructor Documentation

LevelOp::LevelOp  )  [inline]
 

Null constructor.

virtual LevelOp::~LevelOp  )  [inline, virtual]
 

Destructor.


Member Function Documentation

virtual void LevelOp::applyOpH LevelData< FArrayBox > &  a_phi,
LevelData< FArrayBox > &  a_lofPhi
[pure virtual]
 

Evaluate Operator with homogeneous boundary conditions.

Uses homogeneous form of both C/F and physical boundary conditions.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::applyOpHcfIphys LevelData< FArrayBox > &  a_phi,
LevelData< FArrayBox > &  a_lofPhi
[pure virtual]
 

Evaluate operator.

Uses homogeneous form of C/F boundary conditions and inhomogeneous form of physical boundary conditions.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::applyOpI LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > *  a_phicPtr,
LevelData< FArrayBox > &  a_lofPhi
[pure virtual]
 

Evaluate operator, inhomogeneous boundary conditions.

Uses inhomogeneous form of both C/F and physical boundary conditions.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::applyOpIcfHphys LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > *  a_phicPtr,
LevelData< FArrayBox > &  a_lofPhi
[pure virtual]
 

Evaluate operator.

Uses inhomogeneous form of C/F boundary conditions. homogeneous form of phys boundary conditions.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::bottomSmoother LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > &  a_rhs
[pure virtual]
 

Smoother at bottom level.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::CFInterp LevelData< FArrayBox > &  a_phif,
const LevelData< FArrayBox > &  a_phic
[pure virtual]
 

Coarse / Fine interpolation operator.

Fill ghost cells of phi by interpolating using coarse-level and fine-level data.

Parameters:
a_phif  Data at this level
a_phic  Coarser-level data

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::define const LevelOp a_opfine,
int  a_reftoFine
[pure virtual]
 

Full define function.

Define from finer levelop. reftofine is the refinement ratio to get from this LevelOp to opfine

Parameters:
a_opfine  Finer levelOp from which this will be defined
a_reftoFine  Amount this LevelOp will be coarser than opfine

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::define const DisjointBoxLayout a_grids,
const DisjointBoxLayout a_baseBAPtr,
Real  a_dxLevel,
int  a_refRatio,
const Box a_domain,
bool  a_homogeneousOnly,
int  a_ncomp = 1
[pure virtual]
 

Full define function. (Deprecated -- use the ProblemDomain version).

Makes all coarse-fine information and sets internal variables

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::define const DisjointBoxLayout a_grids,
const DisjointBoxLayout a_baseBAPtr,
Real  a_dxLevel,
int  a_refRatio,
const ProblemDomain a_domain,
bool  a_homogeneousOnly,
int  a_ncomp = 1
[pure virtual]
 

Full define function.

Makes all coarse-fine information and sets internal variables

Parameters:
a_grids  Grids at this level
a_baseBAPtr  Coarser-level grids
a_dxLevel  Cell spacing at this level
a_refRatio  Refinement ratio btwn this level and coarser level
a_domain  Physical problem domain
a_homogeneousOnly  Will we only need homogeneous C/F BC's?
a_ncomp  Number of components

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::getFlux FArrayBox a_fineFlux,
const FArrayBox a_data,
const DataIndex a_datInd,
int  a_dir
[pure virtual]
 

Get flux at this level in the direction dir over the given Box.

The fluxes live on the cell faces with direction dir. Fluxes are computed for all interior edges of data. The flux fab is resized inside the routine.

Parameters:
a_fineFlux  Face-centered Fluxes in direction dir (resized in function)
a_data  Cell-centered box over which fluxes will be computed
a_datInd  Data index of grid where flux is located
a_dir  Direction of fluxes to be computed

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::homogeneousCFInterp LevelData< FArrayBox > &  a_phif  )  [pure virtual]
 

Homogeneous coarse/fine interpolation operator.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual bool LevelOp::isDefined  )  const [pure virtual]
 

Has this object been fully defined?

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::levelPreconditioner LevelData< FArrayBox > &  a_phihat,
const LevelData< FArrayBox > &  a_rhshat
[pure virtual]
 

Apply preconditioning to the solution on this level.

Given rhshat, returns phihat from M(phihat) = rhshat

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual LevelOp* LevelOp::new_levelop  )  const [pure virtual]
 

"Virtual constructor" workaround"

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::setConvergenceMetric Real  a_metric,
int  a_comp
[pure virtual]
 

set the convergence metrics (if appropriate) for this problem

If this LevelOp is being used in the context of a solve, we may wish to set a metric against which to define convergence (for example, the norm of the RHS). In many cases, this will simply be a pass-through to a bottom solver.

Implemented in HelmholtzOp, PoissonOp, and TensorOp.

virtual void LevelOp::smooth LevelData< FArrayBox > &  a_phi,
const LevelData< FArrayBox > &  a_rhs
[pure virtual]
 

Smoother.

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

Parameters:
a_phi  Current guess at solution
a_rhs  Right-hand side of problem we're solving

Implemented in HelmholtzOp, PoissonOp, and TensorOp.


The documentation for this class was generated from the following file:
Generated on Wed Oct 5 14:01:22 2005 for Chombo&AMRSelfGravity by  doxygen 1.4.1