opm-simulators
Loading...
Searching...
No Matches
Opm::GasLiftSingleWellGeneric< Scalar, IndexTraits > Class Template Referenceabstract
Inheritance diagram for Opm::GasLiftSingleWellGeneric< Scalar, IndexTraits >:
Opm::GasLiftCommon< Scalar, IndexTraits >

Classes

struct  GradInfo
struct  BasicRates
struct  LimitedRates
struct  OptimizeState

Public Types

using GLiftSyncGroups = std::set<int>
using Rate = typename GasLiftGroupInfo<Scalar, IndexTraits>::Rate
using MessageType = typename GasLiftCommon<Scalar, IndexTraits>::MessageType

Public Member Functions

const std::string & name () const
std::optional< GradInfocalcIncOrDecGradient (Scalar oil_rate, Scalar gas_rate, Scalar water_rate, Scalar alq, const std::string &gr_name_dont_limit, bool increase, bool debug_output=true) const
std::unique_ptr< GasLiftWellState< Scalar > > runOptimize (const int iteration_idx)
std::pair< Scalar, bool > wellTestALQ ()
virtual const WellInterfaceGeneric< Scalar, IndexTraits > & getWell () const =0

Protected Member Functions

 GasLiftSingleWellGeneric (DeferredLogger &deferred_logger, WellState< Scalar, IndexTraits > &well_state, const GroupState< Scalar > &group_state, const Well &ecl_well, const SummaryState &summary_state, GasLiftGroupInfo< Scalar, IndexTraits > &group_info, const Schedule &schedule, const int report_step_idx, GLiftSyncGroups &sync_groups, const Parallel::Communication &comm, bool glift_debug)
bool checkGroupALQrateExceeded (Scalar delta_alq, const std::string &gr_name_dont_limit="") const
bool checkGroupTotalRateExceeded (Scalar delta_alq, Scalar delta_gas_rate) const
std::pair< std::optional< Scalar >, bool > addOrSubtractAlqIncrement_ (Scalar alq, bool increase) const
Scalar calcEcoGradient_ (Scalar oil_rate, Scalar new_oil_rate, Scalar gas_rate, Scalar new_gas_rate, bool increase) const
bool checkALQequal_ (Scalar alq1, Scalar alq2) const
bool checkGroupTargetsViolated (const BasicRates &rates, const BasicRates &new_rates) const
bool checkInitialALQmodified_ (Scalar alq, Scalar initial_alq) const
virtual bool checkThpControl_ () const =0
virtual std::optional< Scalar > computeBhpAtThpLimit_ (Scalar alq, bool debug_output=true) const =0
std::pair< std::optional< Scalar >, Scalar > computeConvergedBhpAtThpLimitByMaybeIncreasingALQ_ () const
std::pair< std::optional< BasicRates >, Scalar > computeInitialWellRates_ () const
std::optional< LimitedRatescomputeLimitedWellRatesWithALQ_ (Scalar alq) const
virtual BasicRates computeWellRates_ (Scalar bhp, bool bhp_is_limited, bool debug_output=true) const =0
std::optional< BasicRatescomputeWellRatesWithALQ_ (Scalar alq) const
void debugCheckNegativeGradient_ (Scalar grad, Scalar alq, Scalar new_alq, Scalar oil_rate, Scalar new_oil_rate, Scalar gas_rate, Scalar new_gas_rate, bool increase) const
void debugPrintWellStateRates () const
void debugShowAlqIncreaseDecreaseCounts_ ()
void debugShowBhpAlqTable_ ()
void debugShowLimitingTargets_ (const LimitedRates &rates) const
void debugShowProducerControlMode () const
void debugShowStartIteration_ (Scalar alq, bool increase, Scalar oil_rate)
void debugShowTargets_ ()
void displayDebugMessage_ (const std::string &msg) const override
void displayWarning_ (const std::string &warning)
std::pair< Scalar, bool > getBhpWithLimit_ (Scalar bhp) const
std::pair< Scalar, bool > getGasRateWithLimit_ (const BasicRates &rates) const
std::pair< Scalar, bool > getGasRateWithGroupLimit_ (Scalar new_gas_rate, Scalar gas_rate, const std::string &gr_name_dont_limit) const
std::pair< std::optional< LimitedRates >, Scalar > getInitialRatesWithLimit_ () const
LimitedRates getLimitedRatesFromRates_ (const BasicRates &rates) const
std::tuple< Scalar, Scalar, bool, bool > getLiquidRateWithGroupLimit_ (const Scalar new_oil_rate, const Scalar oil_rate, const Scalar new_water_rate, const Scalar water_rate, const std::string &gr_name_dont_limit) const
std::pair< Scalar, bool > getOilRateWithGroupLimit_ (Scalar new_oil_rate, Scalar oil_rate, const std::string &gr_name_dont_limit) const
std::pair< Scalar, bool > getOilRateWithLimit_ (const BasicRates &rates) const
std::pair< Scalar, std::optional< Rate > > getOilRateWithLimit2_ (const BasicRates &rates) const
Scalar getProductionTarget_ (Rate rate) const
Scalar getRate_ (Rate rate_type, const BasicRates &rates) const
std::pair< Scalar, std::optional< Rate > > getRateWithLimit_ (Rate rate_type, const BasicRates &rates) const
std::tuple< Scalar, const std::string *, Scalar > getRateWithGroupLimit_ (Rate rate_type, const Scalar new_rate, const Scalar old_rate, const std::string &gr_name_dont_limit) const
std::pair< Scalar, bool > getWaterRateWithGroupLimit_ (Scalar new_water_rate, Scalar water_rate, const std::string &gr_name_dont_limit) const
std::pair< Scalar, bool > getWaterRateWithLimit_ (const BasicRates &rates) const
std::pair< Scalar, std::optional< Rate > > getWaterRateWithLimit2_ (const BasicRates &rates) const
BasicRates getWellStateRates_ () const
bool hasProductionControl_ (Rate rate) const
std::pair< LimitedRates, Scalar > increaseALQtoPositiveOilRate_ (Scalar alq, const LimitedRates &orig_rates) const
std::pair< LimitedRates, Scalar > increaseALQtoMinALQ_ (Scalar alq, const LimitedRates &orig_rates) const
void logSuccess_ (Scalar alq, const int iteration_idx)
std::pair< LimitedRates, Scalar > maybeAdjustALQbeforeOptimizeLoop_ (const LimitedRates &rates, Scalar alq, bool increase) const
std::pair< LimitedRates, Scalar > reduceALQtoGroupAlqLimits_ (Scalar alq, const LimitedRates &rates) const
std::pair< LimitedRates, Scalar > reduceALQtoGroupTarget (Scalar alq, const LimitedRates &rates) const
std::pair< LimitedRates, Scalar > reduceALQtoWellTarget_ (Scalar alq, const LimitedRates &rates) const
std::unique_ptr< GasLiftWellState< Scalar > > runOptimize1_ ()
std::unique_ptr< GasLiftWellState< Scalar > > runOptimize2_ ()
std::unique_ptr< GasLiftWellState< Scalar > > runOptimizeLoop_ (bool increase)
void setAlqMinRate_ (const GasLiftWell &well)
std::unique_ptr< GasLiftWellState< Scalar > > tryIncreaseLiftGas_ ()
std::unique_ptr< GasLiftWellState< Scalar > > tryDecreaseLiftGas_ ()
void updateGroupRates_ (const LimitedRates &rates, const LimitedRates &new_rates, Scalar delta_alq) const
LimitedRates updateRatesToGroupLimits_ (const BasicRates &old_rates, const LimitedRates &rates, const std::string &gr_name="") const
void updateWellStateAlqFixedValue_ (const GasLiftWell &well)
bool useFixedAlq_ (const GasLiftWell &well)
void debugInfoGroupRatesExceedTarget (Rate rate_type, const std::string &gr_name, Scalar rate, Scalar target) const
void warnMaxIterationsExceeded_ ()
Protected Member Functions inherited from Opm::GasLiftCommon< Scalar, IndexTraits >
 GasLiftCommon (WellState< Scalar, IndexTraits > &well_state, const GroupState< Scalar > &group_state, DeferredLogger &deferred_logger, const Parallel::Communication &comm, bool glift_debug)
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

