Chombo + EB + MF
3.2
|
#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 |
Public Member Functions inherited from QuadCFInterp | |
QuadCFInterp (const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout *a_coarBoxes, Real a_dxFine, int a_refRatio, int a_nComp, const Box &a_domf) | |
constructors, destructors, defines More... | |
QuadCFInterp (const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout *a_coarBoxes, Real a_dxFine, int a_refRatio, int a_nComp, const ProblemDomain &a_domf) | |
void | define (const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout *a_coarBoxes, Real a_dxFine, int a_refRatio, int a_nComp, const ProblemDomain &a_domf) |
QuadCFInterp () | |
virtual | ~QuadCFInterp () |
void | clear () |
void | coarseFineInterp (LevelData< FArrayBox > &a_phif, const LevelData< FArrayBox > &a_phic) |
bool | isDefined () 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 Member Functions inherited from QuadCFInterp | |
void | coarseFineInterp (BaseFab< Real > &a_phif, const BaseFab< Real > &a_phic, const QuadCFStencil &a_qcfs, const Side::LoHiSide a_hiorlo, const int a_idir, const Interval &a_variables) const |
void | getPhiStar (BaseFab< Real > &a_phistar, const BaseFab< Real > &a_phic, const QuadCFStencil &a_qcfs, const Side::LoHiSide a_hiorlo, const int a_idir, const Interval &a_variables) const |
void | interpOnIVS (BaseFab< Real > &a_phif, const BaseFab< Real > &a_phiStar, const QuadCFStencil &a_qcfs, const Side::LoHiSide a_hiorlo, const int a_idir, const Interval &a_variables) const |
Static Protected Attributes | |
static IntVect | s_ivDebFine |
static IntVect | s_ivDebCoar |
Private Member Functions | |
EBQuadCFInterp (const EBQuadCFInterp &ebcin) | |
void | operator= (const EBQuadCFInterp &fabin) |
Additional Inherited Members | |
Static Public Member Functions inherited from QuadCFInterp | |
static void | homogeneousCFInterp (LevelData< FArrayBox > &a_phif, LevelData< FArrayBox > &a_tanGrad, LayoutData< CFIVS > a_loCFIVS[SpaceDim], LayoutData< CFIVS > a_hiCFIVS[SpaceDim], Real a_dxLevel, Real a_dxCrse, int a_ncomp, LayoutData< TensorFineStencilSet > a_loTanStencilSets[SpaceDim], LayoutData< TensorFineStencilSet > a_hiTanStencilSets[SpaceDim]) |
static void | homogeneousCFInterpTanGrad (LevelData< FArrayBox > &a_tanGrad, const LevelData< FArrayBox > &a_phi, const DataIndex &a_DatInd, int a_idir, Side::LoHiSide a_hiorlo, Real a_dxLevel, Real a_dxCrse, int a_ncomp, LayoutData< TensorFineStencilSet > a_loTanStencilSets[SpaceDim], LayoutData< TensorFineStencilSet > a_hiTanStencilSets[SpaceDim]) |
static void | homogeneousCFInterpPhi (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo, LayoutData< CFIVS > a_loCFIVS[SpaceDim], LayoutData< CFIVS > a_hiCFIVS[SpaceDim], Real a_dxLevel, Real a_dxCrse, int a_ncomp) |
static void | interpPhiOnIVS (LevelData< FArrayBox > &a_phif, const FArrayBox &a_phistar, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS, Real a_dxLevel, Real a_dxCrse, int a_ncomp) |
Static Public Attributes inherited from QuadCFInterp | |
static bool | newCFInterMode |
Fills one layer of fine level ghost cells by piecewise linear interpolation from the coarse level.
EBQuadCFInterp::EBQuadCFInterp | ( | ) |
Default constructor. User must subsequently call define().
|
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.
|
inlineprivate |
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 |
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.
|
inline |
References buildEBCFCornerStencils(), buildEBCFStencils(), getEBCFIVS(), and m_ebcfdata.
|
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
Referenced by getEBCFData().
|
protected |
Builds a stencil for each vof that needs an EB aware CF interpolation
Referenced by getEBCFData().
|
protected |
Builds a stencil for each corner-vof that needs an EB aware CF interpolation
Referenced by getEBCFData().
|
protected |
|
protected |
|
inlineprivate |
References MayDay::Error().
|
protected |
Referenced by getEBCFData().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
staticprotected |
|
protected |
|
protected |