EBAMRPoissonOp Class Reference

#include <EBAMRPoissonOp.H>

Inheritance diagram for EBAMRPoissonOp:

Inheritance graph
[legend]

List of all members.


Detailed Description

Operator to solve (alpha + beta lapl)phi = rhs. This follows the AMRLevelOp interface.

Public Member Functions

virtual void dumpAMR (Vector< LevelData< EBCellFAB > * > &a_data, string name)
virtual void dumpLevel (LevelData< EBCellFAB > &a_data, string name)
int getPetscMatrix (Mat &a_petsc_mat)
 Fill a_petsc_mat with a matrix that describes the operator stencil.
int getLevelDataFromPetscVector (LevelData< EBCellFAB > &a_data, const Vec &a_petsc_vec_real, const Vec &a_petsc_vec_imag)
 put the real components into comp 0, the imaginary ones into comp 1
virtual void setAlphaAndBeta (const Real &a_alpha, const Real &a_beta)
virtual void diagonalScale (LevelData< EBCellFAB > &a_rhs, bool a_kappaWeighted=true)
virtual void divideByIdentityCoef (LevelData< EBCellFAB > &a_rhs)
virtual void kappaScale (LevelData< EBCellFAB > &a_rhs)
 for eb only. kappa weight the rhs but do not multiply by the identity coefficient
Real dx () const
 returns m_dx, such function is required by some LinearSolvers
virtual void fillGrad (const LevelData< EBCellFAB > &a_phi)
 a leveltgaism
void dumpStencilMatrix ()
void getDomainFluxStencil (VoFStencil &a_stencil, const VolIndex &a_vof, const int a_comp, const DataIndex &a_dit)
void dumpReferenceStencilMatrix ()
virtual void getFlux (EBFluxFAB &a_flux, const LevelData< EBCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
EBLevelGrid getEBLG ()
EBLevelGrid getEBLGCoarMG ()
virtual void setTime (Real a_time)
virtual ~EBAMRPoissonOp ()
 EBAMRPoissonOp ()
void AMRResidualNC (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
void AMROperatorNC (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 EBAMRPoissonOp (const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoarMG, const RefCountedPtr< EBQuadCFInterp > &a_quadCFI, const RefCountedPtr< BaseDomainBC > &a_domainBC, const RefCountedPtr< BaseEBBC > &a_ebBC, const RealVect &a_dx, const RealVect &a_dxCoar, const RealVect &a_origin, const int &a_refToFine, const int &a_refToCoar, const bool &a_hasFine, const bool &a_hasCoar, const bool &a_hasMGObjects, const bool &a_layoutChanged, const int &a_numPreCondIters, const int &a_relaxType, const Real &a_alpha, const Real &a_beta, const IntVect &a_ghostCellsPhi, const IntVect &a_ghostCellsRHS, int a_testRef=2)
virtual void residual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC=false)
virtual void getOpMatrix (const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
virtual void preCond (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi)
virtual void applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoarse, const bool &a_homogeneousPhysBC, const bool &a_homogeneousCFBC)
virtual void applyOpNoBoundary (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi)
 virtual function called by LevelTGA
virtual void applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoar, const bool &a_homogeneousPhysBC, const bool &a_homogeneousCFBC, const LevelData< BaseIVFAB< Real > > *const a_ebFluxBCLD)
virtual void applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoar, DataIterator &a_dit, const bool &a_homogeneousPhysBC, const bool &a_homogeneousCFBC, const LevelData< BaseIVFAB< Real > > *const a_ebFluxBCLD)
virtual void GSColorAllRegular (BaseFab< Real > &a_phi, const BaseFab< Real > &a_rhs, const int &a_icolor, const Real &a_weight, const bool &a_homogeneousPhysBC, const DataIndex &a_dit)
virtual void GSColorAllIrregular (EBCellFAB &a_phi, const EBCellFAB &a_rhs, const int &a_icolor, const bool &a_homogeneousPhysBC, const DataIndex &a_dit)
virtual void GSColorAllRegularClone (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiOld, const LevelData< EBCellFAB > &a_rhs, const int &a_icolor, const Real &a_weight, const bool &a_homogeneousPhysBC)
virtual void GSColorAllIrregularClone (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiOld, const LevelData< EBCellFAB > &a_rhs, const int &a_icolor, const bool &a_homogeneousPhysBC)
void mvApplyDomainFlux (BaseFab< Real > &a_phiFAB, const Box &a_grid, const DataIndex &a_dit)
 apply domainflux in multivariable mode
void mvBetaLaplacianGrid (EBCellFAB &a_lph, const EBCellFAB &a_phi, const DataIndex &a_dit)
virtual void applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousPhysBC)
void applyOpNoCFBCs (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoar, DataIterator &a_dit, const bool &a_homogeneousPhysBC, const bool &a_homogeneousCFBC, const LevelData< BaseIVFAB< Real > > *const a_ebFluxBCLD)
 no exchange of cf interp
