00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef Rythmos_INTERPOLATION_BUFFER_H
00030 #define Rythmos_INTERPOLATION_BUFFER_H
00031
00032 #include "Thyra_VectorBase.hpp"
00033 #include "Teuchos_Describable.hpp"
00034
00035 namespace Rythmos {
00036
00038 template<class Scalar>
00039 class InterpolationBuffer : virtual public Teuchos::Describable
00040 {
00041 public:
00042
00043 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
00044
00046 virtual ~InterpolationBuffer() {};
00047
00049 virtual bool SetPoints(
00050 const std::vector<Scalar>& time_list
00051 ,const std::vector<Teuchos::RefCountPtr<Thyra::VectorBase<Scalar> > >& x_list
00052 ,const std::vector<Teuchos::RefCountPtr<Thyra::VectorBase<Scalar> > >& xdot_list) =0;
00053
00055 virtual bool GetPoints(
00056 const std::vector<Scalar>& time_list
00057 ,std::vector<Teuchos::RefCountPtr<Thyra::VectorBase<Scalar> > >* x_list
00058 ,std::vector<Teuchos::RefCountPtr<Thyra::VectorBase<Scalar> > >* xdot_list
00059 ,std::vector<ScalarMag>* accuracy_list) const =0;
00060
00062 virtual bool SetRange(
00063 const Scalar& time_lower
00064 ,const Scalar& time_upper
00065 ,const InterpolationBuffer<Scalar> & IB) =0;
00066
00068 virtual bool GetNodes(std::vector<Scalar>* time_list) const =0;
00069
00071 virtual bool RemoveNodes(std::vector<Scalar>& time_list) const =0;
00072
00074 virtual int GetOrder() const =0;
00075
00076 };
00077
00078 }
00079
00080 #endif //Rythmos_INTERPOLATION_BUFFER_H