My Project
Loading...
Searching...
No Matches
Opm::BlackoilWellModelGeneric Class Referenceabstract

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

#include <BlackoilWellModelGeneric.hpp>

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

Classes

class  ConnectionIndexMap
 Connection index mappings. More...
 

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 numLocalWellsEnd () const
 
int numLocalNonshutWells () 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 WellgetWellEcl (const std::string &well_name) const
 
std::vector< WellgetLocalWells (const int timeStepIdx) const
 
const Scheduleschedule () const
 
const PhaseUsagephaseUsage () const
 
const GroupStategroupState () const
 
std::vector< const WellInterfaceGeneric * > genericWells () const
 
const WellStatewellState () const
 
WellStatewellState ()
 
GroupStategroupState ()
 
WellTestStatewellTestState ()
 
const WellTestStatewellTestState () 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 std::size_t numCells, bool handle_ms_well)
 
void prepareDeserialize (int report_step, const std::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 needRebalanceNetwork (const int report_step) const
 Whether it is necessary to re-balance network.
 
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 EclipseState & eclipseState () const
 
const SummaryStatesummaryState () const
 
const GuideRateguideRate () const
 
bool reportStepStarts () const
 
bool shouldBalanceNetwork (const int reportStepIndex, const int iterationIdx) const
 
void updateClosedWellsThisStep (const std::string &well_name) const
 
template<class Serializer >
void serializeOp (Serializer &serializer)
 
bool operator== (const BlackoilWellModelGeneric &rhs) const
 

Protected Types

using WellTracerRates = std::map< std::pair< std::string, std::string >, double >
 

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.
 
void initializeWellProdIndCalculators ()
 
void initializeWellPerfData ()
 
bool wasDynamicallyShutThisTimeStep (const int well_index) const
 
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)
 
void checkGEconLimits (const Group &group, const double simulation_time, const int report_step_idx, 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)
 
void initInjMult ()
 
void updateInjMult (DeferredLogger &deferred_logger)
 
void updateInjFCMult (DeferredLogger &deferred_logger)
 
void updateFiltrationParticleVolume (const double dt, const std::size_t water_index)
 
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
 
std::vector< intgetCellsForConnections (const Well &well) const
 
std::vector< std::vector< int > > getMaxWellConnections () const
 
std::vector< std::string > getWellsForTesting (const int timeStepIdx, const double simulationTime)
 
void assignWellTracerRates (data::Wells &wsrpt, const WellTracerRates &wellTracerRates) const
 

Protected Attributes

Scheduleschedule_
 
const SummaryStatesummaryState_
 
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< intlast_run_wellpi_ {}
 
std::vector< Wellwells_ecl_
 
std::vector< std::vector< PerforationData > > well_perf_data_
 
std::vector< ConnectionIndexMapconn_idx_map_ {}
 
std::function< bool(const Well &)> not_on_process_ {}
 
std::vector< WellInterfaceGeneric * > well_container_generic_ {}
 
std::vector< intlocal_shut_wells_ {}
 
std::vector< ParallelWellInfoparallel_well_info_
 
std::vector< std::reference_wrapper< ParallelWellInfo > > local_parallel_well_info_
 
std::vector< WellProdIndexCalculatorprod_index_calc_
 
ParallelWBPCalculation wbpCalculationService_
 
std::vector< intpvt_region_idx_
 
std::unordered_set< std::string > closed_this_step_
 
GuideRate guideRate_
 
std::unique_ptr< VFPPropertiesvfp_properties_ {}
 
std::map< std::string, doublenode_pressures_
 
std::unordered_map< std::string, std::vector< double > > prev_inj_multipliers_
 
std::unordered_map< std::string, WellFilterCakefilter_cake_
 
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: