Opm::BlackoilWellModel< TypeTag > Class Template Reference

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

#include <BlackoilWellModel.hpp>

Public Types

typedef WellStateFullyImplicitBlackoil WellState
 
typedef BlackoilModelParameters ModelParameters
 
typedef Dune::FieldVector< Scalar, numEq > VectorBlockType
 
typedef Dune::BlockVector< VectorBlockType > BVector
 
typedef Ewoms::BlackOilPolymerModule< TypeTag > PolymerModule
 
using RateConverterType = RateConverter::SurfaceToReservoirVoidage< BlackoilPropsAdFromDeck::FluidSystem, std::vector< int > >
 

Public Member Functions

typedef GET_PROP_TYPE (TypeTag, Grid) Grid
 
typedef GET_PROP_TYPE (TypeTag, FluidSystem) FluidSystem
 
typedef GET_PROP_TYPE (TypeTag, ElementContext) ElementContext
 
typedef GET_PROP_TYPE (TypeTag, Indices) BlackoilIndices
 
typedef GET_PROP_TYPE (TypeTag, Simulator) Simulator
 
typedef GET_PROP_TYPE (TypeTag, Scalar) Scalar
 
 BlackoilWellModel (const Wells *wells_arg, WellCollection *well_collection, const std::vector< const Well * > &wells_ecl, const ModelParameters &param, const RateConverterType &rate_converter, const bool terminal_output, const int current_index, const std::vector< int > &pvt_region_idx)
 
void init (const PhaseUsage phase_usage_arg, const std::vector< bool > &active_arg, const double gravity_arg, const std::vector< double > &depth_arg, long int global_nc, const Grid &grid)
 
void setVFPProperties (const VFPProperties *vfp_properties_arg)
 
SimulatorReport assemble (Simulator &ebosSimulator, const int iterationIdx, const double dt, WellState &well_state)
 
void apply (BVector &r) const
 
void apply (const BVector &x, BVector &Ax) const
 
void applyScaleAdd (const Scalar alpha, const BVector &x, BVector &Ax) const
 
void recoverWellSolutionAndUpdateWellState (const BVector &x, WellState &well_state) const
 
int numWells () const
 
bool wellsActive () const
 return true if wells are available in the reservoir
 
void setWellsActive (const bool wells_active)
 
bool localWellsActive () const
 return true if wells are available on this process
 
bool getWellConvergence (const Simulator &ebosSimulator, const std::vector< Scalar > &B_avg) const
 
void updateListEconLimited (const Schedule &schedule, const int current_step, const Wells *wells_struct, const WellState &well_state, DynamicListEconLimited &list_econ_limited) const
 upate the dynamic lists related to economic limits
 
WellCollection * wellCollection () const
 

Static Public Attributes

static const int numEq = BlackoilIndices::numEq
 
static const int solventSaturationIdx = BlackoilIndices::solventSaturationIdx
 

Protected Types

using WellInterfacePtr = std::unique_ptr< WellInterface< TypeTag > >
 
using ConvergenceReport = typename WellInterface< TypeTag >::ConvergenceReport
 

Protected Member Functions

void updateWellControls (WellState &xw) const
 
void updateGroupControls (WellState &well_state) const
 
void updatePrimaryVariables (const WellState &well_state) const
 
void setupCompressedToCartesian (const int *global_cell, int number_of_cells, std::map< int, int > &cartesian_to_compressed) const
 
void computeRepRadiusPerfLength (const Grid &grid)
 
void computeAverageFormationFactor (const Simulator &ebosSimulator, std::vector< double > &B_avg) const
 
void applyVREPGroupControl (WellState &well_state) const
 
void computeWellVoidageRates (const WellState &well_state, std::vector< double > &well_voidage_rates, std::vector< double > &voidage_conversion_coeffs) const
 
void computeWellPotentials (const Simulator &ebosSimulator, const WellState &well_state, std::vector< double > &well_potentials) const
 
const std::vector< double > & wellPerfEfficiencyFactors () const
 
void calculateEfficiencyFactors ()
 
void calculateExplicitQuantities (const Simulator &ebosSimulator, const WellState &xw) const
 Calculating the explict quantities used in the well calculation. More...
 
SimulatorReport solveWellEq (Simulator &ebosSimulator, const double dt, WellState &well_state) const
 
void initPrimaryVariablesEvaluation () const
 
int numComponents () const
 
int numPhases () const
 
int flowPhaseToEbosPhaseIdx (const int phaseIdx) const
 
void resetWellControlFromState (const WellState &xw) const
 
void assembleWellEq (Simulator &ebosSimulator, const double dt, WellState &well_state, bool only_wells) const
 
void prepareTimeStep (const Simulator &ebos_simulator, WellState &well_state) const
 
void prepareGroupControl (const Simulator &ebos_simulator, WellState &well_state) const
 

Static Protected Member Functions

static std::vector< WellInterfacePtr > createWellContainer (const Wells *wells, const std::vector< const Well *> &wells_ecl, const bool use_multisegment_well, const int time_step, const ModelParameters &param)
 

Protected Attributes

bool wells_active_
 
const Wells * wells_
 
const std::vector< const Well *> wells_ecl_
 
const int number_of_wells_
 
const int number_of_phases_
 
const ModelParametersparam_
 
std::vector< WellInterfacePtr > well_container_
 
WellCollection * well_collection_
 
bool terminal_output_
 
bool has_solvent_
 
bool has_polymer_
 
int current_timeIdx_
 
PhaseUsage phase_usage_
 
std::vector< bool > active_
 
const RateConverterTyperate_converter_
 
const std::vector< int > & pvt_region_idx_
 
int number_of_cells_
 
long int global_nc_
 
BVector scaleAddRes_
 

Detailed Description

template<typename TypeTag>
class Opm::BlackoilWellModel< TypeTag >

Class for handling the blackoil well model.

Member Function Documentation

◆ calculateExplicitQuantities()

template<typename TypeTag >
void Opm::BlackoilWellModel< TypeTag >::calculateExplicitQuantities ( const Simulator &  ebosSimulator,
const WellState xw 
) const
protected

Calculating the explict quantities used in the well calculation.

By explicit, we mean they are cacluated at the beginning of the time step and no derivatives are included in these quantities


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