Class for handling the standard well model. More...
#include <StandardWells.hpp>
Classes | |
struct | WellOps |
Public Types | |
typedef Eigen::Array< Scalar, Eigen::Dynamic, 1 > | V |
Underlying type for values. | |
Public Member Functions | |
StandardWells (const Wells *wells_arg, WellCollection *well_collection) | |
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 WellOps & | wellOps () const |
int | numPhases () const |
const Wells & | wells () const |
const Wells * | wellsPointer () 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 | |
int | numWellVars () const |
Vector & | wellPerforationDensities () |
Density of each well perforation. | |
const Vector & | wellPerforationDensities () const |
Vector & | wellPerforationPressureDiffs () |
Diff to bhp for each well perforation. | |
const Vector & | wellPerforationPressureDiffs () 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 |
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 WellState > | |
void | updateWellState (const Vector &dwells, const double dpmaxrel, WellState &well_state) |
template<class WellState > | |
void | updateWellControls (WellState &xw) const |
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 SolutionState , class WellState > | |
void | computeWellConnectionPressures (const SolutionState &state, const WellState &xw) |
template<class SolutionState , class WellState > | |
void | computeWellPotentials (const std::vector< ADB > &mob_perfcells, const std::vector< ADB > &b_perfcells, const WellState &well_state, SolutionState &state0, std::vector< double > &well_potentials) const |
template<class SolutionState > | |
void | variableStateExtractWellsVars (const std::vector< int > &indices, std::vector< ADB > &vars, SolutionState &state) const |
void | variableStateWellIndices (std::vector< int > &indices, int &next) const |
std::vector< int > | variableWellStateIndices () const |
template<class WellState > | |
void | variableWellStateInitials (const WellState &xw, std::vector< Vector > &vars0) const |
void | setStoreWellPerforationFluxesFlag (const bool store_fluxes) |
If set, computeWellFlux() will additionally store the total reservoir volume perforation fluxes. | |
const Vector & | getStoredWellPerforationFluxes () const |
Retrieves the stored fluxes. | |
template<class WellState > | |
void | updateListEconLimited (const Schedule &schedule, const int current_step, const Wells *wells, const WellState &well_state, DynamicListEconLimited &list_econ_limited) const |
upate the dynamic lists related to economic limits | |
WellCollection * | wellCollection () const |
void | calculateEfficiencyFactors () |
const Vector & | wellPerfEfficiencyFactors () const |
Protected Types | |
enum | ConnectionIndex { INVALIDCONNECTION = -10000 } |
Protected Member Functions | |
template<class SolutionState , class WellState > | |
void | computePropertiesForWellConnectionPressures (const SolutionState &state, const WellState &xw, std::vector< double > &b_perf, std::vector< double > &rsmax_perf, std::vector< double > &rvmax_perf, std::vector< double > &surf_dens_perf) |
template<class WellState > | |
void | computeWellConnectionDensitesPressures (const WellState &xw, const std::vector< double > &b_perf, const std::vector< double > &rsmax_perf, const std::vector< double > &rvmax_perf, const std::vector< double > &surf_dens_perf, const std::vector< double > &depth_perf, const double grav) |
template<class WellState > | |
bool | checkRateEconLimits (const WellEconProductionLimits &econ_production_limits, const WellState &well_state, const int well_number) const |
template<class WellState > | |
RatioCheckTuple | checkRatioEconLimits (const WellEconProductionLimits &econ_production_limits, const WellState &well_state, const WellMapEntryType &map_entry) const |
template<class WellState > | |
RatioCheckTuple | checkMaxWaterCutLimit (const WellEconProductionLimits &econ_production_limits, const WellState &well_state, const WellMapEntryType &map_entry) const |
template<class WellState > | |
void | updateWellStateWithTarget (const WellControls *wc, const int current, const int well_index, WellState &xw) const |
Protected Attributes | |
bool | wells_active_ |
const Wells * | wells_ |
const WellOps | wops_ |
WellCollection * | well_collection_ |
Vector | well_perforation_efficiency_factors_ |
const BlackoilPropsAdFromDeck * | fluid_ |
const std::vector< bool > * | active_ |
const std::vector < PhasePresence > * | phase_condition_ |
const VFPProperties * | vfp_properties_ |
double | gravity_ |
Vector | perf_cell_depth_ |
Vector | well_perforation_densities_ |
Vector | well_perforation_pressure_diffs_ |
bool | store_well_perforation_fluxes_ |
Vector | well_perforation_fluxes_ |
Class for handling the standard well model.
const StandardWells::Vector & Opm::StandardWells::getStoredWellPerforationFluxes | ( | ) | const |
Retrieves the stored fluxes.
It is an error to call this unless setStoreWellPerforationFluxesFlag(true) has been called.
void Opm::StandardWells::setStoreWellPerforationFluxesFlag | ( | const bool | store_fluxes | ) |
If set, computeWellFlux() will additionally store the total reservoir volume perforation fluxes.