#include <GasLiftGroupInfo.hpp>

Inheritance diagram for Opm::GasLiftGroupInfo< Scalar >:
Inheritance graph

Classes

class  GroupRates
 

Public Types

enum class  Rate { oil , gas , water , liquid }
 
using GLiftEclWells = std::map< std::string, std::pair< const Well *, int > >
 

Public Member Functions

 GasLiftGroupInfo (GLiftEclWells &ecl_wells, const Schedule &schedule, const SummaryState &summary_state, const int report_step_idx, const int iteration_idx, const PhaseUsage &phase_usage, DeferredLogger &deferred_logger, WellState< Scalar > &well_state, const GroupState< Scalar > &group_state, const Parallel::Communication &comm, bool glift_debug)
 
std::vector< std::pair< std::string, Scalar > > & getWellGroups (const std::string &well_name)
 
Scalar alqRate (const std::string &group_name)
 
Scalar gasRate (const std::string &group_name) const
 
Scalar gasPotential (const std::string &group_name) const
 
Scalar waterPotential (const std::string &group_name) const
 
Scalar oilPotential (const std::string &group_name) const
 
int getGroupIdx (const std::string &group_name)
 
Scalar getRate (Rate rate_type, const std::string &group_name) const
 
Scalar getPotential (Rate rate_type, const std::string &group_name) const
 
std::tuple< Scalar, Scalar, Scalar, Scalar > getRates (const int group_idx) const
 
std::optional< Scalar > gasTarget (const std::string &group_name) const
 
std::optional< Scalar > getTarget (Rate rate_type, const std::string &group_name) const
 
const std::string & groupIdxToName (int group_idx) const
 
bool hasAnyTarget (const std::string &group_name) const
 
bool hasWell (const std::string &well_name)
 
void initialize ()
 
std::optional< Scalar > liquidTarget (const std::string &group_name) const
 
std::optional< Scalar > maxAlq (const std::string &group_name)
 
std::optional< Scalar > maxTotalGasRate (const std::string &group_name)
 
Scalar oilRate (const std::string &group_name) const
 
std::optional< Scalar > oilTarget (const std::string &group_name) const
 
Scalar waterRate (const std::string &group_name) const
 
std::optional< Scalar > waterTarget (const std::string &group_name) const
 
void update (const std::string &well_name, Scalar delta_oil, Scalar delta_gas, Scalar delta_water, Scalar delta_alq)
 
void updateRate (int idx, Scalar oil_rate, Scalar gas_rate, Scalar water_rate, Scalar alq)
 
const Well2GroupMapwellGroupMap ()
 

Static Public Member Functions

static const std::string rateToString (Rate rate)
 

Protected Types

using Well2GroupMap = std::map< std::string, std::vector< std::pair< std::string, Scalar > > >
 
using GroupRateMap = std::map< std::string, GroupRates >
 
using GroupIdxMap = std::map< std::string, int >
 
using Communication = Dune::Communication< Dune::MPIHelper::MPICommunicator >
 
enum class  MessageType { INFO , WARNING }
 

Protected Member Functions

bool checkDoGasLiftOptimization_ (const std::string &well_name)
 
bool checkNewtonIterationIdxOk_ (const std::string &well_name)
 
void debugDisplayWellContribution_ (const std::string &gr_name, const std::string &well_name, Scalar eff_factor, Scalar well_oil_rate, Scalar well_gas_rate, Scalar well_water_rate, Scalar well_alq, Scalar oil_rate, Scalar gas_rate, Scalar water_rate, Scalar alq) const
 
void debugDisplayUpdatedGroupRates (const std::string &name, Scalar oil_rate, Scalar gas_rate, Scalar water_rate, Scalar alq) const
 
void debugEndInitializeGroup (const std::string &name) const
 
void debugStartInitializeGroup (const std::string &name) const
 
void displayDebugMessage_ (const std::string &msg) const override
 
void displayDebugMessage_ (const std::string &msg, const std::string &well_name)
 
std::tuple< Scalar, Scalar, Scalar, Scalar, Scalar, Scalar > getProducerWellRates_ (const Well *well, const int index)
 
std::tuple< Scalar, Scalar, Scalar, Scalar, Scalar, Scalar, Scalar > initializeGroupRatesRecursive_ (const Group &group)
 
