Chombo + EB
3.2
|
#include <AMRPoissonOp.H>
Public Member Functions | |
virtual Real | dx () const |
AMRPoissonOp functions | |
AMRPoissonOp () | |
virtual | ~AMRPoissonOp () |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFiner, const DisjointBoxLayout &a_gridsCoarser, const Real &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, const int a_nComp=1) |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFiner, const Real &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, const int a_nComp=1) |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_baseBAPtr, const Real &a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, int a_numComp=1) |
void | define (const DisjointBoxLayout &a_grids, const Real &a_dx, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion) |
void | define (const DisjointBoxLayout &a_grids, const Real &a_dx, const ProblemDomain &a_domain, BCHolder a_bc) |
void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, BCHolder a_bc) |
Full define function that mimics the old PoissonOp. More... | |
virtual void | residual (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) |
virtual void | residualNF (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) |
Residual which uses coarse-level boundary conditions, but ignores finer levels. More... | |
virtual void | residualI (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary" More... | |
virtual void | preCond (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual) |
virtual void | applyOp (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false) |
virtual void | applyOpI (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false) |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary" More... | |
virtual void | applyOpNoBoundary (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) |
virtual void | create (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) |
virtual void | createCoarsened (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const int &a_refRat) |
virtual void | assign (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) |
virtual void | assignLocal (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) |
virtual void | buildCopier (Copier &a_copier, const LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) |
virtual void | assignCopier (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const Copier &a_copier) |
virtual void | zeroCovered (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_rhs, const Copier &a_copier) |
virtual Real | dotProduct (const LevelData< FArrayBox > &a_1, const LevelData< FArrayBox > &a_2) |
virtual void | mDotProduct (const LevelData< FArrayBox > &a_1, const int a_sz, const LevelData< FArrayBox > a_2[], Real a_mdots[]) |
virtual void | incr (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, Real a_scale) |
virtual void | axby (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, const LevelData< FArrayBox > &a_y, Real a_a, Real a_b) |
virtual void | scale (LevelData< FArrayBox > &a_lhs, const Real &a_scale) |
virtual Real | norm (const LevelData< FArrayBox > &a_x, int a_ord) |
virtual Real | localMaxNorm (const LevelData< FArrayBox > &a_x) |
virtual void | setToZero (LevelData< FArrayBox > &a_x) |
MGLevelOp functions | |
virtual void | relax (LevelData< FArrayBox > &a_e, const LevelData< FArrayBox > &a_residual, int a_iterations) |
virtual void | relaxNF (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, int a_iterations) |
Do CF interpolation then relax as normal. More... | |
virtual void | createCoarser (LevelData< FArrayBox > &a_coarse, const LevelData< FArrayBox > &a_fine, bool a_ghosted) |
virtual void | restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine) |
virtual void | prolongIncrement (LevelData< FArrayBox > &a_phiThisLevel, const LevelData< FArrayBox > &a_correctCoarse) |
AMRLevelOp functions | |
virtual int | refToCoarser () |
virtual void | AMRResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
virtual void | AMRResidualNC (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
virtual void | AMRResidualNF (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC) |
virtual void | AMROperator (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
virtual void | AMROperatorNC (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
virtual void | AMROperatorNF (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousBC) |
virtual void | AMRRestrict (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, bool a_skip_res=false) |
virtual void | AMRRestrictS (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_scratch, bool a_skip_res=false) |
virtual void | AMRProlong (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection) |
virtual void | AMRProlongS (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier) |
virtual void | AMRProlongS_2 (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp) |
virtual void | AMRUpdateResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection) |
virtual Real | AMRNorm (const LevelData< FArrayBox > &a_coarseResid, const LevelData< FArrayBox > &a_fineResid, const int &a_refRat, const int &a_ord) |
virtual void | setAlphaAndBeta (const Real &a_alpha, const Real &a_beta) |
For tga to reset stuff. More... | |
virtual void | setBC (const BCHolder &a_bc) |
Change boundary conditions. More... | |
virtual void | diagonalScale (LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted) |
For tga stuff—in this case a noop. More... | |
virtual void | divideByIdentityCoef (LevelData< FArrayBox > &a_rhs) |
For tga stuff—in this case a noop. More... | |
virtual void | fillGrad (const LevelData< FArrayBox > &a_phi) |
These functions are part of the LevelTGA interface...... More... | |
virtual void | reflux (const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
virtual void | getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale) |
virtual void | write (const LevelData< FArrayBox > *a_data, const char *a_filename) |
Public Member Functions inherited from LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox > | |
LevelTGAHelmOp () | |
LevelTGAHelmOp (bool a_isTimeIndependent) | |
virtual | ~LevelTGAHelmOp () |
Destructor. More... | |
Public Member Functions inherited from TGAHelmOp< LevelData< FArrayBox > > | |
TGAHelmOp () | |
TGAHelmOp (bool a_isTimeDependent) | |
virtual | ~TGAHelmOp () |
Destructor. More... | |
virtual void | diagonalScale (LevelData< FArrayBox > &a_rhs) |
virtual void | kappaScale (LevelData< FArrayBox > &a_rhs) |
for eb only. kappa weight the rhs but do not multiply by the identity coefficient More... | |
virtual void | setTime (Real a_time) |
virtual void | setTime (Real a_oldTime, Real a_mu, Real a_dt) |
bool | isTimeDependent () const |
Returns true if the operator is time-dependent, false otherwise. More... | |
virtual LevelData< FArrayBox > & | identityCoef () |
Allows access to the identity coefficient data for the operator. More... | |
Public Member Functions inherited from AMRLevelOp< LevelData< FArrayBox > > | |
virtual void | dumpAMR (Vector< LevelData< FArrayBox > * > &a_data, string name) |
virtual void | dumpLevel (LevelData< FArrayBox > &a_data, string name) |
AMRLevelOp () | |
Constructor. More... | |
virtual void | dumpStuff (Vector< LevelData< FArrayBox > * > data, string filename) |
virtual | ~AMRLevelOp () |
Destructor. More... | |
virtual void | outputLevel (LevelData< FArrayBox > &a_rhs, string &a_name) |
virtual void | outputAMR (Vector< LevelData< FArrayBox > * > &a_rhs, string &a_name) |
virtual unsigned int | orderOfAccuracy (void) const |
virtual void | enforceCFConsistency (LevelData< FArrayBox > &a_coarseCorrection, const LevelData< FArrayBox > &a_correction) |
This routine is for operators with orderOfAccuracy()>2. More... | |
Public Member Functions inherited from MGLevelOp< LevelData< FArrayBox > > | |
MGLevelOp () | |
Constructor. More... | |
virtual | ~MGLevelOp () |
Destructor. More... | |
virtual void | restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhsFine, bool homogeneous) |
full-multigrid version of restrictResidual, useful for FAS-type schemes. Defaults to standard restriction More... | |
virtual void | restrictR (LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_phiFine) |
simple restriction function More... | |
void | addObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer) |
virtual void | applyOpMg (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > *a_phiCoarse, bool a_homogeneous) |
Apply an operator. More... | |
void | removeObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer) |
void | addCoarserObserver (MGLevelOp< LevelData< FArrayBox > > *a_operator, int a_coarseningFactor) |
void | notifyObserversOfChange () |
This should be called whenever the operator's data is updated. More... | |
virtual void | finerOperatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator, int a_coarseningFactor) |
int | numObservers () const |
Returns the number of objects observing this operator. More... | |
Public Member Functions inherited from LinearOp< LevelData< FArrayBox > > | |
virtual | ~LinearOp () |
virtual void | clear (LevelData< FArrayBox > &a_lhs) |
Public Member Functions inherited from MGLevelOpObserver< LevelData< FArrayBox > > | |
MGLevelOpObserver () | |
Base level Constructor. Called by all subclasses. More... | |
virtual | ~MGLevelOpObserver () |
Destructor. More... | |
virtual void | operatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator) |
void | setObservee (MGLevelOp< LevelData< FArrayBox > > *a_observee) |
void | clearObservee () |
Public Attributes | |
Real | m_alpha |
public constants More... | |
Real | m_beta |
Real | m_aCoef |
Real | m_bCoef |
Real | m_dxCrse |
Vector< IntVect > | m_colors |
Static Public Attributes | |
static int | s_exchangeMode |
static int | s_relaxMode |
static int | s_maxCoarse |
static int | s_prolongType |
Protected Member Functions | |
virtual void | levelGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | levelMultiColor (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | looseGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | overlapGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | levelGSRBLazy (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | levelJacobi (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs) |
virtual void | homogeneousCFInterp (LevelData< FArrayBox > &a_phif) |
virtual void | homogeneousCFInterp (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo) |
virtual void | singleBoxCFInterp (FArrayBox &a_phi) |
virtual void | interpOnIVSHomo (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS) |
virtual void | getFlux (FArrayBox &a_flux, const FArrayBox &a_data, const Box &a_edgebox, int a_dir, int a_ref=1) const |
virtual void | getFlux (FArrayBox &a_flux, const FArrayBox &a_data, int a_dir, int a_ref=1) const |
Operator for solving (alpha I + beta*Laplacian)(phi) = rho over an AMR hierarchy.
|
inline |
|
inlinevirtual |
References applyOp(), applyOpI(), applyOpNoBoundary(), assign(), assignCopier(), assignLocal(), axby(), buildCopier(), create(), createCoarsened(), createCoarser(), define(), dotProduct(), incr(), localMaxNorm(), mDotProduct(), norm(), preCond(), prolongIncrement(), relax(), relaxNF(), residual(), residualI(), residualNF(), restrictResidual(), scale(), setToZero(), and zeroCovered().
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const DisjointBoxLayout & | a_gridsFiner, | ||
const DisjointBoxLayout & | a_gridsCoarser, | ||
const Real & | a_dxLevel, | ||
int | a_refRatio, | ||
int | a_refRatioFiner, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc, | ||
const Copier & | a_exchange, | ||
const CFRegion & | a_cfregion, | ||
const int | a_nComp = 1 |
||
) |
full define function for AMRLevelOp with both coarser and finer levels
Referenced by ~AMRPoissonOp(), AMRPoissonOpFactory::~AMRPoissonOpFactory(), and VCAMRPoissonOp2Factory::~VCAMRPoissonOp2Factory().
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const DisjointBoxLayout & | a_gridsFiner, | ||
const Real & | a_dxLevel, | ||
int | a_refRatio, | ||
int | a_refRatioFiner, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc, | ||
const Copier & | a_exchange, | ||
const CFRegion & | a_cfregion, | ||
const int | a_nComp = 1 |
||
) |
full define function for AMRLevelOp with finer levels, but no coarser
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const DisjointBoxLayout & | a_baseBAPtr, | ||
const Real & | a_dxLevel, | ||
int | a_refRatio, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc, | ||
const Copier & | a_exchange, | ||
const CFRegion & | a_cfregion, | ||
int | a_numComp = 1 |
||
) |
define function for AMRLevelOp which has no finer AMR level Jamie Parkinson added a_numComp parameter so that we define CF interp objects correctly
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const Real & | a_dx, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc, | ||
const Copier & | a_exchange, | ||
const CFRegion & | a_cfregion | ||
) |
define function for AMRLevelOp which has no finer or coarser AMR level
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const Real & | a_dx, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc | ||
) |
define function for AMRLevelOp which has no finer or coarser AMR level
void AMRPoissonOp::define | ( | const DisjointBoxLayout & | a_grids, |
const DisjointBoxLayout * | a_baseBAPtr, | ||
Real | a_dxLevel, | ||
int | a_refRatio, | ||
const ProblemDomain & | a_domain, | ||
BCHolder | a_bc | ||
) |
Full define function that mimics the old PoissonOp.
Makes all coarse-fine information and sets internal variables
|
virtual |
Say you are solving L(phi) = rhs. Make a_lhs = L(a_phi) - a_rhs. If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Residual which uses coarse-level boundary conditions, but ignores finer levels.
useful for full-multigrid types of schemes
Reimplemented from MGLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary"
Reimplemented in VCAMRPoissonOp2.
Referenced by ~AMRPoissonOp().
|
virtual |
Given the current state of the residual the correction, apply your preconditioner to a_cor.
Implements LinearOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
Referenced by ~AMRPoissonOp().
|
virtual |
In the context of solving L(phi) = rhs, set a_lhs = L(a_phi). If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary"
Reimplemented in VCAMRPoissonOp2.
Referenced by ~AMRPoissonOp().
|
virtual |
Apply the differential operator without any boundary or coarse-fine boundary conditions and no finer level
a_ans | The result of the application of the operator to a_phi. |
a_phi | The data to which the operator is applied. |
Implements TGAHelmOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
Referenced by ~AMRPoissonOp().
|
virtual |
Creat data holder a_lhs that mirrors a_rhs. You do not need to copy the data of a_rhs, just make a holder the same size.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Set a_lhs equal to a_rhs.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Reimplemented from LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Compute and return the dot product of a_1 and a_2. In most contexts, this means return the sum over all data points of a_1*a_2.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Reimplemented from LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Increment by scaled amount (a_lhs += a_scale*a_x).
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
Multiply the input by a given scale (a_lhs *= a_scale).
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
Return the norm of a_rhs. a_ord == 0 max norm, a_ord == 1 sum(abs(a_rhs)), else, L(a_ord) norm.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Use your relaxation operator to remove the high frequency wave numbers from the correction so that it may be averaged to a coarser refinement. A point relaxtion scheme, for example takes the form a_correction -= lambda*(L(a_correction) - a_residual).
Implements MGLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Do CF interpolation then relax as normal.
useful for full-multigrid/FAS schemes
Reimplemented from MGLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
Create a coarsened (by two) version of the input data. This does not include averaging the data. So if a_fine is over a Box of (0, 0, 0) (63, 63, 63), a_fine should be over a Box (0, 0, 0) (31, 31, 31).
Implements MGLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
virtual |
calculate restricted residual a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])
Implements MGLevelOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
Referenced by ~AMRPoissonOp().
|
virtual |
correct the fine solution based on coarse correction a_phiThisLevel += I[2h->h](a_correctCoarse)
Implements MGLevelOp< LevelData< FArrayBox > >.
Referenced by ~AMRPoissonOp().
|
inlinevirtual |
returns 1 when there are no coarser AMRLevelOp objects
Implements AMRLevelOp< LevelData< FArrayBox > >.
References AMRNorm(), AMROperator(), AMROperatorNC(), AMROperatorNF(), AMRProlong(), AMRProlongS(), AMRProlongS_2(), AMRResidual(), AMRResidualNC(), AMRResidualNF(), AMRRestrict(), AMRRestrictS(), AMRUpdateResidual(), m_refToCoarser, setAlphaAndBeta(), and setBC().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
residual assuming no more coarser AMR levels
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
Apply the AMR operator, including coarse-fine matching
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
Apply the AMR operator, including coarse-fine matching assume no coarser AMR level
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
Apply the AMR operator, including coarse-fine matching. assume no finer AMR level
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
a_resCoarse = I[h-2h]( a_residual - L(a_correction, a_coarseCorrection)) it is assumed that a_resCoarse has already been filled in with the coarse version of AMRResidualNF and that this operation is free to overwrite in the overlap regions.
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
a_correction += I[h->h](a_coarseCorrection)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
optimization of AMRProlong that sends in the existing temporary and copier
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
optimization of AMRProlong that sends in the existing temporary and copier – higher order
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
a_residual = a_residual - L(a_correction, a_coarseCorrection)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
|
virtual |
compute norm over all cells on coarse not covered by finer
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
For tga to reset stuff.
Implements TGAHelmOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
Referenced by refToCoarser().
|
virtual |
Change boundary conditions.
Referenced by refToCoarser().
|
inlinevirtual |
For tga stuff—in this case a noop.
Reimplemented from TGAHelmOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
For tga stuff—in this case a noop.
Implements TGAHelmOp< LevelData< FArrayBox > >.
Reimplemented in VCAMRPoissonOp2.
These functions are part of the LevelTGA interface......
Implements LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox >.
References reflux().
|
virtual |
Reimplemented in VCAMRPoissonOp2.
Referenced by fillGrad().
|
inlinevirtual |
Implements LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox >.
Reimplemented in VCAMRPoissonOp2.
References FluxBox::define(), BoxLayoutData< T >::nComp(), SpaceDim, and write().
|
virtual |
Debugging aid for solvers. Print out a "T" to a file named "filename" default implementation is to print out a message saying "LinearOp::write not implemented"
Reimplemented from LinearOp< LevelData< FArrayBox > >.
Referenced by getFlux().
|
inlinevirtual |
Return dx at this level of refinement
Reimplemented from LinearOp< LevelData< FArrayBox > >.
References m_dx.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
Reimplemented in VCAMRPoissonOp2.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
Real AMRPoissonOp::m_alpha |
public constants
Real AMRPoissonOp::m_beta |
Real AMRPoissonOp::m_aCoef |
Real AMRPoissonOp::m_bCoef |
Real AMRPoissonOp::m_dxCrse |
|
static |
|
static |
|
static |
|
static |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by refToCoarser().
|
protected |