12 #ifndef ECL_GEOMETRY_TENSION_SPLINE_HPP_
13 #define ECL_GEOMETRY_TENSION_SPLINE_HPP_
41 namespace blueprints {
43 class C2TensionSpline;
59 class ECL_PUBLIC BluePrintFactory< TensionSpline > {
74 static blueprints::C2TensionSpline Natural(
const Array<double>& x_set,
const Array<double>& y_set,
77 virtual ~BluePrintFactory() {};
100 typedef BluePrintFactory< TensionSpline > Factory;
112 virtual ~TensionSpline() {};
139 template<
typename Derived>
140 TensionSpline(
const BluePrint< Derived > &blueprint) {
141 blueprint.implementApply(*
this);
147 friend class blueprints::C2TensionSpline;
158 double operator()(
const double &x)
const;
169 double derivative(
const double &x)
const;
178 double dderivative(
const double &x)
const;
187 const Array<double>& domain()
const {
return discretised_domain; }
204 template <
typename OutputStream>
221 template <
typename OutputStream>
226 for (
unsigned int i = 0; i < tension_spline.
functions.size(); ++i ) {
227 ostream << tension_spline.
functions[i] <<
"\n";
237 namespace blueprints {
263 C2TensionSpline() {};
264 ~C2TensionSpline() {};
288 base_type instantiate();
297 void apply(base_type& spline)
const;