#include <EBQuadCFInterp.H>
Public Member Functions | |
EBQuadCFInterp () | |
virtual | ~EBQuadCFInterp () |
EBQuadCFInterp (const DisjointBoxLayout &a_dblFine, const DisjointBoxLayout &a_dblCoar, const EBISLayout &a_ebislFine, const EBISLayout &a_ebislCoar, const ProblemDomain &a_domainCoar, const int &a_nref, const int &a_nvar, const LayoutData< IntVectSet > &a_cfivs, const EBIndexSpace *const a_ebisPtr=Chombo_EBIS::instance(), bool a_doEBCFCrossing=true) | |
void | define (const DisjointBoxLayout &a_dblFine, const DisjointBoxLayout &a_dblCoar, const EBISLayout &a_ebislFine, const EBISLayout &a_ebislCoar, const ProblemDomain &a_domainCoar, const int &a_nref, const int &a_nvar, const LayoutData< IntVectSet > &a_cfivs, const EBIndexSpace *const a_ebisPtr=Chombo_EBIS::instance(), bool a_doEBCFCrossing=true) |
void | interpolate (LevelData< EBCellFAB > &a_fineData, const LevelData< EBCellFAB > &a_coarData, const Interval &a_variables, bool a_doOnlyRegularInterp=false) |
bool | isDefined () const |
void | interpEBCFCrossing (LevelData< EBCellFAB > &a_fineData, const LevelData< EBCellFAB > &a_coarData, const Interval &a_variables) |
void | interpEBCFCorners (LevelData< EBCellFAB > &a_fineData, const LevelData< EBCellFAB > &a_coarData, const Interval &a_variables) |
RefCountedPtr< EBCFData > | getEBCFData () const |
Protected Member Functions | |
bool | getEBCFIVS (const LayoutData< IntVectSet > &a_cfivs) |
void | buildEBCFStencils () |
void | buildEBCFCornerStencils (const LayoutData< IntVectSet > &a_cfivs) |
int | getPhiStarStencil (VoFStencil &a_stencil, const VolIndex &a_ghostVoFFine, const VolIndex &a_ghostVoFCoar, const EBISBox &a_ebisBoxCoar, int a_idir, Side::LoHiSide a_sd, int a_refRat) |
int | getStencils (VoFStencil &a_fineStencil, VoFStencil &a_coarStencil, const VolIndex &a_ghostVoFFine, const VolIndex &a_ghostVoFCoar, const EBISBox &a_ebisBoxFine, const EBISBox &a_ebisBoxCoar, int a_idir, Side::LoHiSide a_sd, int a_refRat) |
Protected Attributes | |
RefCountedPtr< EBCFData > | m_ebcfdata |
LevelData< EBCellFAB > | m_ebBufferCoarsenedFine |
LayoutData< BaseIVFAB < VoFStencil > > | m_coarStencilLo [SpaceDim] |
LayoutData< BaseIVFAB < VoFStencil > > | m_coarStencilHi [SpaceDim] |
LayoutData< BaseIVFAB < VoFStencil > > | m_fineStencilLo [SpaceDim] |
LayoutData< BaseIVFAB < VoFStencil > > | m_fineStencilHi [SpaceDim] |
LayoutData< BaseIVFAB < VoFStencil > > | m_stencilCorners |
LayoutData< BaseIVFAB < VoFStencil > > | m_stencilEdges |
LayoutData< IntVectSet > | m_ebcfivsLo [SpaceDim] |
LayoutData< IntVectSet > | m_ebcfivsHi [SpaceDim] |
CornerCopier | m_cornerCopier |
IntVectSet | m_excludeIVSCoar |
bool | m_doEBCFCrossing |
int | m_refRat |
ProblemDomain | m_domainFine |
ProblemDomain | m_domainCoar |
Static Protected Attributes | |
static IntVect | s_ivDebFine |
static IntVect | s_ivDebCoar |
Private Member Functions | |
EBQuadCFInterp (const EBQuadCFInterp &ebcin) | |
void | operator= (const EBQuadCFInterp &fabin) |
EBQuadCFInterp::EBQuadCFInterp | ( | ) |
Default constructor. User must subsequently call define().
virtual EBQuadCFInterp::~EBQuadCFInterp | ( | ) | [virtual] |
EBQuadCFInterp::EBQuadCFInterp | ( | const DisjointBoxLayout & | a_dblFine, | |
const DisjointBoxLayout & | a_dblCoar, | |||
const EBISLayout & | a_ebislFine, | |||
const EBISLayout & | a_ebislCoar, | |||
const ProblemDomain & | a_domainCoar, | |||
const int & | a_nref, | |||
const int & | a_nvar, | |||
const LayoutData< IntVectSet > & | a_cfivs, | |||
const EBIndexSpace *const | a_ebisPtr = Chombo_EBIS::instance() , |
|||
bool | a_doEBCFCrossing = true | |||
) |
Defining constructor. Constructs a valid object. Equivalent to default construction followed by define().
{ Arguments:}\ dblFine, dblCoar: The fine and coarse layouts of the data. \ ebislFine, ebislCoar: The fine and coarse layouts of the geometric description.\ nref: The refinement ratio between the two levels. \ nvar: The number of variables contained in the data at each VoF. \ Set doEBCFCrossing=false if you are sure that tall irregular cells are on the finest grid.
EBQuadCFInterp::EBQuadCFInterp | ( | const EBQuadCFInterp & | ebcin | ) | [inline, private] |
References MayDay::Error().
void EBQuadCFInterp::define | ( | const DisjointBoxLayout & | a_dblFine, | |
const DisjointBoxLayout & | a_dblCoar, | |||
const EBISLayout & | a_ebislFine, | |||
const EBISLayout & | a_ebislCoar, | |||
const ProblemDomain & | a_domainCoar, | |||
const int & | a_nref, | |||
const int & | a_nvar, | |||
const LayoutData< IntVectSet > & | a_cfivs, | |||
const EBIndexSpace *const | a_ebisPtr = Chombo_EBIS::instance() , |
|||
bool | a_doEBCFCrossing = true | |||
) |
Defines this object. Existing information is overriden.
{ Arguments:}\ dblFine, dblCoar: The fine and coarse layouts of the data.\ ebislFine, ebislCoar: The fine and coarse layouts of the geometric description.\ nref: The refinement ratio between the two levels. \ nvar: The number of variables contained in the data at each VoF. \ Set doEBCFCrossing=false if you are sure that tall irregular cells are on the finest grid.
void EBQuadCFInterp::interpolate | ( | LevelData< EBCellFAB > & | a_fineData, | |
const LevelData< EBCellFAB > & | a_coarData, | |||
const Interval & | a_variables, | |||
bool | a_doOnlyRegularInterp = false | |||
) |
Interpolate the fine data from the coarse data over the intersection of the fine layout with the refined coarse layout. \ { Arguments:}\ coarDataOld: The data over the coarse layout.\ fineData: The data over the fine layout. \ Fine and coarse data must have the same number of variables.\ variables: The variables to interpolate. Those not in this range will be left alone. This range of variables must be in both the coarse and fine data. { This routine assumes that coarse data that lives under finer grids has been coarsened from the finer data to O(h^3). If embedded boundaries cross coarse fine boundaries and this is not the case, O(1) errors will happen}
bool EBQuadCFInterp::isDefined | ( | ) | const |
has full define function been called? return true if so
Reimplemented from QuadCFInterp.
void EBQuadCFInterp::interpEBCFCrossing | ( | LevelData< EBCellFAB > & | a_fineData, | |
const LevelData< EBCellFAB > & | a_coarData, | |||
const Interval & | a_variables | |||
) |
Use the stencils to actually do EB aware interpolation
void EBQuadCFInterp::interpEBCFCorners | ( | LevelData< EBCellFAB > & | a_fineData, | |
const LevelData< EBCellFAB > & | a_coarData, | |||
const Interval & | a_variables | |||
) |
Use the corner-stencils to actually do EB aware interpolation Use coarse value when stencil is empty.
RefCountedPtr<EBCFData> EBQuadCFInterp::getEBCFData | ( | ) | const [inline] |
References m_ebcfdata.
bool EBQuadCFInterp::getEBCFIVS | ( | const LayoutData< IntVectSet > & | a_cfivs | ) | [protected] |
Builds the IntVectSets for where we need to do EB aware CF interpolation. Returns a bool that indicates if we need to do EB aware CF interp
void EBQuadCFInterp::buildEBCFStencils | ( | ) | [protected] |
Builds a stencil for each vof that needs an EB aware CF interpolation
void EBQuadCFInterp::buildEBCFCornerStencils | ( | const LayoutData< IntVectSet > & | a_cfivs | ) | [protected] |
Builds a stencil for each corner-vof that needs an EB aware CF interpolation
int EBQuadCFInterp::getPhiStarStencil | ( | VoFStencil & | a_stencil, | |
const VolIndex & | a_ghostVoFFine, | |||
const VolIndex & | a_ghostVoFCoar, | |||
const EBISBox & | a_ebisBoxCoar, | |||
int | a_idir, | |||
Side::LoHiSide | a_sd, | |||
int | a_refRat | |||
) | [protected] |
int EBQuadCFInterp::getStencils | ( | VoFStencil & | a_fineStencil, | |
VoFStencil & | a_coarStencil, | |||
const VolIndex & | a_ghostVoFFine, | |||
const VolIndex & | a_ghostVoFCoar, | |||
const EBISBox & | a_ebisBoxFine, | |||
const EBISBox & | a_ebisBoxCoar, | |||
int | a_idir, | |||
Side::LoHiSide | a_sd, | |||
int | a_refRat | |||
) | [protected] |
void EBQuadCFInterp::operator= | ( | const EBQuadCFInterp & | fabin | ) | [inline, private] |
References MayDay::Error().
RefCountedPtr<EBCFData> EBQuadCFInterp::m_ebcfdata [protected] |
Referenced by getEBCFData().
LevelData<EBCellFAB> EBQuadCFInterp::m_ebBufferCoarsenedFine [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_coarStencilLo[SpaceDim] [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_coarStencilHi[SpaceDim] [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_fineStencilLo[SpaceDim] [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_fineStencilHi[SpaceDim] [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_stencilCorners [protected] |
LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_stencilEdges [protected] |
LayoutData<IntVectSet> EBQuadCFInterp::m_ebcfivsLo[SpaceDim] [protected] |
LayoutData<IntVectSet> EBQuadCFInterp::m_ebcfivsHi[SpaceDim] [protected] |
CornerCopier EBQuadCFInterp::m_cornerCopier [protected] |
IntVectSet EBQuadCFInterp::m_excludeIVSCoar [protected] |
bool EBQuadCFInterp::m_doEBCFCrossing [protected] |
int EBQuadCFInterp::m_refRat [protected] |
IntVect EBQuadCFInterp::s_ivDebFine [static, protected] |
IntVect EBQuadCFInterp::s_ivDebCoar [static, protected] |
ProblemDomain EBQuadCFInterp::m_domainFine [protected] |
Reimplemented from QuadCFInterp.
ProblemDomain EBQuadCFInterp::m_domainCoar [protected] |