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<class Scalar, int numEq> class StandardWellEquations;
35template<class FluidSystem, class Indices> class StandardWellPrimaryVariables;
36class SummaryState;
37template<class FluidSystem> class WellInterfaceFluidSystem;
38template<class Scalar> class WellState;
39
41template<class FluidSystem, class Indices>
43{
44public:
45 using Scalar = typename FluidSystem::Scalar;
48
51 : well_(well)
52 {}
53
55 void assembleControlEq(const WellState<Scalar>& well_state,
56 const GroupState<Scalar>& group_state,
57 const Schedule& schedule,
58 const SummaryState& summaryState,
59 const Well::InjectionControls& inj_controls,
60 const Well::ProductionControls& prod_controls,
61 const PrimaryVariables& primary_variables,
62 const Scalar rho,
64 const bool stopped_or_zero_target,
65 DeferredLogger& deferred_logger) const;
66
68 void assembleInjectivityEq(const EvalWell& eq_pskin,
69 const EvalWell& eq_wat_vel,
70 const int pskin_index,
71 const int wat_vel_index,
72 const int cell_idx,
73 const int numWellEq,
75
77 void assemblePerforationEq(const EvalWell& cq_s_effective,
78 const int componentIdx,
79 const int cell_idx,
80 const int numWellEq,
82
84 void assembleZFracEq(const EvalWell& cq_s_zfrac_effective,
85 const int cell_idx,
86 const int numWellEq,
88
90 void assembleSourceEq(const EvalWell& resWell_loc,
91 const int componentIdx,
92 const int numWellEq,
94
95private:
97};
98
99}
100
101#endif // OPM_STANDARDWELL_ASSEMBLE_HEADER_INCLUDED
Definition: DeferredLogger.hpp:57
Definition: GroupState.hpp:38
Class handling assemble of the equation system for StandardWell.
Definition: StandardWellAssemble.hpp:43
void assembleControlEq(const WellState< Scalar > &well_state, const GroupState< Scalar > &group_state, const Schedule &schedule, const SummaryState &summaryState, const Well::InjectionControls &inj_controls, const Well::ProductionControls &prod_controls, const PrimaryVariables &primary_variables, const Scalar rho, StandardWellEquations< Scalar, Indices::numEq > &eqns, const bool stopped_or_zero_target, DeferredLogger &deferred_logger) const
Assemble control equation.
StandardWellAssemble(const WellInterfaceFluidSystem< FluidSystem > &well)
Constructor initializes reference to well.
Definition: StandardWellAssemble.hpp:50
void assemblePerforationEq(const EvalWell &cq_s_effective, const int componentIdx, const int cell_idx, const int numWellEq, StandardWellEquations< Scalar, Indices::numEq > &eqns) const
Assemble equation for a perforation.
typename FluidSystem::Scalar Scalar
Definition: StandardWellAssemble.hpp:45
typename PrimaryVariables::EvalWell EvalWell
Definition: StandardWellAssemble.hpp:47
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, StandardWellEquations< Scalar, Indices::numEq > &eqns) const
Assemble injectivity equation.
void assembleZFracEq(const EvalWell &cq_s_zfrac_effective, const int cell_idx, const int numWellEq, StandardWellEquations< Scalar, Indices::numEq > &eqns) const
Assemble equation for Z fraction.
void assembleSourceEq(const EvalWell &resWell_loc, const int componentIdx, const int numWellEq, StandardWellEquations< Scalar, Indices::numEq > &eqns) const
Assemble a source term.
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:87
Definition: WellInterfaceFluidSystem.hpp:51
Definition: WellState.hpp:62
Definition: blackoilboundaryratevector.hh:37