44 MPI_Datatype primalMpiType;
45 MPI_Datatype adjointMpiType;
79 primalMpiType(primalMpiType),
80 adjointMpiType(adjointMpiType) {}
98 return adjointMpiType;
307 template <
typename Impl,
typename Adjo
intTypeB,
typename PrimalTypeB,
typename IndexTypeB>
318 ADToolBase(MPI_Datatype primalMpiType, MPI_Datatype adjointMpiType) :
322 cast().createPrimalTypeBuffer(castBuffer<PrimalTypeB>(buf), size);
326 cast().createIndexTypeBuffer(castBuffer<IndexTypeB>(buf), size);
330 cast().deletePrimalTypeBuffer(castBuffer<PrimalTypeB>(buf));
334 cast().deleteIndexTypeBuffer(castBuffer<IndexTypeB>(buf));
338 cast().iterateIdentifiers(castBuffer<IndexTypeB>(indices), elements, (
CallbackFuncTyped)func, userData);
344 inline Impl& cast() {
345 return *
reinterpret_cast<Impl*
>(
this);
348 inline const Impl& cast()
const {
349 return *
reinterpret_cast<const Impl*
>(
this);
352 template <
typename T>
353 inline T*& castBuffer(
void*& buf)
const {
354 return reinterpret_cast<T*&
>(buf);
357 template <
typename T>
358 inline const T*& castBuffer(
const void* &buf)
const {
359 return reinterpret_cast<const T*&
>(buf);
Global namespace for MeDiPack - Message Differentiation Package.
Definition adjointInterface.hpp:37
ADToolInterface const * selectADTool(ADToolInterface const &tool)
Definition adToolInterface.h:363
void(*)(void *id, void *userData) CallbackFunc
Definition typeDefinitions.h:45
Structure for the special handling of the MPI_Op structure.
Definition op.hpp:50
Definition typeDefinitions.h:57