28 #ifndef OPM_UNIFORM_TABULATED_2D_FUNCTION_HPP 29 #define OPM_UNIFORM_TABULATED_2D_FUNCTION_HPP 31 #include <opm/common/Exceptions.hpp> 32 #include <opm/common/ErrorMacros.hpp> 49 template <
class Scalar>
61 Scalar minY, Scalar maxY,
unsigned n)
63 resize(minX, maxX, m, minY, maxY, n);
69 void resize(Scalar minX, Scalar maxX,
unsigned m,
70 Scalar minY, Scalar maxY,
unsigned n)
125 assert(0 <= i && i <
numX());
135 assert(0 <= j && j <
numY());
148 template <
class Evaluation>
149 Evaluation
xToI(
const Evaluation& x)
const 160 template <
class Evaluation>
161 Evaluation
yToJ(
const Evaluation& y)
const 167 template <
class Evaluation>
168 bool applies(
const Evaluation& x,
const Evaluation& y)
const 181 template <
class Evaluation>
182 Evaluation
eval(
const Evaluation& x,
const Evaluation& y)
const 187 OPM_THROW(NumericalProblem,
188 "Attempt to get tabulated value for (" 190 <<
") on a table of extend " 191 <<
xMin() <<
" to " <<
xMax() <<
" times " 196 Evaluation alpha =
xToI(x);
197 Evaluation beta =
yToJ(y);
200 static_cast<unsigned>(
201 std::max(0, std::min(static_cast<int>(
numX()) - 2,
202 static_cast<int>(Opm::scalarValue(alpha)))));
204 static_cast<unsigned>(
205 std::max(0, std::min(static_cast<int>(
numY()) - 2,
206 static_cast<int>(Opm::scalarValue(beta)))));
214 return s1*(1.0 - beta) + s2*beta;
224 assert(0 <= i && i < m_);
225 assert(0 <= j && j < n_);
227 return samples_[j*m_ + i];
237 assert(0 <= i && i < m_);
238 assert(0 <= j && j < n_);
240 samples_[j*m_ + i] = value;
247 std::vector<Scalar> samples_;
Definition: Air_Mesitylene.hpp:33