virtual void create (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
virtual void createCoarsened (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const int &a_refRat)
virtual void buildCopier (Copier &a_copier, const LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
virtual void assignCopier (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const Copier &a_copier)
Real AMRNorm (const LevelData< EBCellFAB > &a_coarResid, const LevelData< EBCellFAB > &a_fineResid, const int &a_refRat, const int &a_ord)
virtual void assign (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
virtual void assignLocal (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
 copier definition was killing us.
virtual Real dotProduct (const LevelData< EBCellFAB > &a_1, const LevelData< EBCellFAB > &a_2)
virtual void incr (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, Real a_scale)
virtual void axby (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, Real a_a, Real a_b)
virtual void scale (LevelData< EBCellFAB > &a_lhs, const Real &a_scale)
virtual Real norm (const LevelData< EBCellFAB > &a_rhs, int a_ord)
virtual Real localMaxNorm (const LevelData< EBCellFAB > &a_rhs)
virtual void setToZero (LevelData< EBCellFAB > &a_lhs)
virtual void setVal (LevelData< EBCellFAB > &a_lhs, const Real &a_value)
virtual void createCoarser (LevelData< EBCellFAB > &a_coarse, const LevelData< EBCellFAB > &a_fine, bool a_ghosted)
virtual void relax (LevelData< EBCellFAB > &a_e, const LevelData< EBCellFAB > &a_residual, int a_iterations)
virtual void restrictResidual (LevelData< EBCellFAB > &a_resCoarse, LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_rhsFine)
virtual void prolongIncrement (LevelData< EBCellFAB > &a_phiThisLevel, const LevelData< EBCellFAB > &a_correctCoarse)
virtual int refToCoarser ()
virtual int refToFiner ()
virtual void AMRResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
virtual void AMRResidualNF (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC)
virtual void AMROperator (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
virtual void AMROperatorNF (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC)
virtual void AMRRestrict (LevelData< EBCellFAB > &a_resCoarse, const LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, bool a_skip_res=false)
virtual void AMRProlong (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection)
virtual void AMRUpdateResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection)
void AMRUpdateResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, const LevelData< BaseIVFAB< Real > > *const a_ebFluxBCLD)
void reflux (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
void fast_reflux (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
void setEBBC (const RefCountedPtr< BaseEBBC > &a_ebBC)
void slowGSRBColor (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_lph, const LevelData< EBCellFAB > &a_rhs, const IntVect &a_color)
void levelSlowRelax (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
void levelJacobi (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, int a_iterations)
void levelMultiColorGS (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
void levelMultiColorGS (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_resid, const IntVect &color)
void colorGS (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, const int &a_icolor)
void levelGSRB (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
void levelGSRB (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, const int a_color)
void levelMultiColorGSClone (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
void colorGSClone (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiOld, const LevelData< EBCellFAB > &a_rhs, const int &a_icolor)
void getDivFStencil (VoFStencil &a_vofStencil, const VolIndex &a_vof, const DataIndex &a_dit, bool doFaceInterp)
void getVoFStencil (LayoutData< BaseIVFAB< VoFStencil > > const *&a_vofStencil)
void getAlphaDiagWeight (LayoutData< BaseIVFAB< Real > > const *&a_alphaDiagWeight)
void getAlphaBeta (Real &a_alpha, Real &a_beta)
const RefCountedPtr< BaseDomainBCgetDomainBC ()
void setListValue (const LevelData< EBCellFAB > &a_data, Real a_value)
void setListValue (EBCellFAB &a_data, const Vector< VolIndex > &a_setList, Real a_value)
void setRhsSetList (const LayoutData< Vector< VolIndex > > &a_list)
LayoutData< Vector< VolIndex > > & getRhsSetList ()
const LayoutData< Vector
< VolIndex > > & 
getListValue ()
void applyCFBCs (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoarse, bool a_homogeneousCFBC, bool a_doOnlyRegularInterp=false)
void getInvDiagRHS (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)

Static Public Member Functions

static int getMatrixIndexingLD (LevelData< BaseEBCellFAB< int > > &a_gids, int &a_data, const EBLevelGrid &a_eblg, const IntVect &a_ghostCellsPhi, const bool &a_hasCoar)
static void getAggregatedLayout (DisjointBoxLayout &a_dblCoar, const ProblemDomain &a_domainCoar, const EBIndexSpace *const a_ebisPtr, const int &a_maxBoxSize)
static bool getCoarserLayouts (DisjointBoxLayout &a_dblCoar, ProblemDomain &a_domainCoar, const DisjointBoxLayout &a_dblFine, const EBISLayout &a_ebislFine, const ProblemDomain &a_domainFine, int a_refToCoar, const EBIndexSpace *a_ebisPtr, int a_maxBoxSize, bool &a_layoutChanged, int a_testRef=2)
static Real staticMaxNorm (const LevelData< EBCellFAB > &a_rhs, const EBLevelGrid &a_eblg)
static void setOperatorTime (Real a_time)
static void doLazyRelax (bool a_doLazyRelax)
static void doEBEllipticLoadBalance (bool a_doEBEllipticLoadBalance)
static void areaFracWeighted (bool a_areaFracWeighted)
static void getDivFStencil (VoFStencil &a_vofStencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const IntVectSet &a_cfivs, const RealVect &a_dx, bool doFaceInterp=true)
static void getFluxStencil (VoFStencil &a_fluxStencil, const FaceIndex &a_face, const EBISBox &a_ebisBox, const IntVectSet &a_cfivs, const RealVect &a_dx, bool a_doFaceInterp)
static void getFaceCenteredFluxStencil (VoFStencil &a_fluxStencil, const FaceIndex &a_face, const RealVect &a_dx)

Static Public Attributes

static int s_numComps
static int s_whichComp

Protected Member Functions

void defineMGObjects (const EBLevelGrid &a_eblgCoarMG)
void defineWithCoarser (const EBLevelGrid &a_eblgCoar, const int &a_refToCoar)
void defineWithFiner (const EBLevelGrid &a_eblgFine, const int &a_refToFine)
void defineStencils ()
void defineEBCFStencils ()

Protected Attributes

LevelData< EBCellFABm_resThisLevel
int m_testRef
const IntVect m_ghostCellsPhi
const IntVect m_ghostCellsRHS
RefCountedPtr< EBQuadCFInterpm_quadCFIWithCoar
EBLevelGrid m_eblg
EBLevelGrid m_eblgFine
EBLevelGrid m_eblgCoar
EBLevelGrid m_eblgCoarMG
EBLevelGrid m_eblgCoarsenedFine
RefCountedPtr< BaseDomainBCm_domainBC
RefCountedPtr< BaseEBBCm_ebBC
LayoutData< Vector< VolIndex > > m_rhsSetList
RealVect m_dxFine
RealVect m_dx
RealVect m_dxCoar
RealVect m_invDx
RealVect m_invDx2
Real m_dxScale
Real m_alpha
Real m_aCoef
Real m_beta
Real m_bCoef
RealVect m_origin
int m_refToFine
int m_refToCoar
bool m_hasFine
bool m_hasInterpAve
bool m_hasCoar
int m_numPreCondIters
int m_relaxType
bool m_hasEBCF
Copier m_exchangeCopier
EBMGAverage m_ebAverage
EBMGInterp m_ebInterp
LayoutData< BaseIVFAB
< VoFStencil > > 
m_opStencil
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_opEBStencil
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_opEBStencilInhomDomLo [SpaceDim]
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_opEBStencilInhomDomHi [SpaceDim]
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_colorEBStencil [EBAMRPO_NUMSTEN]
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_colorEBStencilDomLo [EBAMRPO_NUMSTEN][SpaceDim]
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_colorEBStencilDomHi [EBAMRPO_NUMSTEN][SpaceDim]
LayoutData< RefCountedPtr
< EBSTENCIL_T > > 
m_invDiagEBStencil
LayoutData< BaseIVFAB< Real > > m_alphaDiagWeight
LayoutData< BaseIVFAB< Real > > m_betaDiagWeight
LayoutData< BaseIVFAB< Real > > m_one
LayoutData< VoFIteratorm_vofItIrreg
LayoutData< VoFIteratorm_vofItIrregColor [EBAMRPO_NUMSTEN]
LayoutData< VoFIteratorm_vofItIrregDomLo [SpaceDim]
LayoutData< VoFIteratorm_vofItIrregDomHi [SpaceDim]
LayoutData< VoFIteratorm_vofItIrregColorDomLo [EBAMRPO_NUMSTEN][SpaceDim]
LayoutData< VoFIteratorm_vofItIrregColorDomHi [EBAMRPO_NUMSTEN][SpaceDim]
Vector< Vector< RefCountedPtr
< LayoutData< EBCellFAB > > > > 
m_cacheInhomDomBCLo
Vector< Vector< RefCountedPtr
< LayoutData< EBCellFAB > > > > 
m_cacheInhomDomBCHi
LayoutData< CFIVSm_loCFIVS [SpaceDim]
LayoutData< CFIVSm_hiCFIVS [SpaceDim]
EBFastFR m_fastFR
LayoutData< Vector< FaceIndex > > m_faceitCoar [2 *SpaceDim]
LayoutData< Vector< VoFStencil > > m_stencilCoar [2 *SpaceDim]
bool m_hasMGObjects
bool m_layoutChanged
Vector< IntVectm_colors
EBMGAverage m_ebAverageMG
EBMGInterp m_ebInterpMG
DisjointBoxLayout m_dblCoarMG
EBISLayout m_ebislCoarMG
ProblemDomain m_domainCoarMG

Static Protected Attributes

static bool s_turnOffBCs
static bool s_doEBEllipticLoadBalance
static bool s_areaFracWeighted
static Real s_time
static bool s_doLazyRelax
static bool s_doInconsistentRelax
static bool s_doTrimEdges
static bool s_doSetListValueResid

Private Member Functions

void fast_incrementFRCoar (const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi)
void fast_incrementFRFine (const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
void getFlux (EBFaceFAB &a_flux, const EBCellFAB &a_phi, const Box &a_ghostedBox, const Box &a_fabBox, const ProblemDomain &a_domainBox, const EBISBox &a_ebisBox, const RealVect &a_dx, const int &a_idir)
 this one gets called by base level tga (called by the public getFlux)
void getFluxEBCF (EBFaceFAB &a_flux, const EBCellFAB &a_phi, const Box &a_ghostedBox, Vector< FaceIndex > &a_faceitEBCF, Vector< VoFStencil > &a_ebcfsten, const RealVect &a_dx)
 this one is internal (called by refluxing)
void getFluxRegO (EBFaceFAB &a_flux, const EBCellFAB &a_phi, const Box &a_ghostedBox, const RealVect &a_dx)
 this one is internal (called by refluxing)
void getOpVoFStencil (VoFStencil &a_stencil, const EBISBox &a_ebisbox, const VolIndex &a_vof)
void getOpVoFStencil (VoFStencil &a_stencil, const int &a_dir, const Vector< VolIndex > &a_allMonotoneVoFs, const EBISBox &a_ebisbox, const VolIndex &a_vof, const bool &a_lowOrder)
void getOpFaceStencil (VoFStencil &a_stencil, const Vector< VolIndex > &a_allMonotoneVofs, const EBISBox &a_ebisbox, const VolIndex &a_vof, int a_dir, const Side::LoHiSide &a_side, const FaceIndex &a_face, const bool &a_lowOrder)
void levelJacobi (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs)
void applyHomogeneousCFBCs (LevelData< EBCellFAB > &a_phi)
void applyHomogeneousCFBCs (EBCellFAB &a_phi, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo)
Real getRadius (const FaceIndex &a_face, const RealVect &a_centroid)
void applyOpRegularAllDirs (Box *a_loBox, Box *a_hiBox, int *a_hasLo, int *a_hasHi, Box &a_curOpPhiBox, Box &a_curPhiBox, int a_nComps, BaseFab< Real > &a_curOpPhiFAB, const BaseFab< Real > &a_curPhiFAB, bool a_homogeneousPhysBC, const DataIndex &a_dit, const Real &a_beta)
void applyDomainFlux (Box *a_loBox, Box *a_hiBox, int *a_hasLo, int *a_hasHi, Box &a_curPhiBox, int a_nComps, BaseFab< Real > &a_phiFAB, bool a_homogeneousPhysBC, const DataIndex &a_dit, const Real &a_beta)
 EBAMRPoissonOp (const EBAMRPoissonOp &a_opin)
void operator= (const EBAMRPoissonOp &a_opin)

Classes

class  StencilIndex
class  StencilIndexComparator

Constructor & Destructor Documentation

virtual EBAMRPoissonOp::~EBAMRPoissonOp (  )  [virtual]

EBAMRPoissonOp::EBAMRPoissonOp (  ) 

EBAMRPoissonOp::EBAMRPoissonOp ( const EBLevelGrid a_eblgFine,
const EBLevelGrid a_eblg,
const EBLevelGrid a_eblgCoar,
const EBLevelGrid a_eblgCoarMG,
const RefCountedPtr< EBQuadCFInterp > &  a_quadCFI,
const RefCountedPtr< BaseDomainBC > &  a_domainBC,
const RefCountedPtr< BaseEBBC > &  a_ebBC,
const RealVect a_dx,
const RealVect a_dxCoar,
const RealVect a_origin,
const int &  a_refToFine,
const int &  a_refToCoar,
const bool &  a_hasFine,
const bool &  a_hasCoar,
const bool &  a_hasMGObjects,
const bool &  a_layoutChanged,
const int &  a_numPreCondIters,
const int &  a_relaxType,
const Real a_alpha,
const Real a_beta,
const IntVect a_ghostCellsPhi,
const IntVect a_ghostCellsRHS,
int  a_testRef = 2 
)

If you are approaching this operator from this interface, consider backing away and using EBAMRPoissonOpFactory to generate these objects. Really. a_eblgFine, : grid at finer level \ a_eblg, : grid at this level \ a_eblgCoar, : grid at coarser level \ a_eblgCoarMG, : grid at intermediate multigrid level \ a_domainBC, : domain boundary conditions at this level \ a_ebBC: eb boundary conditions at this level \ a_dx: grid spacing at this level \ a_origin: offset to lowest corner of the domain \ a_refToFine: refinement ratio to finer level \ a_refToCoar: refinement ratio to coarser level \ a_hasFiner: true if there is a finer AMR level, false otherwise. \ a_hasCoarser: true if there is a coarser AMR level. \ a_hasCoarserMG: true if there is a coarser MultiGrid level. \ a_preCondIters: number of iterations to do for pre-conditioning \ a_relaxType: 0 means point Jacobi, 1 is Gauss-Seidel. \ a_alpha: coefficent of identity \ a_beta: coefficient of laplacian.\ a_ghostCellsPhi: Number of ghost cells in phi, correction\ a_ghostCellsRhs: Number of ghost cells in RHS, residual, lphi\ Ghost cell arguments are there for caching reasons. Once you set them, an error is thrown if you send in data that does not match.

EBAMRPoissonOp::EBAMRPoissonOp ( const EBAMRPoissonOp a_opin  )  [inline, private]

References MayDay::Error().


Member Function Documentation

virtual void EBAMRPoissonOp::dumpAMR ( Vector< LevelData< EBCellFAB > * > &  a_data,
string  name 
) [inline, virtual]

Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.

References name(), and writeEBAMRname().

virtual void EBAMRPoissonOp::dumpLevel ( LevelData< EBCellFAB > &  a_data,
string  name 
) [inline, virtual]

int EBAMRPoissonOp::getPetscMatrix ( Mat &  a_petsc_mat  ) 

Fill a_petsc_mat with a matrix that describes the operator stencil.

int EBAMRPoissonOp::getLevelDataFromPetscVector ( LevelData< EBCellFAB > &  a_data,
const Vec &  a_petsc_vec_real,
const Vec &  a_petsc_vec_imag 
)

put the real components into comp 0, the imaginary ones into comp 1

static int EBAMRPoissonOp::getMatrixIndexingLD ( LevelData< BaseEBCellFAB< int > > &  a_gids,
int &  a_data,
const EBLevelGrid a_eblg,
const IntVect a_ghostCellsPhi,
const bool &  a_hasCoar 
) [static]

get the matrix indicies associated with every point on the level Not really going to work if level does not cover the domain

static void EBAMRPoissonOp::getAggregatedLayout ( DisjointBoxLayout a_dblCoar,
const ProblemDomain a_domainCoar,
const EBIndexSpace *const   a_ebisPtr,
const int &  a_maxBoxSize 
) [static]

static bool EBAMRPoissonOp::getCoarserLayouts ( DisjointBoxLayout a_dblCoar,
ProblemDomain a_domainCoar,
const DisjointBoxLayout a_dblFine,
const EBISLayout a_ebislFine,
const ProblemDomain a_domainFine,
int  a_refToCoar,
const EBIndexSpace a_ebisPtr,
int  a_maxBoxSize,
bool &  a_layoutChanged,
int  a_testRef = 2 
) [static]

version that does not fill ebislcoar

static Real EBAMRPoissonOp::staticMaxNorm ( const LevelData< EBCellFAB > &  a_rhs,
const EBLevelGrid a_eblg 
) [static]

virtual void EBAMRPoissonOp::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
) [virtual]

Sets the scaling constants in the Helmholtz equation.

Parameters:
a_alpha The scaling constant that multiplies the identity term.
a_beta The scaling constant that multiplies the derivative term.

Implements TGAHelmOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::diagonalScale ( LevelData< EBCellFAB > &  a_rhs,
bool  a_kappaWeighted = true 
) [virtual]

Scales the right hand side of the Helmholtz equation by the identity term in the operator. If you are solving rho(x) dphi/dt = L(phi), this means multiply by rho (or kappa * rho in embedded boundary calculations.

Parameters:
a_rhs The right hand side of the equation to be scaled.
a_kappaWeighted If set to true, a_rhs will be scaled by the volume fraction in addition to the identity term.

Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.

Referenced by kappaScale().

virtual void EBAMRPoissonOp::divideByIdentityCoef ( LevelData< EBCellFAB > &  a_rhs  )  [inline, virtual]

Divides the right hand side of the Helmholtz equation by the identity coefficient rho(x) in the equation rho(x) dphi/dt = L(phi).

Parameters:
a_rhs The right hand side of the equation to be scaled.

Implements TGAHelmOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::kappaScale ( LevelData< EBCellFAB > &  a_rhs  )  [inline, virtual]

for eb only. kappa weight the rhs but do not multiply by the identity coefficient

Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.

References diagonalScale().

Real EBAMRPoissonOp::dx (  )  const [inline, virtual]

returns m_dx, such function is required by some LinearSolvers

Reimplemented from LinearOp< LevelData< EBCellFAB > >.

References m_dx.

virtual void EBAMRPoissonOp::fillGrad ( const LevelData< EBCellFAB > &  a_phi  )  [inline, virtual]

void EBAMRPoissonOp::dumpStencilMatrix (  ) 

void EBAMRPoissonOp::getDomainFluxStencil ( VoFStencil a_stencil,
const VolIndex a_vof,
const int  a_comp,
const DataIndex a_dit 
)

void EBAMRPoissonOp::dumpReferenceStencilMatrix (  ) 

virtual void EBAMRPoissonOp::getFlux ( EBFluxFAB a_flux,
const LevelData< EBCellFAB > &  a_data,
const Box a_grid,
const DataIndex a_dit,
Real  a_scale 
) [inline, virtual]

EBLevelGrid EBAMRPoissonOp::getEBLG (  )  [inline]

References m_eblg.

EBLevelGrid EBAMRPoissonOp::getEBLGCoarMG (  )  [inline]

References m_eblgCoarMG.

static void EBAMRPoissonOp::setOperatorTime ( Real  a_time  )  [inline, static]

References s_time.

Referenced by setTime().

virtual void EBAMRPoissonOp::setTime ( Real  a_time  )  [inline, virtual]

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

Parameters:
a_time The time to be used to update the time-dependent operator.

Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.

References setOperatorTime().

void EBAMRPoissonOp::AMRResidualNC ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
) [virtual]

a_residual = a_rhs - L(a_phiFine, a_phi) no coaser AMR level

Implements AMRLevelOp< LevelData< EBCellFAB > >.

void EBAMRPoissonOp::AMROperatorNC ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
) [virtual]

apply AMR operator no coaser AMR level

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::residual ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual void EBAMRPoissonOp::getOpMatrix ( const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
) [virtual]

For debugging purpose, get the matrix of the op (could be change from time to time due to EBBC update) by calculating 0 - L(phi(i)) for i=0,1,...,n, each time phi(i)=1 for i-th cell and 0 for all other cells

virtual void EBAMRPoissonOp::preCond ( LevelData< EBCellFAB > &  a_cor,
const LevelData< EBCellFAB > &  a_residual 
) [virtual]

Given the current state of the residual the correction, apply your preconditioner to a_cor.

Implements LinearOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::applyOp ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > *const   a_phiCoarse,
const bool &  a_homogeneousPhysBC,
const bool &  a_homogeneousCFBC 
) [virtual]

This function assumes that coarse-fine boundary condtions have been dealt with.

virtual void EBAMRPoissonOp::applyOpNoBoundary ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi 
) [virtual]

virtual function called by LevelTGA

Implements TGAHelmOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::applyOp ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > *const   a_phiCoar,
const bool &  a_homogeneousPhysBC,
const bool &  a_homogeneousCFBC,
const LevelData< BaseIVFAB< Real > > *const   a_ebFluxBCLD 
) [virtual]

get EB flux from leveldata if we have one. otherwise use m_ebBC ignore input data in the case of homogeneous Phys BC

virtual void EBAMRPoissonOp::applyOp ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > *const   a_phiCoar,
DataIterator a_dit,
const bool &  a_homogeneousPhysBC,
const bool &  a_homogeneousCFBC,
const LevelData< BaseIVFAB< Real > > *const   a_ebFluxBCLD 
) [virtual]

virtual void EBAMRPoissonOp::GSColorAllRegular ( BaseFab< Real > &  a_phi,
const BaseFab< Real > &  a_rhs,
const int &  a_icolor,
const Real a_weight,
const bool &  a_homogeneousPhysBC,
const DataIndex a_dit 
) [virtual]

virtual void EBAMRPoissonOp::GSColorAllIrregular ( EBCellFAB a_phi,
const EBCellFAB a_rhs,
const int &  a_icolor,
const bool &  a_homogeneousPhysBC,
const DataIndex a_dit 
) [virtual]

virtual void EBAMRPoissonOp::GSColorAllRegularClone ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiOld,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_icolor,
const Real a_weight,
const bool &  a_homogeneousPhysBC 
) [virtual]

virtual void EBAMRPoissonOp::GSColorAllIrregularClone ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiOld,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_icolor,
const bool &  a_homogeneousPhysBC 
) [virtual]

void EBAMRPoissonOp::mvApplyDomainFlux ( BaseFab< Real > &  a_phiFAB,
const Box a_grid,
const DataIndex a_dit 
)

apply domainflux in multivariable mode

void EBAMRPoissonOp::mvBetaLaplacianGrid ( EBCellFAB a_lph,
const EBCellFAB a_phi,
const DataIndex a_dit 
)

for taking the multi-variable laplacian (think source term in viscous flow) evaluates beta*laplacian (with inhomogeneous bcs).

virtual void EBAMRPoissonOp::applyOp ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi,
bool  a_homogeneousPhysBC 
) [virtual]

this is the linearop function. CFBC is set to homogeneous. phic is null

Implements LinearOp< LevelData< EBCellFAB > >.

void EBAMRPoissonOp::applyOpNoCFBCs ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > *const   a_phiCoar,
DataIterator a_dit,
const bool &  a_homogeneousPhysBC,
const bool &  a_homogeneousCFBC,
const LevelData< BaseIVFAB< Real > > *const   a_ebFluxBCLD 
)

