Chombo + EB + MF  3.2
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
MFPoissonOp Class Reference

Multifluid poisson operator – computes (alpha + div(Beta Grad)) More...

#include <MFPoissonOp.H>

Inheritance diagram for MFPoissonOp:
Inheritance graph
[legend]

Classes

class  StencilIndex
 
class  StencilIndexComparator
 

Public Member Functions

 MFPoissonOp ()
 Default constructor. More...
 
virtual ~MFPoissonOp ()
 destructor More...
 
void setJump (const Real &gD, const Real &gN)
 set the jump conditions at the multifluid interface More...
 
void setJump (const RealVect &a_gD, const RealVect &a_gN)
 
void setJump (const Vector< RefCountedPtr< BaseBCValue > > &a_phiValVect, const Vector< RefCountedPtr< BaseBCValue > > &a_flxValVect)
 
void setVal (LevelData< MFCellFAB > &a_phi, const Vector< Real > a_values) const
 
EBAMRPoissonOpebOp (int phase)
 
Real totalBoundaryFlux (int a_phase, const LevelData< MFCellFAB > &a_phi, Real a_factor=1.0, bool a_divideByTotalArea=true)
 
void getBoundaryValues (LevelData< MFCellFAB > &a_phi, LevelData< MFCellFAB > &a_dPhi_dN, Real a_invalidVal=1.2345678e90)
 
Real exactBoundaryFlux (int a_phase, RefCountedPtr< BaseBCValue > a_flxVal, RealVect &a_origin, const Real &a_time)
 
void dumpStencilMatrix ()
 
void dumpReferenceStencilMatrix ()
 
ProblemDomain getDomain ()
 
