40 std::bitset<Dimensions> __evenFlags,
53 double getX(
int index)
const;
54 void setX(
int index,
double value);
57 double getH(
int index)
const;
58 void setH(
int index,
double value);
77 [[clang::map_mpi_datatype]]
80 [[clang::map_mpi_datatype]]
83 [[clang::map_mpi_datatype]]
86 [[clang::map_mpi_datatype]]
89 [[clang::map_mpi_datatype]]
92 [[clang::map_mpi_datatype]]
95 [[clang::map_mpi_datatype]]
98 [[clang::map_mpi_datatype]]
101 [[clang::map_mpi_datatype]]
104 [[clang::map_mpi_datatype]]
146 std::function<
void()> startCommunicationFunctor,
147 std::function<
void()> waitFunctor,
148 MPI_Comm communicator
154 std::function<
void()> startCommunicationFunctor,
155 std::function<
void()> waitFunctor,
156 MPI_Comm communicator
185#if defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
186 [[clang::truncate_mantissa(48)]]
double _x[Dimensions];
188#if !defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
191#if defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
192 [[clang::truncate_mantissa(48)]]
double _h[Dimensions];
194#if !defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
198#if defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
201#if !defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
204#if defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
207#if !defined(__PACKED_ATTRIBUTES_LANGUAGE_EXTENSION__)
214#if !defined(__MPI_ATTRIBUTES_LANGUAGE_EXTENSION__)
#define DimensionsTimesTwo
static Rank & getInstance()
This operation returns the singleton instance.
tarch::la::Vector< Dimensions, double > getX() const
void setAccessNumber(const tarch::la::Vector< DimensionsTimesTwo, int > &value)
std::string toString() const
std::bitset< Dimensions > getEvenFlags() const
static void freeBoundaryExchangeDatatype()
AutomatonState(ObjectConstruction)
void setInverted(bool value)
static MPI_Datatype getBoundaryExchangeDatatype()
std::bitset< Dimensions > _evenFlags
tarch::la::Vector< Dimensions, double > _h
AutomatonState & operator=(const AutomatonState &other)
static void send(const peano4::grid::AutomatonState &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.
tarch::la::Vector< DimensionsTimesTwo, int > _accessNumber
int getSenderRank() const
tarch::la::Vector< Dimensions, double > getH() const
static MPI_Datatype Datatype
Whenever we use LLVM's MPI extension (DaStGe), we rely on lazy initialisation of the datatype.
static void shutdownDatatype()
Free the underlying MPI datatype.
static MPI_Datatype getJoinDatatype()
void setH(const tarch::la::Vector< Dimensions, double > &value)
static MPI_Datatype getGlobalCommunciationDatatype()
static MPI_Datatype getForkDatatype()
Hands out MPI datatype if we work without the LLVM MPI extension.
~AutomatonState()=default
static void freeMultiscaleDataExchangeDatatype()
static void freeGlobalCommunciationDatatype()
void flipEvenFlags(int index)
tarch::la::Vector< DimensionsTimesTwo, int > getAccessNumber() const
static void freeForkDatatype()
static void sendAndPollDanglingMessages(const peano4::grid::AutomatonState &message, int destination, int tag, MPI_Comm communicator=tarch::mpi::Rank::getInstance().getCommunicator())
static void initDatatype()
Wrapper around getDatatype() to trigger lazy evaluation if we use the lazy initialisation.
void setEvenFlags(const std::bitset< Dimensions > &value)
void setX(const tarch::la::Vector< Dimensions, double > &value)
static MPI_Datatype getMultiscaleDataExchangeDatatype()
tarch::la::Vector< Dimensions, double > _x
int _senderDestinationRank
static void freeJoinDatatype()
static void receive(peano4::grid::AutomatonState &buffer, int source, int tag, MPI_Comm communicator)
static void receiveAndPollDanglingMessages(peano4::grid::AutomatonState &message, int source, int tag, MPI_Comm communicator=tarch::mpi::Rank::getInstance().getCommunicator())