12 #ifndef ECL_GEOMETRY_TENSION_FUNCTION_HPP_ 13 #define ECL_GEOMETRY_TENSION_FUNCTION_HPP_ 38 class TensionFunction;
40 namespace blueprints {
42 class TensionSecondDerivativeInterpolation;
78 const double x_f,
const double y_f,
const double yddot_f);
145 template<
typename Derived>
163 double derivative(
const double &tau,
const double &x)
const;
175 double dderivative(
const double &tau,
const double &x)
const;
190 double operator ()(
const double &tau,
const double &x)
const;
198 template <
typename OutputStream>
222 template <
typename OutputStream>
229 double h =
function.x_f -
function.x_0;
230 if ( (
function.z_0 == 0.0 ) && (
function.z_f == 0.0 ) ) {
234 if (
function.z_0 != 0.0 ) {
235 ostream << format(
function.z_0) <<
"*sinh[tau(";
236 ostream << format(
function.x_f) <<
"-x)] + ";
238 if (
function.z_f != 0.0 ) {
239 ostream << format(
function.z_f) <<
"*sinh[tau(x-";
240 ostream << format(
function.x_0) <<
")]}/[tau^2 sinh(";
241 ostream << format(
function.x_f -
function.x_0) <<
"*tau)]";
246 ostream << format(
function.y_0/h) <<
"-";
247 ostream << format(
function.z_0/h) <<
"/tau^2)(";
248 ostream << format(
function.x_f) <<
"-x)\n";
250 ostream << format(
function.y_f/h) <<
"-";
251 ostream << format(
function.z_f/h) <<
"/tau^2)(x-";
252 ostream << format(
function.x_0) <<
")\n";
262 namespace blueprints {
303 const double x_f,
const double y_f,
const double yddot_f) :
306 yddot_initial(yddot_i),
329 void apply(base_type&
function)
const;
virtual ~TensionFunction()
OutputStream & operator<<(OutputStream &ostream, const Array< ElementType, ArraySize > &array)
Embedded control libraries.
virtual ~TensionSecondDerivativeInterpolation()
void implementApply(BaseType &object) const
TensionSecondDerivativeInterpolation(const double x_i, const double y_i, const double yddot_i, const double x_f, const double y_f, const double yddot_f)
Constructor that properly configures/initialises the blueprint.
ecl::TensionFunction base_type
Abstract representation of the class to be instantiated/configured.
Representation of a tension function.
TensionFunction()
Default constructor.
#define ecl_compile_time_concept_check(Model)
Functors for evaluating various mathematical properties of functions.
Blueprint for interpolating a tension function between end point conditions.
virtual ~BluePrintFactory()
TensionFunction(const BluePrint< Derived > &blueprint)
Blueprint constructor.