add mpi serialization for UDQIndex

This commit is contained in:
Arne Morten Kvarving 2019-12-11 16:41:09 +01:00
parent fcd6c7582b
commit dc5a3d0e0e
3 changed files with 43 additions and 1 deletions

View File

@ -39,6 +39,7 @@
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQASTNode.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQDefine.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQFunction.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQInput.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQFunctionTable.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/VFPInjTable.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/VFPProdTable.hpp>
@ -1331,6 +1332,15 @@ std::size_t packSize(const UDQAssign& data,
packSize(data.getRecords(), comm);
}
std::size_t packSize(const UDQIndex& data,
Dune::MPIHelper::MPICommunicator comm)
{
return packSize(data.insert_index, comm) +
packSize(data.typed_insert_index, comm) +
packSize(data.action, comm) +
packSize(data.var_type, comm);
}
////// pack routines
template<class T>
@ -2680,6 +2690,16 @@ void pack(const UDQAssign& data,
pack(data.getRecords(), buffer, position, comm);
}
void pack(const UDQIndex& data,
std::vector<char>& buffer, int& position,
Dune::MPIHelper::MPICommunicator comm)
{
pack(data.insert_index, buffer, position, comm);
pack(data.typed_insert_index, buffer, position, comm);
pack(data.action, buffer, position, comm);
pack(data.var_type, buffer, position, comm);
}
/// unpack routines
template<class T>
@ -4585,7 +4605,15 @@ void unpack(UDQAssign& data,
data = UDQAssign(keyword, varType, records);
}
void unpack(UDQIndex& data,
std::vector<char>& buffer, int& position,
Dune::MPIHelper::MPICommunicator comm)
{
unpack(data.insert_index, buffer, position, comm);
unpack(data.typed_insert_index, buffer, position, comm);
unpack(data.action, buffer, position, comm);
unpack(data.var_type, buffer, position, comm);
}
#define INSTANTIATE_PACK_VECTOR(T) \
template std::size_t packSize(const std::vector<T>& data, \

View File

@ -117,6 +117,7 @@ class UDQASTNode;
class UDQDefine;
class UDQFunction;
class UDQFunctionTable;
class UDQIndex;
class UDQParams;
class UnitSystem;
class Valve;
@ -638,6 +639,7 @@ ADD_PACK_PROTOTYPES(UDQASTNode)
ADD_PACK_PROTOTYPES(UDQDefine)
ADD_PACK_PROTOTYPES(UDQFunction)
ADD_PACK_PROTOTYPES(UDQFunctionTable)
ADD_PACK_PROTOTYPES(UDQIndex)
ADD_PACK_PROTOTYPES(UDQParams)
ADD_PACK_PROTOTYPES(UnitSystem)
ADD_PACK_PROTOTYPES(Valve)

View File

@ -48,6 +48,7 @@
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQDefine.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQFunction.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQFunctionTable.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQInput.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/VFPInjTable.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/VFPProdTable.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Connection.hpp>
@ -1739,6 +1740,17 @@ BOOST_AUTO_TEST_CASE(UDQAssign)
}
BOOST_AUTO_TEST_CASE(UDQIndex)
{
#ifdef HAVE_MPI
Opm::UDQIndex val1(1, 2, Opm::UDQAction::ASSIGN, Opm::UDQVarType::WELL_VAR);
auto val2 = PackUnpack(val1);
BOOST_CHECK(std::get<1>(val2) == std::get<2>(val2));
BOOST_CHECK(val1 == std::get<0>(val2));
#endif
}
bool init_unit_test_func()
{
return true;