void getFlux (MFFluxFAB &a_flux, const LevelData< MFCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
 
LinearOp functions
void define (const MFIndexSpace &a_mfis, int a_ncomp, const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsCoarMG, const bool &a_hasMGObjects, const bool &a_layoutChanged, const DisjointBoxLayout &a_gridsFiner, const DisjointBoxLayout &a_gridsCoarser, const RealVect &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, const Vector< RefCountedPtr< BaseDomainBC > > &a_bc, const IntVect &a_ghostPhi, const IntVect &a_ghostRHS, bool hasCoarser, bool hasFiner, const Vector< Real > &a_alpha, const Vector< Real > &a_beta)
 full define function for AMRLevelOp with both coarser and finer levels More...
 
virtual void setAlphaAndBeta (const Real &a_alpha, const Real &a_beta)
 
virtual void diagonalScale (LevelData< MFCellFAB > &a_rhs)
 (TGA) set diagonal scale of the operator More...
 
virtual void divideByIdentityCoef (LevelData< MFCellFAB > &a_rhs)
 TGA –no op in this case. More...
 
virtual void applyOpNoBoundary (LevelData< MFCellFAB > &a_opPhi, const LevelData< MFCellFAB > &a_phi)
 
virtual void setTime (Real a_time)
 
virtual void residual (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneous=false)
 
virtual void preCond (LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_residual)
 Apply the preconditioner. More...
 
virtual void applyOp (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_phi, DataIterator &a_dit, bool a_homogeneous=false)
 
virtual void applyOp (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_phi, bool a_homogeneous=false)
 
virtual void create (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
 create a clone of this MFPoissonOp More...
 
virtual void createCoarsened (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs, const int &a_refRat)
 
virtual void assign (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
 
virtual Real dotProduct (const LevelData< MFCellFAB > &a_1, const LevelData< MFCellFAB > &a_2)
 
virtual void incr (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_x, Real a_scale)
 
virtual void axby (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_x, const LevelData< MFCellFAB > &a_y, Real a, Real b)
 
virtual void scale (LevelData< MFCellFAB > &a_lhs, const Real &a_scale)
 
virtual Real norm (const LevelData< MFCellFAB > &a_x, int a_ord)
 
virtual void setToZero (LevelData< MFCellFAB > &a_x)
 
MGLevelOp functions
virtual void relax (LevelData< MFCellFAB > &a_e, const LevelData< MFCellFAB > &a_residual, int iterations)
 
virtual void createCoarser (LevelData< MFCellFAB > &a_coarse, const LevelData< MFCellFAB > &a_fine, bool ghosted)
 
virtual void restrictResidual (LevelData< MFCellFAB > &a_resCoarse, LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_rhsFine)
 
virtual void prolongIncrement (LevelData< MFCellFAB > &a_phiThisLevel, const LevelData< MFCellFAB > &a_correctCoarse)
 
AMRLevelOp functions
virtual int refToCoarser ()
 
virtual void AMRResidual (LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
 
virtual void AMRResidualNC (LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
 
virtual void AMRResidualNF (LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneousBC)
 
virtual void AMROperator (LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
 
virtual void AMROperatorNC (LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< MFCellFAB > > *a_finerOp)
 
virtual void AMROperatorNF (LevelData< MFCellFAB > &a_LofPhi, const LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_phiCoarse, bool a_homogeneousBC)
 
virtual void AMRRestrict (LevelData< MFCellFAB > &a_resCoarse, const LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection, bool a_skip_res)
 
virtual void AMRProlong (LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection)
 
virtual void AMRUpdateResidual (LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection)
 
virtual Real AMRNorm (const LevelData< MFCellFAB > &a_coarseResid, const LevelData< MFCellFAB > &a_fineResid, const int &a_refRat, const int &a_ord)
 
- Public Member Functions inherited from TGAHelmOp< LevelData< MFCellFAB > >
 TGAHelmOp ()
 
 TGAHelmOp (bool a_isTimeDependent)
 
virtual ~TGAHelmOp ()
 Destructor. More...
 
virtual void diagonalScale (LevelData< MFCellFAB > &a_rhs, bool a_kappaWeighted)
 
virtual void kappaScale (LevelData< MFCellFAB > &a_rhs)
 for eb only. kappa weight the rhs but do not multiply by the identity coefficient More...
 
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< MFCellFAB > & identityCoef ()
 Allows access to the identity coefficient data for the operator. More...
 
- Public Member Functions inherited from AMRLevelOp< LevelData< MFCellFAB > >
virtual void dumpAMR (Vector< LevelData< MFCellFAB > * > &a_data, string name)
 
virtual void dumpLevel (LevelData< MFCellFAB > &a_data, string name)
 
 AMRLevelOp ()
 Constructor. More...
 
virtual void dumpStuff (Vector< LevelData< MFCellFAB > * > data, string filename)
 
virtual ~AMRLevelOp ()
 Destructor. More...
 
virtual void outputLevel (LevelData< MFCellFAB > &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< LevelData< MFCellFAB > * > &a_rhs, string &a_name)
 
virtual void buildCopier (Copier &a_copier, const LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
 
virtual void assignCopier (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs, const Copier &a_copier)
 
virtual void zeroCovered (LevelData< MFCellFAB > &a_lhs, LevelData< MFCellFAB > &a_rhs, const Copier &a_copier)
 
virtual Real localMaxNorm (const LevelData< MFCellFAB > &a_phi)
 
virtual void AMRProlongS (LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection, LevelData< MFCellFAB > &a_temp, const Copier &a_copier)
 
virtual void AMRProlongS_2 (LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection, LevelData< MFCellFAB > &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp)
 
virtual void AMRRestrictS (LevelData< MFCellFAB > &a_resCoarse, const LevelData< MFCellFAB > &a_residual, const LevelData< MFCellFAB > &a_correction, const LevelData< MFCellFAB > &a_coarseCorrection, LevelData< MFCellFAB > &scratch, bool a_skip_res=false)
 
virtual unsigned int orderOfAccuracy (void) const
 
virtual void enforceCFConsistency (LevelData< MFCellFAB > &a_coarseCorrection, const LevelData< MFCellFAB > &a_correction)
 This routine is for operators with orderOfAccuracy()>2. More...
 
- Public Member Functions inherited from MGLevelOp< LevelData< MFCellFAB > >
 MGLevelOp ()
 Constructor. More...
 
virtual ~MGLevelOp ()
 Destructor. More...
 
virtual void relaxNF (LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > *a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, int a_iterations)
 specialized no-fine relax function, useful for full-multigrid schemes, defaults to regular relax More...
 
virtual void restrictResidual (LevelData< MFCellFAB > &a_resCoarse, LevelData< MFCellFAB > &a_phiFine, const LevelData< MFCellFAB > *a_phiCoarse, const LevelData< MFCellFAB > &a_rhsFine, bool homogeneous)
 full-multigrid version of restrictResidual, useful for FAS-type schemes. Defaults to standard restriction More...
 
virtual void restrictR (LevelData< MFCellFAB > &a_phiCoarse, const LevelData< MFCellFAB > &a_phiFine)
 simple restriction function More...
 
void addObserver (MGLevelOpObserver< LevelData< MFCellFAB > > *a_observer)
 
virtual void applyOpMg (LevelData< MFCellFAB > &a_lhs, LevelData< MFCellFAB > &a_phi, LevelData< MFCellFAB > *a_phiCoarse, bool a_homogeneous)
 Apply an operator. More...
 
virtual void residualNF (LevelData< MFCellFAB > &a_lhs, LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > *a_phiCoarse, const LevelData< MFCellFAB > &a_rhs, bool a_homogeneous=false)
 
void removeObserver (MGLevelOpObserver< LevelData< MFCellFAB > > *a_observer)
 
void addCoarserObserver (MGLevelOp< LevelData< MFCellFAB > > *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< MFCellFAB > > &a_operator, int a_coarseningFactor)
 
int numObservers () const
 Returns the number of objects observing this operator. More...
 
- Public Member Functions inherited from LinearOp< LevelData< MFCellFAB > >
virtual ~LinearOp ()
 
virtual void clear (LevelData< MFCellFAB > &a_lhs)
 
virtual void assignLocal (LevelData< MFCellFAB > &a_lhs, const LevelData< MFCellFAB > &a_rhs)
 
virtual void mDotProduct (const LevelData< MFCellFAB > &a_1, const int a_sz, const LevelData< MFCellFAB > a_2[], Real a_mdots[])
 
virtual Real dx () const
 
virtual void write (const LevelData< MFCellFAB > *a, const char *filename)
 
- Public Member Functions inherited from MGLevelOpObserver< LevelData< MFCellFAB > >
 MGLevelOpObserver ()
 Base level Constructor. Called by all subclasses. More...
 
virtual ~MGLevelOpObserver ()
 Destructor. More...
 
virtual void operatorChanged (const MGLevelOp< LevelData< MFCellFAB > > &a_operator)
 
void setObservee (MGLevelOp< LevelData< MFCellFAB > > *a_observee)
 
void clearObservee ()
 

Public Attributes

int m_relax
 
Vector< IntVectm_colors
 

Protected Member Functions

void computeBoundaryN (const LevelData< MFCellFAB > &a_phi, bool a_homogeneous)
 
void levelJacobi (LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
 
void levelGSRB (LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
 
void levelMulticolorGS (LevelData< MFCellFAB > &a_phi, const LevelData< MFCellFAB > &a_rhs)
 
Real kappaNorm (Real &a_volume, const LevelData< MFCellFAB > &a_data, int a_p) const
 

Protected Attributes

Vector< Realm_beta
 
Vector< Realm_bCoef
 
Vector< Realm_alpha
 
Vector< Realm_aCoef
 
RealVect m_dx
 
RealVect m_dxCrse
 
ProblemDomain m_domain
 
Vector< EBAMRPoissonOp * > m_ebops
 
Vector< LevelData< EBCellFAB > *> m_alias
 
LevelDataOps< MFCellFABm_ops
 
LevelData< MFCellFABm_tmp
 
LevelData< MFCellFABm_weights
 
LevelData< BaseIVFAB< Real > > m_boundaryD [2]
 
LevelData< BaseIVFAB< Real > > m_boundaryN [2]
 
InterfaceJump m_jump
 
int m_refToCoarser
 
int m_refToFiner
 
int m_phases
 
int m_ncomp
 
IntVect m_ghostPhi
 
IntVect m_ghostRHS
 

Detailed Description

Multifluid poisson operator – computes (alpha + div(Beta Grad))

Constructor & Destructor Documentation

◆ MFPoissonOp()

MFPoissonOp::MFPoissonOp ( )
inline

Default constructor.

References define(), diagonalScale(), setAlphaAndBeta(), and ~MFPoissonOp().

◆ ~MFPoissonOp()

virtual MFPoissonOp::~MFPoissonOp ( )
virtual

destructor

Referenced by MFPoissonOp().

Member Function Documentation

◆ define()

void MFPoissonOp::define ( const MFIndexSpace a_mfis,
int  a_ncomp,
const DisjointBoxLayout a_grids,
const DisjointBoxLayout a_gridsCoarMG,
const bool &  a_hasMGObjects,
const bool &  a_layoutChanged,
const DisjointBoxLayout a_gridsFiner,
const DisjointBoxLayout a_gridsCoarser,
const RealVect a_dxLevel,
int  a_refRatio,
int  a_refRatioFiner,
const ProblemDomain a_domain,
const Vector< RefCountedPtr< BaseDomainBC > > &  a_bc,
const IntVect a_ghostPhi,
const IntVect a_ghostRHS,
bool  hasCoarser,
bool  hasFiner,
const Vector< Real > &  a_alpha,
const Vector< Real > &  a_beta 
)

full define function for AMRLevelOp with both coarser and finer levels

Referenced by MFPoissonOp().

◆ setAlphaAndBeta()

virtual void MFPoissonOp::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
)
virtual

Sets the scaling constants in the Helmholtz equation.

Parameters
a_alphaThe scaling constant that multiplies the identity term.
a_betaThe scaling constant that multiplies the derivative term.

Implements TGAHelmOp< LevelData< MFCellFAB > >.

Referenced by MFPoissonOp().

◆ diagonalScale()

virtual void MFPoissonOp::diagonalScale ( LevelData< MFCellFAB > &  a_rhs)
virtual

(TGA) set diagonal scale of the operator

Reimplemented from TGAHelmOp< LevelData< MFCellFAB > >.

Referenced by MFPoissonOp().

◆ divideByIdentityCoef()

virtual void MFPoissonOp::divideByIdentityCoef ( LevelData< MFCellFAB > &  a_rhs)
inlinevirtual

◆ applyOpNoBoundary()

virtual void MFPoissonOp::applyOpNoBoundary ( LevelData< MFCellFAB > &  a_opPhi,
const LevelData< MFCellFAB > &  a_phi 
)
virtual

(TGA) apply operator without any boundary or coarse-fine boundary conditions and no finer level

Implements TGAHelmOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ setTime()

virtual void MFPoissonOp::setTime ( Real  a_time)
virtual

Sets the time-dependent state of the operator. The default implementation does nothing and is appropriate for time-independent operators.

Parameters
a_timeThe time to be used to update the time-dependent operator.

Reimplemented from TGAHelmOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ residual()

virtual void MFPoissonOp::residual ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_rhs,
bool  a_homogeneous = false 
)
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< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ preCond()

virtual void MFPoissonOp::preCond ( LevelData< MFCellFAB > &  a_correction,
const LevelData< MFCellFAB > &  a_residual 
)
virtual

Apply the preconditioner.

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ applyOp() [1/2]

virtual void MFPoissonOp::applyOp ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_phi,
DataIterator a_dit,
bool  a_homogeneous = false 
)
virtual

Referenced by divideByIdentityCoef().

◆ applyOp() [2/2]

virtual void MFPoissonOp::applyOp ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_phi,
bool  a_homogeneous = false 
)
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< MFCellFAB > >.

◆ create()

virtual void MFPoissonOp::create ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_rhs 
)
virtual

create a clone of this MFPoissonOp

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ createCoarsened()

virtual void MFPoissonOp::createCoarsened ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_rhs,
const int &  a_refRat 
)
virtual

◆ assign()

virtual void MFPoissonOp::assign ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_rhs 
)
virtual

Set a_lhs equal to a_rhs.

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ dotProduct()

virtual Real MFPoissonOp::dotProduct ( const LevelData< MFCellFAB > &  a_1,
const LevelData< MFCellFAB > &  a_2 
)
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< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ incr()

virtual void MFPoissonOp::incr ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_x,
Real  a_scale 
)
virtual

Increment by scaled amount (a_lhs += a_scale*a_x).

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ axby()

virtual void MFPoissonOp::axby ( LevelData< MFCellFAB > &  a_lhs,
const LevelData< MFCellFAB > &  a_x,
const LevelData< MFCellFAB > &  a_y,
Real  a_a,
Real  a_b 
)
virtual

Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ scale()

virtual void MFPoissonOp::scale ( LevelData< MFCellFAB > &  a_lhs,
const Real a_scale 
)
virtual

Multiply the input by a given scale (a_lhs *= a_scale).

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ norm()

virtual Real MFPoissonOp::norm ( const LevelData< MFCellFAB > &  a_rhs,
int  a_ord 
)
virtual

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

Referenced by divideByIdentityCoef().

◆ setToZero()

virtual void MFPoissonOp::setToZero ( LevelData< MFCellFAB > &  a_lhs)
virtual

Set a_lhs to zero.

Implements LinearOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ relax()

virtual void MFPoissonOp::relax ( LevelData< MFCellFAB > &  a_correction,
const LevelData< MFCellFAB > &  a_residual,
int  a_iterations 
)
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< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ createCoarser()

virtual void MFPoissonOp::createCoarser ( LevelData< MFCellFAB > &  a_coarse,
const LevelData< MFCellFAB > &  a_fine,
bool  ghosted 
)
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< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ restrictResidual()

virtual void MFPoissonOp::restrictResidual ( LevelData< MFCellFAB > &  a_resCoarse,
LevelData< MFCellFAB > &  a_phiFine,
const LevelData< MFCellFAB > &  a_rhsFine 
)
virtual

calculate restricted residual a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])

