VCAMRPoissonOp2 Class Reference

#include <VCAMRPoissonOp2.H>

Inheritance diagram for VCAMRPoissonOp2:

Inheritance graph
[legend]
Collaboration diagram for VCAMRPoissonOp2:

Collaboration 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

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

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


Member Data Documentation

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.


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

Generated on Tue Apr 14 14:24:03 2009 for Chombo + EB by  doxygen 1.5.5