#include <QuadCFStencil.H>
QuadCFStencil is a wrapper around a bunch of things that allow LevelOp to do coarse-fine interpolation on a particular face of a grid.
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} | |
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 | |
bool | isDefined () const |
{ Access functions} | |
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) |
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 | |||
) |
QuadCFStencil::QuadCFStencil | ( | const QuadCFStencil & | cfs_in | ) | [inline, private] |
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
bool QuadCFStencil::isEmpty | ( | ) | const [inline] |
are there any interpolation points? \ returns false if so.
References CH_assert, CFStencil::isDefined(), CFStencil::isEmpty(), and m_baseCFS.
const IntVectSet& QuadCFStencil::getFineIVS | ( | ) | const [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.
const IntVectSet& QuadCFStencil::getCoarIVS | ( | ) | const [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.
bool QuadCFStencil::finePacked | ( | ) | const [inline] |
References CFStencil::isPacked(), and m_baseCFS.
const Box& QuadCFStencil::packedBox | ( | ) | const [inline] |
References m_baseCFS, and CFStencil::packedBox().
void QuadCFStencil::setDefaultValues | ( | ) | [private] |
void QuadCFStencil::addFabToSten | ( | const BaseFab< Real > & | fabin_a, | |
DerivStencil & | sten_a | |||
) | [private] |
void QuadCFStencil::operator= | ( | const QuadCFStencil & | cfs_in | ) | [inline, private] |
void QuadCFStencil::buildStencils | ( | const IntVectSet & | ivsAllGood | ) | [private] |
bool QuadCFStencil::m_isDefined [protected] |
int QuadCFStencil::m_direction [protected] |
IntVectSet QuadCFStencil::m_ivsStandard [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.
IntVectSet QuadCFStencil::m_ivsQuadd [protected] |
set of all points which have at least one derivative shifted
BaseFab<DerivStencil> QuadCFStencil::m_mixedSten [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
BaseFab<DerivStencil> QuadCFStencil::m_second[SpaceDim] [protected] |
stencil information for unmixed derivatives (second derivatives)
BaseFab<DerivStencil> QuadCFStencil::m_firstD[SpaceDim] [protected] |
stencil information for unmixed derivatives (first derivatives)
BaseFab<bool> QuadCFStencil::m_dropOrd [protected] |
whether to drop order at any one-sided point
CFStencil QuadCFStencil::m_baseCFS [protected] |
Referenced by finePacked(), getCoarIVS(), getFineIVS(), isEmpty(), and packedBox().