opm-simulators
Loading...
Searching...
No Matches
StandardWellEval.hpp
1/*
2 Copyright 2017 SINTEF Digital, Mathematics and Cybernetics.
3 Copyright 2017 Statoil ASA.
4 Copyright 2016 - 2017 IRIS AS.
5
6 This file is part of the Open Porous Media project (OPM).
7
8 OPM is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 OPM is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with OPM. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#ifndef OPM_STANDARDWELL_EVAL_HEADER_INCLUDED
23#define OPM_STANDARDWELL_EVAL_HEADER_INCLUDED
24
25#include <opm/simulators/wells/StandardWellConnections.hpp>
26#include <opm/simulators/wells/StandardWellEquations.hpp>
27#include <opm/simulators/wells/StandardWellPrimaryVariables.hpp>
28
29#include <opm/material/densead/Evaluation.hpp>
30
31#include <vector>
32
33namespace Opm
34{
35
37class DeferredLogger;
38class Schedule;
39class SummaryState;
40template<class Scalar> class WellContributions;
41template<class FluidSystem, class Indices> class WellInterfaceIndices;
42template<typename FluidSystem, typename Indices> class WellState;
43
44template<class FluidSystem, class Indices>
45class StandardWellEval
46{
47protected:
48 using Scalar = typename FluidSystem::Scalar;
49 using IndexTraits = typename FluidSystem::IndexTraitsType;
51 using StdWellConnections = StandardWellConnections<FluidSystem,Indices>;
52 static constexpr int Bhp = PrimaryVariables::Bhp;
53 static constexpr int WQTotal= PrimaryVariables::WQTotal;
54 static constexpr int numWellConservationEq = PrimaryVariables::numWellConservationEq;
55
56 static constexpr bool has_wfrac_variable = PrimaryVariables::has_wfrac_variable;
57 static constexpr bool has_gfrac_variable = PrimaryVariables::has_gfrac_variable;
58 static constexpr int WFrac = PrimaryVariables::WFrac;
59 static constexpr int GFrac = PrimaryVariables::GFrac;
60 static constexpr int SFrac = PrimaryVariables::SFrac;
61
62public:
63 using EvalWell = typename PrimaryVariables::EvalWell;
64 using Eval = DenseAd::Evaluation<Scalar, Indices::numEq>;
65 using BVectorWell = typename StandardWellEquations<Scalar, IndexTraits, Indices::numEq>::BVectorWell;
66
70
71protected:
73
75
76 EvalWell extendEval(const Eval& in) const;
77
78 // computing the accumulation term for later use in well mass equations
79 void computeAccumWell();
80
81 ConvergenceReport getWellConvergence(const WellState<Scalar, IndexTraits>& well_state,
82 const std::vector<Scalar>& B_avg,
83 const Scalar maxResidualAllowed,
84 const Scalar tol_wells,
85 const Scalar relaxed_tolerance_flow,
86 const bool relax_tolerance,
87 const bool well_is_stopped,
88 std::vector<Scalar>& res,
89 DeferredLogger& deferred_logger) const;
90
91 void init(std::vector<Scalar>& perf_depth,
92 const std::vector<Scalar>& depth_arg,
93 const bool has_polymermw);
94
95 PrimaryVariables primary_variables_;
96
97 // the saturations in the well bore under surface conditions at the beginning of the time step
98 std::vector<Scalar> F0_;
99
101 StdWellConnections connections_;
102};
103
104}
105
106#endif // OPM_STANDARDWELL_EVAL_HEADER_INCLUDED
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 StandardWellConnections.hpp:45
Definition StandardWellEquations.hpp:47
Definition StandardWellEval.hpp:46
const StandardWellEquations< Scalar, IndexTraits, Indices::numEq > & linSys() const
Returns a const reference to equation system.
Definition StandardWellEval.hpp:68
StandardWellEquations< Scalar, IndexTraits, Indices::numEq > linSys_
Definition StandardWellEval.hpp:100
Class holding primary variables for StandardWell.
Definition StandardWellPrimaryVariables.hpp:41
DenseAd::DynamicEvaluation< Scalar, numStaticWellEq+Indices::numEq+1 > EvalWell
Evaluation for the well equations.
Definition StandardWellPrimaryVariables.hpp:88
static constexpr int WQTotal
The index for the weighted total rate.
Definition StandardWellPrimaryVariables.hpp:72
static constexpr int numWellConservationEq
Number of the conservation equations.
Definition StandardWellPrimaryVariables.hpp:66
static constexpr int Bhp
The index for Bhp in primary variables and the index of well control equation.
Definition StandardWellPrimaryVariables.hpp:77
This class serves to eliminate the need to include the WellContributions into the matrix (with –matri...
Definition WellContributions.hpp:51
Definition WellInterfaceIndices.hpp:34
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:66
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43