VCAMRPoissonOp2 Class Reference

#include <VCAMRPoissonOp2.H>

Inheritance diagram for VCAMRPoissonOp2:

Inheritance graph
[legend]

List of all members.


Detailed Description

Operator for solving variable-coefficient (alpha * aCoef(x) * I - beta * Div(bCoef(x) . Grad)) phi = rho over an AMR hierarchy.

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< FArrayBoxm_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< CFIVSm_loCFIVS [SpaceDim]
LayoutData< CFIVSm_hiCFIVS [SpaceDim]
RefCountedPtr
< CoefficientInterpolator
< LevelData< FluxBox >
, LevelData< FArrayBox > > > 
m_bCoefInterpolator
Real m_time
bool m_lambdaNeedsResetting

Constructor & Destructor Documentation

VCAMRPoissonOp2::VCAMRPoissonOp2 (  )  [inline]

virtual VCAMRPoissonOp2::~VCAMRPoissonOp2 (  )  [inline, virtual]


Member Function Documentation

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

Parameters:
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::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
) [virtual]

For tga stuff.

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 > >.

LevelData<FArrayBox>& VCAMRPoissonOp2::identityCoef (  )  [inline, virtual]

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]

virtual void VCAMRPoissonOp2::divideByIdentityCoef ( LevelData< FArrayBox > &  a_rhs  )  [inline, virtual]

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.

Parameters:
a_bCoefInterpolator A CoefficientInterpolator that will be used to compute the b coefficient at specific times.

References m_bCoefInterpolator.

LevelData<FluxBox>& VCAMRPoissonOp2::BCoef (  )  [inline]

Returns the B coefficient.

References m_bCoef.

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]

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.


Member Data Documentation

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.

Referenced by VCAMRPoissonOp2().


The documentation for this class was generated from the following file:

Generated on Fri Apr 5 04:25:20 2019 for Chombo + EB by  doxygen 1.5.5