StandardWellAssemble.hpp
Go to the documentation of this file.
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
23#ifndef OPM_STANDARDWELL_ASSEMBLE_HEADER_INCLUDED
24#define OPM_STANDARDWELL_ASSEMBLE_HEADER_INCLUDED
25
26#include <opm/input/eclipse/Schedule/Well/Well.hpp>
27
28namespace Opm
29{
30
31class DeferredLogger;
32template<class Scalar> class GroupState;
33class Schedule;
34template<typename Scalar, typename IndexTraits, int numEq> class StandardWellEquations;
35template<class FluidSystem, class Indices> class StandardWellPrimaryVariables;
36class SummaryState;
37template<class FluidSystem> class WellInterfaceFluidSystem;
38template<typename Scalar, typename IndexTraits> class WellState;
39template<typename Scalar, typename IndexTraits> class GroupStateHelper;
40
42template<class FluidSystem, class Indices>
44{
45public:
46 using Scalar = typename FluidSystem::Scalar;
49 using IndexTraits = typename FluidSystem::IndexTraitsType;
52
55 : well_(well)
56 {}
57
59 void assembleControlEq(const GroupStateHelperType& groupStateHelper,
60 const Well::InjectionControls& inj_controls,
61 const Well::ProductionControls& prod_controls,
62 const PrimaryVariables& primary_variables,
63 const Scalar rho,
65 const bool stopped_or_zero_target,
66 DeferredLogger& deferred_logger) const;
67
69 void assembleInjectivityEq(const EvalWell& eq_pskin,
70 const EvalWell& eq_wat_vel,
71 const int pskin_index,
72 const int wat_vel_index,
73 const int cell_idx,
74 const int numWellEq,
75 StandardWellEquationsType& eqns) const;
76
78 void assemblePerforationEq(const EvalWell& cq_s_effective,
79 const int componentIdx,
80 const int cell_idx,
81 const int numWellEq,
82 StandardWellEquationsType& eqns) const;
83
85 void assembleZFracEq(const EvalWell& cq_s_zfrac_effective,
86 const int cell_idx,
87 const int numWellEq,
88 StandardWellEquationsType& eqns) const;
89
91 void assembleSourceEq(const EvalWell& resWell_loc,
92 const int componentIdx,
93 const int numWellEq,
94 StandardWellEquationsType& eqns) const;
95
96private:
98};
99
100}
101
102#endif // OPM_STANDARDWELL_ASSEMBLE_HEADER_INCLUDED
Definition: DeferredLogger.hpp:57
Definition: GroupStateHelper.hpp:53
Class handling assemble of the equation system for StandardWell.
Definition: StandardWellAssemble.hpp:44
void assembleSourceEq(const EvalWell &resWell_loc, const int componentIdx, const int numWellEq, StandardWellEquationsType &eqns) const
Assemble a source term.
void assembleZFracEq(const EvalWell &cq_s_zfrac_effective, const int cell_idx, const int numWellEq, StandardWellEquationsType &eqns) const
Assemble equation for Z fraction.
StandardWellAssemble(const WellInterfaceFluidSystem< FluidSystem > &well)
Constructor initializes reference to well.
Definition: StandardWellAssemble.hpp:54
typename FluidSystem::Scalar Scalar
Definition: StandardWellAssemble.hpp:46
typename PrimaryVariables::EvalWell EvalWell
Definition: StandardWellAssemble.hpp:48
void assembleInjectivityEq(const EvalWell &eq_pskin, const EvalWell &eq_wat_vel, const int pskin_index, const int wat_vel_index, const int cell_idx, const int numWellEq, StandardWellEquationsType &eqns) const
Assemble injectivity equation.
void assemblePerforationEq(const EvalWell &cq_s_effective, const int componentIdx, const int cell_idx, const int numWellEq, StandardWellEquationsType &eqns) const
Assemble equation for a perforation.
void assembleControlEq(const GroupStateHelperType &groupStateHelper, const Well::InjectionControls &inj_controls, const Well::ProductionControls &prod_controls, const PrimaryVariables &primary_variables, const Scalar rho, StandardWellEquationsType &eqns, const bool stopped_or_zero_target, DeferredLogger &deferred_logger) const
Assemble control equation.
typename FluidSystem::IndexTraitsType IndexTraits
Definition: StandardWellAssemble.hpp:49
Class holding primary variables for StandardWell.
Definition: StandardWellPrimaryVariables.hpp:42
DenseAd::DynamicEvaluation< Scalar, numStaticWellEq+Indices::numEq+1 > EvalWell
Evaluation for the well equations.
Definition: StandardWellPrimaryVariables.hpp:89
Definition: WellInterfaceFluidSystem.hpp:50
Definition: blackoilbioeffectsmodules.hh:43