opm-simulators
Toggle main menu visibility
Loading...
Searching...
No Matches
WellInterfaceIndices.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
#ifndef OPM_WELLINTERFACE_INDICES_HEADER_INCLUDED
24
#define OPM_WELLINTERFACE_INDICES_HEADER_INCLUDED
25
26
#include <opm/material/densead/Evaluation.hpp>
27
28
#include <opm/simulators/wells/WellInterfaceFluidSystem.hpp>
29
30
namespace
Opm
{
31
32
template
<
class
Flu
id
System,
class
Indices>
33
class
WellInterfaceIndices :
public
WellInterfaceFluidSystem<FluidSystem>
34
{
35
public
:
36
using
WellInterfaceFluidSystem<FluidSystem>::Gas;
37
using
WellInterfaceFluidSystem<FluidSystem>::Oil;
38
using
WellInterfaceFluidSystem<FluidSystem>::Water;
39
using
Scalar =
typename
FluidSystem::Scalar;
40
using
Eval = DenseAd::Evaluation<Scalar,
/*size=*/
Indices::numEq>;
41
using
ModelParameters =
typename
WellInterfaceFluidSystem<FluidSystem>::ModelParameters;
42
43
Scalar scalingFactor(
const
int
phaseIdx)
const
;
44
45
template
<
class
EvalWell>
46
Eval restrictEval(
const
EvalWell& in)
const
47
{
48
Eval out = 0.0;
49
out.setValue(in.value());
50
for
(
int
eqIdx = 0; eqIdx < Indices::numEq; ++eqIdx) {
51
out.setDerivative(eqIdx, in.derivative(eqIdx));
52
}
53
return
out;
54
}
55
56
protected
:
57
WellInterfaceIndices(
const
Well& well,
58
const
ParallelWellInfo<Scalar>
& parallel_well_info,
59
const
int
time_step,
60
const
ModelParameters& param,
61
const
typename
WellInterfaceFluidSystem<FluidSystem>::RateConverterType& rate_converter,
62
const
int
pvtRegionIdx,
63
const
int
num_conservation_quantities,
64
const
int
num_phases,
65
const
int
index_of_well,
66
const
std::vector<
PerforationData<Scalar>
>& perf_data);
67
};
68
69
}
70
71
#endif
// OPM_WELLINTERFACE_INDICES_HEADER_INCLUDED
Opm::ParallelWellInfo
Class encapsulating some information about parallel wells.
Definition
ParallelWellInfo.hpp:198
Opm
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition
blackoilbioeffectsmodules.hh:43
Opm::PerforationData
Static data associated with a well perforation.
Definition
PerforationData.hpp:30
opm
simulators
wells
WellInterfaceIndices.hpp
Generated by
1.17.0