Peano
|
Cell access class. More...
#include <CellAccess.h>
Public Member Functions | |
CellAccess (const double *__restrict__ QIn, int haloSize, int unknowns, int numberOfAuxiliaryVariables, int numberOfDoFsPerAxisInPatch) | |
~CellAccess ()=default | |
int | size () const |
const double *__restrict__ | operator() (const tarch::la::Vector< Dimensions, int > &relativeCellPosition) const |
Get a pointer to another cell's data. | |
double | operator() (const tarch::la::Vector< Dimensions, int > &relativeCellPosition, int unknown) const |
double | centre (int unknown) const |
const double *__restrict__ | left (int normal) const |
Return access to the left neighbour. | |
const double *__restrict__ | right (int normal) const |
double | left (int normal, int unknown) const |
double | right (int normal, int unknown) const |
std::string | toString () const |
Private Attributes | |
const double *__restrict__ | _QIn |
const int | _haloSize |
const int | _unknowns |
const int | _numberOfAuxiliaryVariables |
const int | _numberOfDoFsPerAxisInPatch |
Cell access class.
This class is to be used by user code which do not only want to work cell-wisely, but also need access to neighbour cells. For example, it can be used in the source term code to get access to the neighbour cell to evaluate a second derivative.
haloSize | For a Finite Volume solver, this is 1 if each patch is augmented with one halo volume around it. For a DG solver, it is 1 if you project only one quantity, i.e., the solution. However, you might have a value bigger than 1 if you also project higher order properties such as the first derivative along the normal. Some code snippets within ExaHyPE call the haloSize overlap. |
Definition at line 29 of file CellAccess.h.
exahype2::CellAccess::CellAccess | ( | const double *__restrict__ | QIn, |
int | haloSize, | ||
int | unknowns, | ||
int | numberOfAuxiliaryVariables, | ||
int | numberOfDoFsPerAxisInPatch ) |
Definition at line 4 of file CellAccess.cpp.
|
default |
Definition at line 79 of file CellAccess.cpp.
Return access to the left neighbour.
Left means left along coordinate axis normal.
Definition at line 51 of file CellAccess.cpp.
Definition at line 65 of file CellAccess.cpp.
const double *__restrict__ exahype2::CellAccess::operator() | ( | const tarch::la::Vector< Dimensions, int > & | relativeCellPosition | ) | const |
Get a pointer to another cell's data.
Pass in {0,0,0} and 0 as unknown, and you will get the current cell for which you have created the CellAccess object. Pass in {0,0,0} and k to access its kth unknown. Pass in {-1,0,0} for example to access the left neighbour of a cell.
Definition at line 29 of file CellAccess.cpp.
double exahype2::CellAccess::operator() | ( | const tarch::la::Vector< Dimensions, int > & | relativeCellPosition, |
int | unknown ) const |
Definition at line 45 of file CellAccess.cpp.
Definition at line 58 of file CellAccess.cpp.
Definition at line 72 of file CellAccess.cpp.
int exahype2::CellAccess::size | ( | ) | const |
Definition at line 18 of file CellAccess.cpp.
Referenced by peano4.visualisation.input.Patch.Patch::__repr__(), kernel_impl.Enumerator::fetch(), kernel_impl.Enumerator::lower(), and kernel_impl.Enumerator::upper().
std::string exahype2::CellAccess::toString | ( | ) | const |
|
private |
Definition at line 69 of file CellAccess.h.
|
private |
Definition at line 71 of file CellAccess.h.
|
private |
Definition at line 72 of file CellAccess.h.
|
private |
Definition at line 68 of file CellAccess.h.
|
private |
Definition at line 70 of file CellAccess.h.
Referenced by exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG::__str__(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences::__str__(), exahype2.solvers.aderdg.ADERDG.ADERDG::_init_dictionary_with_default_parameters(), exahype2.solvers.fv.FV.FV::_init_dictionary_with_default_parameters(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG::_init_dictionary_with_default_parameters(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences::_init_dictionary_with_default_parameters(), peano4.visualisation.output.Visualiser.PatchFileData::apply_renderer_to_data(), peano4.visualisation.output.Visualiser.PatchFileData::copy_data_from_parser_object(), api.solvers.CollocatedLowOrderDiscretisation.AssemblePetscMatrix::get_constructor_body(), exahype2.solvers.aderdg.ADERDG.ADERDG::unknowns(), exahype2.solvers.fv.FV.FV::unknowns(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG::unknowns(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences::unknowns(), exahype2.solvers.fv.FV.FV::unknowns(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG::unknowns(), and exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences::unknowns().