Chombo + EB + MF  3.2
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
FineInterpFace Class Reference

replaces face-centered fine data with interpolation of coarse level data. More...

#include <FineInterpFace.H>

Public Member Functions

 FineInterpFace ()
 
 ~FineInterpFace ()
 
 FineInterpFace (const DisjointBoxLayout &a_fine_domain, const int &a_numcomps, const int &a_ref_ratio, const Box &a_fine_problem_domain)
 
 FineInterpFace (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< FluxBox > &a_fine_data, const LevelData< FluxBox > &a_coarse_data, bool a_averageFromDest=false)
 

Protected Member Functions

void interpGridData (BaseFab< Real > &a_fine, const BaseFab< Real > &a_coarse, const Box &a_coarsened_fine_box, const int &a_ref_ratio, const int &a_dir) const
 

Protected Attributes

bool is_defined
 
int m_ref_ratio
 
LevelData< FluxBoxm_coarsened_fine_data
 
ProblemDomain m_coarse_problem_domain
 

Detailed Description

replaces face-centered fine data with interpolation of coarse level data.

This class replaces data at a fine level of refinement with data interpolated from a coarser level of refinement. Interpolation on fine faces which overlie coarse faces is piecewise bi(tri)linear, with van Leer slopes if there is room for the stencil, with lower-order slopes if there isn't. For the intermediate fine-level faces, interpolate linearly between the corresponding fine-grid faces which do overlie coarse-grid faces.

Constructor & Destructor Documentation

◆ FineInterpFace() [1/3]

FineInterpFace::FineInterpFace ( )

Default constructor. User must subsequently call define().

◆ ~FineInterpFace()

FineInterpFace::~FineInterpFace ( )

Destructor.

◆ FineInterpFace() [2/3]

FineInterpFace::FineInterpFace ( 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.\

◆ FineInterpFace() [3/3]

FineInterpFace::FineInterpFace ( 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.\

Member Function Documentation

◆ define() [1/2]

void FineInterpFace::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.—

◆ define() [2/2]

void FineInterpFace::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.—

◆ isDefined()

bool FineInterpFace::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.

◆ interpToFine()

void FineInterpFace::interpToFine ( LevelData< FluxBox > &  a_fine_data,
const LevelData< FluxBox > &  a_coarse_data,
bool  a_averageFromDest = false 
)

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.

◆ interpGridData()

void FineInterpFace::interpGridData ( BaseFab< Real > &  a_fine,
const BaseFab< Real > &  a_coarse,
const Box a_coarsened_fine_box,
const int &  a_ref_ratio,
const int &  a_dir 
) const
protected

Member Data Documentation

◆ is_defined

bool FineInterpFace::is_defined
protected

◆ m_ref_ratio

int FineInterpFace::m_ref_ratio
protected

◆ m_coarsened_fine_data

LevelData<FluxBox> FineInterpFace::m_coarsened_fine_data
protected

◆ m_coarse_problem_domain

ProblemDomain FineInterpFace::m_coarse_problem_domain
protected

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