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

AMRLevelMG Class Reference

Class which manages data and operations on a level for AMRSolver. More...

#include <AMRLevelMG.H>

Collaboration diagram for AMRLevelMG:

Collaboration graph
[legend]
List of all members.

Public Methods

 AMRLevelMG ()
 Null constructor.

 ~AMRLevelMG ()
 Destructor.

 AMRLevelMG (const AMRSolver *const a_parent, int a_level, const LevelOp *const a_opin, int a_ncomp=1)
 Define AMRLevelMG from the inputs.

void define (const AMRSolver *const a_parent, int a_level, const LevelOp *const a_opin, int a_ncomp=1)
 Define AMRLevelMG from the inputs.

void setNumSmoothUp (int a_numSmoothUp)
 Set number of multigrid smoothings on way up V-cycle; Default == 4.

void setNumSmoothDown (int a_numSmoothDown)
 Set number of multigrid smoothings on way down V-cycle; Default == 4.

void applyAMROperator (Vector< LevelData< FArrayBox > * > &a_phiLevel, LevelData< FArrayBox > &a_Lofphi)
 Complete, 3-level operator.

void applyAMROperatorHphys (Vector< LevelData< FArrayBox > * > &a_phiLevel, LevelData< FArrayBox > &a_LofPhi)
 Complete, 3-level operator with homogeneous physicalboundary conditions.

void computeAMRResidual (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel)
 Compute complete, 3-level residual and put it into local data m_resid.

void computeAMRResidualHphys (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel)
 Compute complete, 3-level residual with homogeneous physical BCs.

void computeAMRResidual (LevelData< FArrayBox > &a_resid, Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel)
 Compute complete, 3-level residual and return it in a_resid.

void upSweep (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel)
 Sweep up multigrid v-cycle.

void downSweep (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel)
 Sweep down v-cycle.

Vector< RealcomputeResidualNorm (int normType) const
 Compute and return norm of internal data m_resid.

LevelOplevelOpPtr () const
 Return pointer to the LevelOp used to define this AMRLevelMG.

bool isDefined () const
 Returns true if this object has been defined.

Vector< RealcomputeNorm (const LevelData< FArrayBox > &a_mfinput, int a_normType) const
 Returns normType norm of mfab.

void setConvergenceMetric (Real a_metric, int a_comp)
 sets convergences metrics (if appropriate) for this problem.


Protected Methods

void smooth (LevelData< FArrayBox > &a_soln, const LevelData< FArrayBox > &a_rhs)
void clearMemory ()
void setDefaultValues ()
void reflux (Vector< LevelData< FArrayBox > * > &a_phiLevel, LevelData< FArrayBox > &a_Lofphi)
void initFRCoarse (Vector< LevelData< FArrayBox > * > &a_phiLevel)
void incrementFRFine (Vector< LevelData< FArrayBox > * > &a_phiLevel)

Protected Attributes

const AMRSolverm_parent
LevelMG m_levelMG
MGInterp m_mginterp
LevelFluxRegister m_levfluxreg
bool m_isDefined
DisjointBoxLayout m_coarsenedGrids
LevelData< FArrayBoxm_resid
LevelData< FArrayBoxm_corr
LevelData< FArrayBoxm_dcorr
LevelData< FArrayBoxm_lofPhi
LevelData< FArrayBoxm_phiSave
LevelData< FArrayBoxm_resC
Copier m_residualCopier
Copier m_fineExchangeCopier
int m_level
LevelOpm_levelopPtr
CoarseAverage m_averageOp
bool m_arrayViewVerbose

Friends

class AMRSolver

Detailed Description

Class which manages data and operations on a level for AMRSolver.

AMRLevelMG manages the operations on a level for AMRSolver. AMRSolver contains a vector of AMRLevelMG's (one for each level). This class should be considered internal to AMRSolver and should not be considered part of the Chombo API.


Constructor & Destructor Documentation

AMRLevelMG::AMRLevelMG  
 

Null constructor.

AMRLevelMG::~AMRLevelMG  
 

Destructor.

AMRLevelMG::AMRLevelMG const AMRSolver *const    a_parent,
int    a_level,
const LevelOp *const    a_opin,
int    a_ncomp = 1
 

Define AMRLevelMG from the inputs.


Member Function Documentation

void AMRLevelMG::applyAMROperator Vector< LevelData< FArrayBox > * > &    a_phiLevel,
LevelData< FArrayBox > &    a_Lofphi
 

Complete, 3-level operator.

