44 MPI_Datatype primalMpiType;
45 MPI_Datatype adjointMpiType;
79 primalMpiType(primalMpiType),
80 adjointMpiType(adjointMpiType) {}
98 return adjointMpiType;
293 template <
typename Impl,
typename Adjo
intTypeB,
typename PrimalTypeB,
typename IndexTypeB>
302 ADToolBase(MPI_Datatype primalMpiType, MPI_Datatype adjointMpiType) :
306 cast().createPrimalTypeBuffer(castBuffer<PrimalTypeB>(buf), size);
310 cast().createIndexTypeBuffer(castBuffer<IndexTypeB>(buf), size);
314 cast().deletePrimalTypeBuffer(castBuffer<PrimalTypeB>(buf));
318 cast().deleteIndexTypeBuffer(castBuffer<IndexTypeB>(buf));
323 inline Impl& cast() {
324 return *
reinterpret_cast<Impl*
>(
this);
327 inline const Impl& cast()
const {
328 return *
reinterpret_cast<const Impl*
>(
this);
331 template <
typename T>
332 inline T*& castBuffer(
void*& buf)
const {
333 return reinterpret_cast<T*&
>(buf);
336 template <
typename T>
337 inline const T*& castBuffer(
const void* &buf)
const {
338 return reinterpret_cast<const T*&
>(buf);
Global namespace for MeDiPack - Message Differentiation Package.
Definition adjointInterface.hpp:37
Structure for the special handling of the MPI_Op structure.
Definition op.hpp:50
Definition typeDefinitions.h:53