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

#include <MultiBlockFaceRegister.H>

Inheritance diagram for MultiBlockFaceRegister:
Inheritance graph
[legend]

Public Member Functions

 MultiBlockFaceRegister (const MultiBlockCoordSys *const a_coordSys)
 
 ~MultiBlockFaceRegister ()
 Destructor. More...
 
void define (const DisjointBoxLayout &a_FnGrid, const DisjointBoxLayout &a_CrGrid, const ProblemDomain &a_FnProbDom, int a_nRefine, int a_nComp, bool a_scaleFineFaces=true)
 Define everything (overrides base) More...
 
void define (const DisjointBoxLayout &a_FnGrid, const DisjointBoxLayout &a_CrGrid, const ProblemDomain &a_FnProbDom, IntVect a_ivRefine, int a_nComp, bool a_scaleFineFaces=true)
 Define everything (overrides base) More...
 
void defineFine (const DisjointBoxLayout &a_FnGrid, const ProblemDomain &a_FnProbDom, int a_nRefine, int a_nComp, bool a_scaleFineFaces=true)
 Define the fine register. More...
 
void defineFine (const DisjointBoxLayout &a_FnGrid, const ProblemDomain &a_FnProbDom, IntVect a_ivRefine, int a_nComp, bool a_scaleFineFaces=true)
 Define the fine register. More...
 
void defineCoarse (const DisjointBoxLayout &a_CrGrid)
 Define the coarse register and copiers. More...
 
void reface (LevelData< FluxBox > &a_uCoarse, const Interval &a_coarse_interval, const Interval &a_face_interval, const Real a_scale, const bool a_directional=true)
 
- Public Member Functions inherited from LevelFluxRegister
 LevelFluxRegister ()
 
 LevelFluxRegister (const DisjointBoxLayout &a_dbl, const DisjointBoxLayout &a_dblCoarse, const ProblemDomain &a_dProblem, int a_nRefine, int a_nComp, bool a_scaleFineFluxes=true, int a_unrefinedDirection=-1)
 
 LevelFluxRegister (const DisjointBoxLayout &a_dbl, const DisjointBoxLayout &a_dblCoarse, const Box &a_dProblem, int a_nRefine, int a_nComp, bool a_scaleFineFluxes=true, int a_unrefinedDirection=-1)
 This is an old style constructor - do not use if at all possible. More...
 
virtual ~LevelFluxRegister ()
 
virtual 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)
 
virtual void define (const DisjointBoxLayout &a_dbl, const DisjointBoxLayout &a_dblCoarse, const ProblemDomain &a_dProblem, int a_nRefine, int a_nComp)
 
virtual void define (const DisjointBoxLayout &a_dbl, const DisjointBoxLayout &a_dblCoarse, const Box &a_dProblem, int a_nRefine, int a_nComp, bool a_scaleFineFluxes=true)
 This is an old style define - do not use if at all possible. More...
 
virtual void undefine ()
 
virtual void setToZero ()
 
virtual void incrementCoarse (const FArrayBox &a_coarseFlux, Real a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir)
 
virtual void incrementCoarse (const FArrayBox &a_coarseFlux, Real a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir, Side::LoHiSide a_sd)
 
virtual void incrementFine (const FArrayBox &a_fineFlux, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir)
 
virtual void incrementFine (const FArrayBox &a_fineFlux, Real a_scale, const DataIndex &a_fineDataIndex, const Interval &a_srcInterval, const Interval &a_dstInterval, int a_dir, Side::LoHiSide a_sd)
 
virtual void reflux (LevelData< FArrayBox > &a_uCoarse, Real a_scale)
 
virtual void reflux (LevelData< FArrayBox > &a_uCoarse, const Interval &a_coarseVectorIntv, Real a_scale)
 
virtual void reflux (LevelData< FArrayBox > &a_uCoarse, const Interval &a_coarse_interval, const Interval &a_flux_interval, Real a_scale)
 
virtual void reflux (LevelData< FArrayBox > &a_uCoarse, Real a_scale, const Interval &a_coarseInterv, const Interval &a_fluxInterval, const LevelData< FArrayBox > &a_beta)
 same as above with a variable scale multiplied in More...
 
