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
AutomatonState(ObjectConstruction)
static void receiveAndPollDanglingMessages(peano4::grid::AutomatonState &message, int source, int tag, MPI_Comm communicator=tarch::mpi::Rank::getInstance().getCommunicator())
void setInverted(bool value)
std::bitset< Dimensions > _evenFlags
double getH(int index) const
tarch::la::Vector< Dimensions, double > _h
static void freeJoinDatatype()
tarch::la::Vector< DimensionsTimesTwo, int > _accessNumber
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.
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 freeGlobalCommunciationDatatype()
void setH(const tarch::la::Vector< Dimensions, double > &value)
static void freeForkDatatype()
double getX(int index) const
AutomatonState(const AutomatonState ©)
void setAccessNumber(int index, int value)
static MPI_Datatype getForkDatatype()
Hands out MPI datatype if we work without the LLVM MPI extension.
static MPI_Datatype getBoundaryExchangeDatatype()
~AutomatonState()=default
AutomatonState(int __level, tarch::la::Vector< Dimensions, double > __x, tarch::la::Vector< Dimensions, double > __h, bool __inverted, std::bitset< Dimensions > __evenFlags, tarch::la::Vector< DimensionsTimesTwo, int > __accessNumber)
static void freeBoundaryExchangeDatatype()
int getAccessNumber(int index) const
void flipEvenFlags(int index)
static void initDatatype()
Wrapper around getDatatype() to trigger lazy evaluation if we use the lazy initialisation.
tarch::la::Vector< DimensionsTimesTwo, int > getAccessNumber() const
void setH(int index, double value)
static MPI_Datatype getJoinDatatype()
static void receive(peano4::grid::AutomatonState &buffer, int source, int tag, MPI_Comm communicator)
void setX(int index, double value)
static void send(const peano4::grid::AutomatonState &buffer, int destination, int tag, std::function< void()> startCommunicationFunctor, std::function< void()> waitFunctor, MPI_Comm communicator)
Alternative to the other send() where I trigger a non-blocking send an then invoke the functor until ...
AutomatonState & operator=(const AutomatonState &other)
static void receive(peano4::grid::AutomatonState &buffer, int source, int tag, std::function< void()> startCommunicationFunctor, std::function< void()> waitFunctor, MPI_Comm communicator)
static MPI_Datatype getGlobalCommunciationDatatype()
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
bool getEvenFlags(int index) const
int _senderDestinationRank
void setEvenFlags(int index, bool value)
static void freeMultiscaleDataExchangeDatatype()
static void sendAndPollDanglingMessages(const peano4::grid::AutomatonState &message, int destination, int tag, MPI_Comm communicator=tarch::mpi::Rank::getInstance().getCommunicator())
static void shutdownDatatype()
Free the underlying MPI datatype.