Proto  3.2
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
Proto::MBLevelFluxRegister< T, C, MEM > Class Template Reference

#include <Proto_MBLevelFluxRegister.H>

Public Member Functions

 MBLevelFluxRegister ()
 
 MBLevelFluxRegister (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const Point &a_refRatio)
 
 MBLevelFluxRegister (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const Point &a_refRatio, Array< T, DIM > &a_dxCoarse)
 
 MBLevelFluxRegister (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const std::vector< Point > &a_refRatios, std::vector< Array< T, DIM >> &a_dxCoarse)
 
void define (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const Point &a_refRatios, Array< T, DIM > &a_dxCoarse)
 
void define (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const std::vector< Point > &a_refRatios, std::vector< Array< T, DIM >> &a_dxCoarse)
 
void clearInternalData ()
 
void initCoarseRegisters (T a_val=0)
 
void initFineRegisters (T a_val=0)
 
void initIncrement (T a_val=0)
 
void incrementCoarseRegister (const BoxData< T, C, MEM > &a_flux, const MBIndex &a_index, int a_dir, const T &a_weight=1.0)
 
void incrementFineRegister (const BoxData< T, C, MEM > &a_flux, const MBIndex &a_index, int a_dir, const T &a_weight=1.0)
 
void applyRefluxCorrection (MBLevelBoxData< T, C, MEM > &a_coarseData, const T &a_weight)
 Reflux. More...
 
void print () const
 
MBDisjointBoxLayout crseLayout () const
 Access to layouts. More...
 
MBDisjointBoxLayout fineLayout () const
 

Protected Member Functions

void validateInputs (const MBDisjointBoxLayout &a_dblCoarse, const MBDisjointBoxLayout &a_dblFine, const std::vector< Point > &a_refRatios, std::vector< Array< T, DIM >> &a_dxCoarse) const
 
void defineCoarse ()
 
void addCoarseRegisters (PatchID a_finePatch, MBIndex a_coarseIndex)
 
void addFineRegisters (MBIndex a_fineIndex)
 
void initFineRegisterIndices ()
 
bool adjacentInProblemDomain (MBIndex a_fineIndex, Point a_dir) const
 
void addCoarseRegisterFromAdjacent (PatchID a_finePatch, MBIndex a_coarseIndex, Point a_dir, MBIndex a_fineIndexAdj)
 
void addFineRegisterFromAdjacent (MBIndex a_fineIndex, Point a_dir)
 
int computeTileIndex (const Box &a_bx, const MBIndex &a_di)
 
void defineFine ()
 
void defineAverageStencils ()
 
BoxData< T, C, MEM > & findFineRegisterData (const Box &a_bx, const MBIndex &di)
 
BoxData< T, C, MEM > & findCoarseRegisterData (const Box &a_bx, const MBIndex &di)
 

Protected Attributes

MBDisjointBoxLayout m_crseLayout
 
MBDisjointBoxLayout m_fineLayout
 
std::vector< Array< T, DIM > > m_dxCrse
 
MBFluxRegisterCopier< T, C, MEM > m_copier
 
std::vector< Pointm_refRatios
 
std::vector< std::vector< Register< T, C, MEM > > > m_crseRegisters
 
std::vector< std::vector< shared_ptr< BoxData< T, C, MEM > > > > m_crseIncrement
 
std::vector< std::vector< Register< T, C, MEM > > > m_fineRegisters
 
std::vector< unordered_map< unsigned int, unsigned int > > m_crseIndices
 
std::vector< Array< Array< int, 2 >, DIM > > m_fineIndices
 
std::vector< Array< Array< Stencil< T >, 2 >, DIM > > m_avgFlux
 

Friends

class MBLevelFluxRegisterTester< T, C, MEM >
 
class MBFluxRegisterCopierOp< T, C, MEM >
 
class MBFluxRegisterCopier< T, C, MEM >
 

Constructor & Destructor Documentation

◆ MBLevelFluxRegister() [1/4]

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
Proto::MBLevelFluxRegister< T, C, MEM >::MBLevelFluxRegister ( )
inline

◆ MBLevelFluxRegister() [2/4]

template<typename T , unsigned int C, MemType MEM>
Proto::MBLevelFluxRegister< T, C, MEM >::MBLevelFluxRegister ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const Point a_refRatio 
)

◆ MBLevelFluxRegister() [3/4]

template<typename T , unsigned int C, MemType MEM>
Proto::MBLevelFluxRegister< T, C, MEM >::MBLevelFluxRegister ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const Point a_refRatio,
Array< T, DIM > &  a_dxCoarse 
)

◆ MBLevelFluxRegister() [4/4]

template<typename T , unsigned int C, MemType MEM>
Proto::MBLevelFluxRegister< T, C, MEM >::MBLevelFluxRegister ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const std::vector< Point > &  a_refRatios,
std::vector< Array< T, DIM >> &  a_dxCoarse 
)

Member Function Documentation

◆ define() [1/2]

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::define ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const Point a_refRatios,
Array< T, DIM > &  a_dxCoarse 
)

◆ define() [2/2]

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::define ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const std::vector< Point > &  a_refRatios,
std::vector< Array< T, DIM >> &  a_dxCoarse 
)

◆ clearInternalData()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::clearInternalData ( )

◆ initCoarseRegisters()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::initCoarseRegisters ( a_val = 0)

◆ initFineRegisters()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::initFineRegisters ( a_val = 0)

◆ initIncrement()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::initIncrement ( a_val = 0)

◆ incrementCoarseRegister()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::incrementCoarseRegister ( const BoxData< T, C, MEM > &  a_flux,
const MBIndex a_index,
int  a_dir,
const T &  a_weight = 1.0 
)

