Chombo + EB  3.0
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
QuadCFStencil Class Reference

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 IntVectSetgetFineIVS () const
 
const IntVectSetgetCoarIVS () const
 
bool finePacked () const
 
const BoxpackedBox () const
 

Protected Attributes

bool m_isDefined
 
int m_direction
 
IntVectSet m_ivsStandard
 
IntVectSet m_ivsQuadd
 
BaseFab< DerivStencilm_mixedSten
 
BaseFab< DerivStencilm_second [SpaceDim]
 
BaseFab< DerivStencilm_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)
 

Detailed Description

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.

Constructor & Destructor Documentation

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

Member Function Documentation

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
void QuadCFStencil::setDefaultValues ( )
private
void QuadCFStencil::addFabToSten ( const BaseFab< Real > &  fabin_a,
DerivStencil sten_a 
)
private
void QuadCFStencil::operator= ( const QuadCFStencil cfs_in)
inlineprivate
void QuadCFStencil::buildStencils ( const IntVectSet ivsAllGood)
private

Member Data Documentation

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

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