#include <EBAMRPoissonOp.H>
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< BaseDomainBC > | getDomainBC () |
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< EBCellFAB > | m_resThisLevel |
int | m_testRef |
const IntVect | m_ghostCellsPhi |
const IntVect | m_ghostCellsRHS |
RefCountedPtr< EBQuadCFInterp > | m_quadCFIWithCoar |
EBLevelGrid | m_eblg |
EBLevelGrid | m_eblgFine |
EBLevelGrid | m_eblgCoar |
EBLevelGrid | m_eblgCoarMG |
EBLevelGrid | m_eblgCoarsenedFine |
RefCountedPtr< BaseDomainBC > | m_domainBC |
RefCountedPtr< BaseEBBC > | m_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< VoFIterator > | m_vofItIrreg |
LayoutData< VoFIterator > | m_vofItIrregColor [EBAMRPO_NUMSTEN] |
LayoutData< VoFIterator > | m_vofItIrregDomLo [SpaceDim] |
LayoutData< VoFIterator > | m_vofItIrregDomHi [SpaceDim] |
LayoutData< VoFIterator > | m_vofItIrregColorDomLo [EBAMRPO_NUMSTEN][SpaceDim] |
LayoutData< VoFIterator > | m_vofItIrregColorDomHi [EBAMRPO_NUMSTEN][SpaceDim] |
Vector< Vector< RefCountedPtr < LayoutData< EBCellFAB > > > > | m_cacheInhomDomBCLo |
Vector< Vector< RefCountedPtr < LayoutData< EBCellFAB > > > > | m_cacheInhomDomBCHi |
LayoutData< CFIVS > | m_loCFIVS [SpaceDim] |
LayoutData< CFIVS > | m_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< IntVect > | m_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 |
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().
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.
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.
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).
a_rhs | The right hand side of the equation to be scaled. |
Implements TGAHelmOp< LevelData< EBCellFAB > >.
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.
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] |
Implements LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >.
References EBLevelGrid::getDomain(), EBLevelGrid::getEBISL(), Box::grow(), m_dx, m_eblg, and SpaceDim.
EBLevelGrid EBAMRPoissonOp::getEBLG | ( | ) | [inline] |
References m_eblg.
EBLevelGrid EBAMRPoissonOp::getEBLGCoarMG | ( | ) | [inline] |
References m_eblgCoarMG.
static void EBAMRPoissonOp::setOperatorTime | ( | Real | a_time | ) | [inline, static] |
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.
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::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] |
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBAMRPoissonOp::buildCopier | ( | Copier & | a_copier, | |
const LevelData< EBCellFAB > & | a_lhs, | |||
const LevelData< EBCellFAB > & | a_rhs | |||
) | [virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBAMRPoissonOp::assignCopier | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_rhs, | |||
const Copier & | a_copier | |||
) | [virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
Real EBAMRPoissonOp::AMRNorm | ( | const LevelData< EBCellFAB > & | a_coarResid, | |
const LevelData< EBCellFAB > & | a_fineResid, | |||
const int & | a_refRat, | |||
const int & | a_ord | |||
) | [virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
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 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 > >.
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 > >.
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
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.
const RefCountedPtr<BaseDomainBC> EBAMRPoissonOp::getDomainBC | ( | ) | [inline] |
References m_domainBC.
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 | ( | EBCellFAB & | a_phi, | |
const DataIndex & | a_datInd, | |||
int | a_idir, | |||
Side::LoHiSide | a_hiorlo | |||
) | [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().
int EBAMRPoissonOp::s_numComps [static] |
int EBAMRPoissonOp::s_whichComp [static] |
LevelData<EBCellFAB> EBAMRPoissonOp::m_resThisLevel [protected] |
bool EBAMRPoissonOp::s_turnOffBCs [static, protected] |
bool EBAMRPoissonOp::s_doEBEllipticLoadBalance [static, protected] |
bool EBAMRPoissonOp::s_areaFracWeighted [static, protected] |
int EBAMRPoissonOp::m_testRef [protected] |
const IntVect EBAMRPoissonOp::m_ghostCellsPhi [protected] |
const IntVect EBAMRPoissonOp::m_ghostCellsRHS [protected] |
RefCountedPtr<EBQuadCFInterp> EBAMRPoissonOp::m_quadCFIWithCoar [protected] |
EBLevelGrid EBAMRPoissonOp::m_eblg [protected] |
EBLevelGrid EBAMRPoissonOp::m_eblgFine [protected] |
EBLevelGrid EBAMRPoissonOp::m_eblgCoar [protected] |
EBLevelGrid EBAMRPoissonOp::m_eblgCoarMG [protected] |
Referenced by getEBLGCoarMG().
EBLevelGrid EBAMRPoissonOp::m_eblgCoarsenedFine [protected] |
RefCountedPtr<BaseDomainBC> EBAMRPoissonOp::m_domainBC [protected] |
Referenced by getDomainBC().
RefCountedPtr<BaseEBBC> EBAMRPoissonOp::m_ebBC [protected] |
LayoutData<Vector<VolIndex> > EBAMRPoissonOp::m_rhsSetList [protected] |
Referenced by getListValue(), and getRhsSetList().
RealVect EBAMRPoissonOp::m_dxFine [protected] |
RealVect EBAMRPoissonOp::m_dx [protected] |
RealVect EBAMRPoissonOp::m_dxCoar [protected] |
RealVect EBAMRPoissonOp::m_invDx [protected] |
RealVect EBAMRPoissonOp::m_invDx2 [protected] |
Real EBAMRPoissonOp::m_dxScale [protected] |
Real EBAMRPoissonOp::m_alpha [protected] |
Referenced by getAlphaBeta().
Real EBAMRPoissonOp::m_aCoef [protected] |
Real EBAMRPoissonOp::m_beta [protected] |
Referenced by getAlphaBeta().
Real EBAMRPoissonOp::m_bCoef [protected] |
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] |
RealVect EBAMRPoissonOp::m_origin [protected] |
int EBAMRPoissonOp::m_refToFine [protected] |
int EBAMRPoissonOp::m_refToCoar [protected] |
bool EBAMRPoissonOp::m_hasFine [protected] |
bool EBAMRPoissonOp::m_hasInterpAve [protected] |
bool EBAMRPoissonOp::m_hasCoar [protected] |
int EBAMRPoissonOp::m_numPreCondIters [protected] |
int EBAMRPoissonOp::m_relaxType [protected] |
bool EBAMRPoissonOp::m_hasEBCF [protected] |
Copier EBAMRPoissonOp::m_exchangeCopier [protected] |
EBMGAverage EBAMRPoissonOp::m_ebAverage [protected] |
EBMGInterp EBAMRPoissonOp::m_ebInterp [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBAMRPoissonOp::m_opStencil [protected] |
Referenced by getVoFStencil().
LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_opEBStencil [protected] |
LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_opEBStencilInhomDomLo[SpaceDim] [protected] |
LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_opEBStencilInhomDomHi[SpaceDim] [protected] |
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] |
LayoutData<RefCountedPtr<EBSTENCIL_T> > EBAMRPoissonOp::m_invDiagEBStencil [protected] |
LayoutData<BaseIVFAB<Real> > EBAMRPoissonOp::m_alphaDiagWeight [protected] |
Referenced by getAlphaDiagWeight().
LayoutData<BaseIVFAB<Real> > EBAMRPoissonOp::m_betaDiagWeight [protected] |
LayoutData<BaseIVFAB<Real> > EBAMRPoissonOp::m_one [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrreg [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrregColor[EBAMRPO_NUMSTEN] [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrregDomLo[SpaceDim] [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrregDomHi[SpaceDim] [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrregColorDomLo[EBAMRPO_NUMSTEN][SpaceDim] [protected] |
LayoutData<VoFIterator > EBAMRPoissonOp::m_vofItIrregColorDomHi[EBAMRPO_NUMSTEN][SpaceDim] [protected] |
Vector<Vector<RefCountedPtr<LayoutData<EBCellFAB> > > > EBAMRPoissonOp::m_cacheInhomDomBCLo [protected] |
Vector<Vector<RefCountedPtr<LayoutData<EBCellFAB> > > > EBAMRPoissonOp::m_cacheInhomDomBCHi [protected] |
LayoutData<CFIVS> EBAMRPoissonOp::m_loCFIVS[SpaceDim] [protected] |
LayoutData<CFIVS> EBAMRPoissonOp::m_hiCFIVS[SpaceDim] [protected] |
EBFastFR EBAMRPoissonOp::m_fastFR [protected] |
LayoutData< Vector<FaceIndex> > EBAMRPoissonOp::m_faceitCoar[2 *SpaceDim] [protected] |
LayoutData< Vector<VoFStencil> > EBAMRPoissonOp::m_stencilCoar[2 *SpaceDim] [protected] |
bool EBAMRPoissonOp::m_hasMGObjects [protected] |
bool EBAMRPoissonOp::m_layoutChanged [protected] |
Vector<IntVect> EBAMRPoissonOp::m_colors [protected] |
EBMGAverage EBAMRPoissonOp::m_ebAverageMG [protected] |
EBMGInterp EBAMRPoissonOp::m_ebInterpMG [protected] |
DisjointBoxLayout EBAMRPoissonOp::m_dblCoarMG [protected] |
EBISLayout EBAMRPoissonOp::m_ebislCoarMG [protected] |
ProblemDomain EBAMRPoissonOp::m_domainCoarMG [protected] |