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) const
 
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 PhaseUsagephaseUsage () const
 
const GroupStategroupState () const
 
std::vector< const WellInterfaceGeneric * > genericWells () const
 
const WellStatewellState () const
 
WellStatewellState ()
 
GroupStategroupState ()
 
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 initFromRestartFile (const RestartValue &restartValues, WellTestState wtestState, const size_t numCells, bool handle_ms_well)
 
void prepareDeserialize (int report_step, 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.
 
const std::vector< PerforationData > & perfData (const int well_idx) const
 
const Parallel::Communication & comm () const
 
const SummaryState & summaryState () const
 
const GuideRate & guideRate () const
 
bool reportStepStarts () const
 
bool shouldBalanceNetwork (const int reportStepIndex, const int iterationIdx) const
 
bool shouldIterateNetwork (const int reportStepIndex, const std::size_t recursion_level, const double network_imbalance) const
 
template<class Serializer >
void serializeOp (Serializer &serializer)
 
bool operator== (const BlackoilWellModelGeneric &rhs) const
 

Protected Member Functions

const WellStateprevWellState () const
 
const WGStateprevWGState () const
 
const WellStatenupcolWellState () 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, const std::vector< double > &production_rates, std::vector< double > &resv_coeff)=0
 
virtual void calcInjRates (const int fipnum, const int pvtreg, std::vector< double > &resv_coeff)=0
 
void assignShutConnections (data::Wells &wsrpt, const int reportStepIndex) const
 
void assignGroupControl (const Group &group, 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 calculateEfficiencyFactors (const int reportStepIdx)
 
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)
 
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, GasLiftGroupInfo &group_info, 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)
 
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...
 
std::vector< int > getCellsForConnections (const Well &well) const
 
std::vector< std::string > getWellsForTesting (const int timeStepIdx, const double simulationTime)
 

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< ParallelWellInfoparallel_well_info_
 
std::vector< std::reference_wrapper< ParallelWellInfo > > local_parallel_well_info_
 
std::vector< WellProdIndexCalculatorprod_index_calc_
 
std::vector< int > pvt_region_idx_
 
std::unordered_set< std::string > closed_this_step_
 
GuideRate guideRate_
 
std::unique_ptr< VFPPropertiesvfp_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: