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)
bool supportsCloning() const
RCP< ParameterList > unsetParameterList()
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
std::string description() const
RCP< InterpolatorBase< Scalar > > cloneInterpolator() const
Concrete implemenation of InterpolatorBase that implements cubic spline interpolation.
void setParameterList(RCP< ParameterList > const ¶mList)
RCP< const Teuchos::ParameterList > getValidParameters() const
RCP< ParameterList > getNonconstParameterList()
void interpolate(const Array< Scalar > &t_values, typename DataStore< Scalar >::DataStoreVector_t *data_out) const