22#ifndef OPM_BLACKOILWELLMODEL_GASLIFT_HEADER_INCLUDED
23#define OPM_BLACKOILWELLMODEL_GASLIFT_HEADER_INCLUDED
27#include <opm/simulators/wells/GasLiftSingleWellGeneric.hpp>
36template<
class Scalar>
class GroupState;
37template<
typename Scalar,
typename IndexTraits>
class WellState;
38template<
class TypeTag>
class WellInterface;
40template<
typename Scalar,
typename IndexTraits>
44 using GLiftOptWells = std::map<std::string, std::unique_ptr<GasLiftSingleWellGeneric<Scalar, IndexTraits>>>;
45 using GLiftProdWells = std::map<std::string, const WellInterfaceGeneric<Scalar, IndexTraits>*>;
46 using GLiftWellStateMap = std::map<std::string, std::unique_ptr<GasLiftWellState<Scalar>>>;
47 using GLiftEclWells =
typename GasLiftGroupInfo<Scalar, IndexTraits>::GLiftEclWells;
48 using GLiftSyncGroups =
typename GasLiftSingleWellGeneric<Scalar, IndexTraits>::GLiftSyncGroups;
54 static constexpr bool glift_debug =
false;
56 void gliftDebug(
const std::string&
msg,
59 bool terminalOutput()
const {
return terminal_output_; }
61 template<
class Serializer>
68 {
return this->last_glift_opt_time_ ==
that.last_glift_opt_time_; }
75 void gasLiftOptimizationStage2(
const Parallel::Communication& comm,
83 GLiftWellStateMap&
map,
84 const int episodeIndex,
87 bool terminal_output_;
88 double last_glift_opt_time_ = -1.0;
92template<
typename TypeTag>
95 typename GetPropType<TypeTag, Properties::FluidSystem>::IndexTraitsType>
100 using IndexTraits =
typename FluidSystem::IndexTraitsType;
102 using Base::glift_debug;
103 using GLiftEclWells =
typename GasLiftGroupInfo<Scalar, IndexTraits>::GLiftEclWells;
104 using GLiftOptWells =
typename Base::GLiftOptWells;
105 using GLiftProdWells =
typename Base::GLiftProdWells;
106 using GLiftSyncGroups =
typename GasLiftSingleWellGeneric<Scalar, IndexTraits>::GLiftSyncGroups;
107 using GLiftWellStateMap =
typename Base::GLiftWellStateMap;
109 using WellInterfacePtr = std::shared_ptr<WellInterface<TypeTag>>;
116 static void initGliftEclWellMap(
const std::vector<WellInterfacePtr>&
well_container,
119 bool maybeDoGasLiftOptimize(
const Simulator& simulator,
128 void gasLiftOptimizationStage1(
const Simulator& simulator,
140 const Simulator& simulator,
150 void updateWellPotentials(
const Simulator& simulator,
160#include "BlackoilWellModelGasLift_impl.hpp"
Defines a type tags and some fundamental properties all models.
A fully-implicit black-oil flow model.
Definition BlackoilWellModelGasLift.hpp:42
Class for handling the gaslift in the blackoil well model.
Definition BlackoilWellModelGasLift.hpp:96
Definition DeferredLogger.hpp:57
Definition GasLiftGroupInfo.hpp:46
Definition GroupState.hpp:41
Definition WellInterfaceGeneric.hpp:53
Definition WellInterface.hpp:76
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:66
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:240
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition propertysystem.hh:233