Chombo + EB  3.2
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | List of all members
EBQuadCFInterp Class Reference

#include <EBQuadCFInterp.H>

Inheritance diagram for EBQuadCFInterp:
Inheritance graph
[legend]

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< EBCFDatagetEBCFData () 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
 

Protected Attributes

RefCountedPtr< EBCFDatam_ebcfdata
 
LevelData< EBCellFABm_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< IntVectSetm_ebcfivsLo [SpaceDim]
 
LayoutData< IntVectSetm_ebcfivsHi [SpaceDim]
 
CornerCopier m_cornerCopier
 
IntVectSet m_excludeIVSCoar
 
bool m_doEBCFCrossing
 
int m_refRat
 
ProblemDomain m_domainFine
 
ProblemDomain m_domainCoar
 
- Protected Attributes inherited from QuadCFInterp
BoxLayout m_coarBoxes
 
int m_level
 
int m_nComp
 
int m_refRatio
 
Real m_dxFine
 
LayoutData< QuadCFStencilm_loQCFS [SpaceDim]
 
LayoutData< QuadCFStencilm_hiQCFS [SpaceDim]
 
BoxLayoutData< FArrayBoxm_coarBuffer
 
Copier m_copier
 
DisjointBoxLayout m_inputFineLayout
 
DisjointBoxLayout m_inputCoarLayout
 
bool m_isDefined
 has full define function been called? More...
 
bool m_fineCoversCoarse
 
ProblemDomain m_domainFine
 

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
 

Detailed Description

Fills one layer of fine level ghost cells by piecewise linear interpolation from the coarse level.

Constructor & Destructor Documentation

◆ EBQuadCFInterp() [1/3]

EBQuadCFInterp::EBQuadCFInterp ( )

Default constructor. User must subsequently call define().

◆ ~EBQuadCFInterp()

virtual EBQuadCFInterp::~EBQuadCFInterp ( )
virtual

◆ EBQuadCFInterp() [2/3]

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() [3/3]

EBQuadCFInterp::EBQuadCFInterp ( const EBQuadCFInterp ebcin)
inlineprivate

References MayDay::Error().

Member Function Documentation

◆ define()

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.

◆ interpolate()

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}

◆ isDefined()

bool EBQuadCFInterp::isDefined ( ) const

◆ interpEBCFCrossing()

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

◆ interpEBCFCorners()

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.

◆ getEBCFData()

RefCountedPtr<EBCFData> EBQuadCFInterp::getEBCFData ( ) const
inline

◆ getEBCFIVS()

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

Referenced by getEBCFData().

◆ buildEBCFStencils()

void EBQuadCFInterp::buildEBCFStencils ( )
protected

Builds a stencil for each vof that needs an EB aware CF interpolation

Referenced by getEBCFData().

◆ buildEBCFCornerStencils()

void EBQuadCFInterp::buildEBCFCornerStencils ( const LayoutData< IntVectSet > &  a_cfivs)
protected

Builds a stencil for each corner-vof that needs an EB aware CF interpolation

Referenced by getEBCFData().

◆ getPhiStarStencil()

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

◆ getStencils()

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

◆ operator=()

void EBQuadCFInterp::operator= ( const EBQuadCFInterp fabin)
inlineprivate

References MayDay::Error().

Member Data Documentation

◆ m_ebcfdata

RefCountedPtr<EBCFData> EBQuadCFInterp::m_ebcfdata
protected

Referenced by getEBCFData().

◆ m_ebBufferCoarsenedFine

LevelData<EBCellFAB> EBQuadCFInterp::m_ebBufferCoarsenedFine
protected

◆ m_coarStencilLo

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_coarStencilLo[SpaceDim]
protected

◆ m_coarStencilHi

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_coarStencilHi[SpaceDim]
protected

◆ m_fineStencilLo

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_fineStencilLo[SpaceDim]
protected

◆ m_fineStencilHi

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_fineStencilHi[SpaceDim]
protected

◆ m_stencilCorners

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_stencilCorners
protected

◆ m_stencilEdges

LayoutData<BaseIVFAB<VoFStencil> > EBQuadCFInterp::m_stencilEdges
protected

◆ m_ebcfivsLo

LayoutData<IntVectSet> EBQuadCFInterp::m_ebcfivsLo[SpaceDim]
protected

◆ m_ebcfivsHi

LayoutData<IntVectSet> EBQuadCFInterp::m_ebcfivsHi[SpaceDim]
protected

◆ m_cornerCopier

CornerCopier EBQuadCFInterp::m_cornerCopier
protected

◆ m_excludeIVSCoar

IntVectSet EBQuadCFInterp::m_excludeIVSCoar
protected

◆ m_doEBCFCrossing

bool EBQuadCFInterp::m_doEBCFCrossing
protected

◆ m_refRat

int EBQuadCFInterp::m_refRat
protected

◆ s_ivDebFine

IntVect EBQuadCFInterp::s_ivDebFine
staticprotected

◆ s_ivDebCoar

IntVect EBQuadCFInterp::s_ivDebCoar
staticprotected

◆ m_domainFine

ProblemDomain EBQuadCFInterp::m_domainFine
protected

◆ m_domainCoar

ProblemDomain EBQuadCFInterp::m_domainCoar
protected

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