79 static MPI_Datatype MPI_NUCLEUS = MPI_DATATYPE_NULL;
80 if (MPI_NUCLEUS != MPI_DATATYPE_NULL)
85 constexpr int block_lengths[4] = {1,
static_cast<int>(dim), 1, 1};
86 MPI_Datatype types[4] = {MPI_UNSIGNED, MPI_DOUBLE, MPI_DOUBLE, MPI_UNSIGNED};
87 MPI_Aint displacements[4];
91 MPI_Get_address(&dummy, &base);
93 MPI_Get_address(&dummy.
field_index, &displacements[0]);
94 MPI_Get_address(&dummy.
location[0], &displacements[1]);
95 MPI_Get_address(&dummy.
seed_time, &displacements[2]);
98 for (
int i = 0; i < 4; ++i)
100 displacements[i] -= base;
103 MPI_Type_create_struct(4, block_lengths, displacements, types, &MPI_NUCLEUS);
104 MPI_Type_commit(&MPI_NUCLEUS);
Nucleus(const unsigned int &_field_index, const dealii::Point< dim > &_location, const double &_seed_time, const unsigned int &_seed_increment)
Definition nucleus.h:30