#include <FineInterp.H>
This class replaces data at a fine level of refinement with data interpolated from a coarser level of refinement. Interpolation is piecewise bi(tri)linear, with van Leer slopes if there is room for the stencil, with lower-order slopes if there isn't. See the design document.
Public Member Functions | |
FineInterp () | |
~FineInterp () | |
FineInterp (const DisjointBoxLayout &a_fine_domain, const int &a_numcomps, const int &a_ref_ratio, const Box &a_fine_problem_domain) | |
FineInterp (const DisjointBoxLayout &a_fine_domain, const int &a_numcomps, const int &a_ref_ratio, const ProblemDomain &a_fine_problem_domain) | |
void | define (const DisjointBoxLayout &a_fine_domain, const int &a_numcomps, const int &a_ref_ratio, const Box &a_fine_problem_domain) |
void | define (const DisjointBoxLayout &a_fine_domain, const int &a_numcomps, const int &a_ref_ratio, const ProblemDomain &a_fine_problem_domain) |
bool | isDefined () const |
void | interpToFine (LevelData< FArrayBox > &a_fine_data, const LevelData< FArrayBox > &a_coarse_data) |
void | pwcinterpToFine (LevelData< FArrayBox > &a_fine_data, const LevelData< FArrayBox > &a_coarse_data) |
Just do piecewise-constant interpolation. | |
Protected Member Functions | |
void | interpGridData (BaseFab< Real > &a_fine, const BaseFab< Real > &a_coarse, const Box &a_coarsened_fine_box, int a_ref_ratio) const |
void | pwcinterpGridData (BaseFab< Real > &a_fine, const BaseFab< Real > &a_coarse, const Box &a_coarsened_fine_box, int a_ref_ratio) const |
Protected Attributes | |
bool | is_defined |
int | m_ref_ratio |
LevelData< FArrayBox > | m_coarsened_fine_data |
ProblemDomain | m_coarse_problem_domain |
FineInterp::FineInterp | ( | ) |
Default constructor. User must subsequently call define().
FineInterp::~FineInterp | ( | ) |
Destructor.
FineInterp::FineInterp | ( | const DisjointBoxLayout & | a_fine_domain, | |
const int & | a_numcomps, | |||
const int & | a_ref_ratio, | |||
const Box & | a_fine_problem_domain | |||
) |
Defining constructor. Constructs a valid object. Equivalent to default construction followed by define().
{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_fine_problem_domain (not modified): problem domain at the fine level.\
FineInterp::FineInterp | ( | const DisjointBoxLayout & | a_fine_domain, | |
const int & | a_numcomps, | |||
const int & | a_ref_ratio, | |||
const ProblemDomain & | a_fine_problem_domain | |||
) |
Defining constructor. Constructs a valid object. Equivalent to default construction followed by define().
{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_fine_problem_domain (not modified): problem domain at the fine level.\
void FineInterp::define | ( | const DisjointBoxLayout & | a_fine_domain, | |
const int & | a_numcomps, | |||
const int & | a_ref_ratio, | |||
const Box & | a_fine_problem_domain | |||
) |
Defines this object. Existing information is overriden.
{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_fine_problem_domain (not modified): problem domain at the fine level.\
{ This:}\ ---This object is modified.---
void FineInterp::define | ( | const DisjointBoxLayout & | a_fine_domain, | |
const int & | a_numcomps, | |||
const int & | a_ref_ratio, | |||
const ProblemDomain & | a_fine_problem_domain | |||
) |
Defines this object. Existing information is overriden.
{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_fine_problem_domain (not modified): problem domain at the fine level.\
{ This:}\ ---This object is modified.---
bool FineInterp::isDefined | ( | ) | const |
Returns true if this object was created with the defining constructor or if define() has been called.
{ This:}\ This object is not modified.
void FineInterp::interpToFine | ( | LevelData< FArrayBox > & | a_fine_data, | |
const LevelData< FArrayBox > & | a_coarse_data | |||
) |
Replaces a_fine_data with data interpolated from a_coarse_data. It is an error to call if not this->isDefined(). The domain of a_fine_data should be the same as the fine domain specified in the most recent call to define(). It is expected that the coarse and fine level's domains are properly nested. Both a_coarse_data and a_fine_data should have the same number of components specified in the most recent call to define().
{ Arguments:}\ a_fine_data (modified): fine data. \ a_coarse_data (not modified): coarse data. \
{ This:}\ Well, it's complicated. As far as the user is concerned, this object is not modified. See the design document if you care for details.
void FineInterp::pwcinterpToFine | ( | LevelData< FArrayBox > & | a_fine_data, | |
const LevelData< FArrayBox > & | a_coarse_data | |||
) |
Just do piecewise-constant interpolation.
void FineInterp::interpGridData | ( | BaseFab< Real > & | a_fine, | |
const BaseFab< Real > & | a_coarse, | |||
const Box & | a_coarsened_fine_box, | |||
int | a_ref_ratio | |||
) | const [protected] |
void FineInterp::pwcinterpGridData | ( | BaseFab< Real > & | a_fine, | |
const BaseFab< Real > & | a_coarse, | |||
const Box & | a_coarsened_fine_box, | |||
int | a_ref_ratio | |||
) | const [protected] |
bool FineInterp::is_defined [protected] |
int FineInterp::m_ref_ratio [protected] |
LevelData<FArrayBox> FineInterp::m_coarsened_fine_data [protected] |
ProblemDomain FineInterp::m_coarse_problem_domain [protected] |