opm-common
Toggle main menu visibility
Loading...
Searching...
No Matches
buildUniformMonotoneTable.hpp
1
/*
2
Copyright 2010 SINTEF ICT, Applied Mathematics.
3
4
This file is part of the Open Porous Media project (OPM).
5
6
OPM is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
OPM is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with OPM. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef OPM_BUILDUNIFORMMONOTONETABLE_HEADER_INCLUDED
21
#define OPM_BUILDUNIFORMMONOTONETABLE_HEADER_INCLUDED
22
23
#include <opm/core/utility/MonotCubicInterpolator.hpp>
24
#include <opm/core/utility/UniformTableLinear.hpp>
25
26
namespace
Opm
{
27
28
template
<
typename
T>
29
void
buildUniformMonotoneTable(
const
std::vector<double>& xv,
30
const
std::vector<T>& yv,
31
const
int
samples,
32
UniformTableLinear<T>
& table)
33
{
34
MonotCubicInterpolator
interp(xv, yv);
35
std::vector<T> uniform_yv(samples);
36
double
xmin = xv[0];
37
double
xmax = xv.back();
38
for
(
int
i = 0; i < samples; ++i) {
39
double
w = double(i)/double(samples - 1);
40
double
x = (1.0 - w)*xmin + w*xmax;
41
uniform_yv[i] = interp(x);
42
}
43
table =
UniformTableLinear<T>
(xmin, xmax, uniform_yv);
44
}
45
46
}
// namespace Opm
47
48
49
50
#endif
// OPM_BUILDUNIFORMMONOTONETABLE_HEADER_INCLUDED
Opm::MonotCubicInterpolator
Class to represent a one-dimensional function f with single-valued argument x.
Definition
MonotCubicInterpolator.hpp:62
Opm::UniformTableLinear
This class uses linear interpolation to compute the value (and its derivative) of a function f sample...
Definition
UniformTableLinear.hpp:38
Opm
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition
Exceptions.hpp:30
opm
common
utility
numeric
buildUniformMonotoneTable.hpp
Generated by
1.17.0