Spline.hpp File Reference

Class implementing cubic splines. More...

#include <opm/material/common/TridiagonalMatrix.hpp>
#include <opm/material/common/PolynomialUtils.hpp>
#include <opm/common/ErrorMacros.hpp>
#include <opm/material/common/Unused.hpp>
#include <ostream>
#include <vector>
#include <tuple>
Include dependency graph for Spline.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Opm::Spline< Scalar >
 Class implementing cubic splines. More...
 
struct  Opm::Spline< Scalar >::ComparatorX_
 Helper class needed to sort the input sampling points. More...
 

Namespaces

 Opm
 

Detailed Description

Class implementing cubic splines.

This class supports full, natural, periodic and monotonic cubic splines.

Full a splines $s(x)$ are splines which, given $n$ sampling points $x_1, \dots, x_n$, fulfill the following conditions

\begin{align*} s(x_i) & = y_i \quad \forall i \in \{1, \dots, n \} \\ s'(x_1) & = m_1 \\ s'(x_n) & = m_n \end{align*}

for any given boundary slopes $m_1$ and $m_n$.

Natural splines which are defined by

\begin{align*} s(x_i) & = y_i \quad \forall i \in \{1, \dots, n \} \\ s''(x_1) & = 0 \\ s''(x_n) & = 0 *\end{align*}

For periodic splines of splines the slopes at the boundaries are identical:

\begin{align*} s(x_i) & = y_i \quad \forall i \in \{1, \dots, n \} \\ s'(x_1) & = s'(x_n) \\ s''(x_1) & = s''(x_n) \;. *\end{align*}

Finally, there are monotonic splines which guarantee that the curve is confined by its sampling points, i.e.,

\[ y_i \leq s(x) \leq y_{i+1} \quad \text{for} x_i \leq x \leq x_{i+1} \;. \]

For more information on monotonic splines, see http://en.wikipedia.org/wiki/Monotone_cubic_interpolation

Full, natural and periodic splines are continuous in their first and second derivatives, i.e.,

\[ s \in \mathcal{C}^2 \]

holds for such splines. Monotonic splines are only continuous up to their first derivative, i.e., for these only

\[ s \in \mathcal{C}^1 \]

is true.