Jpp
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t > Class Template Referenceabstract

Template base class spline interpolations. More...

#include <JHermiteSpline.hh>

Inheritance diagram for JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >:
JTOOLS::JFunctional<> JTOOLS::JHermiteSplineFunction< JElement_t, JCollection_t, JResultDerivative< typename JResultType< typename JElement_t::ordinate_type >::result_type >, JDistance_t > JTOOLS::JHermiteSplineFunction< JElement_t, JCollection_t, JResultPDF< typename JResultType< typename JElement_t::ordinate_type >::result_type >, JDistance_t > JTOOLS::JHermiteSplineFunction< JElement_t, JCollection_t, typename JResultType< typename JElement_t::ordinate_type >::result_type, JDistance_t >

Public Types

typedef JCollection_t< JElement_t, JDistance_t > collection_type
 
typedef collection_type::abscissa_type abscissa_type
 
typedef collection_type::ordinate_type ordinate_type
 
typedef collection_type::value_type value_type
 
typedef collection_type::distance_type distance_type
 
typedef collection_type::const_iterator const_iterator
 
typedef collection_type::const_reverse_iterator const_reverse_iterator
 
typedef collection_type::iterator iterator
 
typedef collection_type::reverse_iterator reverse_iterator
 
typedef JArgument_t argument_type
 
typedef JResult_t result_type
 
typedef JFunctional< argument_type, result_typefunctional_type
 
typedef JSupervisor supervisor_type
 

Public Member Functions

void compile (const bool monotone)
 Determination of derivatives. More...
 
virtual result_type evaluate (const argument_type *pX) const=0
 Recursive function value evaluation. More...
 
JSupervisor getSupervisor () const
 Get supervisor. More...
 
const JExceptionHandler & getExceptionHandler () const
 Get exception handler. More...
 
void setExceptionHandler (const JSupervisor &supervisor)
 Set the supervisor for handling of exceptions. More...
 

Static Public Member Functions

static result_type getValue (const JFunctional &function, const argument_type *pX)
 Recursive function value evaluation. More...
 
static JClass< result_type >::argument_type getValue (typename JClass< result_type >::argument_type value, const argument_type *pX)
 Termination of recursive function value evaluation. More...
 

Protected Member Functions

 JHermiteSplineCollection ()
 Default constructor. More...
 
virtual void do_compile ()
 Determination of derivatives. More...
 

Static Protected Member Functions

static abscissa_type h00 (abscissa_type t)
 
static abscissa_type h10 (abscissa_type t)
 
static abscissa_type h01 (abscissa_type t)
 
static abscissa_type h11 (abscissa_type t)
 
static abscissa_type h00p (abscissa_type t)
 
static abscissa_type h10p (abscissa_type t)
 
static abscissa_type h01p (abscissa_type t)
 
static abscissa_type h11p (abscissa_type t)
 
static abscissa_type H00 (abscissa_type t)
 
static abscissa_type H10 (abscissa_type t)
 
static abscissa_type H01 (abscissa_type t)
 
static abscissa_type H11 (abscissa_type t)
 

Protected Attributes

JSupervisor supervisor
 

Detailed Description

template<class JElement_t, template< class, class > class JCollection_t, class JDistance_t>
class JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >

Template base class spline interpolations.

This class implements the JFunctional interface.

Note that the data structure of the elements in the collection should have the additional methods:

    ordinate_type getU() const;
    void setU(ordinate_type u);

to get and set the derivatives, respectively.

Note that -by default- the compilation is for a monotonous interpolation.

Definition at line 46 of file JHermiteSpline.hh.

Member Typedef Documentation

◆ collection_type

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef JCollection_t<JElement_t, JDistance_t> JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::collection_type

Definition at line 52 of file JHermiteSpline.hh.

◆ abscissa_type

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::abscissa_type

Definition at line 54 of file JHermiteSpline.hh.

◆ ordinate_type

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::ordinate_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::ordinate_type

Definition at line 55 of file JHermiteSpline.hh.

◆ value_type

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::value_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::value_type

Definition at line 56 of file JHermiteSpline.hh.

◆ distance_type

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::distance_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::distance_type

Definition at line 57 of file JHermiteSpline.hh.

◆ const_iterator

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::const_iterator JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::const_iterator

Definition at line 59 of file JHermiteSpline.hh.