no exchange of cf interp

virtual void EBAMRPoissonOp::create ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
) [virtual]

Creat data holder a_lhs that mirrors a_rhs. You do not need to copy the data of a_rhs, just make a holder the same size.

Implements LinearOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::createCoarsened ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_refRat 
) [virtual]

virtual void EBAMRPoissonOp::buildCopier ( Copier a_copier,
const LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
) [virtual]

virtual void EBAMRPoissonOp::assignCopier ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs,
const Copier a_copier 
) [virtual]

Real EBAMRPoissonOp::AMRNorm ( const LevelData< EBCellFAB > &  a_coarResid,
const LevelData< EBCellFAB > &  a_fineResid,
const int &  a_refRat,
const int &  a_ord 
) [virtual]

virtual void EBAMRPoissonOp::assign ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
) [virtual]

Set a_lhs equal to a_rhs.

Implements LinearOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::assignLocal ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
) [virtual]

copier definition was killing us.

Reimplemented from LinearOp< LevelData< EBCellFAB > >.

virtual Real EBAMRPoissonOp::dotProduct ( const LevelData< EBCellFAB > &  a_1,
const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual void EBAMRPoissonOp::incr ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_x,
Real  a_scale 
) [virtual]

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

Implements LinearOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::axby ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_x,
const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual void EBAMRPoissonOp::scale ( LevelData< EBCellFAB > &  a_lhs,
const Real a_scale 
) [virtual]

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

