Chombo + EB + MF
3.2
|
#include <MultiBlockFaceRegister.H>
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) |
Copier & | getReverseCopier () |
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< FArrayBox > | m_coarFlux |
LevelData< FArrayBox > | m_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 |
This subclass of LevelFluxRegister handles multi-block AMR refluxing.
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 | ( | ) |
Destructor.
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)
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)
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.
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.
void MultiBlockFaceRegister::defineCoarse | ( | const DisjointBoxLayout & | a_CrGrid | ) |
Define the coarse register and copiers.
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 |
||
) |
|
private |
Multi-block coordinate system.
Coordinate system from the coarse level
|
private |
Copier for moving values from fine faces on other blocks to blocks where the corresponding coarse faces are defined. One copier per dimension.