Opm::MultisegmentWells Class Reference

Class for handling the multi-segment well model. More...

#include <MultisegmentWells.hpp>

Classes

struct  MultisegmentWellOps
 

Public Types

using ADB = AutoDiffBlock< double >
 
using Vector = ADB::V
 
using DataBlock = Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >
 
using Communication = Dune::CollectiveCommunication< typename Dune::MPIHelper ::MPICommunicator >
 

Public Member Functions

 MultisegmentWells (const Wells *wells_arg, WellCollection *well_collection, const std::vector< const Well * > &wells_ecl, const int time_step)
 
std::vector< WellMultiSegmentConstPtr > createMSWellVector (const Wells *wells_arg, const std::vector< const Well * > &wells_ecl, const int time_step)
 
void init (const BlackoilPropsAdFromDeck *fluid_arg, const std::vector< bool > *active_arg, const std::vector< PhasePresence > *pc_arg, const VFPProperties *vfp_properties_arg, const double gravity_arg, const Vector &depth_arg)
 
const std::vector< WellMultiSegmentConstPtr > & msWells () const
 
const MultisegmentWellOpswellOps () const
 
const Wells & wells () const
 
const Wells * wellsPointer () const
 
int numPhases () const
 
int numWells () const
 
int numSegment () const
 
int numPerf () const
 
bool wellsActive () const
 
void setWellsActive (const bool wells_active)
 
bool localWellsActive () const
 
int numWellVars () const
 
template<class ReservoirResidualQuant , class SolutionState >
void extractWellPerfProperties (const SolutionState &state, const std::vector< ReservoirResidualQuant > &rq, std::vector< ADB > &mob_perfcells, std::vector< ADB > &b_perfcells) const
 
Vector & wellPerforationCellPressureDiffs ()
 
Vector & wellSegmentPerforationDepthDiffs ()
 
const Vector & wellPerforationCellDensities () const
 
Vector & wellPerforationCellDensities ()
 
const std::vector< Vector > & segmentCompSurfVolumeInitial () const
 
std::vector< Vector > & segmentCompSurfVolumeInitial ()
 
const std::vector< ADB > & segmentCompSurfVolumeCurrent () const
 
const std::vector< int > & topWellSegments () const
 
std::vector< int > & topWellSegments ()
 
Vector & segVDt ()
 
const Vector & wellPerforationDensities () const
 
Vector & wellPerforationDensities ()
 
const Vector & wellPerforationPressureDiffs () const
 
Vector & wellPerforationPressureDiffs ()
 
template<class WellState >
void updateWellState (const Vector &dwells, const double dpmaxrel, WellState &well_state) const
 
template<class SolutionState >
void computeWellFlux (const SolutionState &state, const std::vector< ADB > &mob_perfcells, const std::vector< ADB > &b_perfcells, Vector &aliveWells, std::vector< ADB > &cq_s) const
 
template<class SolutionState , class WellState >
void updatePerfPhaseRatesAndPressures (const std::vector< ADB > &cq_s, const SolutionState &state, WellState &xw) const
 
template<class SolutionState >
void computeSegmentFluidProperties (const SolutionState &state)
 
void computeSegmentPressuresDelta (const double grav)
 
template<class SolutionState >
void addWellFluxEq (const std::vector< ADB > &cq_s, const SolutionState &state, LinearisedBlackoilResidual &residual)
 
template<class SolutionState , class WellState >
void addWellControlEq (const SolutionState &state, const WellState &xw, const Vector &aliveWells, LinearisedBlackoilResidual &residual)
 
template<class WellState >
void updateWellControls (WellState &xw) const
 
void variableStateWellIndices (std::vector< int > &indices, int &next) const
 
template<class SolutionState >
void variableStateExtractWellsVars (const std::vector< int > &indices, std::vector< ADB > &vars, SolutionState &state) const
 
std::vector< int > variableWellStateIndices () const
 
template<class WellState >
void variableWellStateInitials (const WellState &xw, std::vector< Vector > &vars0) const
 
template<class SolutionState , class WellState >
void computeWellConnectionPressures (const SolutionState &state, const WellState &xw, const std::vector< ADB > &kr_adb, const std::vector< ADB > &fluid_density)
 
WellCollection * wellCollection () const
 
void calculateEfficiencyFactors ()
 
const Vector & wellPerfEfficiencyFactors () const
 

Protected Attributes

bool wells_active_
 
std::vector< WellMultiSegmentConstPtr > wells_multisegment_
 
MultisegmentWellOps wops_ms_
 
WellCollection * well_collection_
 
Vector well_perforation_efficiency_factors_
 
const int num_phases_
 
int nseg_total_
 
int nperf_total_
 
const Wells * wells_
 
const BlackoilPropsAdFromDeckfluid_
 
const std::vector< bool > * active_
 
const std::vector< PhasePresence > * phase_condition_
 
const VFPPropertiesvfp_properties_
 
double gravity_
 
Vector perf_cell_depth_
 
Vector well_perforation_cell_pressure_diffs_
 
ADB well_segment_perforation_pressure_diffs_
 
Vector well_segment_perforation_depth_diffs_
 
Vector perf_cell_depth_diffs_
 
Vector well_perforation_cell_densities_
 
ADB well_segment_densities_
 
ADB well_segment_pressures_delta_
 
std::vector< Vector > segment_comp_surf_volume_initial_
 
std::vector< ADBsegment_comp_surf_volume_current_
 
ADB segment_mass_flow_rates_
 
ADB segment_viscosities_
 
std::vector< int > top_well_segments_
 
Vector segvdt_
 
Vector well_perforation_densities_
 
Vector well_perforation_pressure_diffs_
 

Detailed Description

Class for handling the multi-segment well model.


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