Applies multilevel operator with inhomogeneous coarse-fine boundary conditions (and inhomogeneous domain boundary conditions. Refluxing is used to compute the operator at coarse-fine boundaries.

void AMRLevelMG::applyAMROperatorHphys Vector< LevelData< FArrayBox > * > &    a_phiLevel,
LevelData< FArrayBox > &    a_LofPhi
 

Complete, 3-level operator with homogeneous physicalboundary conditions.

Applies multilevel operator with inhomogeneous physical boundary conditions. Refluxing is used to compute the operator at coarse-fine boundaries.

void AMRLevelMG::clearMemory   [protected]
 

Delete internal memory and set pointers to null

void AMRLevelMG::computeAMRResidual LevelData< FArrayBox > &    a_resid,
Vector< LevelData< FArrayBox > * > &    a_phiLevel,
const Vector< LevelData< FArrayBox > * > &    a_rhsLevel
 

Compute complete, 3-level residual and return it in a_resid.

void AMRLevelMG::computeAMRResidual Vector< LevelData< FArrayBox > * > &    a_phiLevel,
const Vector< LevelData< FArrayBox > * > &    a_rhsLevel
 

Compute complete, 3-level residual and put it into local data m_resid.

void AMRLevelMG::computeAMRResidualHphys Vector< LevelData< FArrayBox > * > &    a_phiLevel,
const Vector< LevelData< FArrayBox > * > &    a_rhsLevel
 

Compute complete, 3-level residual with homogeneous physical BCs.

Compute complete, 3-level residual with homogeneous physical BCs and inhomogeneous C/F BCs and put it into local data m_resid

Vector<Real> AMRLevelMG::computeNorm const LevelData< FArrayBox > &    a_mfinput,
int    a_normType
const
 

Returns normType norm of mfab.

Vector<Real> AMRLevelMG::computeResidualNorm int    normType const
 

Compute and return norm of internal data m_resid.

void AMRLevelMG::define const AMRSolver *const    a_parent,
int    a_level,
const LevelOp *const    a_opin,
int    a_ncomp = 1
 

Define AMRLevelMG from the inputs.

The AMRLevelMG will only work for the input AMRSolver. A LevelMG is created.

void AMRLevelMG::downSweep Vector< LevelData< FArrayBox > * > &    a_phiLevel,
const Vector< LevelData< FArrayBox > * > &    a_rhsLevel
 

Sweep down v-cycle.

void AMRLevelMG::incrementFRFine Vector< LevelData< FArrayBox > * > &    a_phiLevel [protected]
 

Increment fluxregisters with fine flux

void AMRLevelMG::initFRCoarse Vector< LevelData< FArrayBox > * > &    a_phiLevel [protected]
 

Fill fluxregisters with coarse flux

bool AMRLevelMG::isDefined   const
 

Returns true if this object has been defined.

LevelOp* AMRLevelMG::levelOpPtr   const
 

Return pointer to the LevelOp used to define this AMRLevelMG.

void AMRLevelMG::reflux Vector< LevelData< FArrayBox > * > &    a_phiLevel,
LevelData< FArrayBox > &    a_Lofphi
[protected]
 

Reflux enforces flux-matching from finer levels. Steps involved:

  • a) Initialize flux register with coarse flux
  • b) Increment flux register with sum of fine fluxes
  • b) Modify solution with flux diffrence

void AMRLevelMG::setConvergenceMetric Real    a_metric,
int    a_comp
 

sets convergences metrics (if appropriate) for this problem.

If we're using this class in the context of a solve, we may wish to set a metric against which to definte convergence (for example, the norm of the RHS). As currently implemented, this is simply a pass-through to the LevelOp classes from this class.

void AMRLevelMG::setDefaultValues   [protected]
 

Set default values. does not deal with memory

void AMRLevelMG::setNumSmoothDown int    a_numSmoothDown
 

Set number of multigrid smoothings on way down V-cycle; Default == 4.

void AMRLevelMG::setNumSmoothUp int    a_numSmoothUp
 

Set number of multigrid smoothings on way up V-cycle; Default == 4.

void AMRLevelMG::smooth LevelData< FArrayBox > &    a_soln,
const LevelData< FArrayBox > &    a_rhs
[protected]
 

Use short v-cycle or levelmg's smoother to reduce high wave numbers of residual

void AMRLevelMG::upSweep Vector< LevelData< FArrayBox > * > &    a_phiLevel,
const Vector< LevelData< FArrayBox > * > &    a_rhsLevel
 

Sweep up multigrid v-cycle.


Friends And Related Function Documentation

friend class AMRSolver [friend]
 


Member Data Documentation

bool AMRLevelMG::m_arrayViewVerbose [protected]
 

Debugging option to use ArrayView to examine what happens

CoarseAverage AMRLevelMG::m_averageOp [protected]
 

Used for averaging residual to coarser level

DisjointBoxLayout AMRLevelMG::m_coarsenedGrids [protected]
 

Coarsened version of the grids at this level

LevelData<FArrayBox> AMRLevelMG::m_corr [protected]
 

Correction

LevelData<FArrayBox> AMRLevelMG::m_dcorr [protected]
 

The infamous correction to the correction

Copier AMRLevelMG::m_fineExchangeCopier [protected]
 

Copier that's used for exchange on the fine grid data before fine flux register data is incremented.

bool AMRLevelMG::m_isDefined [protected]
 

Has this AMRLevelMG been defined yet?

int AMRLevelMG::m_level [protected]
 

Which AMR Level we are on

LevelMG AMRLevelMG::m_levelMG [protected]
 

LevelMG level solver object to relax on this level

LevelOp* AMRLevelMG::m_levelopPtr [protected]
 

The LevelOp which encapsulates which operator we're using in this solve.

LevelFluxRegister AMRLevelMG::m_levfluxreg [protected]
 

Flux register with next coarser level

LevelData<FArrayBox> AMRLevelMG::m_lofPhi [protected]
 

Storage for L(phi)

MGInterp AMRLevelMG::m_mginterp [protected]
 

For interpolation

const AMRSolver* AMRLevelMG::m_parent [protected]
 

The parent AMRSolver which manages the overall multilevel solve

LevelData<FArrayBox> AMRLevelMG::m_phiSave [protected]
 

Extra copy of solution

LevelData<FArrayBox> AMRLevelMG::m_resC [protected]
 

Storage for coarsened residual

LevelData<FArrayBox> AMRLevelMG::m_resid [protected]
 

Residual

Copier AMRLevelMG::m_residualCopier [protected]
 

Copier that operates for moving coarsened residual to coarse level grid space.


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