29#ifndef Rythmos_CUBIC_SPLINE_INTERPOLATOR_DECL_H
30#define Rythmos_CUBIC_SPLINE_INTERPOLATOR_DECL_H
32#include "Rythmos_InterpolatorBase.hpp"
33#include "Rythmos_Types.hpp"
41class CubicSplineCoeff {
44 Array<RCP<Thyra::VectorBase<Scalar> > > a;
45 Array<RCP<Thyra::VectorBase<Scalar> > > b;
46 Array<RCP<Thyra::VectorBase<Scalar> > > c;
47 Array<RCP<Thyra::VectorBase<Scalar> > > d;
73 const RCP<
const typename DataStore<Scalar>::DataStoreVector_t> & nodes
78 const Array<Scalar> &t_values,
79 typename DataStore<Scalar>::DataStoreVector_t *data_out
91 const Teuchos::EVerbosityLevel verbLevel
109 RCP<const typename DataStore<Scalar>::DataStoreVector_t> nodes_;
110#ifdef HAVE_RYTHMOS_DEBUG
111 RCP<typename DataStore<Scalar>::DataStoreVector_t> nodes_copy_;
114 mutable CubicSplineCoeff<Scalar> splineCoeff_;
115 mutable bool splineCoeffComputed_;
118 RCP<ParameterList> parameterList_;
123template<
class Scalar>
124RCP<CubicSplineInterpolator<Scalar> > cubicSplineInterpolator();
132template<
class Scalar>
133void computeCubicSplineCoeff(
134 const typename DataStore<Scalar>::DataStoreVector_t & data,
135 const Ptr<CubicSplineCoeff<Scalar> > & coeffPtr
138template<
class Scalar>
139void validateCubicSplineCoeff(
const CubicSplineCoeff<Scalar>& coeff);
143template<
class Scalar>
144void evaluateCubicSpline(
145 const CubicSplineCoeff<Scalar>& coeff,
148 const Ptr<Thyra::VectorBase<Scalar> >& S,
149 const Ptr<Thyra::VectorBase<Scalar> >& Sp = Teuchos::null,
150 const Ptr<Thyra::VectorBase<Scalar> >& Spp = Teuchos::null
Concrete implemenation of InterpolatorBase that implements cubic spline interpolation.
bool supportsCloning() const
void setParameterList(RCP< ParameterList > const ¶mList)
void interpolate(const Array< Scalar > &t_values, typename DataStore< Scalar >::DataStoreVector_t *data_out) const
RCP< InterpolatorBase< Scalar > > cloneInterpolator() const
~CubicSplineInterpolator()
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
std::string description() const
RCP< const Teuchos::ParameterList > getValidParameters() const
void setNodes(const RCP< const typename DataStore< Scalar >::DataStoreVector_t > &nodes)
RCP< ParameterList > getNonconstParameterList()
CubicSplineInterpolator()
RCP< ParameterList > unsetParameterList()
Base strategy class for interpolation functionality.