bool hasCF (const DataIndex &a_fineDataIndex, Side::LoHiSide) const
 
bool hasCF (const DataIndex &a_coarseIndex) const
 
bool isDefined () const
 
bool isAllDefined () const
 
void poutCoarseRegisters () const
 
void poutFineRegisters () const
 
LayoutData< Vector< Box > > & getCoarseLocations (int a_idir, Side::LoHiSide a_sd)
 
CopiergetReverseCopier ()
 

Private Attributes

const MultiBlockCoordSys *const m_coordSys
 Multi-block coordinate system. More...
 
RemoteCopier m_remoteCopiers [SpaceDim][2]
 

Additional Inherited Members

- Static Public Attributes inherited from LevelFluxRegister
static bool s_verbose
 
- Protected Types inherited from LevelFluxRegister
enum  FluxRegDefineStatus {
  FluxRegUndefined = 0, FluxRegDefined = (1 << 0), FluxRegFineDefined = (1 << 1), FluxRegCoarseDefined = (1 << 2),
  FluxRegAllDefined = (1 << 3) - 1
}
 Define status. More...
 
- Protected Attributes inherited from LevelFluxRegister
LevelData< FArrayBoxm_coarFlux
 
LevelData< FArrayBoxm_fineFlux
 
LayoutData< Vector< Box > > m_coarseLocations [CH_SPACEDIM *2]
 
ProblemDomain m_domain
 
int m_isDefined
 
IntVect m_nRefine
 
bool m_scaleFineFluxes
 
int m_unrefinedDirection
 
Copier m_reverseCopier
 
bool m_noRealCoarseFineInterface
 

Detailed Description

This subclass of LevelFluxRegister handles multi-block AMR refluxing.

Constructor & Destructor Documentation

◆ MultiBlockFaceRegister()

MultiBlockFaceRegister::MultiBlockFaceRegister ( const MultiBlockCoordSys *const  a_coordSys)

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

◆ ~MultiBlockFaceRegister()

MultiBlockFaceRegister::~MultiBlockFaceRegister ( )

Destructor.

Member Function Documentation

◆ define() [1/2]

void MultiBlockFaceRegister::define ( const DisjointBoxLayout a_FnGrid,
const DisjointBoxLayout a_CrGrid,
const ProblemDomain a_FnProbDom,
int  a_nRefine,
int  a_nComp,
bool  a_scaleFineFaces = true 
)

Define everything (overrides base)

◆ define() [2/2]

void MultiBlockFaceRegister::define ( const DisjointBoxLayout a_FnGrid,
const DisjointBoxLayout a_CrGrid,
const ProblemDomain a_FnProbDom,
IntVect  a_ivRefine,
int  a_nComp,
bool  a_scaleFineFaces = true 
)

Define everything (overrides base)

◆ defineFine() [1/2]

void MultiBlockFaceRegister::defineFine ( const DisjointBoxLayout a_FnGrid,
const ProblemDomain a_FnProbDom,
int  a_nRefine,
int  a_nComp,
bool  a_scaleFineFaces = true 
)

Define the fine register.

◆ defineFine() [2/2]

void MultiBlockFaceRegister::defineFine ( const DisjointBoxLayout a_FnGrid,
const ProblemDomain a_FnProbDom,
IntVect  a_ivRefine,
int  a_nComp,
bool  a_scaleFineFaces = true 
)

Define the fine register.

◆ defineCoarse()

void MultiBlockFaceRegister::defineCoarse ( const DisjointBoxLayout a_CrGrid)

Define the coarse register and copiers.

◆ reface()

void MultiBlockFaceRegister::reface ( LevelData< FluxBox > &  a_uCoarse,
const Interval a_coarse_interval,
const Interval a_face_interval,
const Real  a_scale,
const bool  a_directional = true 
)

Member Data Documentation

◆ m_coordSys

const MultiBlockCoordSys* const MultiBlockFaceRegister::m_coordSys
private

Multi-block coordinate system.

Coordinate system from the coarse level

◆ m_remoteCopiers

RemoteCopier MultiBlockFaceRegister::m_remoteCopiers[SpaceDim][2]
private

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


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