Implements LinearOp< LevelData< EBCellFAB > >.

virtual Real EBAMRPoissonOp::norm ( const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual Real EBAMRPoissonOp::localMaxNorm ( const LevelData< EBCellFAB > &  a_rhs  )  [virtual]

virtual void EBAMRPoissonOp::setToZero ( LevelData< EBCellFAB > &  a_lhs  )  [virtual]

Set a_lhs to zero.

Implements LinearOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::setVal ( LevelData< EBCellFAB > &  a_lhs,
const Real a_value 
) [virtual]

virtual void EBAMRPoissonOp::createCoarser ( LevelData< EBCellFAB > &  a_coarse,
const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual void EBAMRPoissonOp::relax ( LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  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< EBCellFAB > >.

virtual void EBAMRPoissonOp::restrictResidual ( LevelData< EBCellFAB > &  a_resCoarse,
LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_rhsFine 
) [virtual]

Calculate restricted residual: a_resCoarse[2h] = I[h->2h] (a_rhsFine[h] - L[h](a_phiFine[h]))

Implements MGLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::prolongIncrement ( LevelData< EBCellFAB > &  a_phiThisLevel,
const LevelData< EBCellFAB > &  a_correctCoarse 
) [virtual]

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

Implements MGLevelOp< LevelData< EBCellFAB > >.

virtual int EBAMRPoissonOp::refToCoarser (  )  [virtual]

Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual int EBAMRPoissonOp::refToFiner (  )  [virtual]

Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects

virtual void EBAMRPoissonOp::AMRResidual ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
) [virtual]

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

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMRResidualNF ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC 
) [virtual]

a_residual = a_rhs - L(a_phi, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMROperator ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
) [virtual]

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

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMROperatorNF ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC 
) [virtual]

