MultiBlockFluxRegister Class Reference

#include <MultiBlockFluxRegister.H>

Inheritance diagram for MultiBlockFluxRegister:

Inheritance graph
[legend]

List of all members.


Detailed Description

This subclass of LevelFluxRegister handles multi-block AMR refluxing.

Public Member Functions

 MultiBlockFluxRegister (MultiBlockCoordSys *a_coordSysCoarse, MultiBlockCoordSys *a_coordSysFine)
 ~MultiBlockFluxRegister ()
 Destructor.
void define (const DisjointBoxLayout &a_dbl, const DisjointBoxLayout &a_dblCoarse, const ProblemDomain &a_dProblem, int a_nRefine, int a_nComp, bool a_scaleFineFluxes, int a_unrefinedDirection=-1)
void reflux (LevelData< FArrayBox > &a_uCoarse, const Interval &a_coarseVectorIntv, Real a_scale)
void reflux (LevelData< FArrayBox > &a_uCoarse, const Interval &a_coarse_interval, const Interval &a_coarseVectorIntv, const Interval &a_flux_interval, Real a_scale)
void incrementFineCentered (const FArrayBox &a_fineFlux, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_vectorFluxIntv, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir, Side::LoHiSide a_sd)
void incrementFineCentered (const FArrayBox &a_fineFlux, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_vectorFluxIntv, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir)
 Call with a_sd == Side::Lo and a_sd == Side::Hi.
void incrementFineAveraged (const FArrayBox &a_fineFlux, const FArrayBox &a_fineFlux2, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_vectorFluxIntv, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir, Side::LoHiSide a_sd)
void incrementFineAveraged (const FArrayBox &a_fineFlux, const FArrayBox &a_fineFlux2, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_vectorFluxIntv, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir)
 Call with a_sd == Side::Lo and a_sd == Side::Hi.

Private Member Functions

 MultiBlockFluxRegister ()
 No default constructor.

Private Attributes

MultiBlockCoordSysm_coordSysCoarse
 Multi-block coordinate system at coarser level.
MultiBlockCoordSysm_coordSysFine
 Multi-block coordinate system at finer level.
RemoteCopier m_remoteCopiers [SpaceDim]
LevelData< FArrayBoxm_multiblockFineFluxes [SpaceDim]
LevelData< FArrayBoxm_neighborFineFluxes [SpaceDim]
LayoutData< int > m_blockNum

Constructor & Destructor Documentation

MultiBlockFluxRegister::MultiBlockFluxRegister ( MultiBlockCoordSys a_coordSysCoarse,
MultiBlockCoordSys a_coordSysFine 
) [explicit]

Creates a flux register that handles multi-block refluxing. This capability requires a multi-block coordinate system, which handles block connectivity as well as coordinate mappings.

MultiBlockFluxRegister::~MultiBlockFluxRegister (  ) 

Destructor.

MultiBlockFluxRegister::MultiBlockFluxRegister (  )  [inline, private]

No default constructor.


Member Function Documentation

void MultiBlockFluxRegister::define ( const DisjointBoxLayout a_dbl,
const DisjointBoxLayout a_dblCoarse,
const ProblemDomain a_dProblem,
int  a_nRefine,
int  a_nComp,
bool  a_scaleFineFluxes,
int  a_unrefinedDirection = -1 
) [virtual]

dProblem is at the fine resolution. scaleFluxes means the same thing as in levelfluxregister

Reimplemented from LevelFluxRegister.

void MultiBlockFluxRegister::reflux ( LevelData< FArrayBox > &  a_uCoarse,
const Interval a_coarseVectorIntv,
Real  a_scale 
) [virtual]

the vector interval is the interval over which the fancy vector transformations are done.

Reimplemented from LevelFluxRegister.

void MultiBlockFluxRegister::reflux ( LevelData< FArrayBox > &  a_uCoarse,
const Interval a_coarse_interval,
const Interval a_coarseVectorIntv,
const Interval a_flux_interval,
Real  a_scale 
)

the coarse interval is the interval over which refluxing is done. the vector interval is the interval over which the fancy vector transformations are done.

void MultiBlockFluxRegister::incrementFineCentered ( const FArrayBox a_fineFlux,
Real  a_scale,
const DataIndex a_fineDataIndex,
const Interval a_vectorFluxIntv,
const Interval a_srcInterval,
const Interval a_dstInterval,
int  a_dir,
Side::LoHiSide  a_sd 
)

Increment fine flux. For scalars, no change from LevelFluxRegister. For vector fluxes, convert to frame of opposite block. This is for face-CENTERED fluxes.

void MultiBlockFluxRegister::incrementFineCentered ( const FArrayBox a_fineFlux,
Real  a_scale,
const DataIndex a_fineDataIndex,
const Interval a_vectorFluxIntv,
const Interval a_srcInterval,
const Interval a_dstInterval,
int  a_dir 
)

Call with a_sd == Side::Lo and a_sd == Side::Hi.

void MultiBlockFluxRegister::incrementFineAveraged ( const FArrayBox a_fineFlux,
const FArrayBox a_fineFlux2,
Real  a_scale,
const DataIndex a_fineDataIndex,
const Interval a_vectorFluxIntv,
const Interval a_srcInterval,
const Interval a_dstInterval,
int  a_dir,
Side::LoHiSide  a_sd 
)

Increment fine flux. For scalars, no change from LevelFluxRegister. For vector fluxes, convert to frame of opposite block. This is for face-AVERAGED fluxes. The argument a_fineFlux2 is a 2nd-order approximation that includes a ghost layer.

void MultiBlockFluxRegister::incrementFineAveraged ( const FArrayBox a_fineFlux,
const FArrayBox a_fineFlux2,
Real  a_scale,
const DataIndex a_fineDataIndex,
const Interval a_vectorFluxIntv,
const Interval a_srcInterval,
const Interval a_dstInterval,
int  a_dir 
)

Call with a_sd == Side::Lo and a_sd == Side::Hi.


Member Data Documentation

Multi-block coordinate system at coarser level.

Multi-block coordinate system at finer level.

Copier for moving values from fine fluxes on other blocks to blocks where the corresponding coarse fluxes are defined. One copier per dimension.

This stores (coarsened) fine fluxes on neighboring blocks. We can ensure that the "destination" box layout is disjoint by storing the different flux components separately.

This stores (coarsened) fine fluxes that have been copied to the blocks containing the coarse fluxes they will replace. Once again, components of fluxes in each direction are stored separately so that the boxes can be disjoint.


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

Generated on Thu May 25 03:27:16 2017 for Chombo + EB + MF by  doxygen 1.5.5