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 double rho,
64 DeferredLogger& deferred_logger) const;
65
67 void assembleInjectivityEq(const EvalWell& eq_pskin,
68 const EvalWell& eq_wat_vel,
69 const int pskin_index,
70 const int wat_vel_index,
71 const int cell_idx,
72 const int numWellEq,
74
76 void assemblePerforationEq(const EvalWell& cq_s_effective,
77 const int componentIdx,
78 const int cell_idx,
79 const int numWellEq,
81
83 void assembleZFracEq(const EvalWell& cq_s_zfrac_effective,
84 const int cell_idx,
85 const int numWellEq,
87
89 void assembleSourceEq(const EvalWell& resWell_loc,
90 const int componentIdx,
91 const int numWellEq,
93
94private:
96};
97
98}
99
100#endif // OPM_STANDARDWELL_ASSEMBLE_HEADER_INCLUDED
Definition: DeferredLogger.hpp:57
Definition: GroupState.hpp:35
Class handling assemble of the equation system for StandardWell.
Definition: StandardWellAssemble.hpp:43
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 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 double rho, StandardWellEquations< Scalar, Indices::numEq > &eqns, DeferredLogger &deferred_logger) const
Assemble control equation.
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:47
Definition: WellState.hpp:62
Definition: BlackoilPhases.hpp:27