Increments all coarse registers associated with an index, in a given coordinate direction

◆ incrementFineRegister()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::incrementFineRegister ( const BoxData< T, C, MEM > &  a_flux,
const MBIndex a_index,
int  a_dir,
const T &  a_weight = 1.0 
)

Increments all fine registers associated with an index, in a given coordinate direction

◆ applyRefluxCorrection()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::applyRefluxCorrection ( MBLevelBoxData< T, C, MEM > &  a_coarseData,
const T &  a_weight 
)

Reflux.

Performs the reflux correction on input coarse data.

◆ print()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::print ( ) const

◆ crseLayout()

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
MBDisjointBoxLayout Proto::MBLevelFluxRegister< T, C, MEM >::crseLayout ( ) const
inline

Access to layouts.

◆ fineLayout()

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
MBDisjointBoxLayout Proto::MBLevelFluxRegister< T, C, MEM >::fineLayout ( ) const
inline

◆ validateInputs()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::validateInputs ( const MBDisjointBoxLayout a_dblCoarse,
const MBDisjointBoxLayout a_dblFine,
const std::vector< Point > &  a_refRatios,
std::vector< Array< T, DIM >> &  a_dxCoarse 
) const
protected

◆ defineCoarse()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::defineCoarse ( )
protected

◆ addCoarseRegisters()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::addCoarseRegisters ( PatchID  a_finePatch,
MBIndex  a_coarseIndex 
)
protected

◆ addFineRegisters()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::addFineRegisters ( MBIndex  a_fineIndex)
protected

◆ initFineRegisterIndices()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::initFineRegisterIndices ( )
protected

◆ adjacentInProblemDomain()

template<typename T , unsigned int C, MemType MEM>
bool Proto::MBLevelFluxRegister< T, C, MEM >::adjacentInProblemDomain ( MBIndex  a_fineIndex,
Point  a_dir 
) const
protected

◆ addCoarseRegisterFromAdjacent()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::addCoarseRegisterFromAdjacent ( PatchID  a_finePatch,
MBIndex  a_coarseIndex,
Point  a_dir,
MBIndex  a_fineIndexAdj 
)
protected

◆ addFineRegisterFromAdjacent()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::addFineRegisterFromAdjacent ( MBIndex  a_fineIndex,
Point  a_dir 
)
protected

◆ computeTileIndex()

template<typename T , unsigned int C, MemType MEM>
int Proto::MBLevelFluxRegister< T, C, MEM >::computeTileIndex ( const Box a_bx,
const MBIndex a_di 
)
protected

◆ defineFine()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::defineFine ( )
protected

◆ defineAverageStencils()

template<typename T , unsigned int C, MemType MEM>
void Proto::MBLevelFluxRegister< T, C, MEM >::defineAverageStencils ( )
protected

◆ findFineRegisterData()

template<typename T , unsigned int C, MemType MEM>
BoxData< T, C, MEM > & Proto::MBLevelFluxRegister< T, C, MEM >::findFineRegisterData ( const Box a_bx,
const MBIndex di 
)
protected

◆ findCoarseRegisterData()

template<typename T , unsigned int C, MemType MEM>
BoxData< T, C, MEM > & Proto::MBLevelFluxRegister< T, C, MEM >::findCoarseRegisterData ( const Box a_bx,
const MBIndex di 
)
protected

Friends And Related Function Documentation

◆ MBLevelFluxRegisterTester< T, C, MEM >

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
friend class MBLevelFluxRegisterTester< T, C, MEM >
friend

◆ MBFluxRegisterCopierOp< T, C, MEM >

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
friend class MBFluxRegisterCopierOp< T, C, MEM >
friend

◆ MBFluxRegisterCopier< T, C, MEM >

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
friend class MBFluxRegisterCopier< T, C, MEM >
friend

Member Data Documentation

◆ m_crseLayout

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
MBDisjointBoxLayout Proto::MBLevelFluxRegister< T, C, MEM >::m_crseLayout
protected

◆ m_fineLayout

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
MBDisjointBoxLayout Proto::MBLevelFluxRegister< T, C, MEM >::m_fineLayout
protected

◆ m_dxCrse

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<Array<T, DIM> > Proto::MBLevelFluxRegister< T, C, MEM >::m_dxCrse
protected

◆ m_copier

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
MBFluxRegisterCopier<T, C, MEM> Proto::MBLevelFluxRegister< T, C, MEM >::m_copier
protected

◆ m_refRatios

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<Point> Proto::MBLevelFluxRegister< T, C, MEM >::m_refRatios
protected

◆ m_crseRegisters

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<std::vector<Register<T, C, MEM> > > Proto::MBLevelFluxRegister< T, C, MEM >::m_crseRegisters
protected

◆ m_crseIncrement

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<std::vector<shared_ptr<BoxData<T, C, MEM> > > > Proto::MBLevelFluxRegister< T, C, MEM >::m_crseIncrement
protected

◆ m_fineRegisters

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<std::vector<Register<T, C, MEM> > > Proto::MBLevelFluxRegister< T, C, MEM >::m_fineRegisters
protected

◆ m_crseIndices

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<unordered_map<unsigned int, unsigned int> > Proto::MBLevelFluxRegister< T, C, MEM >::m_crseIndices
protected

◆ m_fineIndices

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<Array<Array<int, 2>, DIM> > Proto::MBLevelFluxRegister< T, C, MEM >::m_fineIndices
protected

◆ m_avgFlux

template<typename T, unsigned int C, MemType MEM = MEMTYPE_DEFAULT>
std::vector<Array<Array<Stencil<T>, 2>, DIM> > Proto::MBLevelFluxRegister< T, C, MEM >::m_avgFlux
protected

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