#include <GasLiftStage2.hpp>

Inheritance diagram for Opm::GasLiftStage2:
Inheritance graph

Classes

struct  OptimizeState
 
struct  SurplusState
 

Public Member Functions

 GasLiftStage2 (const int report_step_idx, const Parallel::Communication &comm, const Schedule &schedule, const SummaryState &summary_state, DeferredLogger &deferred_logger, WellState< double > &well_state, const GroupState< double > &group_state, GLiftProdWells &prod_wells, GLiftOptWells &glift_wells, GasLiftGroupInfo &group_info, GLiftWellStateMap &state_map, bool glift_debug)
 
void runOptimize ()
 

Protected Types

enum class  MessageType { INFO , WARNING }
 

Protected Member Functions

void addOrRemoveALQincrement_ (GradMap &grad_map, const std::string &well_name, bool add)
 
std::optional< GradInfo > calcIncOrDecGrad_ (const std::string name, const GasLiftSingleWell &gs_well, const std::string &gr_name_dont_limit, bool increase)
 
bool checkRateAlreadyLimited_ (const std::string &well_name, GasLiftWellState &state, bool increase)
 
GradInfo deleteDecGradItem_ (const std::string &name)
 
GradInfo deleteIncGradItem_ (const std::string &name)
 
GradInfo deleteGrad_ (const std::string &name, bool increase)
 
void displayDebugMessage_ (const std::string &msg) const override
 
void displayDebugMessage2B_ (const std::string &msg)
 
void displayDebugMessage_ (const std::string &msg, const std::string &group_name)
 
void displayWarning_ (const std::string &msg, const std::string &group_name)
 
void displayWarning_ (const std::string &msg)
 
std::tuple< double, double, double, double > getCurrentGroupRates_ (const Group &group)
 
std::optional< double > getGroupMaxALQ_ (const Group &group)
 
std::optional< double > getGroupMaxTotalGas_ (const Group &group)
 
std::vector< GasLiftSingleWell * > getGroupGliftWells_ (const Group &group)
 
void getGroupGliftWellsRecursive_ (const Group &group, std::vector< GasLiftSingleWell * > &wells)
 
void optimizeGroup_ (const Group &group)
 
void optimizeGroupsRecursive_ (const Group &group)
 
void recalculateGradientAndUpdateData_ (GradPairItr &grad_itr, const std::string &gr_name_dont_limit, bool increase, std::vector< GradPair > &grads, std::vector< GradPair > &other_grads)
 
void redistributeALQ_ (std::vector< GasLiftSingleWell * > &wells, const Group &group, std::vector< GradPair > &inc_grads, std::vector< GradPair > &dec_grads)
 
void removeSurplusALQ_ (const Group &group, std::vector< GradPair > &inc_grads, std::vector< GradPair > &dec_grads)
 
void saveGrad_ (GradMap &map, const std::string &name, GradInfo &grad)
 
void saveDecGrad_ (const std::string &name, GradInfo &grad)
 
void saveIncGrad_ (const std::string &name, GradInfo &grad)
 
void sortGradients_ (std::vector< GradPair > &grads)
 
std::optional< GradInfo > updateGrad_ (const std::string &name, GradInfo &grad, bool increase)
 
void updateGradVector_ (const std::string &name, std::vector< GradPair > &grads, double grad)
 
void mpiSyncGlobalGradVector_ (std::vector< GradPair > &grads_global) const
 
void mpiSyncLocalToGlobalGradVector_ (const std::vector< GradPair > &grads_local, std::vector< GradPair > &grads_global) const
 
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

GLiftProdWells & prod_wells_
 
GLiftOptWells & stage1_wells_
 
GasLiftGroupInfogroup_info_
 
GLiftWellStateMap & well_state_map_
 
int report_step_idx_
 
const SummaryState & summary_state_
 
const Schedule & schedule_
 
const GasLiftOpt & glo_
 
GradMap inc_grads_
 
GradMap dec_grads_
 
int max_iterations_ = 1000
 
WellState< double > & well_state_
 
const GroupState< double > & group_state_
 
DeferredLoggerdeferred_logger_
 
const Parallel::Communicationcomm_
 
bool debug
 
bool debug_output_only_on_rank0 = false
 

Member Enumeration Documentation

