15 namespace datamanagement {
250 void setRelativePositionWithinFatherCell(
int axis,
int value);
268 static void send(
const CellMarker& buffer,
int destination,
int tag, MPI_Comm communicator);
269 static void receive(
CellMarker& buffer,
int source,
int tag, MPI_Comm communicator);
277 static void send(
const CellMarker& buffer,
int destination,
int tag, std::function<
void()> startCommunicationFunctor, std::function<
void()> waitFunctor, MPI_Comm communicator);
278 static void receive(
CellMarker& buffer,
int source,
int tag, std::function<
void()> startCommunicationFunctor, std::function<
void()> waitFunctor, MPI_Comm communicator);
std::ostream & operator<<(std::ostream &out, const peano4::datamanagement::CellMarker &marker)
constexpr double NUMERICAL_ZERO_DIFFERENCE
tarch::la::Vector< Dimensions, double > x() const
Centre of a cell.
CellMarker(const peano4::grid::GridTraversalEvent &event)
bool isLocal() const
Usually if you have an event of a cell, then the cell is alo local.
tarch::la::Vector< Dimensions, double > getOffset() const
tarch::la::Vector< Dimensions, double > _h
bool overlaps(const tarch::la::Vector< Dimensions, double > &offset, const tarch::la::Vector< Dimensions, double > &size) const
bool _invokingSpacetreeIsNotInvolvedInAnyDynamicLoadBalancing
static void shutdownDatatype()
static void receive(CellMarker &buffer, int source, int tag, MPI_Comm communicator)
tarch::la::Vector< Dimensions, double > getInvokingParentCellsCentre() const
See getInvokingCellCentre().
bool hasBeenRefined() const
Has the cell been refined when we kicked off this mesh traversal.
static MPI_Datatype Datatype
tarch::la::Vector< Dimensions, int > getRelativePositionWithinFatherCell() const
tarch::la::Vector< Dimensions, int > _relativePositionOfCellWithinFatherCell
Entries from (0,1,2).
bool _areAllVerticesRefined
bool _areAllVerticesInsideDomain
bool hasBeenSkeletonCell() const
A skeleton cell is a not-enclave cell.
bool _isOneVertexCreatedOrDestroyed
bool isParentLocal() const
A cell can be local and its parent still might not be local.
static void initDatatype()
To be called prior to any MPI usage of this class.
bool isContained(const tarch::la::Vector< Dimensions, double > &x, double tolerance=tarch::la::NUMERICAL_ZERO_DIFFERENCE) const
Is x contained within cell identified by marker object.
bool hasBeenEnclaveCell() const
Define enclave cell.
std::string toString() const
static void receiveAndPollDanglingMessages(CellMarker &message, int source, int tag, MPI_Comm communicator)
bool willBeEnclaveCell() const
tarch::la::Vector< Dimensions, double > h() const
bool willBeSkeletonCell() const
tarch::la::Vector< Dimensions, double > _centre
static void sendAndPollDanglingMessages(const CellMarker &message, int destination, int tag, MPI_Comm communicator)
bool willBeRefined() const
Will the cell be refined in the subsequent iteration.
static void send(const CellMarker &buffer, int destination, int tag, MPI_Comm communicator)
In DaStGen (the first version), I had a non-static version of the send as well as the receive.