void initializeWell2GroupMapRecursive_ (const Group &group, std::vector< std::string > &group_names, std::vector< Scalar > &group_efficiency, Scalar cur_efficiency)
 
void updateGroupIdxMap_ (const std::string &group_name)
 
int debugUpdateGlobalCounter_ () const
 
void displayDebugMessageOnRank0_ (const std::string &msg) const
 
void logMessage_ (const std::string &prefix, const std::string &msg, MessageType msg_type=MessageType::INFO) const
 

Protected Attributes

GLiftEclWellsecl_wells_
 
const Schedule & schedule_
 
const SummaryState & summary_state_
 
const int report_step_idx_
 
const int iteration_idx_
 
const PhaseUsagephase_usage_
 
const GasLiftOpt & glo_
 
GroupRateMap group_rate_map_
 
Well2GroupMap well_group_map_
 
GroupIdxMap group_idx_
 
int next_group_idx_ = 0
 
bool optimize_only_thp_wells_ = false
 
WellState< Scalar > & well_state_
 
const GroupState< Scalar > & group_state_
 
DeferredLoggerdeferred_logger_
 
const Parallel::Communicationcomm_
 
bool debug
 
bool debug_output_only_on_rank0 = false
 

Static Protected Attributes

static const int Water = BlackoilPhases::Aqua
 
static const int Oil = BlackoilPhases::Liquid
 
static const int Gas = BlackoilPhases::Vapour
 

Member Typedef Documentation

◆ Communication

template<class Scalar >
using Opm::GasLiftGroupInfo< Scalar >::Communication = Dune::Communication<Dune::MPIHelper::MPICommunicator>
protected

◆ GLiftEclWells

template<class Scalar >
using Opm::GasLiftGroupInfo< Scalar >::GLiftEclWells = std::map<std::string,std::pair<const Well *,int> >

◆ GroupIdxMap

template<class Scalar >
using Opm::GasLiftGroupInfo< Scalar >::GroupIdxMap = std::map<std::string, int>
protected

◆ GroupRateMap

template<class Scalar >
using Opm::GasLiftGroupInfo< Scalar >::GroupRateMap = std::map<std::string, GroupRates>
protected

◆ Well2GroupMap

template<class Scalar >
using Opm::GasLiftGroupInfo< Scalar >::Well2GroupMap = std::map<std::string, std::vector<std::pair<std::string,Scalar> >>
protected

Member Enumeration Documentation

◆ MessageType

template<class Scalar >
enum class Opm::GasLiftCommon::MessageType
strongprotectedinherited
Enumerator
INFO 
WARNING 

◆ Rate

template<class Scalar >
enum class Opm::GasLiftGroupInfo::Rate
strong
Enumerator
oil 
gas 
water 
liquid 

Constructor & Destructor Documentation

◆ GasLiftGroupInfo()

template<class Scalar >
Opm::GasLiftGroupInfo< Scalar >::GasLiftGroupInfo ( GLiftEclWells ecl_wells,
const Schedule &  schedule,
const SummaryState &  summary_state,
const int  report_step_idx,
const int  iteration_idx,
const PhaseUsage phase_usage,
DeferredLogger deferred_logger,
WellState< Scalar > &  well_state,
const GroupState< Scalar > &  group_state,
const Parallel::Communication comm,
bool  glift_debug 
)

Member Function Documentation

◆ alqRate()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::alqRate ( const std::string &  group_name)

◆ checkDoGasLiftOptimization_()

template<class Scalar >
bool Opm::GasLiftGroupInfo< Scalar >::checkDoGasLiftOptimization_ ( const std::string &  well_name)
protected

◆ checkNewtonIterationIdxOk_()

template<class Scalar >
bool Opm::GasLiftGroupInfo< Scalar >::checkNewtonIterationIdxOk_ ( const std::string &  well_name)
protected

◆ debugDisplayUpdatedGroupRates()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::debugDisplayUpdatedGroupRates ( const std::string &  name,
Scalar  oil_rate,
Scalar  gas_rate,
Scalar  water_rate,
Scalar  alq 
) const
protected

◆ debugDisplayWellContribution_()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::debugDisplayWellContribution_ ( const std::string &  gr_name,
const std::string &  well_name,
Scalar  eff_factor,
Scalar  well_oil_rate,
Scalar  well_gas_rate,
Scalar  well_water_rate,
Scalar  well_alq,
Scalar  oil_rate,
Scalar  gas_rate,
Scalar  water_rate,
Scalar  alq 
) const
protected

