#include <VCAMRPoissonOp2.H>
Public Member Functions | |
void | finerOperatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator, int a_coarseningFactor) |
LevelData< FArrayBox > & | identityCoef () |
Returns identity coefficient data. | |
virtual void | diagonalScale (LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted) |
For TGA. | |
virtual void | divideByIdentityCoef (LevelData< FArrayBox > &a_rhs) |
For TGA. | |
void | setBCoefInterpolator (RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > &a_bCoefInterpolator) |
LevelData< FluxBox > & | BCoef () |
Returns the B coefficient. | |
RefCountedPtr < CoefficientInterpolator < LevelData< FluxBox > , LevelData< FArrayBox > > > | BCoefInterpolator () |
void | setTime (Real a_time) |
virtual void | getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale) |
virtual void | getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const FluxBox &a_bCoef, const Box &a_grid, const DataIndex &a_dit, Real a_scale) |
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) |
MGLevelOp functions | |
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 before the relaxation parameter is needed. | |
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] |
RefCountedPtr < CoefficientInterpolator < LevelData< FluxBox > , LevelData< FArrayBox > > > | m_bCoefInterpolator |
Real | m_time |
bool | m_lambdaNeedsResetting |
VCAMRPoissonOp2::VCAMRPoissonOp2 | ( | ) | [inline] |
References m_lambdaNeedsResetting.
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 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. |
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 before the relaxation parameter is needed.
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.
void VCAMRPoissonOp2::finerOperatorChanged | ( | const MGLevelOp< LevelData< FArrayBox > > & | a_operator, | |
int | a_coarseningFactor | |||
) | [virtual] |
This is called on multigrid operators when their AMR operators are altered.
Reimplemented from MGLevelOp< LevelData< FArrayBox > >.
Returns identity coefficient data.
Reimplemented from TGAHelmOp< LevelData< FArrayBox > >.
References m_aCoef.
virtual void VCAMRPoissonOp2::diagonalScale | ( | LevelData< FArrayBox > & | a_rhs, | |
bool | a_kappaWeighted | |||
) | [inline, virtual] |
For TGA.
Reimplemented from AMRPoissonOp.
References BoxLayout::dataIterator(), LevelData< T >::disjointBoxLayout(), m_aCoef, and LayoutIterator::ok().
virtual void VCAMRPoissonOp2::divideByIdentityCoef | ( | LevelData< FArrayBox > & | a_rhs | ) | [inline, virtual] |
For TGA.
Reimplemented from AMRPoissonOp.
References BoxLayout::dataIterator(), LevelData< T >::disjointBoxLayout(), m_aCoef, and LayoutIterator::ok().
void VCAMRPoissonOp2::setBCoefInterpolator | ( | RefCountedPtr< CoefficientInterpolator< LevelData< FluxBox >, LevelData< FArrayBox > > > & | a_bCoefInterpolator | ) | [inline] |
Sets up a model that modifies b coefficient data when the operator's time is set.
a_bCoefInterpolator | A CoefficientInterpolator that will be used to compute the b coefficient at specific times. |
References m_bCoefInterpolator.
RefCountedPtr<CoefficientInterpolator<LevelData<FluxBox>, LevelData<FArrayBox> > > VCAMRPoissonOp2::BCoefInterpolator | ( | ) | [inline] |
References m_bCoefInterpolator.
void VCAMRPoissonOp2::setTime | ( | Real | a_time | ) | [virtual] |
Sets the time centering of the operator. This interpolates b coefficient data at the given time if an interpolator is set.
Reimplemented from TGAHelmOp< LevelData< FArrayBox > >.
virtual void VCAMRPoissonOp2::getFlux | ( | FluxBox & | a_flux, | |
const LevelData< FArrayBox > & | a_data, | |||
const Box & | a_grid, | |||
const DataIndex & | a_dit, | |||
Real | a_scale | |||
) | [inline, virtual] |
assumes we want to use member-data bCoef, then calls second getFlux function
Reimplemented from AMRPoissonOp.
Referenced by getFlux().
virtual void VCAMRPoissonOp2::getFlux | ( | FluxBox & | a_flux, | |
const LevelData< FArrayBox > & | a_data, | |||
const FluxBox & | a_bCoef, | |||
const Box & | a_grid, | |||
const DataIndex & | a_dit, | |||
Real | a_scale | |||
) | [inline, virtual] |
References FluxBox::define(), getFlux(), BoxLayoutData< T >::nComp(), and SpaceDim.
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.
Referenced by diagonalScale(), divideByIdentityCoef(), and identityCoef().
Laplacian operator spatially varying coefficient storage (face-centered) --- if you change this call resetLambda().
Reimplemented from AMRPoissonOp.
Referenced by BCoef().
Reciprocal of the diagonal entry of the operator matrix.
LayoutData<CFIVS> VCAMRPoissonOp2::m_loCFIVS[SpaceDim] [protected] |
LayoutData<CFIVS> VCAMRPoissonOp2::m_hiCFIVS[SpaceDim] [protected] |
RefCountedPtr<CoefficientInterpolator<LevelData<FluxBox>, LevelData<FArrayBox> > > VCAMRPoissonOp2::m_bCoefInterpolator [protected] |
Referenced by BCoefInterpolator(), and setBCoefInterpolator().
Real VCAMRPoissonOp2::m_time [protected] |
bool VCAMRPoissonOp2::m_lambdaNeedsResetting [protected] |
Referenced by VCAMRPoissonOp2().