a_residual = a_rhs - L(a_phi, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMRRestrict ( LevelData< EBCellFAB > &  a_resCoarse,
const LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection,
bool  a_skip_res = false 
) [virtual]

a_resCoarse = I[h-2h] (a_residual - L(a_correction, a_coarseCorrection))

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMRProlong ( LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection 
) [virtual]

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

Implements AMRLevelOp< LevelData< EBCellFAB > >.

virtual void EBAMRPoissonOp::AMRUpdateResidual ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection 
) [virtual]

a_residual = a_residual - L(a_correction, a_coarseCorrection)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

void EBAMRPoissonOp::AMRUpdateResidual ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection,
const LevelData< BaseIVFAB< Real > > *const   a_ebFluxBCLD 
)

a_residual = a_residual - L(a_correction, a_coarseCorrection) used in multifluid

void EBAMRPoissonOp::reflux ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)

void EBAMRPoissonOp::fast_reflux ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)

void EBAMRPoissonOp::setEBBC ( const RefCountedPtr< BaseEBBC > &  a_ebBC  ) 

void EBAMRPoissonOp::slowGSRBColor ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_lph,
const LevelData< EBCellFAB > &  a_rhs,
const IntVect a_color 
)

void EBAMRPoissonOp::levelSlowRelax ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
)