◆ MessageType

enum class Opm::GasLiftCommon::MessageType
strongprotectedinherited
Enumerator
INFO 
WARNING 

Constructor & Destructor Documentation

◆ GasLiftStage2()

Opm::GasLiftStage2::GasLiftStage2 ( const int  report_step_idx,
const Parallel::Communication comm,
const Schedule &  schedule,
const SummaryState &  summary_state,
DeferredLogger deferred_logger,
WellState< double > &  well_state,
const GroupState< double > &  group_state,
GLiftProdWells &  prod_wells,
GLiftOptWells &  glift_wells,
GasLiftGroupInfo group_info,
GLiftWellStateMap &  state_map,
bool  glift_debug 
)

Member Function Documentation

◆ addOrRemoveALQincrement_()

void Opm::GasLiftStage2::addOrRemoveALQincrement_ ( GradMap &  grad_map,
const std::string &  well_name,
bool  add 
)
protected

◆ calcIncOrDecGrad_()

std::optional< GradInfo > Opm::GasLiftStage2::calcIncOrDecGrad_ ( const std::string  name,
const GasLiftSingleWell gs_well,
const std::string &  gr_name_dont_limit,
bool  increase 
)
protected

◆ checkRateAlreadyLimited_()

bool Opm::GasLiftStage2::checkRateAlreadyLimited_ ( const std::string &  well_name,
GasLiftWellState state,
bool  increase 
)
protected

◆ debugUpdateGlobalCounter_()

int Opm::GasLiftCommon::debugUpdateGlobalCounter_ ( ) const
protectedinherited

◆ deleteDecGradItem_()

GradInfo Opm::GasLiftStage2::deleteDecGradItem_ ( const std::string &  name)
protected

◆ deleteGrad_()

GradInfo Opm::GasLiftStage2::deleteGrad_ ( const std::string &  name,
bool  increase 
)
protected

◆ deleteIncGradItem_()

GradInfo Opm::GasLiftStage2::deleteIncGradItem_ ( const std::string &  name)
protected

◆ displayDebugMessage2B_()

void Opm::GasLiftStage2::displayDebugMessage2B_ ( const std::string &  msg)
protected

◆ displayDebugMessage_() [1/2]

void Opm::GasLiftStage2::displayDebugMessage_ ( const std::string &  msg) const
overrideprotectedvirtual

Implements Opm::GasLiftCommon.

◆ displayDebugMessage_() [2/2]

void Opm::GasLiftStage2::displayDebugMessage_ ( const std::string &  msg,
const std::string &  group_name 
)
protected

◆ displayDebugMessageOnRank0_()

void Opm::GasLiftCommon::displayDebugMessageOnRank0_ ( const std::string &  msg) const
protectedinherited

◆ displayWarning_() [1/2]

void Opm::GasLiftStage2::displayWarning_ ( const std::string &  msg)
protected

◆ displayWarning_() [2/2]

void Opm::GasLiftStage2::displayWarning_ ( const std::string &  msg,
const std::string &  group_name 
)
protected

◆ getCurrentGroupRates_()

std::tuple< double, double, double, double > Opm::GasLiftStage2::getCurrentGroupRates_ ( const Group &  group)
protected

◆ getGroupGliftWells_()

std::vector< GasLiftSingleWell * > Opm::GasLiftStage2::getGroupGliftWells_ ( const Group &  group)
protected

◆ getGroupGliftWellsRecursive_()

void Opm::GasLiftStage2::getGroupGliftWellsRecursive_ ( const Group &  group,
std::vector< GasLiftSingleWell * > &  wells 
)
protected

◆ getGroupMaxALQ_()

std::optional< double > Opm::GasLiftStage2::getGroupMaxALQ_ ( const Group &  group)
protected

◆ getGroupMaxTotalGas_()

std::optional< double > Opm::GasLiftStage2::getGroupMaxTotalGas_ ( const Group &  group)
protected

◆ logMessage_()

void Opm::GasLiftCommon::logMessage_ ( const std::string &  prefix,
const std::string &  msg,
MessageType  msg_type = MessageType::INFO 
) const
protectedinherited

◆ mpiSyncGlobalGradVector_()

void Opm::GasLiftStage2::mpiSyncGlobalGradVector_ ( std::vector< GradPair > &  grads_global) const
protected

