EBQuadCFInterp Class Reference

#include <EBQuadCFInterp.H>

Inheritance diagram for EBQuadCFInterp:

Inheritance graph
[legend]

List of all members.


Detailed Description

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

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

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< 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

Static Protected Attributes

static IntVect s_ivDebFine
static IntVect s_ivDebCoar

Private Member Functions

 EBQuadCFInterp (const EBQuadCFInterp &ebcin)
void operator= (const EBQuadCFInterp &fabin)

Constructor & Destructor Documentation

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


Member Function Documentation

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


Member Data Documentation

Referenced by getEBCFData().

int EBQuadCFInterp::m_refRat [protected]

IntVect EBQuadCFInterp::s_ivDebFine [static, protected]

IntVect EBQuadCFInterp::s_ivDebCoar [static, protected]

Reimplemented from QuadCFInterp.


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

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