void EBAMRPoissonOp::levelJacobi ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
int  a_iterations 
)

void EBAMRPoissonOp::levelMultiColorGS ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
)

void EBAMRPoissonOp::levelMultiColorGS ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_resid,
const IntVect color 
)

void EBAMRPoissonOp::colorGS ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_icolor 
)

void EBAMRPoissonOp::levelGSRB ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
)

void EBAMRPoissonOp::levelGSRB ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
const int  a_color 
)

void EBAMRPoissonOp::levelMultiColorGSClone ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
)

void EBAMRPoissonOp::colorGSClone ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiOld,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_icolor 
)

static void EBAMRPoissonOp::doLazyRelax ( bool  a_doLazyRelax  )  [static]

static void EBAMRPoissonOp::doEBEllipticLoadBalance ( bool  a_doEBEllipticLoadBalance  )  [static]

static void EBAMRPoissonOp::areaFracWeighted ( bool  a_areaFracWeighted  )  [static]

static void EBAMRPoissonOp::getDivFStencil ( VoFStencil a_vofStencil,
const VolIndex a_vof,
const EBISBox a_ebisBox,
const IntVectSet a_cfivs,
const RealVect a_dx,
bool  doFaceInterp = true 
) [static]

void EBAMRPoissonOp::getDivFStencil ( VoFStencil a_vofStencil,
const VolIndex a_vof,
const DataIndex a_dit,
bool  doFaceInterp 
)

