#include <AMRLevelMG.H>
Collaboration diagram for AMRLevelMG:
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< Real > | computeResidualNorm (int normType) const |
Compute and return norm of internal data m_resid. | |
LevelOp * | levelOpPtr () const |
Return pointer to the LevelOp used to define this AMRLevelMG. | |
bool | isDefined () const |
Returns true if this object has been defined. | |
Vector< Real > | computeNorm (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 AMRSolver * | m_parent |
LevelMG | m_levelMG |
MGInterp | m_mginterp |
LevelFluxRegister | m_levfluxreg |
bool | m_isDefined |
DisjointBoxLayout | m_coarsenedGrids |
LevelData< FArrayBox > | m_resid |
LevelData< FArrayBox > | m_corr |
LevelData< FArrayBox > | m_dcorr |
LevelData< FArrayBox > | m_lofPhi |
LevelData< FArrayBox > | m_phiSave |
LevelData< FArrayBox > | m_resC |
Copier | m_residualCopier |
Copier | m_fineExchangeCopier |
int | m_level |
LevelOp * | m_levelopPtr |
CoarseAverage | m_averageOp |
bool | m_arrayViewVerbose |
Friends | |
class | 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.
|
Null constructor.
|
|
Destructor.
|
|
Define AMRLevelMG from the inputs.
|
|
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. |
|
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. |
|
Delete internal memory and set pointers to null |
|
Compute complete, 3-level residual and return it in a_resid.
|
|
Compute complete, 3-level residual and put it into local data m_resid.
|
|
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 |
|
Returns normType norm of mfab.
|
|
Compute and return norm of internal data m_resid.
|
|
Define AMRLevelMG from the inputs. The AMRLevelMG will only work for the input AMRSolver. A LevelMG is created. |
|
Sweep down v-cycle.
|
|
Increment fluxregisters with fine flux |
|
Fill fluxregisters with coarse flux |
|
Returns true if this object has been defined.
|
|
Return pointer to the LevelOp used to define this AMRLevelMG.
|
|
Reflux enforces flux-matching from finer levels. Steps involved:
|
|
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. |
|
Set default values. does not deal with memory |
|
Set number of multigrid smoothings on way down V-cycle; Default == 4.
|
|
Set number of multigrid smoothings on way up V-cycle; Default == 4.
|
|
Use short v-cycle or levelmg's smoother to reduce high wave numbers of residual |
|
Sweep up multigrid v-cycle.
|
|
|
|
Debugging option to use ArrayView to examine what happens |
|
Used for averaging residual to coarser level |
|
Coarsened version of the grids at this level |
|
Correction |
|
The infamous correction to the correction |
|
Copier that's used for exchange on the fine grid data before fine flux register data is incremented. |
|
Has this AMRLevelMG been defined yet? |
|
Which AMR Level we are on |
|
LevelMG level solver object to relax on this level |
|
The LevelOp which encapsulates which operator we're using in this solve. |
|
Flux register with next coarser level |
|
Storage for L(phi) |
|
For interpolation |
|
The parent AMRSolver which manages the overall multilevel solve |
|
Extra copy of solution |
|
Storage for coarsened residual |
|
Residual |
|
Copier that operates for moving coarsened residual to coarse level grid space. |