My Project
WellAssemble.hpp
1/*
2 Copyright 2017 SINTEF Digital, Mathematics and Cybernetics.
3 Copyright 2017 Statoil ASA.
4 Copyright 2017 IRIS
5 Copyright 2019 Norce
6
7 This file is part of the Open Porous Media project (OPM).
8
9 OPM is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 OPM is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with OPM. If not, see <http://www.gnu.org/licenses/>.
21*/
22
23
24#ifndef OPM_WELL_ASSEMBLE_HEADER_INCLUDED
25#define OPM_WELL_ASSEMBLE_HEADER_INCLUDED
26
27#include <opm/core/props/BlackoilPhases.hpp>
28
29#include <opm/input/eclipse/Schedule/ScheduleTypes.hpp>
30#include <opm/input/eclipse/Schedule/Well/WellEnums.hpp>
31
32#include <functional>
33
34namespace Opm
35{
36
37class DeferredLogger;
38class Group;
39class GroupState;
40class Schedule;
41class SummaryState;
42template<class FluidSystem> class WellInterfaceFluidSystem;
43class WellState;
44class WellInjectionControls;
45class WellProductionControls;
46
47template<class FluidSystem>
49 static constexpr int Water = BlackoilPhases::Aqua;
50 static constexpr int Oil = BlackoilPhases::Liquid;
51 static constexpr int Gas = BlackoilPhases::Vapour;
52
53public:
55
56 template<class EvalWell>
57 void assembleControlEqProd(const WellState& well_state,
58 const GroupState& group_state,
59 const Schedule& schedule,
60 const SummaryState& summaryState,
61 const WellProductionControls& controls,
62 const EvalWell& bhp,
63 const std::vector<EvalWell>& rates, // Always 3 canonical rates.
64 const std::function<EvalWell()>& bhp_from_thp,
65 EvalWell& control_eq,
66 DeferredLogger& deferred_logger) const;
67
68 template<class EvalWell>
69 void assembleControlEqInj(const WellState& well_state,
70 const GroupState& group_state,
71 const Schedule& schedule,
72 const SummaryState& summaryState,
73 const WellInjectionControls& controls,
74 const EvalWell& bhp,
75 const EvalWell& injection_rate,
76 const std::function<EvalWell()>& bhp_from_thp,
77 EvalWell& control_eq,
78 DeferredLogger& deferred_logger) const;
79
80private:
82};
83
84
85
86}
87
88#endif // OPM_WELL_ASSEMBLE_HEADER_INCLUDED
Definition: DeferredLogger.hpp:57
Definition: GroupState.hpp:34
Definition: WellAssemble.hpp:48
Definition: WellInterfaceFluidSystem.hpp:47
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition: WellState.hpp:60
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: BlackoilPhases.hpp:27