Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound 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 Methods

 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 LevelOp * new_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, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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

Smoother at bottom level.

Implemented in HelmholtzOp, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.

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

Homogeneous coarse/fine interpolation operator.

Implemented in HelmholtzOp, and PoissonOp.

virtual bool LevelOp::isDefined   const [pure virtual]
 

Has this object been fully defined?

Implemented in VelocityPoissonOp, HelmholtzOp, and PoissonOp.

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, and PoissonOp.

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

"Virtual constructor" workaround"

Implemented in VelocityPoissonOp, HelmholtzOp, and PoissonOp.

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, and PoissonOp.

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, and PoissonOp.


The documentation for this class was generated from the following file:
Generated on Wed Jan 19 17:56:13 2005 for Chombo&INSwithParticles by doxygen1.2.16