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"
40 template<
class Scalar>
41 class 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;
54 template<
class Scalar>
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_;
112 #endif // HAVE_RYTHMOS_DEBUG
114 mutable CubicSplineCoeff<Scalar> splineCoeff_;
115 mutable bool splineCoeffComputed_;
118 RCP<ParameterList> parameterList_;
123 template<
class Scalar>
124 RCP<CubicSplineInterpolator<Scalar> > cubicSplineInterpolator();
132 template<
class Scalar>
133 void computeCubicSplineCoeff(
134 const typename DataStore<Scalar>::DataStoreVector_t & data,
135 const Ptr<CubicSplineCoeff<Scalar> > & coeffPtr
138 template<
class Scalar>
139 void validateCubicSplineCoeff(
const CubicSplineCoeff<Scalar>& coeff);
143 template<
class Scalar>
144 void 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
157 #endif // Rythmos_CUBIC_SPLINE_INTERPOLATOR_DECL_H
Base strategy class for interpolation functionality.
CubicSplineInterpolator()
~CubicSplineInterpolator()
void setNodes(const RCP< const typename DataStore< Scalar >::DataStoreVector_t > &nodes)
RCP< const Teuchos::ParameterList > getValidParameters() const
RCP< ParameterList > unsetParameterList()
RCP< InterpolatorBase< Scalar > > cloneInterpolator() const
Concrete implemenation of InterpolatorBase that implements cubic spline interpolation.
std::string description() const
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
void setParameterList(RCP< ParameterList > const ¶mList)
void interpolate(const Array< Scalar > &t_values, typename DataStore< Scalar >::DataStoreVector_t *data_out) const
RCP< ParameterList > getNonconstParameterList()
bool supportsCloning() const