void EBAMRPoissonOp::getVoFStencil ( LayoutData< BaseIVFAB< VoFStencil > > const *&  a_vofStencil  )  [inline]

References m_opStencil.

void EBAMRPoissonOp::getAlphaDiagWeight ( LayoutData< BaseIVFAB< Real > > const *&  a_alphaDiagWeight  )  [inline]

References m_alphaDiagWeight.

void EBAMRPoissonOp::getAlphaBeta ( Real a_alpha,
Real a_beta 
) [inline]

References m_alpha, and m_beta.

const RefCountedPtr<BaseDomainBC> EBAMRPoissonOp::getDomainBC (  )  [inline]

References m_domainBC.

void EBAMRPoissonOp::setListValue ( const LevelData< EBCellFAB > &  a_data,
Real  a_value 
)

void EBAMRPoissonOp::setListValue ( EBCellFAB a_data,
const Vector< VolIndex > &  a_setList,
Real  a_value 
)

void EBAMRPoissonOp::setRhsSetList ( const LayoutData< Vector< VolIndex > > &  a_list  ) 

LayoutData<Vector<VolIndex> >& EBAMRPoissonOp::getRhsSetList (  )  [inline]

References m_rhsSetList.

const LayoutData<Vector<VolIndex> >& EBAMRPoissonOp::getListValue (  )  [inline]

References m_rhsSetList.

static void EBAMRPoissonOp::getFluxStencil ( VoFStencil a_fluxStencil,
const FaceIndex a_face,
const EBISBox a_ebisBox,
const IntVectSet a_cfivs,
const RealVect a_dx,
bool  a_doFaceInterp 
) [static]

static void EBAMRPoissonOp::getFaceCenteredFluxStencil ( VoFStencil a_fluxStencil,
const FaceIndex a_face,
const RealVect a_dx 
) [static]

void EBAMRPoissonOp::applyCFBCs ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > *const   a_phiCoarse,
bool  a_homogeneousCFBC,
bool  a_doOnlyRegularInterp = false 
)

void EBAMRPoissonOp::getInvDiagRHS ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
)

This function computes: a_lhs = (1/diagonal)*a_rhs It is used to initialize the preconditioner, and by MFPoissonOp::levelJacobi. Consider using one of the level Gauss-Seidel methods instead of monkeying with this.

void EBAMRPoissonOp::defineMGObjects ( const EBLevelGrid a_eblgCoarMG  )  [protected]

void EBAMRPoissonOp::defineWithCoarser ( const EBLevelGrid a_eblgCoar,
const int &  a_refToCoar 
) [protected]

void EBAMRPoissonOp::defineWithFiner ( const EBLevelGrid a_eblgFine,
const int &  a_refToFine 
) [protected]