◆ mpiSyncLocalToGlobalGradVector_()

void Opm::GasLiftStage2::mpiSyncLocalToGlobalGradVector_ ( const std::vector< GradPair > &  grads_local,
std::vector< GradPair > &  grads_global 
) const
protected

◆ optimizeGroup_()

void Opm::GasLiftStage2::optimizeGroup_ ( const Group &  group)
protected

◆ optimizeGroupsRecursive_()

void Opm::GasLiftStage2::optimizeGroupsRecursive_ ( const Group &  group)
protected

◆ recalculateGradientAndUpdateData_()

void Opm::GasLiftStage2::recalculateGradientAndUpdateData_ ( GradPairItr &  grad_itr,
const std::string &  gr_name_dont_limit,
bool  increase,
std::vector< GradPair > &  grads,
std::vector< GradPair > &  other_grads 
)
protected

◆ redistributeALQ_()

void Opm::GasLiftStage2::redistributeALQ_ ( std::vector< GasLiftSingleWell * > &  wells,
const Group &  group,
std::vector< GradPair > &  inc_grads,
std::vector< GradPair > &  dec_grads 
)
protected

◆ removeSurplusALQ_()

void Opm::GasLiftStage2::removeSurplusALQ_ ( const Group &  group,
std::vector< GradPair > &  inc_grads,
std::vector< GradPair > &  dec_grads 
)
protected

◆ runOptimize()

void Opm::GasLiftStage2::runOptimize ( )

◆ saveDecGrad_()

void Opm::GasLiftStage2::saveDecGrad_ ( const std::string &  name,
GradInfo &  grad 
)
protected

◆ saveGrad_()

void Opm::GasLiftStage2::saveGrad_ ( GradMap &  map,
const std::string &  name,
GradInfo &  grad 
)
protected

◆ saveIncGrad_()

void Opm::GasLiftStage2::saveIncGrad_ ( const std::string &  name,
GradInfo &  grad 
)
protected

◆ sortGradients_()

void Opm::GasLiftStage2::sortGradients_ ( std::vector< GradPair > &  grads)
protected

◆ updateGrad_()

std::optional< GradInfo > Opm::GasLiftStage2::updateGrad_ ( const std::string &  name,
GradInfo &  grad,
bool  increase 
)
protected

◆ updateGradVector_()

void Opm::GasLiftStage2::updateGradVector_ ( const std::string &  name,
std::vector< GradPair > &  grads,
double  grad 
)
protected

Member Data Documentation

◆ comm_

const Parallel::Communication& Opm::GasLiftCommon::comm_
protectedinherited

◆ debug

bool Opm::GasLiftCommon::debug
protectedinherited

◆ debug_output_only_on_rank0

bool Opm::GasLiftCommon::debug_output_only_on_rank0 = false
protectedinherited

◆ dec_grads_

GradMap Opm::GasLiftStage2::dec_grads_
protected

◆ deferred_logger_

DeferredLogger& Opm::GasLiftCommon::deferred_logger_
protectedinherited

◆ glo_

const GasLiftOpt& Opm::GasLiftStage2::glo_
protected

◆ group_info_

GasLiftGroupInfo& Opm::GasLiftStage2::group_info_
protected

◆ group_state_

const GroupState<double>& Opm::GasLiftCommon::group_state_
protectedinherited

◆ inc_grads_

GradMap Opm::GasLiftStage2::inc_grads_
protected

◆ max_iterations_

int Opm::GasLiftStage2::max_iterations_ = 1000
protected

◆ prod_wells_

GLiftProdWells& Opm::GasLiftStage2::prod_wells_
protected

◆ report_step_idx_

int Opm::GasLiftStage2::report_step_idx_
protected

◆ schedule_

const Schedule& Opm::GasLiftStage2::schedule_
protected

◆ stage1_wells_

GLiftOptWells& Opm::GasLiftStage2::stage1_wells_
protected

◆ summary_state_

const SummaryState& Opm::GasLiftStage2::summary_state_
protected

◆ well_state_

WellState<double>& Opm::GasLiftCommon::well_state_
protectedinherited

◆ well_state_map_

GLiftWellStateMap& Opm::GasLiftStage2::well_state_map_
protected

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