◆ debugEndInitializeGroup()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::debugEndInitializeGroup ( const std::string &  name) const
protected

◆ debugStartInitializeGroup()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::debugStartInitializeGroup ( const std::string &  name) const
protected

◆ debugUpdateGlobalCounter_()

template<class Scalar >
int Opm::GasLiftCommon< Scalar >::debugUpdateGlobalCounter_ ( ) const
protectedinherited

◆ displayDebugMessage_() [1/2]

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::displayDebugMessage_ ( const std::string &  msg) const
overrideprotectedvirtual

◆ displayDebugMessage_() [2/2]

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::displayDebugMessage_ ( const std::string &  msg,
const std::string &  well_name 
)
protected

◆ displayDebugMessageOnRank0_()

template<class Scalar >
void Opm::GasLiftCommon< Scalar >::displayDebugMessageOnRank0_ ( const std::string &  msg) const
protectedinherited

◆ gasPotential()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::gasPotential ( const std::string &  group_name) const

◆ gasRate()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::gasRate ( const std::string &  group_name) const

◆ gasTarget()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::gasTarget ( const std::string &  group_name) const

◆ getGroupIdx()

template<class Scalar >
int Opm::GasLiftGroupInfo< Scalar >::getGroupIdx ( const std::string &  group_name)

◆ getPotential()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::getPotential ( Rate  rate_type,
const std::string &  group_name 
) const

◆ getProducerWellRates_()

template<class Scalar >
std::tuple< Scalar, Scalar, Scalar, Scalar, Scalar, Scalar > Opm::GasLiftGroupInfo< Scalar >::getProducerWellRates_ ( const Well *  well,
const int  index 
)
protected

◆ getRate()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::getRate ( Rate  rate_type,
const std::string &  group_name 
) const

◆ getRates()

template<class Scalar >
std::tuple< Scalar, Scalar, Scalar, Scalar > Opm::GasLiftGroupInfo< Scalar >::getRates ( const int  group_idx) const

◆ getTarget()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::getTarget ( Rate  rate_type,
const std::string &  group_name 
) const

◆ getWellGroups()

template<class Scalar >
std::vector< std::pair< std::string, Scalar > > & Opm::GasLiftGroupInfo< Scalar >::getWellGroups ( const std::string &  well_name)

◆ groupIdxToName()

template<class Scalar >
const std::string & Opm::GasLiftGroupInfo< Scalar >::groupIdxToName ( int  group_idx) const

◆ hasAnyTarget()

template<class Scalar >
bool Opm::GasLiftGroupInfo< Scalar >::hasAnyTarget ( const std::string &  group_name) const

◆ hasWell()

template<class Scalar >
bool Opm::GasLiftGroupInfo< Scalar >::hasWell ( const std::string &  well_name)

◆ initialize()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::initialize ( )

◆ initializeGroupRatesRecursive_()

template<class Scalar >
std::tuple< Scalar, Scalar, Scalar, Scalar, Scalar, Scalar, Scalar > Opm::GasLiftGroupInfo< Scalar >::initializeGroupRatesRecursive_ ( const Group &  group)
protected

◆ initializeWell2GroupMapRecursive_()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::initializeWell2GroupMapRecursive_ ( const Group &  group,
std::vector< std::string > &  group_names,
std::vector< Scalar > &  group_efficiency,
Scalar  cur_efficiency 
)
protected

◆ liquidTarget()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::liquidTarget ( const std::string &  group_name) const

◆ logMessage_()

template<class Scalar >
void Opm::GasLiftCommon< Scalar >::logMessage_ ( const std::string &  prefix,
const std::string &  msg,
MessageType  msg_type = MessageType::INFO 
) const
protectedinherited

◆ maxAlq()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::maxAlq ( const std::string &  group_name)

◆ maxTotalGasRate()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::maxTotalGasRate ( const std::string &  group_name)

◆ oilPotential()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::oilPotential ( const std::string &  group_name) const

◆ oilRate()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::oilRate ( const std::string &  group_name) const

◆ oilTarget()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::oilTarget ( const std::string &  group_name) const

◆ rateToString()

template<class Scalar >
static const std::string Opm::GasLiftGroupInfo< Scalar >::rateToString ( Rate  rate)
static

