My Project
Opm::StandardWellEval< FluidSystem, Indices, Scalar > Class Template Reference
Inheritance diagram for Opm::StandardWellEval< FluidSystem, Indices, Scalar >:
Opm::StandardWellGeneric< Scalar >

Public Types

using EvalWell = DenseAd::DynamicEvaluation< Scalar, numStaticWellEq+Indices::numEq+1 >
 
using Eval = DenseAd::Evaluation< Scalar, Indices::numEq >
 
using BVectorWell = typename StandardWellGeneric< Scalar >::BVectorWell
 

Public Member Functions

void addWellContribution (WellContributions &wellContribs) const
 add the contribution (C, D^-1, B matrices) of this Well to the WellContributions object
 
- Public Member Functions inherited from Opm::StandardWellGeneric< Scalar >
void getNumBlocks (unsigned int &_nnzs) const
 get the number of blocks of the C and B matrices, used to allocate memory in a WellContributions object
 

Protected Member Functions

 StandardWellEval (const WellInterfaceIndices< FluidSystem, Indices, Scalar > &baseif)
 
void initPrimaryVariablesEvaluation () const
 
const EvalWell & getBhp () const
 
const EvalWell & getWQTotal () const
 
EvalWell extendEval (const Eval &in) const
 
EvalWell getQs (const int compIdx) const
 
EvalWell wellSurfaceVolumeFraction (const int compIdx) const
 
EvalWell wellVolumeFraction (const unsigned compIdx) const
 
EvalWell wellVolumeFractionScaled (const int phase) const
 
void assembleControlEq (const WellState &well_state, const GroupState &group_state, const Schedule &schedule, const SummaryState &summaryState, DeferredLogger &deferred_logger)
 
void computeAccumWell ()
 
void computeConnectionDensities (const std::vector< double > &perfComponentRates, const std::vector< double > &b_perf, const std::vector< double > &rsmax_perf, const std::vector< double > &rvmax_perf, const std::vector< double > &rvwmax_perf, const std::vector< double > &surf_dens_perf, DeferredLogger &deferred_logger)
 
ConvergenceReport getWellConvergence (const WellState &well_state, const std::vector< double > &B_avg, const double maxResidualAllowed, const double tol_wells, const double relaxed_tolerance_flow, const bool relax_tolerance, std::vector< double > &res, DeferredLogger &deferred_logger) const
 
void init (std::vector< double > &perf_depth, const std::vector< double > &depth_arg, const int num_cells, const bool has_polymermw)
 
void processFractions () const
 
void updatePrimaryVariables (const WellState &well_state, DeferredLogger &deferred_logger) const
 
void updatePrimaryVariablesPolyMW (const BVectorWell &dwells) const
 
void updateWellStateFromPrimaryVariables (WellState &well_state, DeferredLogger &deferred_logger) const
 
void updatePrimaryVariablesNewton (const BVectorWell &dwells, const double dFLimit, const double dBHPLimit) const
 
void updateWellStateFromPrimaryVariablesPolyMW (WellState &well_state) const
 
void updateThp (WellState &well_state, DeferredLogger &deferred_logger) const
 
- Protected Member Functions inherited from Opm::StandardWellGeneric< Scalar >
 StandardWellGeneric (int Bhp, const WellInterfaceGeneric &baseif)
 
double calculateThpFromBhp (const WellState &well_state, const std::vector< double > &rates, const double bhp, DeferredLogger &deferred_logger) const
 
void checkConvergenceControlEq (const WellState &well_state, ConvergenceReport &report, DeferredLogger &deferred_logger, const double max_residual_allowed) const
 
void checkConvergencePolyMW (const std::vector< double > &res, ConvergenceReport &report, const double maxResidualAllowed) const
 
void computeConnectionPressureDelta ()
 
std::optional< double > computeBhpAtThpLimitInj (const std::function< std::vector< double >(const double)> &frates, const SummaryState &summary_state, DeferredLogger &deferred_logger) const
 
std::optional< double > computeBhpAtThpLimitProdWithAlq (const std::function< std::vector< double >(const double)> &frates, const SummaryState &summary_state, DeferredLogger &deferred_logger, double maxPerfPress, double alq_value) const
 
double getRho () const
 

Static Protected Member Functions

static double relaxationFactorFractionsProducer (const std::vector< double > &primary_variables, const BVectorWell &dwells)
 
- Static Protected Member Functions inherited from Opm::StandardWellGeneric< Scalar >
static double relaxationFactorRate (const std::vector< double > &primary_variables, const BVectorWell &dwells)
 
static double relaxationFactorFraction (const double old_value, const double dx)
 

Protected Attributes

const WellInterfaceIndices< FluidSystem, Indices, Scalar > & baseif_
 
int numWellEq_ = numStaticWellEq
 
std::vector< double > primary_variables_
 
std::vector< EvalWell > primary_variables_evaluation_
 
std::vector< double > F0_
 
- Protected Attributes inherited from Opm::StandardWellGeneric< Scalar >
const WellInterfaceGenericbaseif_
 
BVectorWell resWell_
 
std::vector< double > perf_densities_
 
std::vector< double > perf_pressure_diffs_
 
OffDiagMatWell duneB_
 
OffDiagMatWell duneC_
 
DiagMatWell invDuneD_
 
DiagMatWell duneD_
 
wellhelpers::ParallelStandardWellB< Scalar > parallelB_
 
BVectorWell Bx_
 
BVectorWell invDrw_
 

Static Protected Attributes

static constexpr int numWellConservationEq = Indices::numPhases + Indices::numSolvents
 
static constexpr int numWellControlEq = 1
 
static constexpr int numStaticWellEq = numWellConservationEq + numWellControlEq
 
static constexpr int Bhp = numStaticWellEq - numWellControlEq
 
static const int WQTotal = 0
 
static const bool waterEnabled = Indices::waterEnabled
 
static const bool gasEnabled = Indices::gasEnabled
 
static const bool oilEnabled = Indices::oilEnabled
 
static constexpr bool has_wfrac_variable = Indices::waterEnabled && Indices::oilEnabled
 
static constexpr bool has_gfrac_variable = Indices::gasEnabled && Indices::numPhases > 1
 
static constexpr int WFrac = has_wfrac_variable ? 1 : -1000
 
static constexpr int GFrac = has_gfrac_variable ? has_wfrac_variable + 1 : -1000
 
static constexpr int SFrac = !Indices::enableSolvent ? -1000 : 3
 

Additional Inherited Members

- Protected Types inherited from Opm::StandardWellGeneric< Scalar >
using VectorBlockWellType = Dune::DynamicVector< Scalar >
 
using BVectorWell = Dune::BlockVector< VectorBlockWellType >
 
using DiagMatrixBlockWellType = Dune::DynamicMatrix< Scalar >
 
using DiagMatWell = Dune::BCRSMatrix< DiagMatrixBlockWellType >
 
using OffDiagMatrixBlockWellType = Dune::DynamicMatrix< Scalar >
 
using OffDiagMatWell = Dune::BCRSMatrix< OffDiagMatrixBlockWellType >
 

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