◆ const_reverse_iterator

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::const_reverse_iterator JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::const_reverse_iterator

Definition at line 60 of file JHermiteSpline.hh.

◆ iterator

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::iterator JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::iterator

Definition at line 61 of file JHermiteSpline.hh.

◆ reverse_iterator

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
typedef collection_type::reverse_iterator JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::reverse_iterator

Definition at line 62 of file JHermiteSpline.hh.

◆ argument_type

typedef JArgument_t JTOOLS::JFunctional< JArgument_t, JResult_t >::argument_type
inherited

Definition at line 84 of file JFunctional.hh.

◆ result_type

typedef JResult_t JTOOLS::JFunctional< JArgument_t, JResult_t >::result_type
inherited

Definition at line 87 of file JFunctional.hh.

◆ functional_type

typedef JFunctional<argument_type, result_type> JTOOLS::JFunctional< JArgument_t, JResult_t >::functional_type
inherited

Definition at line 88 of file JFunctional.hh.

◆ supervisor_type

typedef JSupervisor JTOOLS::JFunctional< JArgument_t, JResult_t >::supervisor_type
inherited

Definition at line 89 of file JFunctional.hh.

Constructor & Destructor Documentation

◆ JHermiteSplineCollection()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::JHermiteSplineCollection ( )
inlineprotected

Default constructor.

Definition at line 142 of file JHermiteSpline.hh.

143  {}

Member Function Documentation

◆ compile()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
void JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::compile ( const bool  monotone)
inline

Determination of derivatives.

Parameters
monotonemonotone

Definition at line 72 of file JHermiteSpline.hh.

73  {
74  using namespace std;
75 
76  if (this->size() >= 2u) {
77 
78  {
79  iterator j = this->begin(), i = j++;
80 
81  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
82  }
83 
84  {
85  reverse_iterator j = this->rbegin(), i = j++;
86 
87  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
88  }
89 
90  for (iterator k = this->begin(), i = k++, j = k++; k != this->end(); ++i, ++j, ++k) {
91  j->setU(0.5 * ((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()) +
92  (k->getY() - j->getY()) / this->getDistance(j->getX(), k->getX())));
93  }
94 
95  if (monotone) {
96 
97  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
98  if (i->getY() == j->getY()) {
99  j->setU(JMATH::zero);
100  }
101  }
102 
103  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
104 
105  const ordinate_type u = (j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX());
106  const ordinate_type w = (i->getU()*i->getU() + j->getU()*j->getU());
107 
108  if (w > 9.0*u*u) {
109 
110  const ordinate_type v = 3.0*u/sqrt(w);
111 
112  i->setU(v*i->getU());
113  j->setU(v*j->getU());
114  }
115  }
116  }
117  }
118  }

◆ h00()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h00 ( abscissa_type  t)
inlinestaticprotected

Definition at line 123 of file JHermiteSpline.hh.

123 { return (1.0 + 2*t) * (1.0 - t) * (1.0 - t); }

◆ h10()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h10 ( abscissa_type  t)
inlinestaticprotected

Definition at line 124 of file JHermiteSpline.hh.

124 { return t * (1.0 - t) * (1.0 - t); }

◆ h01()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h01 ( abscissa_type  t)
inlinestaticprotected

Definition at line 125 of file JHermiteSpline.hh.

125 { return t * t * (3.0 - 2*t); }

◆ h11()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h11 ( abscissa_type  t)
inlinestaticprotected

Definition at line 126 of file JHermiteSpline.hh.

126 { return t * t * (t - 1.0); }

◆ h00p()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h00p ( abscissa_type  t)
inlinestaticprotected

Definition at line 128 of file JHermiteSpline.hh.

128 { return 6 * t * (t - 1.0); }

◆ h10p()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h10p ( abscissa_type  t)
inlinestaticprotected

Definition at line 129 of file JHermiteSpline.hh.

129 { return t * (3*t - 4.0) + 1.0; }

◆ h01p()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h01p ( abscissa_type  t)
inlinestaticprotected

Definition at line 130 of file JHermiteSpline.hh.

130 { return 6 * t * (1.0 -t); }

◆ h11p()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::h11p ( abscissa_type  t)
inlinestaticprotected

Definition at line 131 of file JHermiteSpline.hh.

131 { return t * (3*t - 2.0); }

◆ H00()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::H00 ( abscissa_type  t)
inlinestaticprotected

