#include <VCAMRPoissonOp2.H>
Public Member Functions | |
VCAMRPoissonOp2 functions | |
VCAMRPoissonOp2 () | |
virtual | ~VCAMRPoissonOp2 () |
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" | |
virtual void | preCond (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual) |
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" | |
virtual void | applyOpNoBoundary (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi) |
apply operator without any boundary or coarse-fine boundary conditions and no finer level | |
MGLevelOp functions | |
virtual void | relax (LevelData< FArrayBox > &a_e, const LevelData< FArrayBox > &a_residual, int a_iterations) |
virtual void | restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine) |
VCAMRPoissonOp2 functions | |
virtual void | setAlphaAndBeta (const Real &a_alpha, const Real &a_beta) |
For tga stuff. | |
virtual void | setCoefs (const RefCountedPtr< LevelData< FArrayBox > > &a_aCoef, const RefCountedPtr< LevelData< FluxBox > > &a_bCoef, const Real &a_alpha, const Real &a_beta) |
Also calls reset lambda. | |
virtual void | resetLambda () |
Should be called every time coefs are changed. | |
virtual void | computeLambda () |
Compute lambda once alpha, aCoef, beta, bCoef are defined. | |
virtual void | reflux (const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) |
Public Attributes | |
RefCountedPtr< LevelData < FArrayBox > > | m_aCoef |
Identity operator spatially varying coefficient storage (cell-centered) --- if you change this call resetLambda(). | |
RefCountedPtr< LevelData < FluxBox > > | m_bCoef |
Laplacian operator spatially varying coefficient storage (face-centered) --- if you change this call resetLambda(). | |
LevelData< FArrayBox > | m_lambda |
Reciprocal of the diagonal entry of the operator matrix. | |
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 | getFlux (FArrayBox &a_flux, const FArrayBox &a_data, const FluxBox &a_bCoef, const Box &a_facebox, int a_dir, int a_ref=1) const |
computes flux over face-centered a_facebox. | |
Protected Attributes | |
LayoutData< CFIVS > | m_loCFIVS [SpaceDim] |
LayoutData< CFIVS > | m_hiCFIVS [SpaceDim] |
VCAMRPoissonOp2::VCAMRPoissonOp2 | ( | ) | [inline] |
virtual VCAMRPoissonOp2::~VCAMRPoissonOp2 | ( | ) | [inline, virtual] |
virtual void VCAMRPoissonOp2::residualI | ( | LevelData< FArrayBox > & | a_lhs, | |
const LevelData< FArrayBox > & | a_phi, | |||
const LevelData< FArrayBox > & | a_rhs, | |||
bool | a_homogeneous = false | |||
) | [virtual] |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary"
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::preCond | ( | LevelData< FArrayBox > & | a_cor, | |
const LevelData< FArrayBox > & | a_residual | |||
) | [virtual] |
Given the current state of the residual the correction, apply your preconditioner to a_cor.
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::applyOpI | ( | LevelData< FArrayBox > & | a_lhs, | |
const LevelData< FArrayBox > & | a_phi, | |||
bool | a_homogeneous = false | |||
) | [virtual] |
despite what you might think, the "I" here means "Ignore the coarse-fine boundary"
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::applyOpNoBoundary | ( | LevelData< FArrayBox > & | a_ans, | |
const LevelData< FArrayBox > & | a_phi | |||
) | [virtual] |
apply operator without any boundary or coarse-fine boundary conditions and no finer level
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::relax | ( | LevelData< FArrayBox > & | a_correction, | |
const LevelData< FArrayBox > & | a_residual, | |||
int | a_iterations | |||
) | [virtual] |
Use your relaxtion 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).
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::restrictResidual | ( | LevelData< FArrayBox > & | a_resCoarse, | |
LevelData< FArrayBox > & | a_phiFine, | |||
const LevelData< FArrayBox > & | a_rhsFine | |||
) | [virtual] |
calculate restricted residual a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::setCoefs | ( | const RefCountedPtr< LevelData< FArrayBox > > & | a_aCoef, | |
const RefCountedPtr< LevelData< FluxBox > > & | a_bCoef, | |||
const Real & | a_alpha, | |||
const Real & | a_beta | |||
) | [virtual] |
Also calls reset lambda.
virtual void VCAMRPoissonOp2::resetLambda | ( | ) | [virtual] |
Should be called every time coefs are changed.
virtual void VCAMRPoissonOp2::computeLambda | ( | ) | [virtual] |
Compute lambda once alpha, aCoef, beta, bCoef are defined.
virtual void VCAMRPoissonOp2::reflux | ( | const LevelData< FArrayBox > & | a_phiFine, | |
const LevelData< FArrayBox > & | a_phi, | |||
LevelData< FArrayBox > & | a_residual, | |||
AMRLevelOp< LevelData< FArrayBox > > * | a_finerOp | |||
) | [virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::levelGSRB | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::levelMultiColor | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::looseGSRB | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::overlapGSRB | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::levelGSRBLazy | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::levelJacobi | ( | LevelData< FArrayBox > & | a_phi, | |
const LevelData< FArrayBox > & | a_rhs | |||
) | [protected, virtual] |
Reimplemented from AMRPoissonOp.
virtual void VCAMRPoissonOp2::getFlux | ( | FArrayBox & | a_flux, | |
const FArrayBox & | a_data, | |||
const FluxBox & | a_bCoef, | |||
const Box & | a_facebox, | |||
int | a_dir, | |||
int | a_ref = 1 | |||
) | const [protected, virtual] |
computes flux over face-centered a_facebox.
Identity operator spatially varying coefficient storage (cell-centered) --- if you change this call resetLambda().
Reimplemented from AMRPoissonOp.
Laplacian operator spatially varying coefficient storage (face-centered) --- if you change this call resetLambda().
Reimplemented from AMRPoissonOp.
Reciprocal of the diagonal entry of the operator matrix.
LayoutData<CFIVS> VCAMRPoissonOp2::m_loCFIVS[SpaceDim] [protected] |
LayoutData<CFIVS> VCAMRPoissonOp2::m_hiCFIVS[SpaceDim] [protected] |