Implements MGLevelOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ prolongIncrement()

virtual void MFPoissonOp::prolongIncrement ( LevelData< MFCellFAB > &  a_phiThisLevel,
const LevelData< MFCellFAB > &  a_correctCoarse 
)
virtual

correct the fine solution based on coarse correction a_phiThisLevel += I[2h->h](a_correctCoarse)

Implements MGLevelOp< LevelData< MFCellFAB > >.

Referenced by divideByIdentityCoef().

◆ refToCoarser()

virtual int MFPoissonOp::refToCoarser ( )
inlinevirtual

◆ AMRResidual()

virtual void MFPoissonOp::AMRResidual ( LevelData< MFCellFAB > &  a_residual,
const LevelData< MFCellFAB > &  a_phiFine,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_phiCoarse,
const LevelData< MFCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< MFCellFAB > > *  a_finerOp 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRResidualNC()

virtual void MFPoissonOp::AMRResidualNC ( LevelData< MFCellFAB > &  a_residual,
const LevelData< MFCellFAB > &  a_phiFine,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< MFCellFAB > > *  a_finerOp 
)
virtual

residual assuming no more coarser AMR levels

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRResidualNF()

virtual void MFPoissonOp::AMRResidualNF ( LevelData< MFCellFAB > &  a_residual,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_phiCoarse,
const LevelData< MFCellFAB > &  a_rhs,
bool  a_homogeneousBC 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiCoarse)

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMROperator()

virtual void MFPoissonOp::AMROperator ( LevelData< MFCellFAB > &  a_LofPhi,
const LevelData< MFCellFAB > &  a_phiFine,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< MFCellFAB > > *  a_finerOp 
)
virtual

apply AMR operator, including coarse-fine matching conditions

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMROperatorNC()

virtual void MFPoissonOp::AMROperatorNC ( LevelData< MFCellFAB > &  a_LofPhi,
const LevelData< MFCellFAB > &  a_phiFine,
const LevelData< MFCellFAB > &  a_phi,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< MFCellFAB > > *  a_finerOp 
)
virtual

AMR operator assuming no more coarser AMR levels

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMROperatorNF()

virtual void MFPoissonOp::AMROperatorNF ( LevelData< MFCellFAB > &  a_LofPhi,
const LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC 
)
virtual

AMR operator assuming no finer level

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRRestrict()

virtual void MFPoissonOp::AMRRestrict ( LevelData< MFCellFAB > &  a_resCoarse,
const LevelData< MFCellFAB > &  a_residual,
const LevelData< MFCellFAB > &  a_correction,
const LevelData< MFCellFAB > &  a_coarseCorrection,
bool  a_skip_res 
)
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< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRProlong()

virtual void MFPoissonOp::AMRProlong ( LevelData< MFCellFAB > &  a_correction,
const LevelData< MFCellFAB > &  a_coarseCorrection 
)
virtual

a_correction += I[h->h](a_coarseCorrection)

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRUpdateResidual()

virtual void MFPoissonOp::AMRUpdateResidual ( LevelData< MFCellFAB > &  a_residual,
const LevelData< MFCellFAB > &  a_correction,
const LevelData< MFCellFAB > &  a_coarseCorrection 
)
virtual

a_residual = a_residual - L(a_correction, a_coarseCorrection)

Implements AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ AMRNorm()

virtual Real MFPoissonOp::AMRNorm ( const LevelData< MFCellFAB > &  a_coarseResid,
const LevelData< MFCellFAB > &  a_fineResid,
const int &  a_refRat,
const int &  a_ord 
)
virtual

compute norm over all cells on coarse not covered by finer

Reimplemented from AMRLevelOp< LevelData< MFCellFAB > >.

Referenced by refToCoarser().

◆ setJump() [1/3]

void MFPoissonOp::setJump ( const Real gD,
const Real gN 
)

set the jump conditions at the multifluid interface

Referenced by refToCoarser().

◆ setJump() [2/3]

void MFPoissonOp::setJump ( const RealVect a_gD,
const RealVect a_gN 
)

◆ setJump() [3/3]

void MFPoissonOp::setJump ( const Vector< RefCountedPtr< BaseBCValue > > &  a_phiValVect,
const Vector< RefCountedPtr< BaseBCValue > > &  a_flxValVect 
)

version where we want to specify the interface jumps through analytic function

◆ setVal()

void MFPoissonOp::setVal ( LevelData< MFCellFAB > &  a_phi,
const Vector< Real a_values 
) const

Referenced by refToCoarser().

◆ ebOp()

EBAMRPoissonOp* MFPoissonOp::ebOp ( int  phase)
inline

◆ totalBoundaryFlux()

Real MFPoissonOp::totalBoundaryFlux ( int  a_phase,
const LevelData< MFCellFAB > &  a_phi,
Real  a_factor = 1.0,
bool  a_divideByTotalArea = true 
)

return total flux across all irregular faces in a_phase

Referenced by ebOp().

◆ getBoundaryValues()

void MFPoissonOp::getBoundaryValues ( LevelData< MFCellFAB > &  a_phi,
LevelData< MFCellFAB > &  a_dPhi_dN,
Real  a_invalidVal = 1.2345678e90 
)

Referenced by ebOp().

◆ exactBoundaryFlux()

Real MFPoissonOp::exactBoundaryFlux ( int  a_phase,
RefCountedPtr< BaseBCValue a_flxVal,
RealVect a_origin,
const Real a_time 
)

Referenced by ebOp().

◆ dumpStencilMatrix()

void MFPoissonOp::dumpStencilMatrix ( )

◆ dumpReferenceStencilMatrix()

void MFPoissonOp::dumpReferenceStencilMatrix ( )

◆ getDomain()

ProblemDomain MFPoissonOp::getDomain ( )
inline

return my domain

References getFlux(), and m_domain.

◆ getFlux()

void MFPoissonOp::getFlux ( MFFluxFAB a_flux,
const LevelData< MFCellFAB > &  a_data,
const Box a_grid,
const DataIndex a_dit,
Real  a_scale 
)

return fluxes at cell boundaries. at present only does regular faces.

Referenced by getDomain().

◆ computeBoundaryN()

void MFPoissonOp::computeBoundaryN ( const LevelData< MFCellFAB > &  a_phi,
bool  a_homogeneous 
)
protected

◆ levelJacobi()

void MFPoissonOp::levelJacobi ( LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_rhs 
)
protected

◆ levelGSRB()

void MFPoissonOp::levelGSRB ( LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_rhs 
)
protected

◆ levelMulticolorGS()

void MFPoissonOp::levelMulticolorGS ( LevelData< MFCellFAB > &  a_phi,
const LevelData< MFCellFAB > &  a_rhs 
)
protected

◆ kappaNorm()

Real MFPoissonOp::kappaNorm ( Real a_volume,
const LevelData< MFCellFAB > &  a_data,
int  a_p 
) const
protected

Member Data Documentation

◆ m_relax

int MFPoissonOp::m_relax

◆ m_colors

Vector<IntVect> MFPoissonOp::m_colors

◆ m_beta

Vector<Real> MFPoissonOp::m_beta
protected

◆ m_bCoef

Vector<Real> MFPoissonOp::m_bCoef
protected

◆ m_alpha

Vector<Real> MFPoissonOp::m_alpha
protected

◆ m_aCoef

Vector<Real> MFPoissonOp::m_aCoef
protected

◆ m_dx

RealVect MFPoissonOp::m_dx
protected

◆ m_dxCrse

RealVect MFPoissonOp::m_dxCrse
protected

◆ m_domain

ProblemDomain MFPoissonOp::m_domain
protected

Referenced by getDomain().

◆ m_ebops

Vector<EBAMRPoissonOp*> MFPoissonOp::m_ebops
protected

Referenced by ebOp().

◆ m_alias

Vector<LevelData<EBCellFAB>* > MFPoissonOp::m_alias
protected

◆ m_ops

LevelDataOps<MFCellFAB> MFPoissonOp::m_ops
protected

◆ m_tmp

LevelData<MFCellFAB> MFPoissonOp::m_tmp
protected

◆ m_weights

LevelData<MFCellFAB> MFPoissonOp::m_weights
protected

◆ m_boundaryD

LevelData<BaseIVFAB<Real> > MFPoissonOp::m_boundaryD[2]
protected

◆ m_boundaryN

LevelData<BaseIVFAB<Real> > MFPoissonOp::m_boundaryN[2]
protected

◆ m_jump

InterfaceJump MFPoissonOp::m_jump
protected

◆ m_refToCoarser

int MFPoissonOp::m_refToCoarser
protected

Referenced by refToCoarser().

◆ m_refToFiner

int MFPoissonOp::m_refToFiner
protected

◆ m_phases

int MFPoissonOp::m_phases
protected

◆ m_ncomp

int MFPoissonOp::m_ncomp
protected

◆ m_ghostPhi

IntVect MFPoissonOp::m_ghostPhi
protected

◆ m_ghostRHS

IntVect MFPoissonOp::m_ghostRHS
protected

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