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

replaces coarse level data with an average of fine level data. More...

#include <CoarseAverage.H>

Public Types

enum  averageType { arithmetic = 0, harmonic, NUM_AVERAGE_TYPES }
 

Public Member Functions

 CoarseAverage ()
 
virtual ~CoarseAverage ()
 
 CoarseAverage (const DisjointBoxLayout &a_fine_domain, int a_numcomps, int a_ref_ratio)
 
 CoarseAverage (const DisjointBoxLayout &a_fine_domain, const DisjointBoxLayout &a_crse_domain, int a_numcomps, int a_ref_ratio, IntVect a_ghostVect=IntVect::Zero)
 
void define (const DisjointBoxLayout &a_fine_domain, int a_numcomps, int a_ref_ratio)
 
void define (const DisjointBoxLayout &a_fine_domain, const DisjointBoxLayout &a_crse_domain, int a_numcomps, int a_ref_ratio, IntVect a_ghostVect=IntVect::Zero)
 
bool isDefined () const
 
virtual void averageToCoarse (LevelData< FArrayBox > &a_coarse_data, const LevelData< FArrayBox > &a_fine_data)
 
void averageToCoarseHarmonic (LevelData< FArrayBox > &a_coarse_data, const LevelData< FArrayBox > &a_fine_data)
 similar to averageToCoarse, except does a harmonic average More...
 

Protected Member Functions

void computeAverages (LevelData< FArrayBox > &a_coarse_data, const LevelData< FArrayBox > &a_fine_data, int a_averageType)
 
void averageGridData (BaseFab< Real > &a_coarse, const BaseFab< Real > &a_fine, int a_ref_ratio, int a_averageType) const
 

Protected Attributes

bool is_defined
 
int m_ref_ratio
 
LevelData< FArrayBoxm_coarsened_fine_data
 
bool m_is_copier_defined
 
Copier m_copier
 

Detailed Description

replaces coarse level data with an average of fine level data.

This class replaces data at a coarse level of refinement with an average of data at a finer level of refinement, in areas where fine data is present. Coarse level data is not modified where fine level data is not present.

Member Enumeration Documentation

◆ averageType

Enumerator
arithmetic 
harmonic 
NUM_AVERAGE_TYPES 

Constructor & Destructor Documentation

◆ CoarseAverage() [1/3]

CoarseAverage::CoarseAverage ( )

Default constructor. User must subsequently call define().

◆ ~CoarseAverage()

virtual CoarseAverage::~CoarseAverage ( )
virtual

Destructor.

◆ CoarseAverage() [2/3]

CoarseAverage::CoarseAverage ( const DisjointBoxLayout a_fine_domain,
int  a_numcomps,
int  a_ref_ratio 
)

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. \

◆ CoarseAverage() [3/3]

CoarseAverage::CoarseAverage ( const DisjointBoxLayout a_fine_domain,
const DisjointBoxLayout a_crse_domain,
int  a_numcomps,
int  a_ref_ratio,
IntVect  a_ghostVect = IntVect::Zero 
)

Defining constructor. Constructs a valid object. Equivalent to default construction followed by define(). This version takes the coarser level as well, results in a faster averaging operation, since Copier can be pre-constructed.

{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_crse_domain (not modified): the crse level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_ghostVect (not modified): radius of ghost cells around coarse grids to be filled (normally none)\

Member Function Documentation

◆ define() [1/2]

void CoarseAverage::define ( const DisjointBoxLayout a_fine_domain,
int  a_numcomps,
int  a_ref_ratio 
)

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.\

{ This:}\ —This object is modified.—

◆ define() [2/2]

void CoarseAverage::define ( const DisjointBoxLayout a_fine_domain,
const DisjointBoxLayout a_crse_domain,
int  a_numcomps,
int  a_ref_ratio,
IntVect  a_ghostVect = IntVect::Zero 
)

Defines this object. Existing information is overriden. This version takes the coarser-level grids as well, which allows for a faster averaging operation, since the Copier can be pre-defined

{ Arguments:}\ a_fine_domain (not modified): the fine level domain.\ a_crse_domain (not modified): the coarse level domain.\ a_numcomps (not modified): the number of components.\ a_ref_ratio (not modified): the refinement ratio.\ a_ghostVect (not modified): radius of ghost cells around coarse grids to be filled (normally none)\

{ This:}\ —This object is modified.—

◆ isDefined()

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

◆ averageToCoarse()

virtual void CoarseAverage::averageToCoarse ( LevelData< FArrayBox > &  a_coarse_data,
const LevelData< FArrayBox > &  a_fine_data 
)
virtual

Replaces a_coarse_data with the average of a_fine_data within the coarsening of the domain of the fine level. Elsewhere, the coarse data is unchanged. 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_coarse_data (modified): coarse data. \ a_fine_data (not modified): fine 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.

◆ averageToCoarseHarmonic()

void CoarseAverage::averageToCoarseHarmonic ( LevelData< FArrayBox > &  a_coarse_data,
const LevelData< FArrayBox > &  a_fine_data 
)

similar to averageToCoarse, except does a harmonic average

◆ computeAverages()

void CoarseAverage::computeAverages ( LevelData< FArrayBox > &  a_coarse_data,
const LevelData< FArrayBox > &  a_fine_data,
int  a_averageType 
)
protected

utility function called by both averageToCoarse and averageToCoarseHarmonic (to avoid code duplication)

◆ averageGridData()

void CoarseAverage::averageGridData ( BaseFab< Real > &  a_coarse,
const BaseFab< Real > &  a_fine,
int  a_ref_ratio,
int  a_averageType 
) const
protected

Member Data Documentation

◆ is_defined

bool CoarseAverage::is_defined
protected

◆ m_ref_ratio

int CoarseAverage::m_ref_ratio
protected

◆ m_coarsened_fine_data

LevelData<FArrayBox> CoarseAverage::m_coarsened_fine_data
protected

◆ m_is_copier_defined

bool CoarseAverage::m_is_copier_defined
protected

◆ m_copier

Copier CoarseAverage::m_copier
protected

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