const Well & ecl_well_
const SummaryState & summary_state_
GasLiftGroupInfo< Scalar, IndexTraits > & group_info_
GLiftSyncGroups & sync_groups_
const WellProductionControls controls_
Scalar increment_
Scalar max_alq_
Scalar min_alq_
Scalar orig_alq_
Scalar alpha_w_
Scalar alpha_g_
Scalar eco_grad_
int gas_pos_
int oil_pos_
int water_pos_
int max_iterations_
std::string well_name_
const GasLiftWell * gl_well_
bool optimize_
bool debug_limit_increase_decrease_
bool debug_abort_if_decrease_and_oil_is_limited_ = false
bool debug_abort_if_increase_and_gas_is_limited_ = false
Protected Attributes inherited from Opm::GasLiftCommon< Scalar, IndexTraits >
WellState< Scalar, IndexTraits > & well_state_
const GroupState< Scalar > & group_state_
DeferredLoggerdeferred_logger_
const Parallel::Communication & comm_
bool debug
bool debug_output_only_on_rank0 = false

Static Protected Attributes

static constexpr int Water = IndexTraits::waterPhaseIdx
static constexpr int Oil = IndexTraits::oilPhaseIdx
static constexpr int Gas = IndexTraits::gasPhaseIdx
static constexpr int NUM_PHASES = 3
static constexpr Scalar ALQ_EPSILON = 1e-8

Additional Inherited Members

Protected Types inherited from Opm::GasLiftCommon< Scalar, IndexTraits >
enum class  MessageType { INFO , WARNING }

Member Function Documentation

◆ displayDebugMessage_()

template<typename Scalar, typename IndexTraits>
void Opm::GasLiftSingleWellGeneric< Scalar, IndexTraits >::displayDebugMessage_ ( const std::string & msg) const
overrideprotectedvirtual

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