src
lib
cubic_spline.cpp
Go to the documentation of this file.
1
12
/*****************************************************************************
13
** Includes
14
*****************************************************************************/
15
16
#include <
ecl/exceptions/standard_exception.hpp
>
17
#include "../../include/ecl/geometry/cubic_spline.hpp"
18
19
/*****************************************************************************
20
** Namespaces
21
*****************************************************************************/
22
23
namespace
ecl
{
24
25
/*****************************************************************************
26
** Implementation
27
*****************************************************************************/
28
29
double
CubicSpline::operator()
(
const
double
&x)
const
{
30
ecl_assert_throw
( ( ( x >=
discretised_domain
.
front
() ) && ( x <=
discretised_domain
.
back
() ) ), StandardException(LOC,
OutOfRangeError
) );
31
int
index = 0;
32
while
( x >
discretised_domain
[index+1] ) {
33
++index;
34
}
35
return
cubic_polynomials
[index](x);
36
}
37
38
double
CubicSpline::derivative
(
double
x)
const
{
39
ecl_assert_throw
( ( ( x >=
discretised_domain
.
front
() ) && ( x <=
discretised_domain
.
back
() ) ), StandardException(
LOC
,
OutOfRangeError
) );
40
int
index = 0;
41
while
( x >
discretised_domain
[index+1] ) {
42
++index;
43
}
44
return
cubic_polynomials
[index].derivative()(x);
45
}
46
47
double
CubicSpline::dderivative
(
double
x)
const
{
48
ecl_assert_throw
( ( ( x >=
discretised_domain
.
front
() ) && ( x <=
discretised_domain
.
back
() ) ), StandardException(
LOC
,
OutOfRangeError
) );
49
int
index = 0;
50
while
( x >
discretised_domain
[index+1] ) {
51
++index;
52
}
53
return
cubic_polynomials
[index].derivative().derivative()(x);
54
}
55
56
}
// namespace ecl
ecl::CubicSpline::derivative
double derivative(double x) const
Spline derivative.
Definition:
cubic_spline.cpp:42
ecl::CubicSpline::dderivative
double dderivative(double x) const
Spline second derivative.
Definition:
cubic_spline.cpp:51
ecl::CubicSpline::discretised_domain
Array< double > discretised_domain
Definition:
cubic_spline.hpp:243
ecl::CubicSpline::operator()
double operator()(const double &x) const
Spline function.
Definition:
cubic_spline.cpp:33
LOC
#define LOC
ecl::CubicSpline::cubic_polynomials
Array< CubicPolynomial > cubic_polynomials
Definition:
cubic_spline.hpp:246
ecl::Array::back
reference back()
ecl::Array::front
reference front()
ecl_assert_throw
#define ecl_assert_throw(expression, exception)
standard_exception.hpp
ecl::OutOfRangeError
OutOfRangeError
ecl
Embedded control libraries.
ecl_geometry
Author(s): Daniel Stonier
autogenerated on Wed Mar 2 2022 00:16:39