My Project
Opm::BlackoilWellModelGeneric Class Referenceabstract

Class for handling the blackoil well model. More...

#include <BlackoilWellModelGeneric.hpp>

Inheritance diagram for Opm::BlackoilWellModelGeneric:
Opm::BlackoilWellModel< TypeTag >

Public Types

using GLiftOptWells = std::map< std::string, std::unique_ptr< GasLiftSingleWellGeneric > >
 
using GLiftProdWells = std::map< std::string, const WellInterfaceGeneric * >
 
using GLiftWellStateMap = std::map< std::string, std::unique_ptr< GasLiftWellState > >
 

Public Member Functions

 BlackoilWellModelGeneric (Schedule &schedule, const SummaryState &summaryState, const EclipseState &eclState, const PhaseUsage &phase_usage, const Parallel::Communication &comm)
 
int numLocalWells () const
 
int numPhases () const
 
bool wellsActive () const
 return true if wells are available in the reservoir
 
bool hasWell (const std::string &wname)
 
bool anyMSWellOpenLocal () const
 
const Well & getWellEcl (const std::string &well_name) const
 
std::vector< Well > getLocalWells (const int timeStepIdx) const
 
const Schedule & schedule () const
 
const PhaseUsage & phaseUsage () const
 
const GroupState & groupState () const
 
const WellState & wellState () const
 
WellState & wellState ()
 
GroupState & groupState ()
 
WellTestState & wellTestState ()
 
const WellTestState & wellTestState () const
 
double wellPI (const int well_index) const
 
double wellPI (const std::string &well_name) const
 
void updateEclWells (const int timeStepIdx, const std::unordered_set< std::string > &wells, const SummaryState &st)
 
void loadRestartData (const data::Wells &rst_wells, const data::GroupAndNetworkValues &grpNwrkValues, const PhaseUsage &phases, const bool handle_ms_well, WellState &well_state)
 
void initFromRestartFile (const RestartValue &restartValues, WellTestState wtestState, const size_t numCells, bool handle_ms_well)
 
void commitWGState ()
 
data::GroupAndNetworkValues groupAndNetworkData (const int reportStepIdx) const
 
bool hasTHPConstraints () const
 Return true if any well has a THP constraint.
 
bool forceShutWellByName (const std::string &wellname, const double simulation_time)
 Shut down any single well Returns true if the well was actually found and shut.
 

Protected Member Functions

const WellState & prevWellState () const
 
const WGState & prevWGState () const
 
const WellState & nupcolWellState () const
 
void commitWGState (WGState wgstate)
 
void resetWGState ()
 
void updateNupcolWGState ()
 
std::vector< std::reference_wrapper< ParallelWellInfo > > createLocalParallelWellInfo (const std::vector< Well > &wells)
 Create the parallel well information. More...
 
void initializeWellProdIndCalculators ()
 
void initializeWellPerfData ()
 
bool wasDynamicallyShutThisTimeStep (const int well_index) const
 
std::pair< bool, double > updateNetworkPressures (const int reportStepIdx)
 
void updateWsolvent (const Group &group, const int reportStepIdx, const WellState &wellState)
 
void setWsolvent (const Group &group, const int reportStepIdx, double wsolvent)
 
virtual void calcRates (const int fipnum, const int pvtreg, std::vector< double > &resv_coeff)=0
 
virtual void calcInjRates (const int fipnum, const int pvtreg, std::vector< double > &resv_coeff)=0
 
data::GuideRateValue getGuideRateValues (const Group &group) const
 
data::GuideRateValue getGuideRateValues (const Well &well) const
 
data::GuideRateValue getGuideRateInjectionGroupValues (const Group &group) const
 
void getGuideRateValues (const GuideRate::RateVector &qs, const bool is_inj, const std::string &wgname, data::GuideRateValue &grval) const
 
void assignWellGuideRates (data::Wells &wsrpt, const int reportStepIdx) const
 
void assignShutConnections (data::Wells &wsrpt, const int reportStepIndex) const
 
void assignGroupControl (const Group &group, data::GroupData &gdata) const
 
void assignGroupGuideRates (const Group &group, const std::unordered_map< std::string, data::GroupGuideRates > &groupGuideRates, data::GroupData &gdata) const
 
void assignGroupValues (const int reportStepIdx, std::map< std::string, data::GroupData > &gvalues) const
 
void assignNodeValues (std::map< std::string, data::NodeData > &nodevalues) const
 
void loadRestartConnectionData (const std::vector< data::Rates::opt > &phs, const data::Well &rst_well, const std::vector< PerforationData > &old_perf_data, SingleWellState &ws)
 
void loadRestartSegmentData (const std::string &well_name, const std::vector< data::Rates::opt > &phs, const data::Well &rst_well, SingleWellState &ws)
 
void loadRestartWellData (const std::string &well_name, const bool handle_ms_well, const std::vector< data::Rates::opt > &phs, const data::Well &rst_well, const std::vector< PerforationData > &old_perf_data, SingleWellState &ws)
 
void loadRestartGroupData (const std::string &group, const data::GroupData &value)
 
void loadRestartGuideRates (const int report_step, const GuideRateModel::Target target, const data::Wells &rst_wells)
 
