22#ifndef OPM_MULTISEGMENTWELL_EVAL_HEADER_INCLUDED
23#define OPM_MULTISEGMENTWELL_EVAL_HEADER_INCLUDED
25#include <opm/simulators/wells/MultisegmentWellEquations.hpp>
26#include <opm/simulators/wells/MultisegmentWellGeneric.hpp>
27#include <opm/simulators/wells/MultisegmentWellPrimaryVariables.hpp>
28#include <opm/simulators/wells/MultisegmentWellSegments.hpp>
30#include <opm/material/densead/Evaluation.hpp>
40class ConvergenceReport;
43class WellContributions;
46template<
class Flu
idSystem,
class Indices>
class WellInterfaceIndices;
49template<
typename Flu
idSystem,
typename Indices>
53 using Scalar =
typename FluidSystem::Scalar;
55 static constexpr int numWellEq = PrimaryVariables::numWellEq;
56 static constexpr int SPres = PrimaryVariables::SPres;
57 static constexpr int WQTotal = PrimaryVariables::WQTotal;
62 using BVector =
typename Equations::BVector;
63 using BVectorWell =
typename Equations::BVectorWell;
68 using EvalWell =
typename PrimaryVariables::EvalWell;
69 using Eval = DenseAd::Evaluation<Scalar, Indices::numEq>;
79 void initMatrixAndVectors(
const int num_cells);
81 void assembleDefaultPressureEq(
const int seg,
83 const bool use_average_density);
86 void assembleICDPressureEq(
const int seg,
87 const UnitSystem& unit_system,
89 const SummaryState& summary_state,
90 const bool use_average_density,
93 void assembleAccelerationAndHydroPressureLosses(
const int seg,
95 const bool use_average_density);
98 void assemblePressureEq(
const int seg,
99 const UnitSystem& unit_system,
101 const SummaryState& summary_state,
102 const bool use_average_density,
107 const std::vector<double>& B_avg,
109 const double max_residual_allowed,
110 const double tolerance_wells,
111 const double relaxed_inner_tolerance_flow_ms_well,
112 const double tolerance_pressure_ms_wells,
113 const double relaxed_inner_tolerance_pressure_ms_well,
114 const bool relax_tolerance,
115 const bool well_is_stopped)
const;
117 std::pair<bool, std::vector<Scalar> >
118 getFiniteWellResiduals(
const std::vector<Scalar>& B_avg,
121 double getControlTolerance(
const WellState& well_state,
122 const double tolerance_wells,
123 const double tolerance_pressure_ms_wells,
126 double getResidualMeasureValue(
const WellState& well_state,
127 const std::vector<double>& residuals,
128 const double tolerance_wells,
129 const double tolerance_pressure_ms_wells,
132 void assembleAccelerationPressureLoss(
const int seg,
135 EvalWell pressureDropAutoICD(
const int seg,
136 const UnitSystem& unit_system)
const;
139 EvalWell extendEval(
const Eval& in)
const;
148 std::vector<double> cell_perforation_depth_diffs_;
151 std::vector<double> cell_perforation_pressure_diffs_;
Represents the convergence status of the whole simulator, to make it possible to query and store the ...
Definition ConvergenceReport.hpp:38
Definition DeferredLogger.hpp:57
Definition MultisegmentWellEval.hpp:51
Equations linSys_
The equation system.
Definition MultisegmentWellEval.hpp:143
ConvergenceReport getWellConvergence(const WellState &well_state, const std::vector< double > &B_avg, DeferredLogger &deferred_logger, const double max_residual_allowed, const double tolerance_wells, const double relaxed_inner_tolerance_flow_ms_well, const double tolerance_pressure_ms_wells, const double relaxed_inner_tolerance_pressure_ms_well, const bool relax_tolerance, const bool well_is_stopped) const
check whether the well equations get converged for this well
Definition MultisegmentWellEval.cpp:81
const Equations & linSys() const
Returns a const reference to equation system.
Definition MultisegmentWellEval.hpp:73
PrimaryVariables primary_variables_
The primary variables.
Definition MultisegmentWellEval.hpp:144
MSWSegments segments_
Segment properties.
Definition MultisegmentWellEval.hpp:145
Definition MultisegmentWellGeneric.hpp:42
Definition MultisegmentWellPrimaryVariables.hpp:45
Definition MultisegmentWellSegments.hpp:45
Definition WellInterfaceIndices.hpp:35
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:61
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27