diff --git a/opm/simulators/utils/ParallelRestart.cpp b/opm/simulators/utils/ParallelRestart.cpp index 68e2e998b..714ad7a1c 100644 --- a/opm/simulators/utils/ParallelRestart.cpp +++ b/opm/simulators/utils/ParallelRestart.cpp @@ -27,7 +27,9 @@ #include #include #include + #include +#include #include #include #include @@ -1407,30 +1409,11 @@ RestartValue loadParallelRestart(const EclipseIO* eclIO, Action::State& actionSt { assert(comm.rank() == 0); restartValues = eclIO->loadRestart(actionState, summaryState, solutionKeys, extraKeys); - int packedSize = Mpi::packSize(restartValues, comm); - std::vector buffer(packedSize); - int position=0; - Mpi::pack(restartValues, buffer, position, comm); - comm.broadcast(&position, 1, 0); - comm.broadcast(buffer.data(), position, 0); - std::vector buf2 = summaryState.serialize(); - int size = buf2.size(); - comm.broadcast(&size, 1, 0); - comm.broadcast(buf2.data(), size, 0); - } - else - { - int bufferSize{}; - comm.broadcast(&bufferSize, 1, 0); - std::vector buffer(bufferSize); - comm.broadcast(buffer.data(), bufferSize, 0); - int position{}; - Mpi::unpack(restartValues, buffer, position, comm); - comm.broadcast(&bufferSize, 1, 0); - buffer.resize(bufferSize); - comm.broadcast(buffer.data(), bufferSize, 0); - summaryState.deserialize(buffer); } + + EclMpiSerializer ser(comm); + ser.broadcast(restartValues); + ser.broadcast(summaryState); return restartValues; #else (void) comm;