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 ¶m, 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 ¶m) |
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 ModelParameters & | param_ |
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 RateConverterType & | rate_converter_ |
const std::vector< int > & | pvt_region_idx_ |
int | number_of_cells_ |
long int | global_nc_ |
BVector | scaleAddRes_ |
Class for handling the blackoil well model.
|
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