2019-10-10 16:06:55 -05:00
|
|
|
/*
|
|
|
|
Copyright 2019 Equinor AS.
|
|
|
|
|
|
|
|
This file is part of the Open Porous Media project (OPM).
|
|
|
|
|
|
|
|
OPM is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
OPM is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#ifndef PARALLEL_RESTART_HPP
|
|
|
|
#define PARALLEL_RESTART_HPP
|
|
|
|
|
|
|
|
#if HAVE_MPI
|
|
|
|
#include <mpi.h>
|
|
|
|
#endif
|
|
|
|
|
2019-12-05 02:47:57 -06:00
|
|
|
#include <opm/material/common/Tabulated1DFunction.hpp>
|
2019-12-04 04:12:51 -06:00
|
|
|
#include <opm/material/common/IntervalTabulated2DFunction.hpp>
|
2019-12-05 02:35:25 -06:00
|
|
|
#include <opm/material/common/UniformXTabulated2DFunction.hpp>
|
2020-02-05 12:11:02 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/ConstantCompressibilityBrinePvt.hpp>
|
2019-12-05 05:25:02 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/ConstantCompressibilityOilPvt.hpp>
|
2019-12-05 13:04:01 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/ConstantCompressibilityWaterPvt.hpp>
|
2019-12-05 05:36:29 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/DeadOilPvt.hpp>
|
2019-12-04 13:35:55 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/DryGasPvt.hpp>
|
2019-12-05 03:42:45 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/GasPvtMultiplexer.hpp>
|
2019-12-05 07:06:59 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/LiveOilPvt.hpp>
|
2019-12-05 07:29:42 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/OilPvtMultiplexer.hpp>
|
2019-12-05 02:47:57 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/SolventPvt.hpp>
|
2019-12-05 13:19:16 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/WaterPvtMultiplexer.hpp>
|
2019-12-05 02:47:57 -06:00
|
|
|
#include <opm/material/fluidsystems/blackoilpvt/WetGasPvt.hpp>
|
2019-10-10 16:06:55 -05:00
|
|
|
#include <opm/output/eclipse/RestartValue.hpp>
|
|
|
|
#include <opm/output/eclipse/EclipseIO.hpp>
|
|
|
|
#include <opm/output/eclipse/Summary.hpp>
|
2020-02-11 02:26:42 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Aquancon.hpp>
|
|
|
|
#include <opm/parser/eclipse/EclipseState/AquiferCT.hpp>
|
|
|
|
#include <opm/parser/eclipse/EclipseState/Aquifetp.hpp>
|
2019-11-29 08:58:59 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/DynamicState.hpp>
|
2019-12-06 16:25:44 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/DynamicVector.hpp>
|
2019-12-12 07:00:07 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Group/GConSale.hpp>
|
2019-12-12 07:12:29 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Group/GConSump.hpp>
|
2019-12-11 06:32:28 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Group/Group.hpp>
|
2019-12-12 06:40:13 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateConfig.hpp>
|
2019-11-29 08:47:55 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
|
2019-12-11 09:31:47 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQAssign.hpp>
|
2019-12-12 04:54:46 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQActive.hpp>
|
2019-12-10 06:31:55 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
|
2019-12-09 04:07:37 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellTestConfig.hpp>
|
2019-11-29 03:16:05 -06:00
|
|
|
#include <opm/parser/eclipse/EclipseState/Util/OrderedMap.hpp>
|
2019-10-10 16:06:55 -05:00
|
|
|
|
|
|
|
#include <dune/common/parallel/mpihelper.hh>
|
|
|
|
|
2020-01-06 08:26:41 -06:00
|
|
|
#include <set>
|
2019-12-05 02:34:29 -06:00
|
|
|
#include <tuple>
|
2019-10-10 16:06:55 -05:00
|
|
|
#include <vector>
|
|
|
|
#include <map>
|
|
|
|
#include <unordered_map>
|
2019-11-28 06:47:56 -06:00
|
|
|
|
2019-10-10 16:06:55 -05:00
|
|
|
namespace Opm
|
|
|
|
{
|
2019-11-28 05:58:40 -06:00
|
|
|
|
2019-12-02 05:30:34 -06:00
|
|
|
class Actdims;
|
2019-12-17 07:58:39 -06:00
|
|
|
|
|
|
|
namespace Action {
|
2019-12-18 05:25:59 -06:00
|
|
|
class Actions;
|
2019-12-18 04:08:55 -06:00
|
|
|
class ActionX;
|
2019-12-17 08:44:42 -06:00
|
|
|
class AST;
|
2019-12-17 07:58:39 -06:00
|
|
|
class ASTNode;
|
2019-12-17 09:01:46 -06:00
|
|
|
class Condition;
|
2019-12-17 08:53:31 -06:00
|
|
|
class Quantity;
|
2019-12-17 07:58:39 -06:00
|
|
|
}
|
|
|
|
|
2019-12-03 03:09:43 -06:00
|
|
|
class Aqudims;
|
2020-01-08 05:38:37 -06:00
|
|
|
class BrineDensityTable;
|
2019-11-29 03:18:34 -06:00
|
|
|
class ColumnSchema;
|
2019-12-10 07:18:02 -06:00
|
|
|
class Connection;
|
2019-12-12 08:34:24 -06:00
|
|
|
class DeckItem;
|
2019-12-12 08:42:05 -06:00
|
|
|
class DeckRecord;
|
2019-12-02 08:52:39 -06:00
|
|
|
class DENSITYRecord;
|
2019-12-02 08:52:39 -06:00
|
|
|
class DensityTable;
|
2019-12-11 04:42:45 -06:00
|
|
|
class Dimension;
|
2019-12-02 05:22:19 -06:00
|
|
|
class EclHysterConfig;
|
2020-01-14 07:47:44 -06:00
|
|
|
class EclipseConfig;
|
2019-12-02 17:00:08 -06:00
|
|
|
class Eqldims;
|
2020-01-22 04:02:01 -06:00
|
|
|
template<class Scalar> struct EclEpsScalingPointsInfo;
|
2019-11-28 08:12:16 -06:00
|
|
|
class EDITNNC;
|
2019-12-02 04:10:47 -06:00
|
|
|
class EndpointScaling;
|
2019-11-29 06:16:00 -06:00
|
|
|
class Equil;
|
2019-11-29 06:01:43 -06:00
|
|
|
class EquilRecord;
|
2019-12-06 16:26:38 -06:00
|
|
|
class Events;
|
2020-01-14 08:00:42 -06:00
|
|
|
class Fault;
|
2020-01-14 08:00:42 -06:00
|
|
|
class FaultCollection;
|
2020-01-14 08:00:42 -06:00
|
|
|
class FaultFace;
|
2019-11-29 07:14:13 -06:00
|
|
|
class FoamConfig;
|
2019-11-29 06:37:35 -06:00
|
|
|
class FoamData;
|
2019-11-29 07:14:47 -06:00
|
|
|
class InitConfig;
|
2019-12-02 03:20:28 -06:00
|
|
|
class IOConfig;
|
2019-12-11 06:29:06 -06:00
|
|
|
template<class T> class IOrderSet;
|
2019-12-02 08:13:33 -06:00
|
|
|
class JFunc;
|
2019-12-13 04:40:43 -06:00
|
|
|
class Location;
|
2019-12-06 17:07:20 -06:00
|
|
|
class MessageLimits;
|
2019-12-06 16:50:51 -06:00
|
|
|
class MLimits;
|
2020-01-14 05:29:23 -06:00
|
|
|
class MULTREGTRecord;
|
2020-01-14 07:19:32 -06:00
|
|
|
class MULTREGTScanner;
|
2019-11-28 08:12:16 -06:00
|
|
|
class NNC;
|
|
|
|
struct NNCdata;
|
2019-12-06 16:04:44 -06:00
|
|
|
class OilVaporizationProperties;
|
2019-12-02 03:46:58 -06:00
|
|
|
class Phases;
|
2019-12-02 16:01:00 -06:00
|
|
|
class PlymwinjTable;
|
2019-12-02 16:00:46 -06:00
|
|
|
class PolyInjTable;
|
2019-12-02 08:30:15 -06:00
|
|
|
class PVCDORecord;
|
2019-12-02 08:39:50 -06:00
|
|
|
class PvcdoTable;
|
2019-12-02 07:49:40 -06:00
|
|
|
class PvtgTable;
|
|
|
|
class PvtoTable;
|
2019-12-02 08:30:15 -06:00
|
|
|
class PVTWRecord;
|
2020-01-08 05:38:37 -06:00
|
|
|
class PvtwsaltTable;
|
2019-12-02 08:39:50 -06:00
|
|
|
class PvtwTable;
|
2019-12-02 16:49:10 -06:00
|
|
|
class Regdims;
|
2019-12-02 02:38:52 -06:00
|
|
|
class RestartConfig;
|
2019-11-29 08:47:45 -06:00
|
|
|
class RestartSchedule;
|
2019-12-12 08:00:34 -06:00
|
|
|
class RFTConfig;
|
2020-01-27 04:13:06 -06:00
|
|
|
class RockConfig;
|
2019-12-03 03:18:29 -06:00
|
|
|
class ROCKRecord;
|
2019-12-03 04:49:27 -06:00
|
|
|
class RockTable;
|
2019-11-28 08:46:13 -06:00
|
|
|
class Rock2dTable;
|
2019-11-28 08:46:13 -06:00
|
|
|
class Rock2dtrTable;
|
2019-12-02 05:47:48 -06:00
|
|
|
class Runspec;
|
2019-12-18 05:25:59 -06:00
|
|
|
class Schedule;
|
2019-12-10 06:47:01 -06:00
|
|
|
class Segment;
|
2019-11-29 07:31:08 -06:00
|
|
|
class SimulationConfig;
|
2019-11-29 04:19:34 -06:00
|
|
|
class SimpleTable;
|
2019-12-02 16:34:19 -06:00
|
|
|
class SkprpolyTable;
|
2019-12-02 16:34:31 -06:00
|
|
|
class SkprwatTable;
|
2019-12-10 06:44:33 -06:00
|
|
|
class SpiralICD;
|
2020-01-06 08:27:37 -06:00
|
|
|
class SummaryConfig;
|
2020-01-06 08:00:05 -06:00
|
|
|
class SummaryNode;
|
2019-12-02 04:10:34 -06:00
|
|
|
class Tabdims;
|
2019-11-29 04:19:16 -06:00
|
|
|
class TableColumn;
|
2019-11-29 05:06:40 -06:00
|
|
|
class TableContainer;
|
2019-12-03 05:31:24 -06:00
|
|
|
class TableManager;
|
2019-11-29 03:18:48 -06:00
|
|
|
class TableSchema;
|
2019-11-28 05:58:40 -06:00
|
|
|
class ThresholdPressure;
|
2020-01-16 05:27:39 -06:00
|
|
|
class TimeStampUTC;
|
2020-01-14 07:48:11 -06:00
|
|
|
class TransMult;
|
2019-12-17 06:22:05 -06:00
|
|
|
class Tuning;
|
2019-12-09 08:57:34 -06:00
|
|
|
class UDAValue;
|
2019-12-11 08:50:41 -06:00
|
|
|
class UDQASTNode;
|
2019-12-12 02:44:24 -06:00
|
|
|
class UDQConfig;
|
2019-12-11 08:56:33 -06:00
|
|
|
class UDQDefine;
|
2019-12-11 09:41:09 -06:00
|
|
|
class UDQIndex;
|
2019-12-02 05:08:27 -06:00
|
|
|
class UDQParams;
|
2019-12-11 04:43:46 -06:00
|
|
|
class UnitSystem;
|
2019-12-18 04:04:31 -06:00
|
|
|
class Valve;
|
2019-12-09 03:42:45 -06:00
|
|
|
class VFPInjTable;
|
2019-12-09 03:45:18 -06:00
|
|
|
class VFPProdTable;
|
2019-12-02 08:52:39 -06:00
|
|
|
class VISCREFRecord;
|
2019-12-02 08:52:39 -06:00
|
|
|
class ViscrefTable;
|
2019-12-02 08:52:39 -06:00
|
|
|
class WATDENTRecord;
|
2019-12-02 08:52:39 -06:00
|
|
|
class WatdentTable;
|
2019-12-10 06:24:41 -06:00
|
|
|
class WellConnections;
|
2019-12-02 04:32:28 -06:00
|
|
|
class Welldims;
|
2019-12-10 06:20:10 -06:00
|
|
|
class WellEconProductionLimits;
|
2019-12-09 08:16:30 -06:00
|
|
|
class WellFoamProperties;
|
2019-12-09 08:03:35 -06:00
|
|
|
class WellPolymerProperties;
|
2019-12-02 05:08:16 -06:00
|
|
|
class WellSegmentDims;
|
2019-12-11 04:44:58 -06:00
|
|
|
class WellSegments;
|
2019-12-09 08:25:17 -06:00
|
|
|
class WellTracerProperties;
|
2019-12-11 07:07:47 -06:00
|
|
|
class WList;
|
2019-12-11 07:17:10 -06:00
|
|
|
class WListManager;
|
2019-11-28 05:58:40 -06:00
|
|
|
|
2019-10-10 16:06:55 -05:00
|
|
|
namespace Mpi
|
|
|
|
{
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T*, std::size_t, Dune::MPIHelper::MPICommunicator,
|
|
|
|
std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T*, std::size_t l, Dune::MPIHelper::MPICommunicator comm,
|
|
|
|
std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T* data, std::size_t l, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T&, Dune::MPIHelper::MPICommunicator,
|
|
|
|
std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T&, Dune::MPIHelper::MPICommunicator comm,
|
|
|
|
std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const T& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T1, class T2>
|
|
|
|
std::size_t packSize(const std::pair<T1,T2>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T, class A>
|
|
|
|
std::size_t packSize(const std::vector<T,A>& data, Dune::MPIHelper::MPICommunicator comm);
|
2019-10-10 16:06:55 -05:00
|
|
|
|
2020-01-06 08:26:41 -06:00
|
|
|
template<class K, class C, class A>
|
|
|
|
std::size_t packSize(const std::set<K,C,A>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:58 -06:00
|
|
|
template<class T, class H, class KE, class A>
|
|
|
|
std::size_t packSize(const std::unordered_set<T,H,KE,A>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 18:21:56 -06:00
|
|
|
template<class A>
|
|
|
|
std::size_t packSize(const std::vector<bool,A>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:34:29 -06:00
|
|
|
template<class... Ts>
|
|
|
|
std::size_t packSize(const std::tuple<Ts...>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-10 06:45:47 -06:00
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const std::shared_ptr<T>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:27:18 -06:00
|
|
|
template<class T, std::size_t N>
|
|
|
|
std::size_t packSize(const std::array<T,N>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-13 08:51:17 -06:00
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const std::unique_ptr<T>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-10-10 16:06:55 -05:00
|
|
|
std::size_t packSize(const char* str, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
std::size_t packSize(const std::string& str, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class C, class A>
|
|
|
|
std::size_t packSize(const std::map<T1,T2,C,A>& data, Dune::MPIHelper::MPICommunicator comm);
|
2019-10-10 16:06:55 -05:00
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class H, class P, class A>
|
|
|
|
std::size_t packSize(const std::unordered_map<T1,T2,H,P,A>& data, Dune::MPIHelper::MPICommunicator comm);
|
2019-10-10 16:06:55 -05:00
|
|
|
|
2019-11-29 03:16:05 -06:00
|
|
|
template<class Key, class Value>
|
|
|
|
std::size_t packSize(const OrderedMap<Key,Value>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-06 16:25:44 -06:00
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const DynamicVector<T>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 08:58:59 -06:00
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const DynamicState<T>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:20:21 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const Tabulated1DFunction<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 04:12:51 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const IntervalTabulated2DFunction<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:35:25 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const UniformXTabulated2DFunction<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:21:22 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const SolventPvt<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
std::size_t packSize(const GasPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:35:55 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const DryGasPvt<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const GasPvtThermal<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:47:57 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const WetGasPvt<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:29:42 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
std::size_t packSize(const OilPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 05:25:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const ConstantCompressibilityOilPvt<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 05:36:29 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const DeadOilPvt<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:06:59 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const LiveOilPvt<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:29:42 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const OilPvtThermal<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-28 07:08:05 -06:00
|
|
|
template<class Scalar, bool enableThermal, bool enableBrine>
|
|
|
|
std::size_t packSize(const WaterPvtMultiplexer<Scalar,enableThermal,enableBrine>& data,
|
2019-12-05 13:19:16 -06:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 13:04:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const ConstantCompressibilityWaterPvt<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-02-05 12:11:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const ConstantCompressibilityBrinePvt<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 13:19:16 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const WaterPvtThermal<Scalar>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:06 -06:00
|
|
|
template<class T>
|
|
|
|
std::size_t packSize(const IOrderSet<T>& data, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-22 04:02:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
std::size_t packSize(const EclEpsScalingPointsInfo<Scalar>& data,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-10-10 16:06:55 -05:00
|
|
|
////// pack routines
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T*, std::size_t, std::vector<char>&, int&,
|
|
|
|
Dune::MPIHelper::MPICommunicator, std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T* data, std::size_t l, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm, std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T* data, std::size_t l, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T&, std::vector<char>&, int&,
|
|
|
|
Dune::MPIHelper::MPICommunicator, std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm, std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void pack(const T& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T1, class T2>
|
|
|
|
void pack(const std::pair<T1,T2>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T, class A>
|
|
|
|
void pack(const std::vector<T,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 18:21:56 -06:00
|
|
|
template<class A>
|
|
|
|
void pack(const std::vector<bool,A>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:34:29 -06:00
|
|
|
template<class... Ts>
|
|
|
|
void pack(const std::tuple<Ts...>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-06 08:26:41 -06:00
|
|
|
template<class K, class C, class A>
|
|
|
|
void pack(const std::set<K,C,A>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:58 -06:00
|
|
|
template<class T, class H, class KE, class A>
|
|
|
|
void pack(const std::unordered_set<T,H,KE,A>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-10 06:45:47 -06:00
|
|
|
template<class T>
|
|
|
|
void pack(const std::shared_ptr<T>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:27:18 -06:00
|
|
|
template<class T, size_t N>
|
|
|
|
void pack(const std::array<T,N>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-13 08:51:17 -06:00
|
|
|
template<class T>
|
|
|
|
void pack(const std::unique_ptr<T>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class C, class A>
|
|
|
|
void pack(const std::map<T1,T2,C,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class H, class P, class A>
|
|
|
|
void pack(const std::unordered_map<T1,T2,H,P,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 03:16:05 -06:00
|
|
|
template<class Key, class Value>
|
|
|
|
void pack(const OrderedMap<Key,Value>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 08:58:59 -06:00
|
|
|
template<class T>
|
|
|
|
void pack(const DynamicState<T>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-06 16:25:44 -06:00
|
|
|
template<class T>
|
|
|
|
void pack(const DynamicVector<T>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:20:21 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const Tabulated1DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 04:12:51 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const IntervalTabulated2DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:35:25 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const UniformXTabulated2DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:21:22 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const SolventPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
void pack(const GasPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:35:55 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const DryGasPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const GasPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:47:57 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const WetGasPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:29:42 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
void pack(const OilPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 05:25:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const ConstantCompressibilityOilPvt<Scalar>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 05:36:29 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const DeadOilPvt<Scalar>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:06:59 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const LiveOilPvt<Scalar>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 07:29:42 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const OilPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-28 07:08:05 -06:00
|
|
|
template<class Scalar, bool enableThermal, bool enableBrine>
|
|
|
|
void pack(const WaterPvtMultiplexer<Scalar,enableThermal,enableBrine>& data,
|
2019-12-05 13:19:16 -06:00
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 13:04:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const ConstantCompressibilityWaterPvt<Scalar>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-02-05 12:11:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const ConstantCompressibilityBrinePvt<Scalar>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 13:19:16 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const WaterPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:06 -06:00
|
|
|
template<class T>
|
|
|
|
void pack(const IOrderSet<T>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-22 04:02:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void pack(const EclEpsScalingPointsInfo<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-28 06:47:56 -06:00
|
|
|
void pack(const char* str, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
/// unpack routines
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T*, const std::size_t&, std::vector<char>&, int&,
|
|
|
|
Dune::MPIHelper::MPICommunicator, std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T* data, const std::size_t& l, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm,
|
|
|
|
std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T* data, const std::size_t& l, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T&, std::vector<char>&, int&,
|
|
|
|
Dune::MPIHelper::MPICommunicator, std::integral_constant<bool, false>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm, std::integral_constant<bool, true>);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(T& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T1, class T2>
|
|
|
|
void unpack(std::pair<T1,T2>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T, class A>
|
|
|
|
void unpack(std::vector<T,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 18:21:56 -06:00
|
|
|
template<class A>
|
|
|
|
void unpack(std::vector<bool,A>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:34:29 -06:00
|
|
|
template<class... Ts>
|
|
|
|
void unpack(std::tuple<Ts...>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-06 08:26:41 -06:00
|
|
|
template<class K, class C, class A>
|
|
|
|
void unpack(std::set<K,C,A>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:58 -06:00
|
|
|
template<class T, class H, class KE, class A>
|
|
|
|
void unpack(std::unordered_set<T,H,KE,A>& data,
|
|
|
|
std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-10 06:45:47 -06:00
|
|
|
template<class T>
|
|
|
|
void unpack(std::shared_ptr<T>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:27:18 -06:00
|
|
|
template<class T, size_t N>
|
|
|
|
void unpack(std::array<T,N>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-13 08:51:17 -06:00
|
|
|
template<class T>
|
|
|
|
void unpack(std::unique_ptr<T>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class C, class A>
|
|
|
|
void unpack(std::map<T1,T2,C,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-25 06:04:40 -06:00
|
|
|
template<class T1, class T2, class H, class P, class A>
|
|
|
|
void unpack(std::unordered_map<T1,T2,H,P,A>& data, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-29 03:16:05 -06:00
|
|
|
template<class Key, class Value>
|
|
|
|
void unpack(OrderedMap<Key,Value>& data, std::vector<char>& buffer, int& position,
|
2019-11-29 08:58:59 -06:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
void unpack(DynamicState<T>& data, std::vector<char>& buffer, int& position,
|
2019-11-29 03:16:05 -06:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
2019-12-03 07:20:21 -06:00
|
|
|
|
2019-12-06 16:25:44 -06:00
|
|
|
template<class T>
|
|
|
|
void unpack(DynamicVector<T>& data, std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:20:21 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(Tabulated1DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-03 07:21:22 -06:00
|
|
|
|
2019-12-04 04:12:51 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(IntervalTabulated2DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:35:25 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(UniformXTabulated2DFunction<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-03 07:21:22 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(SolventPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-04 13:35:55 -06:00
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
void unpack(GasPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-04 13:35:55 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(DryGasPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 02:47:57 -06:00
|
|
|
|
2019-12-05 03:42:45 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(GasPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 02:47:57 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(WetGasPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 05:25:02 -06:00
|
|
|
|
2019-12-05 07:29:42 -06:00
|
|
|
template<class Scalar, bool enableThermal>
|
|
|
|
void unpack(OilPvtMultiplexer<Scalar,enableThermal>& data,
|
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 05:25:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(ConstantCompressibilityOilPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 05:36:29 -06:00
|
|
|
|
|
|
|
template<class Scalar>
|
|
|
|
void unpack(DeadOilPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 07:06:59 -06:00
|
|
|
|
|
|
|
template<class Scalar>
|
|
|
|
void unpack(LiveOilPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 07:29:42 -06:00
|
|
|
|
|
|
|
template<class Scalar>
|
|
|
|
void unpack(OilPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-12-05 13:04:01 -06:00
|
|
|
|
2020-01-28 07:08:05 -06:00
|
|
|
template<class Scalar, bool enableThermal, bool enableBrine>
|
|
|
|
void unpack(WaterPvtMultiplexer<Scalar,enableThermal,enableBrine>& data,
|
2019-12-05 13:19:16 -06:00
|
|
|
const std::vector<char>& buffer, int& position,
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
|
|
|
template<class Scalar>
|
|
|
|
void unpack(WaterPvtThermal<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-05 13:04:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(ConstantCompressibilityWaterPvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
2019-11-29 03:16:05 -06:00
|
|
|
|
2020-02-05 12:11:02 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(ConstantCompressibilityBrinePvt<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-11 06:29:06 -06:00
|
|
|
template<class T>
|
|
|
|
void unpack(IOrderSet<T>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2020-01-22 04:02:01 -06:00
|
|
|
template<class Scalar>
|
|
|
|
void unpack(EclEpsScalingPointsInfo<Scalar>& data, std::vector<char>& buffer,
|
|
|
|
int& position, Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-28 06:47:56 -06:00
|
|
|
void unpack(char* str, std::size_t length, std::vector<char>& buffer, int& position,
|
2019-10-10 16:06:55 -05:00
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-11-28 06:47:56 -06:00
|
|
|
/// prototypes for complex types
|
|
|
|
|
|
|
|
#define ADD_PACK_PROTOTYPES(T) \
|
|
|
|
std::size_t packSize(const T& data, Dune::MPIHelper::MPICommunicator comm); \
|
|
|
|
void pack(const T& data, std::vector<char>& buffer, int& position, \
|
|
|
|
Dune::MPIHelper::MPICommunicator comm); \
|
|
|
|
void unpack(T& data, std::vector<char>& buffer, int& position, \
|
|
|
|
Dune::MPIHelper::MPICommunicator comm);
|
|
|
|
|
2019-12-02 05:30:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Actdims)
|
2019-12-18 05:25:59 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::Actions)
|
2019-12-18 04:08:55 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::ActionX)
|
2019-12-17 08:44:42 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::AST)
|
2019-12-17 07:58:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::ASTNode)
|
2019-12-17 09:01:46 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::Condition)
|
2019-12-17 08:53:31 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Action::Quantity)
|
2019-12-03 03:09:43 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Aqudims)
|
2020-02-11 02:26:42 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Aquancon)
|
|
|
|
ADD_PACK_PROTOTYPES(Aquancon::AquancCell)
|
|
|
|
ADD_PACK_PROTOTYPES(AquiferCT)
|
|
|
|
ADD_PACK_PROTOTYPES(AquiferCT::AQUCT_data)
|
|
|
|
ADD_PACK_PROTOTYPES(Aquifetp)
|
|
|
|
ADD_PACK_PROTOTYPES(Aquifetp::AQUFETP_data)
|
2020-01-25 02:31:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(BCConfig)
|
2020-01-28 03:59:06 -06:00
|
|
|
ADD_PACK_PROTOTYPES(BCConfig::BCFace)
|
2020-01-08 05:38:37 -06:00
|
|
|
ADD_PACK_PROTOTYPES(BrineDensityTable)
|
2019-11-29 03:18:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(ColumnSchema)
|
2019-12-10 07:18:02 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Connection)
|
2019-11-28 06:47:56 -06:00
|
|
|
ADD_PACK_PROTOTYPES(data::CellData)
|
|
|
|
ADD_PACK_PROTOTYPES(data::Connection)
|
2020-01-30 06:44:51 -06:00
|
|
|
ADD_PACK_PROTOTYPES(data::CurrentControl)
|
2019-11-28 06:47:56 -06:00
|
|
|
ADD_PACK_PROTOTYPES(data::Rates)
|
|
|
|
ADD_PACK_PROTOTYPES(data::Segment)
|
|
|
|
ADD_PACK_PROTOTYPES(data::Solution)
|
|
|
|
ADD_PACK_PROTOTYPES(data::Well)
|
|
|
|
ADD_PACK_PROTOTYPES(data::WellRates)
|
2019-12-13 08:51:32 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Deck)
|
2019-12-12 08:34:24 -06:00
|
|
|
ADD_PACK_PROTOTYPES(DeckItem)
|
2019-12-13 04:40:55 -06:00
|
|
|
ADD_PACK_PROTOTYPES(DeckKeyword)
|
2019-12-12 08:42:05 -06:00
|
|
|
ADD_PACK_PROTOTYPES(DeckRecord)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(DENSITYRecord)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(DensityTable)
|
2019-12-11 04:42:45 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Dimension)
|
2019-12-11 06:32:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(EclHysterConfig)
|
2020-01-14 07:47:44 -06:00
|
|
|
ADD_PACK_PROTOTYPES(EclipseConfig)
|
2019-11-28 08:12:16 -06:00
|
|
|
ADD_PACK_PROTOTYPES(EDITNNC)
|
2019-12-02 04:10:47 -06:00
|
|
|
ADD_PACK_PROTOTYPES(EndpointScaling)
|
2019-11-29 06:16:00 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Equil)
|
2019-12-11 06:32:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Eqldims)
|
2019-11-29 06:01:43 -06:00
|
|
|
ADD_PACK_PROTOTYPES(EquilRecord)
|
2019-12-06 16:26:38 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Events)
|
2020-01-14 08:00:42 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Fault)
|
2020-01-14 08:00:42 -06:00
|
|
|
ADD_PACK_PROTOTYPES(FaultCollection)
|
2020-01-14 08:00:42 -06:00
|
|
|
ADD_PACK_PROTOTYPES(FaultFace)
|
2019-11-29 07:14:13 -06:00
|
|
|
ADD_PACK_PROTOTYPES(FoamConfig)
|
2019-11-29 06:37:35 -06:00
|
|
|
ADD_PACK_PROTOTYPES(FoamData)
|
2019-12-12 07:00:07 -06:00
|
|
|
ADD_PACK_PROTOTYPES(GConSale)
|
|
|
|
ADD_PACK_PROTOTYPES(GConSale::GCONSALEGroup)
|
2019-12-12 07:12:29 -06:00
|
|
|
ADD_PACK_PROTOTYPES(GConSump)
|
|
|
|
ADD_PACK_PROTOTYPES(GConSump::GCONSUMPGroup)
|
2019-12-12 06:40:13 -06:00
|
|
|
ADD_PACK_PROTOTYPES(GuideRateConfig)
|
|
|
|
ADD_PACK_PROTOTYPES(GuideRateConfig::GroupTarget)
|
|
|
|
ADD_PACK_PROTOTYPES(GuideRateConfig::WellTarget)
|
2019-12-12 06:00:47 -06:00
|
|
|
ADD_PACK_PROTOTYPES(GuideRateModel)
|
2019-12-11 06:33:43 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Group)
|
2019-12-11 06:32:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Group::GroupInjectionProperties)
|
2019-12-11 06:33:02 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Group::GroupProductionProperties)
|
2019-11-29 07:14:47 -06:00
|
|
|
ADD_PACK_PROTOTYPES(InitConfig)
|
2019-12-02 03:20:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(IOConfig)
|
2019-12-02 08:13:33 -06:00
|
|
|
ADD_PACK_PROTOTYPES(JFunc)
|
2019-12-13 04:40:43 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Location)
|
2019-12-06 17:07:20 -06:00
|
|
|
ADD_PACK_PROTOTYPES(MessageLimits)
|
2019-12-06 16:50:51 -06:00
|
|
|
ADD_PACK_PROTOTYPES(MLimits)
|
2020-01-14 05:29:23 -06:00
|
|
|
ADD_PACK_PROTOTYPES(MULTREGTRecord)
|
2020-01-14 07:19:32 -06:00
|
|
|
ADD_PACK_PROTOTYPES(MULTREGTScanner)
|
2019-11-28 08:12:16 -06:00
|
|
|
ADD_PACK_PROTOTYPES(NNC)
|
|
|
|
ADD_PACK_PROTOTYPES(NNCdata)
|
2019-12-06 16:04:44 -06:00
|
|
|
ADD_PACK_PROTOTYPES(OilVaporizationProperties)
|
2019-12-02 03:46:58 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Phases)
|
2019-12-02 16:01:00 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PlymwinjTable)
|
2019-12-02 16:00:46 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PolyInjTable)
|
2019-12-02 08:30:15 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PVCDORecord)
|
2019-12-02 08:39:50 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PvcdoTable)
|
2019-12-02 07:49:40 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PvtgTable)
|
|
|
|
ADD_PACK_PROTOTYPES(PvtoTable)
|
2019-12-02 08:30:15 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PVTWRecord)
|
2020-01-08 05:38:37 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PvtwsaltTable)
|
2019-12-02 08:39:50 -06:00
|
|
|
ADD_PACK_PROTOTYPES(PvtwTable)
|
2019-12-02 16:49:10 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Regdims)
|
2019-12-02 02:38:52 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RestartConfig)
|
2019-11-28 06:47:56 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RestartKey)
|
2019-11-29 08:47:45 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RestartSchedule)
|
2019-11-28 06:47:56 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RestartValue)
|
2019-12-12 08:00:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RFTConfig)
|
2020-01-27 04:13:06 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RockConfig)
|
2020-01-27 04:51:43 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RockConfig::RockComp)
|
2019-12-03 03:18:29 -06:00
|
|
|
ADD_PACK_PROTOTYPES(ROCKRecord)
|
2019-12-03 04:49:27 -06:00
|
|
|
ADD_PACK_PROTOTYPES(RockTable)
|
2019-11-28 08:46:13 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Rock2dTable)
|
2019-11-28 08:46:13 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Rock2dtrTable)
|
2019-12-02 05:47:48 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Runspec)
|
2019-12-18 05:25:59 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Schedule)
|
2019-12-10 06:47:01 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Segment)
|
2019-11-29 07:31:08 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SimulationConfig)
|
2019-11-29 04:19:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SimpleTable)
|
2019-12-02 16:34:19 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SkprpolyTable)
|
2019-12-02 16:34:31 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SkprwatTable)
|
2019-12-10 06:44:33 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SpiralICD)
|
2019-12-18 05:25:59 -06:00
|
|
|
ADD_PACK_PROTOTYPES(std::string)
|
2020-01-06 08:27:37 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SummaryConfig)
|
2020-01-06 08:00:05 -06:00
|
|
|
ADD_PACK_PROTOTYPES(SummaryNode)
|
2019-12-02 04:10:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Tabdims)
|
2019-11-29 04:19:16 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TableColumn)
|
2019-11-29 05:06:40 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TableContainer)
|
2019-12-03 05:31:24 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TableManager)
|
2019-11-29 03:18:48 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TableSchema)
|
2019-11-28 05:58:40 -06:00
|
|
|
ADD_PACK_PROTOTYPES(ThresholdPressure)
|
2019-11-29 08:47:55 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TimeMap)
|
2020-01-16 05:27:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TimeStampUTC)
|
2020-01-14 07:48:11 -06:00
|
|
|
ADD_PACK_PROTOTYPES(TransMult)
|
2019-12-17 06:22:05 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Tuning)
|
2019-12-09 08:57:34 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDAValue)
|
2019-12-12 04:54:46 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQActive)
|
|
|
|
ADD_PACK_PROTOTYPES(UDQActive::InputRecord)
|
|
|
|
ADD_PACK_PROTOTYPES(UDQActive::Record)
|
2019-12-11 09:31:47 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQAssign)
|
|
|
|
ADD_PACK_PROTOTYPES(UDQAssign::AssignRecord)
|
2019-12-11 08:50:41 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQASTNode)
|
2019-12-12 02:44:24 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQConfig)
|
2019-12-11 08:56:33 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQDefine)
|
2019-12-11 09:41:09 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQIndex)
|
2019-12-02 05:08:27 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UDQParams)
|
2019-12-11 04:43:46 -06:00
|
|
|
ADD_PACK_PROTOTYPES(UnitSystem)
|
2019-12-18 04:04:31 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Valve)
|
2019-12-09 03:42:45 -06:00
|
|
|
ADD_PACK_PROTOTYPES(VFPInjTable)
|
2019-12-09 03:45:18 -06:00
|
|
|
ADD_PACK_PROTOTYPES(VFPProdTable)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(VISCREFRecord)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(ViscrefTable)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WATDENTRecord)
|
2019-12-02 08:52:39 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WatdentTable)
|
2019-12-11 04:45:13 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Well)
|
2019-12-10 06:21:58 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Well::WellGuideRate)
|
2019-12-10 06:42:32 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Well::WellInjectionProperties)
|
|
|
|
ADD_PACK_PROTOTYPES(Well::WellProductionProperties)
|
2020-01-08 05:38:37 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellBrineProperties)
|
2019-12-10 06:24:41 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellConnections)
|
2019-12-02 04:32:28 -06:00
|
|
|
ADD_PACK_PROTOTYPES(Welldims)
|
2019-12-10 06:20:10 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellEconProductionLimits)
|
2019-12-09 08:16:30 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellFoamProperties)
|
2019-12-09 08:03:35 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellPolymerProperties)
|
2019-12-02 05:08:16 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellSegmentDims)
|
2019-12-11 04:44:58 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellSegments)
|
2019-12-09 04:14:51 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellTestConfig)
|
2019-12-09 04:07:37 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellTestConfig::WTESTWell)
|
2019-12-09 08:25:17 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WellTracerProperties)
|
2019-12-11 07:07:47 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WList)
|
2019-12-11 07:17:10 -06:00
|
|
|
ADD_PACK_PROTOTYPES(WListManager)
|
2019-10-10 16:06:55 -05:00
|
|
|
|
2020-01-10 02:59:21 -06:00
|
|
|
template<class T, class C>
|
|
|
|
const T& packAndSend(const T& in, const C& comm)
|
2019-12-04 06:34:25 -06:00
|
|
|
{
|
2020-01-17 05:26:43 -06:00
|
|
|
if (comm.size() == 1)
|
2019-12-04 06:34:25 -06:00
|
|
|
return in;
|
|
|
|
|
|
|
|
std::size_t size = packSize(in, comm);
|
|
|
|
std::vector<char> buffer(size);
|
|
|
|
int pos = 0;
|
|
|
|
Mpi::pack(in, buffer, pos, comm);
|
|
|
|
comm.broadcast(&pos, 1, 0);
|
|
|
|
comm.broadcast(buffer.data(), pos, 0);
|
|
|
|
return in;
|
|
|
|
}
|
|
|
|
|
2020-01-10 02:59:21 -06:00
|
|
|
template<class T, class C>
|
|
|
|
void receiveAndUnpack(T& result, const C& comm)
|
2019-12-04 06:34:25 -06:00
|
|
|
{
|
|
|
|
int size;
|
|
|
|
comm.broadcast(&size, 1, 0);
|
|
|
|
std::vector<char> buffer(size);
|
|
|
|
comm.broadcast(buffer.data(), size, 0);
|
|
|
|
int pos = 0;
|
|
|
|
unpack(result, buffer, pos, comm);
|
|
|
|
}
|
2019-10-10 16:06:55 -05:00
|
|
|
} // end namespace Mpi
|
2019-12-11 07:17:10 -06:00
|
|
|
|
2019-10-10 16:06:55 -05:00
|
|
|
RestartValue loadParallelRestart(const EclipseIO* eclIO, SummaryState& summaryState,
|
|
|
|
const std::vector<Opm::RestartKey>& solutionKeys,
|
|
|
|
const std::vector<Opm::RestartKey>& extraKeys,
|
|
|
|
Dune::CollectiveCommunication<Dune::MPIHelper::MPICommunicator> comm);
|
|
|
|
|
|
|
|
} // end namespace Opm
|
|
|
|
#endif // PARALLEL_RESTART_HPP
|