#include <NodeQuadCFInterp.H>
Public Member Functions | |
Constructors, destructor and defines | |
NodeQuadCFInterp () | |
NodeQuadCFInterp (const DisjointBoxLayout &a_grids, Real a_dx, const ProblemDomain &a_domain, const LayoutData< NodeCFIVS > *const a_loCFIVS, const LayoutData< NodeCFIVS > *const a_hiCFIVS, int a_refToCoarse, int a_interpolationDegree=2, int a_ncomp=1, bool a_verbose=false) | |
NodeQuadCFInterp (const DisjointBoxLayout &a_grids, Real a_dx, const Box &a_domain, const LayoutData< NodeCFIVS > *const a_loCFIVS, const LayoutData< NodeCFIVS > *const a_hiCFIVS, int a_refToCoarse, int a_interpolationDegree=2, int a_ncomp=1, bool a_verbose=false) | |
~NodeQuadCFInterp () | |
void | define (const DisjointBoxLayout &a_grids, Real a_dx, const ProblemDomain &a_domain, const LayoutData< NodeCFIVS > *const a_loCFIVS, const LayoutData< NodeCFIVS > *const a_hiCFIVS, int a_refToCoarse, int a_interpolationDegree=2, int a_ncomp=1, bool a_verbose=false) |
void | define (const DisjointBoxLayout &a_grids, Real a_dx, const Box &a_domain, const LayoutData< NodeCFIVS > *const a_loCFIVS, const LayoutData< NodeCFIVS > *const a_hiCFIVS, int a_refToCoarse, int a_interpolationDegree=2, int a_ncomp=1, bool a_verbose=false) |
void | setDomainNodeBC (const DomainNodeBC &a_dombcIn) |
Access functions | |
bool | isDefined () const |
Parameter-setting functions | |
void | setVerbose (bool a_verbose) |
Data modification functions | |
void | coarseFineInterp (LevelData< NodeFArrayBox > &a_phiFine, const LevelData< NodeFArrayBox > &a_phiCoarse, bool a_inhomogeneous) |
Protected Attributes | |
DisjointBoxLayout | m_grids |
int | m_ncomp |
int | m_refToCoarse |
int | m_coarsenings |
bool | m_isDefined |
bool | m_isBCDefined |
Real | m_dx |
Real | m_dxPenultimate |
ProblemDomain | m_domainPenultimate |
DomainNodeBC | m_dombc |
Vector< LevelData < NodeFArrayBox > * > | m_inter |
Vector< NodeQuadCFInterp2 * > | m_qcfi2 |
Vector< LayoutData< NodeCFIVS > * > | m_loCFIVScoarser |
Vector< LayoutData< NodeCFIVS > * > | m_hiCFIVScoarser |
bool | m_verbose |
Private Member Functions | |
void | clearMemory () |
void | setDefaultValues () |
NodeQuadCFInterp::NodeQuadCFInterp | ( | ) |
Default constructor. User must subsequently call define().
NodeQuadCFInterp::NodeQuadCFInterp | ( | const DisjointBoxLayout & | a_grids, | |
Real | a_dx, | |||
const ProblemDomain & | a_domain, | |||
const LayoutData< NodeCFIVS > *const | a_loCFIVS, | |||
const LayoutData< NodeCFIVS > *const | a_hiCFIVS, | |||
int | a_refToCoarse, | |||
int | a_interpolationDegree = 2 , |
|||
int | a_ncomp = 1 , |
|||
bool | a_verbose = false | |||
) |
Constructor calls setDefaultValues() and then calls define() with the same arguments.
NodeQuadCFInterp::NodeQuadCFInterp | ( | const DisjointBoxLayout & | a_grids, | |
Real | a_dx, | |||
const Box & | a_domain, | |||
const LayoutData< NodeCFIVS > *const | a_loCFIVS, | |||
const LayoutData< NodeCFIVS > *const | a_hiCFIVS, | |||
int | a_refToCoarse, | |||
int | a_interpolationDegree = 2 , |
|||
int | a_ncomp = 1 , |
|||
bool | a_verbose = false | |||
) |
Constructor calls setDefaultValues() and then calls define() with the same arguments.
NodeQuadCFInterp::~NodeQuadCFInterp | ( | ) |
Destructor.
void NodeQuadCFInterp::define | ( | const DisjointBoxLayout & | a_grids, | |
Real | a_dx, | |||
const ProblemDomain & | a_domain, | |||
const LayoutData< NodeCFIVS > *const | a_loCFIVS, | |||
const LayoutData< NodeCFIVS > *const | a_hiCFIVS, | |||
int | a_refToCoarse, | |||
int | a_interpolationDegree = 2 , |
|||
int | a_ncomp = 1 , |
|||
bool | a_verbose = false | |||
) |
Full define function. Makes all coarse-fine information and sets internal variables. The current level is taken to be the fine level.
a_grids | CELL-centered grids at this level |
a_dx | mesh spacing at this level |
a_domain | CELL-centered physical domain at this level |
a_loCFIVS | pointer to object storing coarse/fine interface nodes |
a_hiCFIVS | pointer to object storing coarse/fine interface nodes |
a_refToCoarse | refinement ratio between this and next coarser level |
a_interpolationDegree | degree of interpolation; 1 for (bi)linear, 2 for (bi)quadratic |
a_ncomp | number of components of data |
a_verbose | verbose output flag |
void NodeQuadCFInterp::define | ( | const DisjointBoxLayout & | a_grids, | |
Real | a_dx, | |||
const Box & | a_domain, | |||
const LayoutData< NodeCFIVS > *const | a_loCFIVS, | |||
const LayoutData< NodeCFIVS > *const | a_hiCFIVS, | |||
int | a_refToCoarse, | |||
int | a_interpolationDegree = 2 , |
|||
int | a_ncomp = 1 , |
|||
bool | a_verbose = false | |||
) |
Full define function. Makes all coarse-fine information and sets internal variables. The current level is taken to be the fine level.
a_grids | CELL-centered grids at this level |
a_dx | mesh spacing at this level |
a_domain | CELL-centered physical domain at this level |
a_loCFIVS | pointer to object storing coarse/fine interface nodes |
a_hiCFIVS | pointer to object storing coarse/fine interface nodes |
a_refToCoarse | refinement ratio between this and next coarser level |
a_interpolationDegree | degree of interpolation, 1 for (bi)linear, 2 for (bi)quadratic |
a_ncomp | number of components of data |
a_verbose | verbose output flag |
void NodeQuadCFInterp::setDomainNodeBC | ( | const DomainNodeBC & | a_dombcIn | ) |
Sets external boundary condition for physical domain. You need this if the refinement ratio is more than 2, because you are composing refinements, and you'll need to set physical boundary conditions at the intermediate level.
bool NodeQuadCFInterp::isDefined | ( | ) | const |
Returns true
if this object was created with the defining constructor or if define() has been called.
void NodeQuadCFInterp::setVerbose | ( | bool | a_verbose | ) |
Set whether to give output. Default is false
.
void NodeQuadCFInterp::coarseFineInterp | ( | LevelData< NodeFArrayBox > & | a_phiFine, | |
const LevelData< NodeFArrayBox > & | a_phiCoarse, | |||
bool | a_inhomogeneous | |||
) |
Coarse / Fine (inhomogeneous) interpolation operator. Fill the nodes of a_phi on the coarse/fine interface with interpolated data from a_phiCoarse.
a_phiFine | data at this level |
a_phiCoarse | data at the next coarser level |
a_inhomogeneous | whether to apply inhomogeneous physical boundary conditions? |
void NodeQuadCFInterp::clearMemory | ( | ) | [private] |
void NodeQuadCFInterp::setDefaultValues | ( | ) | [private] |
DisjointBoxLayout NodeQuadCFInterp::m_grids [protected] |
CELL-centered grids at the current level (the finer level)
int NodeQuadCFInterp::m_ncomp [protected] |
number of components of data, needed for setting size of work array
int NodeQuadCFInterp::m_refToCoarse [protected] |
refinement ratio between this and the next coarser level
int NodeQuadCFInterp::m_coarsenings [protected] |
the number of coarsenings to be done: this is log2(m_refToCoarse)
bool NodeQuadCFInterp::m_isDefined [protected] |
has full define function been called?
bool NodeQuadCFInterp::m_isBCDefined [protected] |
has boundary condition been defined?
Real NodeQuadCFInterp::m_dx [protected] |
mesh spacing at this (fine) level
Real NodeQuadCFInterp::m_dxPenultimate [protected] |
mesh spacing at coarsest level refined by 2
ProblemDomain NodeQuadCFInterp::m_domainPenultimate [protected] |
CELL-centered physical domain of coarsest level refined by 2
DomainNodeBC NodeQuadCFInterp::m_dombc [protected] |
boundary conditions
Vector< LevelData<NodeFArrayBox>* > NodeQuadCFInterp::m_inter [protected] |
data at intermediate coarsening levels; Vector length m_coarsenings-1.
Vector< NodeQuadCFInterp2* > NodeQuadCFInterp::m_qcfi2 [protected] |
Vector of interpolating objects, of length m_coarsenings. m_qcfi2[i] averages refined versions of the SAME grids if i > 1, and in general DIFFERENT grids if i == 0.
Vector< LayoutData<NodeCFIVS>* > NodeQuadCFInterp::m_loCFIVScoarser [protected] |
pointers to objects storing coarse/fine interface nodes between levels of refinement, including intermediate ones
Vector< LayoutData<NodeCFIVS>* > NodeQuadCFInterp::m_hiCFIVScoarser [protected] |
pointers to objects storing coarse/fine interface nodes between levels of refinement, including intermediate ones
bool NodeQuadCFInterp::m_verbose [protected] |
if true
, print out extra information