void loadRestartGuideRates (const int report_step, const GuideRateConfig &config, const std::map< std::string, data::GroupData > &rst_groups)
 
std::unordered_map< std::string, data::GroupGuideRates > calculateAllGroupGuiderates (const int reportStepIdx) const
 
void calculateEfficiencyFactors (const int reportStepIdx)
 
bool checkGroupConstraints (const Group &group, const int reportStepIdx, DeferredLogger &deferred_logger) const
 
std::pair< Group::InjectionCMode, double > checkGroupInjectionConstraints (const Group &group, const int reportStepIdx, const Phase &phase) const
 
std::pair< Group::ProductionCMode, double > checkGroupProductionConstraints (const Group &group, const int reportStepIdx, DeferredLogger &deferred_logger) const
 
void checkGconsaleLimits (const Group &group, WellState &well_state, const int reportStepIdx, DeferredLogger &deferred_logger)
 
bool checkGroupHigherConstraints (const Group &group, DeferredLogger &deferred_logger, const int reportStepIdx)
 
bool updateGroupIndividualControl (const Group &group, DeferredLogger &deferred_logger, const int reportStepIdx)
 
void actionOnBrokenConstraints (const Group &group, const Group::ExceedAction &exceed_action, const Group::ProductionCMode &newControl, DeferredLogger &deferred_logger)
 
void actionOnBrokenConstraints (const Group &group, const Group::InjectionCMode &newControl, const Phase &controlPhase, DeferredLogger &deferred_logger)
 
void updateAndCommunicateGroupData (const int reportStepIdx, const int iterationIdx)
 
void inferLocalShutWells ()
 
void setRepRadiusPerfLength ()
 
void gliftDebug (const std::string &msg, DeferredLogger &deferred_logger) const
 
void gliftDebugShowALQ (DeferredLogger &deferred_logger)
 
void gasLiftOptimizationStage2 (DeferredLogger &deferred_logger, GLiftProdWells &prod_wells, GLiftOptWells &glift_wells, GLiftWellStateMap &map, const int episodeIndex)
 
virtual void computePotentials (const std::size_t widx, const WellState &well_state_copy, std::string &exc_msg, ExceptionType::ExcEnum &exc_type, DeferredLogger &deferred_logger)=0
 
void updateWellPotentials (const int reportStepIdx, const bool onlyAfterEvent, const SummaryConfig &summaryConfig, DeferredLogger &deferred_logger)
 
bool guideRateUpdateIsNeeded (const int reportStepIdx) const
 
virtual void createWellContainer (const int time_step)=0
 
virtual void initWellContainer (const int reportStepIdx)=0
 
virtual void calculateProductivityIndexValuesShutWells (const int reportStepIdx, DeferredLogger &deferred_logger)=0
 
virtual void calculateProductivityIndexValues (DeferredLogger &deferred_logger)=0
 
void runWellPIScaling (const int timeStepIdx, DeferredLogger &local_deferredLogger)
 
virtual int compressedIndexForInterior (int cartesian_cell_idx) const =0
 get compressed index for interior cells (-1, otherwise More...
 

Protected Attributes

Schedule & schedule_
 
const SummaryState & summaryState_
 
const EclipseState & eclState_
 
const Parallel::Communication & comm_
 
PhaseUsage phase_usage_
 
bool terminal_output_ {false}
 
bool wells_active_ {false}
 
bool initial_step_ {}
 
bool report_step_starts_ {}
 
std::optional< int > last_run_wellpi_ {}
 
std::vector< Well > wells_ecl_
 
std::vector< std::vector< PerforationData > > well_perf_data_
 
std::function< bool(const Well &)> not_on_process_ {}
 
std::vector< WellInterfaceGeneric * > well_container_generic_ {}
 
std::vector< int > local_shut_wells_ {}
 
std::vector< ParallelWellInfo > parallel_well_info_
 
std::vector< std::reference_wrapper< ParallelWellInfo > > local_parallel_well_info_
 
std::vector< WellProdIndexCalculator > prod_index_calc_
 
std::vector< int > pvt_region_idx_
 
std::unordered_set< std::string > closed_this_step_
 
GuideRate guideRate_
 
std::unique_ptr< VFPProperties > vfp_properties_ {}
 
std::map< std::string, double > node_pressures_
 
WGState active_wgstate_
 
WGState last_valid_wgstate_
 
WGState nupcol_wgstate_
 
bool glift_debug = false
 
double last_glift_opt_time_ = -1.0
 
std::map< std::string, std::string > switched_prod_groups_
 
std::map< std::pair< std::string, Opm::Phase >, std::string > switched_inj_groups_
 

Detailed Description

Class for handling the blackoil well model.

Member Function Documentation

◆ compressedIndexForInterior()

virtual int Opm::BlackoilWellModelGeneric::compressedIndexForInterior ( int  cartesian_cell_idx) const
protectedpure virtual

get compressed index for interior cells (-1, otherwise

Implemented in Opm::BlackoilWellModel< TypeTag >.

◆ createLocalParallelWellInfo()

std::vector< std::reference_wrapper< ParallelWellInfo > > Opm::BlackoilWellModelGeneric::createLocalParallelWellInfo ( const std::vector< Well > &  wells)
protected

Create the parallel well information.

Parameters
localWellsThe local wells from ECL schedule

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