diff --git a/dune/common/parallel/indicessyncer.hh b/dune/common/parallel/indicessyncer.hh index 178464e8617c2dc08f3feedc4f1d68cc24304e70..7208149b117c1821745fdc4e3a6325e3f2f1f4e9 100644 --- a/dune/common/parallel/indicessyncer.hh +++ b/dune/common/parallel/indicessyncer.hh @@ -657,7 +657,11 @@ namespace Dune displacement[0] -= base; displacement[1] -= base; + #if MPI_2 + MPI_Type_create_struct( 2, blocklength, displacement, type, &datatype_); + #else MPI_Type_struct( 2, blocklength, displacement, type, &datatype_); + #endif MPI_Type_commit(&datatype_); } diff --git a/dune/common/parallel/plocalindex.hh b/dune/common/parallel/plocalindex.hh index e371545d81d56c0eddf95d1439f63d651d162a99..06a85ee5f95b953b09d5dcf77fad279b0bf65745 100644 --- a/dune/common/parallel/plocalindex.hh +++ b/dune/common/parallel/plocalindex.hh @@ -305,7 +305,11 @@ namespace Dune #endif for(int i=2; i >= 0; --i) disp[i] -= disp[0]; + #if MPI_2 + MPI_Type_create_struct(3, length, disp, types, &type); + #else MPI_Type_struct(3, length, disp, types, &type); + #endif MPI_Type_commit(&type); } return type; diff --git a/dune/common/parallel/remoteindices.hh b/dune/common/parallel/remoteindices.hh index fc0cd13c8c5656b43bba4a021bf9c173d41e605c..597cc524afe5b882bc88b7d8bfc044b3c2b2db9a 100644 --- a/dune/common/parallel/remoteindices.hh +++ b/dune/common/parallel/remoteindices.hh @@ -904,7 +904,11 @@ namespace Dune { #endif for(int i=3; i >= 0; --i) disp[i] -= disp[0]; + #if MPI_2 + MPI_Type_create_struct(4, length, disp, types, &type); + #else MPI_Type_struct(4, length, disp, types, &type); + #endif MPI_Type_commit(&type); } return type;