◆ update()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::update ( const std::string &  well_name,
Scalar  delta_oil,
Scalar  delta_gas,
Scalar  delta_water,
Scalar  delta_alq 
)

◆ updateGroupIdxMap_()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::updateGroupIdxMap_ ( const std::string &  group_name)
protected

◆ updateRate()

template<class Scalar >
void Opm::GasLiftGroupInfo< Scalar >::updateRate ( int  idx,
Scalar  oil_rate,
Scalar  gas_rate,
Scalar  water_rate,
Scalar  alq 
)

◆ waterPotential()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::waterPotential ( const std::string &  group_name) const

◆ waterRate()

template<class Scalar >
Scalar Opm::GasLiftGroupInfo< Scalar >::waterRate ( const std::string &  group_name) const

◆ waterTarget()

template<class Scalar >
std::optional< Scalar > Opm::GasLiftGroupInfo< Scalar >::waterTarget ( const std::string &  group_name) const

◆ wellGroupMap()

template<class Scalar >
const Well2GroupMap & Opm::GasLiftGroupInfo< Scalar >::wellGroupMap ( )
inline

Member Data Documentation

◆ comm_

template<class Scalar >
const Parallel::Communication& Opm::GasLiftCommon< Scalar >::comm_
protectedinherited

◆ debug

template<class Scalar >
bool Opm::GasLiftCommon< Scalar >::debug
protectedinherited

◆ debug_output_only_on_rank0

template<class Scalar >
bool Opm::GasLiftCommon< Scalar >::debug_output_only_on_rank0 = false
protectedinherited

◆ deferred_logger_

template<class Scalar >
DeferredLogger& Opm::GasLiftCommon< Scalar >::deferred_logger_
protectedinherited

◆ ecl_wells_

template<class Scalar >
GLiftEclWells& Opm::GasLiftGroupInfo< Scalar >::ecl_wells_
protected

◆ Gas

template<class Scalar >
const int Opm::GasLiftGroupInfo< Scalar >::Gas = BlackoilPhases::Vapour
staticprotected

◆ glo_

template<class Scalar >
const GasLiftOpt& Opm::GasLiftGroupInfo< Scalar >::glo_
protected

◆ group_idx_

template<class Scalar >
GroupIdxMap Opm::GasLiftGroupInfo< Scalar >::group_idx_
protected

◆ group_rate_map_

template<class Scalar >
GroupRateMap Opm::GasLiftGroupInfo< Scalar >::group_rate_map_
protected

◆ group_state_

template<class Scalar >
const GroupState<Scalar>& Opm::GasLiftCommon< Scalar >::group_state_
protectedinherited

◆ iteration_idx_

template<class Scalar >
const int Opm::GasLiftGroupInfo< Scalar >::iteration_idx_
protected

◆ next_group_idx_

template<class Scalar >
int Opm::GasLiftGroupInfo< Scalar >::next_group_idx_ = 0
protected

◆ Oil

template<class Scalar >
const int Opm::GasLiftGroupInfo< Scalar >::Oil = BlackoilPhases::Liquid
staticprotected

◆ optimize_only_thp_wells_

template<class Scalar >
bool Opm::GasLiftGroupInfo< Scalar >::optimize_only_thp_wells_ = false
protected

◆ phase_usage_

template<class Scalar >
const PhaseUsage& Opm::GasLiftGroupInfo< Scalar >::phase_usage_
protected

◆ report_step_idx_

template<class Scalar >
const int Opm::GasLiftGroupInfo< Scalar >::report_step_idx_
protected

◆ schedule_

template<class Scalar >
const Schedule& Opm::GasLiftGroupInfo< Scalar >::schedule_
protected

◆ summary_state_

template<class Scalar >
const SummaryState& Opm::GasLiftGroupInfo< Scalar >::summary_state_
protected

◆ Water

template<class Scalar >
const int Opm::GasLiftGroupInfo< Scalar >::Water = BlackoilPhases::Aqua
staticprotected

◆ well_group_map_

template<class Scalar >
Well2GroupMap Opm::GasLiftGroupInfo< Scalar >::well_group_map_
protected

◆ well_state_

template<class Scalar >
WellState<Scalar>& Opm::GasLiftCommon< Scalar >::well_state_
protectedinherited

The documentation for this class was generated from the following files: