Chombo + EB
3.0
|
class to encapsulate CF info for quadratic interpolation More...
#include <QuadCFStencil.H>
Public Member Functions | |
Real | computeSecondDerivative (const BaseFab< Real > &a_phic, int a_derivdir, int a_ivar, const IntVect &a_ivin, Real a_dx) const |
{ Derivative functions} More... | |
Real | computeFirstDerivative (const BaseFab< Real > &a_phic, int a_derivdir, int a_ivar, const IntVect &a_ivin, Real a_dx) const |
Real | computeMixedDerivative (const BaseFab< Real > &a_phic, int a_ivar, const IntVect &a_ivin, Real a_dx) const |
QuadCFStencil () | |
~QuadCFStencil () | |
QuadCFStencil (const Box &a_fine_domain, const Box &a_grid, const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout &a_coarBoxes, int a_refRatio, int a_direction, Side::LoHiSide a_hiorlo) | |
QuadCFStencil (const ProblemDomain &a_fine_domain, const Box &a_grid, const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout &a_coarBoxes, int a_refRatio, int a_direction, Side::LoHiSide a_hiorlo) | |
void | define (const Box &a_fine_domain, const Box &a_grid, const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout &a_coarBoxes, int a_refRatio, int a_direction, Side::LoHiSide a_hiorlo) |
void | define (const ProblemDomain &a_fine_domain, const Box &a_grid, const DisjointBoxLayout &a_fineBoxes, const DisjointBoxLayout &a_coarBoxes, int a_refRatio, int a_direction, Side::LoHiSide a_hiorlo) |
void | define (const ProblemDomain &a_fine_domain, const Box &a_grid, const Vector< Box > &a_periodicBoxes, const Vector< Box > &a_coarsenedPeriodicBoxes, const DisjointBoxLayout &a_coarBoxes, int a_refRatio, int a_direction, Side::LoHiSide a_hiorlo) |
faster constructor that requires the use of CFStencil::buildPeriodicVector More... | |
bool | isDefined () const |
{ Access functions} More... | |
bool | isEmpty () const |
const IntVectSet & | getFineIVS () const |
const IntVectSet & | getCoarIVS () const |
bool | finePacked () const |
const Box & | packedBox () const |
Protected Attributes | |
bool | m_isDefined |
int | m_direction |
IntVectSet | m_ivsStandard |
IntVectSet | m_ivsQuadd |
BaseFab< DerivStencil > | m_mixedSten |
BaseFab< DerivStencil > | m_second [SpaceDim] |
BaseFab< DerivStencil > | m_firstD [SpaceDim] |
BaseFab< bool > | m_dropOrd |
CFStencil | m_baseCFS |
Private Member Functions | |
void | setDefaultValues () |
void | addFabToSten (const BaseFab< Real > &fabin_a, DerivStencil &sten_a) |
void | operator= (const QuadCFStencil &cfs_in) |
QuadCFStencil (const QuadCFStencil &cfs_in) | |
void | buildStencils (const IntVectSet &ivsAllGood) |
class to encapsulate CF info for quadratic interpolation
QuadCFStencil is a wrapper around a bunch of things that allow LevelOp to do coarse-fine interpolation on a particular face of a grid.
QuadCFStencil::QuadCFStencil | ( | ) |
QuadCFStencil::~QuadCFStencil | ( | ) |
QuadCFStencil::QuadCFStencil | ( | const Box & | a_fine_domain, |
const Box & | a_grid, | ||
const DisjointBoxLayout & | a_fineBoxes, | ||
const DisjointBoxLayout & | a_coarBoxes, | ||
int | a_refRatio, | ||
int | a_direction, | ||
Side::LoHiSide | a_hiorlo | ||
) |
QuadCFStencil::QuadCFStencil | ( | const ProblemDomain & | a_fine_domain, |
const Box & | a_grid, | ||
const DisjointBoxLayout & | a_fineBoxes, | ||
const DisjointBoxLayout & | a_coarBoxes, | ||
int | a_refRatio, | ||
int | a_direction, | ||
Side::LoHiSide | a_hiorlo | ||
) |
|
inlineprivate |
References buildStencils().
Real QuadCFStencil::computeSecondDerivative | ( | const BaseFab< Real > & | a_phic, |
int | a_derivdir, | ||
int | a_ivar, | ||
const IntVect & | a_ivin, | ||
Real | a_dx | ||
) | const |
{ Derivative functions}
compute second derivative in devdir_a direction at coarse point a_ivin Uses centered finite diff approximation if ivs_standard_m.contains(a_ivin ). Otherwise, it uses the stencil from second_m Asserts that a_derivdir != direction of face
Real QuadCFStencil::computeFirstDerivative | ( | const BaseFab< Real > & | a_phic, |
int | a_derivdir, | ||
int | a_ivar, | ||
const IntVect & | a_ivin, | ||
Real | a_dx | ||
) | const |
compute first derivative in devdir_a direction at coarse point a_ivin Uses centered finite diff approximation if ivs_standard_m.contains(a_ivin ). Otherwise, it uses the stencil from firstd_m Asserts that a_derivdir != direction of face
Real QuadCFStencil::computeMixedDerivative | ( | const BaseFab< Real > & | a_phic, |
int | a_ivar, | ||
const IntVect & | a_ivin, | ||
Real | a_dx | ||
) | const |
compute mixed derivative (direction is unambiguous. x and y are the two directions tangential to face) at coarse point a_ivin. \ In two dimensions, always returns 0. \ Uses centered finite diff approximation if ivs_standard_m.contains(a_ivin ). It uses the stencil from mixed_sten_m.\ Returns 0 if SpaceDim != 3
void QuadCFStencil::define | ( | const Box & | a_fine_domain, |
const Box & | a_grid, | ||
const DisjointBoxLayout & | a_fineBoxes, | ||
const DisjointBoxLayout & | a_coarBoxes, | ||
int | a_refRatio, | ||
int | a_direction, | ||
Side::LoHiSide | a_hiorlo | ||
) |
void QuadCFStencil::define | ( | const ProblemDomain & | a_fine_domain, |
const Box & | a_grid, | ||
const DisjointBoxLayout & | a_fineBoxes, | ||
const DisjointBoxLayout & | a_coarBoxes, | ||
int | a_refRatio, | ||
int | a_direction, | ||
Side::LoHiSide | a_hiorlo | ||
) |
void QuadCFStencil::define | ( | const ProblemDomain & | a_fine_domain, |
const Box & | a_grid, | ||
const Vector< Box > & | a_periodicBoxes, | ||
const Vector< Box > & | a_coarsenedPeriodicBoxes, | ||
const DisjointBoxLayout & | a_coarBoxes, | ||
int | a_refRatio, | ||
int | a_direction, | ||
Side::LoHiSide | a_hiorlo | ||
) |
faster constructor that requires the use of CFStencil::buildPeriodicVector
bool QuadCFStencil::isDefined | ( | ) | const |
{ Access functions}
has full define function been called? return true if so
|
inline |
are there any interpolation points? \ returns false if so.
References CH_assert, CFStencil::isDefined(), CFStencil::isEmpty(), and m_baseCFS.
|
inline |
get fine intvects which need to be interpolated \ This will be empty if isEmpty() returns true
References CH_assert, CFStencil::getFineIVS(), CFStencil::isDefined(), and m_baseCFS.
|
inline |
get coarse intvects that underly fiinterpivs. This will be empty if isEmpty() returns true
References CH_assert, CFStencil::getCoarIVS(), CFStencil::isDefined(), and m_baseCFS.
|
inline |
References CFStencil::isPacked(), and m_baseCFS.
|
inline |
References m_baseCFS, and CFStencil::packedBox().
|
private |
|
private |
|
inlineprivate |
|
private |
Referenced by QuadCFStencil().
|
protected |
|
protected |
|
protected |
set of all points which have ALL their derivatives taken normally. This means that no stencil either leaves the domain or intersects the next finer level.
|
protected |
set of all points which have at least one derivative shifted
|
protected |
Derivative stencils. Only defined at intvects where there is at least one non-standard derivative to take (ie. at all points of ivs_Quadd) stencil information for mixed derivatives undefined if SpaceDim != 3
|
protected |
stencil information for unmixed derivatives (second derivatives)
|
protected |
stencil information for unmixed derivatives (first derivatives)
|
protected |
whether to drop order at any one-sided point
|
protected |
Referenced by finePacked(), getCoarIVS(), getFineIVS(), isEmpty(), and packedBox().