void EBAMRPoissonOp::defineStencils (  )  [protected]

void EBAMRPoissonOp::defineEBCFStencils (  )  [protected]

void EBAMRPoissonOp::fast_incrementFRCoar ( const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi 
) [private]

void EBAMRPoissonOp::fast_incrementFRFine ( const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
) [private]

void EBAMRPoissonOp::getFlux ( EBFaceFAB a_flux,
const EBCellFAB a_phi,
const Box a_ghostedBox,
const Box a_fabBox,
const ProblemDomain a_domainBox,
const EBISBox a_ebisBox,
const RealVect a_dx,
const int &  a_idir 
) [private]

this one gets called by base level tga (called by the public getFlux)

void EBAMRPoissonOp::getFluxEBCF ( EBFaceFAB a_flux,
const EBCellFAB a_phi,
const Box a_ghostedBox,
Vector< FaceIndex > &  a_faceitEBCF,
Vector< VoFStencil > &  a_ebcfsten,
const RealVect a_dx 
) [private]

this one is internal (called by refluxing)

void EBAMRPoissonOp::getFluxRegO ( EBFaceFAB a_flux,
const EBCellFAB a_phi,
const Box a_ghostedBox,
const RealVect a_dx 
) [private]

this one is internal (called by refluxing)

void EBAMRPoissonOp::getOpVoFStencil ( VoFStencil a_stencil,
const EBISBox a_ebisbox,
const VolIndex a_vof 
) [private]

void EBAMRPoissonOp::getOpVoFStencil ( VoFStencil a_stencil,
const int &  a_dir,
const Vector< VolIndex > &  a_allMonotoneVoFs,
const EBISBox a_ebisbox,
const VolIndex a_vof,
const bool &  a_lowOrder 
) [private]

void EBAMRPoissonOp::getOpFaceStencil ( VoFStencil a_stencil,
const Vector< VolIndex > &  a_allMonotoneVofs,
const EBISBox a_ebisbox,
const VolIndex a_vof,
int  a_dir,
const Side::LoHiSide a_side,
const FaceIndex a_face,
const bool &  a_lowOrder 
) [private]

void EBAMRPoissonOp::levelJacobi ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs 
) [private]

void EBAMRPoissonOp::applyHomogeneousCFBCs ( LevelData< EBCellFAB > &  a_phi  )  [private]

void EBAMRPoissonOp::applyHomogeneousCFBCs ( EBCellFAB a_phi,
const DataIndex a_datInd,
int  a_idir,
Side::LoHiSide  a_hiorlo 
) [private]

Real EBAMRPoissonOp::getRadius ( const FaceIndex a_face,
const RealVect a_centroid 
) [private]

void EBAMRPoissonOp::applyOpRegularAllDirs ( Box a_loBox,
Box a_hiBox,
int *  a_hasLo,
int *  a_hasHi,
Box a_curOpPhiBox,
Box a_curPhiBox,
int  a_nComps,
BaseFab< Real > &  a_curOpPhiFAB,
const BaseFab< Real > &  a_curPhiFAB,
bool  a_homogeneousPhysBC,
const DataIndex a_dit,
const Real a_beta 
) [private]

applyOp() on the regular cells for all directions opPhi comes in holding alpha*phi. this adds on beta*lapl phi

void EBAMRPoissonOp::applyDomainFlux ( Box a_loBox,
Box a_hiBox,
int *  a_hasLo,
int *  a_hasHi,
Box a_curPhiBox,
int  a_nComps,
BaseFab< Real > &  a_phiFAB,
bool  a_homogeneousPhysBC,
const DataIndex a_dit,
const Real a_beta 
) [private]

void EBAMRPoissonOp::operator= ( const EBAMRPoissonOp a_opin  )  [inline, private]

References MayDay::Error().


Member Data Documentation

bool EBAMRPoissonOp::s_turnOffBCs [static, protected]

bool EBAMRPoissonOp::s_areaFracWeighted [static, protected]

int EBAMRPoissonOp::m_testRef [protected]

Referenced by getEBLG(), and getFlux().

Referenced by getEBLGCoarMG().

Referenced by getDomainBC().

Referenced by getListValue(), and getRhsSetList().

Referenced by dx(), and getFlux().

Referenced by getAlphaBeta().

Referenced by getAlphaBeta().

Real EBAMRPoissonOp::s_time [static, protected]

Referenced by setOperatorTime().

bool EBAMRPoissonOp::s_doLazyRelax [static, protected]

bool EBAMRPoissonOp::s_doInconsistentRelax [static, protected]

bool EBAMRPoissonOp::s_doTrimEdges [static, protected]

bool EBAMRPoissonOp::s_doSetListValueResid [static, protected]

int EBAMRPoissonOp::m_refToFine [protected]

int EBAMRPoissonOp::m_refToCoar [protected]

bool EBAMRPoissonOp::m_hasFine [protected]

bool EBAMRPoissonOp::m_hasCoar [protected]

int EBAMRPoissonOp::m_relaxType [protected]

bool EBAMRPoissonOp::m_hasEBCF [protected]

Referenced by getVoFStencil().

LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_colorEBStencil[EBAMRPO_NUMSTEN] [protected]

LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_colorEBStencilDomLo[EBAMRPO_NUMSTEN][SpaceDim] [protected]

LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_colorEBStencilDomHi[EBAMRPO_NUMSTEN][SpaceDim] [protected]

Referenced by getAlphaDiagWeight().


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

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