Definition at line 133 of file JHermiteSpline.hh.

133 { return t * (t * t * (0.5*t - 1.0) + 1.0); }

◆ H10()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::H10 ( abscissa_type  t)
inlinestaticprotected

Definition at line 134 of file JHermiteSpline.hh.

134 { return t * t * (t * (0.25*t - 2.0/3.0) + 0.5); }

◆ H01()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::H01 ( abscissa_type  t)
inlinestaticprotected

Definition at line 135 of file JHermiteSpline.hh.

135 { return t * t * t * (1.0 - 0.5*t); }

◆ H11()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
static abscissa_type JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::H11 ( abscissa_type  t)
inlinestaticprotected

Definition at line 136 of file JHermiteSpline.hh.

136 { return t * t * t * (0.25*t - 1.0/3.0); }

◆ do_compile()

template<class JElement_t , template< class, class > class JCollection_t, class JDistance_t >
virtual void JTOOLS::JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t >::do_compile ( )
inlineprotectedvirtual

◆ evaluate()

virtual result_type JTOOLS::JFunctional< JArgument_t, JResult_t >::evaluate ( const argument_type pX) const
pure virtualinherited

◆ getValue() [1/2]

static result_type JTOOLS::JFunctional< JArgument_t, JResult_t >::getValue ( const JFunctional<> &  function,
const argument_type pX 
)
inlinestaticinherited

Recursive function value evaluation.

Parameters
functionfunction
pXpointer to abscissa values

Definition at line 107 of file JFunctional.hh.

109  {
110  return function.evaluate(pX);
111  }

◆ getValue() [2/2]

static JClass<result_type>::argument_type JTOOLS::JFunctional< JArgument_t, JResult_t >::getValue ( typename JClass< result_type >::argument_type  value,
const argument_type pX 
)
inlinestaticinherited

Termination of recursive function value evaluation.

Parameters
valueresult
pXpointer to abscissa values

Definition at line 121 of file JFunctional.hh.

123  {
124  return value;
125  }

◆ getSupervisor()

JSupervisor JTOOLS::JFunctional< JArgument_t, JResult_t >::getSupervisor ( ) const
inlineinherited

Get supervisor.

Returns
supervisor

Definition at line 266 of file JFunctional.hh.

267  {
268  return supervisor;
269  }

◆ getExceptionHandler()

const JExceptionHandler& JTOOLS::JFunctional< JArgument_t, JResult_t >::getExceptionHandler ( ) const
inlineinherited

Get exception handler.

Returns
exception handler

Definition at line 277 of file JFunctional.hh.

278  {
279  return *supervisor;
280  }

◆ setExceptionHandler()

void JTOOLS::JFunctional< JArgument_t, JResult_t >::setExceptionHandler ( const JSupervisor &  supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 288 of file JFunctional.hh.

289  {
290  this->supervisor = supervisor;
291  }

Member Data Documentation

◆ supervisor

JSupervisor JTOOLS::JFunctional< JArgument_t, JResult_t >::supervisor
protectedinherited

Definition at line 295 of file JFunctional.hh.


The documentation for this class was generated from the following file:
JTOOLS::JFunctional<>::supervisor
JSupervisor supervisor
Definition: JFunctional.hh:295
std::iterator
Definition: JSTDTypes.hh:18
JTOOLS::pX
pX
Definition: JPolint.hh:625
JTOOLS::w
data_type w[N+1][M+1]
Definition: JPolint.hh:708
JTOOLS::JHermiteSplineCollection::compile
void compile(const bool monotone)
Determination of derivatives.
Definition: JHermiteSpline.hh:72
JTOOLS::u
double u[N+1]
Definition: JPolint.hh:706
JTOOLS::JHermiteSplineCollection::reverse_iterator
collection_type::reverse_iterator reverse_iterator
Definition: JHermiteSpline.hh:62
JTOOLS::j
int j
Definition: JPolint.hh:634
JTOOLS::JHermiteSplineCollection::ordinate_type
collection_type::ordinate_type ordinate_type
Definition: JHermiteSpline.hh:55
JMATH::getDistance
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
Definition: JMathToolkit.hh:116
JTOOLS::v
data_type v[N+1][M+1]
Definition: JPolint.hh:707
std
Definition: jaanetDictionary.h:36
JMATH::zero
static const JZero zero
Function object to assign zero value.
Definition: JZero.hh:94