Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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, JResultHesse< 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 JNullType argument_type
 
typedef JNullType result_type
 
typedef JFunctional
< argument_type, result_type
functional_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 result_type getValue (typename JClass< result_type >::argument_type y, 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

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.

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.

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.

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.

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.

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.

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.

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.

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.

Definition at line 83 of file JFunctional.hh.

Definition at line 86 of file JFunctional.hh.

Definition at line 87 of file JFunctional.hh.

typedef JSupervisor JTOOLS::JFunctional< JNullType , JNullType >::supervisor_type
inherited

Definition at line 88 of file JFunctional.hh.

Constructor & Destructor Documentation

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 144 of file JHermiteSpline.hh.

145  {}

Member Function Documentation

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  const int numberOfElements = this->size();
75 
76  using namespace std;
77 
78  if (numberOfElements >= 2) {
79 
80  {
81  iterator j = this->begin(), i = j++;
82 
83  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
84  }
85 
86  {
87  reverse_iterator j = this->rbegin(), i = j++;
88 
89  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
90  }
91 
92  for (iterator k = this->begin(), i = k++, j = k++; k != this->end(); ++i, ++j, ++k) {
93  j->setU(0.5 * ((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()) +
94  (k->getY() - j->getY()) / this->getDistance(j->getX(), k->getX())));
95  }
96 
97  if (monotone) {
98 
99  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
100  if (i->getY() == j->getY()) {
101  j->setU(JMATH::zero);
102  }
103  }
104 
105  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
106 
107  const ordinate_type u = (j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX());
108  const ordinate_type w = (i->getU()*i->getU() + j->getU()*j->getU());
109 
110  if (w > 9.0*u*u) {
111 
112  const ordinate_type v = 3.0*u/sqrt(w);
113 
114  i->setU(v*i->getU());
115  j->setU(v*j->getU());
116  }
117  }
118  }
119  }
120  }
static const JZero zero
Function object to assign zero value.
Definition: JZero.hh:94
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
Definition: JMathToolkit.hh:98
collection_type::reverse_iterator reverse_iterator
collection_type::ordinate_type ordinate_type
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 125 of file JHermiteSpline.hh.

125 { return (1.0 + 2*t) * (1.0 - t) * (1.0 - t); }
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 126 of file JHermiteSpline.hh.

126 { return t * (1.0 - t) * (1.0 - t); }
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 127 of file JHermiteSpline.hh.

127 { return t * t * (3.0 - 2*t); }
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 128 of file JHermiteSpline.hh.

128 { return t * t * (t - 1.0); }
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 130 of file JHermiteSpline.hh.

130 { return 6 * t * (t - 1.0); }
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 131 of file JHermiteSpline.hh.

131 { return t * (3*t - 4.0) + 1.0; }
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 132 of file JHermiteSpline.hh.

132 { return 6 * t * (1.0 -t); }
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 133 of file JHermiteSpline.hh.

133 { return t * (3*t - 2.0); }
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 135 of file JHermiteSpline.hh.

135 { return t * (t * t * (0.5*t - 1.0) + 1.0); }
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 136 of file JHermiteSpline.hh.

136 { return t * t * (t * (0.25*t - 2.0/3.0) + 0.5); }
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 137 of file JHermiteSpline.hh.

137 { return t * t * t * (1.0 - 0.5*t); }
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 138 of file JHermiteSpline.hh.

138 { return t * t * t * (0.25*t - 1.0/3.0); }
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

Determination of derivatives.

Reimplemented in JTOOLS::JHermiteSplineFunction< JElement_t, JCollection_t, JResultPDF< typename JResultType< typename JElement_t::ordinate_type >::result_type >, JDistance_t >.

Definition at line 151 of file JHermiteSpline.hh.

152  {
153  compile(true);
154  }
void compile(const bool monotone)
Determination of derivatives.
virtual result_type JTOOLS::JFunctional< JNullType , JNullType >::evaluate ( const argument_type pX) const
pure virtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value
static result_type JTOOLS::JFunctional< JNullType , JNullType >::getValue ( const JFunctional<> &  function,
const argument_type pX 
)
inlinestaticinherited

Recursive function value evaluation.

Parameters
functionfunction
pXpointer to abscissa values

Definition at line 106 of file JFunctional.hh.

108  {
109  return function.evaluate(pX);
110  }
static result_type JTOOLS::JFunctional< JNullType , JNullType >::getValue ( typename JClass< result_type >::argument_type  y,
const argument_type pX 
)
inlinestaticinherited

Termination of recursive function value evaluation.

Parameters
yresult
pXpointer to abscissa values

Definition at line 119 of file JFunctional.hh.

121  {
122  return y;
123  }
JSupervisor JTOOLS::JFunctional< JNullType , JNullType >::getSupervisor ( ) const
inlineinherited

Get supervisor.

Returns
supervisor

Definition at line 264 of file JFunctional.hh.

265  {
266  return supervisor;
267  }
JSupervisor supervisor
Definition: JFunctional.hh:293
const JExceptionHandler& JTOOLS::JFunctional< JNullType , JNullType >::getExceptionHandler ( ) const
inlineinherited

Get exception handler.

Returns
exception handler

Definition at line 275 of file JFunctional.hh.

276  {
277  return *supervisor;
278  }
JSupervisor supervisor
Definition: JFunctional.hh:293
void JTOOLS::JFunctional< JNullType , JNullType >::setExceptionHandler ( const JSupervisor &  supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 286 of file JFunctional.hh.

287  {
288  this->supervisor = supervisor;
289  }
JSupervisor supervisor
Definition: JFunctional.hh:293

Member Data Documentation

JSupervisor JTOOLS::JFunctional< JNullType , JNullType >::supervisor
protectedinherited

Definition at line 293 of file JFunctional.hh.


The documentation for this class was generated from the following file: