Chombo + EB
3.2
|
#include <Correct1D2D.H>
Public Member Functions | |
Correct1D2D (const EBLevelGrid &a_eblg, const LayoutData< bool > &a_is1D, int a_nvar) | |
~Correct1D2D () | |
void | setToZero () |
void | increment1D (const EBFaceFAB &a_1DFlux, const Real &a_scale, const DataIndex &a_dit) |
void | increment2D (const EBFaceFAB &a_2DFlux, const Real &a_scale, const DataIndex &a_dit) |
void | correctSolution (LevelData< EBCellFAB > &a_U) |
Static Public Member Functions | |
static void | makeIntMap (LevelData< BaseFab< int > > &a_intmap, const LayoutData< bool > &a_is1D, const DisjointBoxLayout &a_dbl) |
Protected Member Functions | |
int | index (int a_dir, Side::LoHiSide a_sd) |
Protected Attributes | |
LevelData< BaseFab< int > > | m_1d2d |
DisjointBoxLayout | m_dbl1d [2 *SpaceDim] |
DisjointBoxLayout | m_dbl2d [2 *SpaceDim] |
int | m_nvar |
EBLevelGrid | m_eblg |
LayoutData< Vector< VolIndex > > | m_sets1d [2 *SpaceDim] |
LayoutData< Vector< VolIndex > > | m_sets2d [2 *SpaceDim] |
LevelData< EBCellFAB > | m_deltaU1d [2 *SpaceDim] |
LevelData< EBCellFAB > | m_deltaU2d [2 *SpaceDim] |
Private Member Functions | |
Correct1D2D () | |
Correct1D2D (const Correct1D2D &a_in) | |
void | operator= (const Correct1D2D &a_in) |
Given an EB application that uses one algorithm for fluxes on some boxes and another on other boxes, this will make the solution's fluxes match at box-box boundaries. In all this class, the winning algorithm at the boundary is denoted by 2D, the losing by 1D but this would work for whatever polyalgorithm you choose.
Correct1D2D::Correct1D2D | ( | const EBLevelGrid & | a_eblg, |
const LayoutData< bool > & | a_is1D, | ||
int | a_nvar | ||
) |
|
inline |
References correctSolution(), increment1D(), increment2D(), and setToZero().
|
inlineprivate |
References MayDay::Error().
|
inlineprivate |
References MayDay::Error().
|
static |
void Correct1D2D::setToZero | ( | ) |
sets buffers to zero
Referenced by ~Correct1D2D().
void Correct1D2D::increment1D | ( | const EBFaceFAB & | a_1DFlux, |
const Real & | a_scale, | ||
const DataIndex & | a_dit | ||
) |
increments the 1D (losing) buffer by -flux*scale*sign(side) (side is which side of the changed cell we are talking about) typically scale = 1/dx[idir]
Referenced by ~Correct1D2D().
void Correct1D2D::increment2D | ( | const EBFaceFAB & | a_2DFlux, |
const Real & | a_scale, | ||
const DataIndex & | a_dit | ||
) |
increments the 2D (winning) buffer by flux*scale*sign(side) (side is which side of the changed cell we are talking about) typically scale = 1/dx[idir]
Referenced by ~Correct1D2D().
subtracts off change in solution due to losing flux and adds in change in solution due to winning flux.
Referenced by ~Correct1D2D().
|
inlineprotected |
References SpaceDim.
|
inlineprivate |
References MayDay::Error().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |