29 #ifndef Rythmos_DATA_STORE_DECL_H 30 #define Rythmos_DATA_STORE_DECL_H 32 #include "Rythmos_Types.hpp" 33 #include "Thyra_VectorBase.hpp" 34 #include "Teuchos_Describable.hpp" 38 template<
class Scalar>
39 class DataStore :
virtual public Teuchos::Describable
44 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
54 DataStore(Scalar& time_
55 ,
const Teuchos::RCP<
const Thyra::VectorBase<Scalar> >& x_
56 ,
const Teuchos::RCP<
const Thyra::VectorBase<Scalar> >& xdot_
57 ,ScalarMag& accuracy_);
61 DataStore(
const DataStore<Scalar>& ds_in);
65 RCP<DataStore<Scalar> > clone()
const;
71 Teuchos::RCP<const Thyra::VectorBase<Scalar> > x;
74 Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot;
80 bool operator< (const DataStore<Scalar>& ds)
const;
83 bool operator<= (const DataStore<Scalar>& ds)
const;
86 bool operator< (
const Scalar& t)
const;
89 bool operator<= (
const Scalar& t)
const;
92 bool operator> (
const DataStore<Scalar>& ds)
const;
95 bool operator>= (
const DataStore<Scalar>& ds)
const;
98 bool operator> (
const Scalar& t)
const;
101 bool operator>= (
const Scalar& t)
const;
104 bool operator== (
const DataStore<Scalar>& ds)
const;
107 bool operator== (
const Scalar& t)
const;
110 typedef Array<DataStore<Scalar> > DataStoreVector_t;
113 typedef Array<const DataStore<Scalar> > constDataStoreVector_t;
116 typedef std::list<DataStore<Scalar> > DataStoreList_t;
119 typedef std::list<const DataStore<Scalar> > constDataStoreList_t;
123 std::string description()
const;
128 Teuchos::FancyOStream &out
129 ,
const Teuchos::EVerbosityLevel verbLevel
135 template<
class Scalar>
136 void dataStoreVectorToVector(
137 const typename DataStore<Scalar>::DataStoreVector_t &ds
138 ,Array<Scalar> *time_vec
139 ,Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > *x_vec
140 ,Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > *xdot_vec
141 ,Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> *accuracy_vec);
144 template<
class Scalar>
145 void vectorToDataStoreVector(
146 const Array<Scalar> &time_vec
147 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
148 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
149 ,
const Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> &accuracy_vec
150 ,
typename DataStore<Scalar>::DataStoreVector_t *ds);
153 template<
class Scalar>
154 void vectorToDataStoreList(
155 const Array<Scalar> &time_vec
156 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
157 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
158 ,
const Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> &accuracy_vec
159 ,
typename DataStore<Scalar>::DataStoreList_t *ds);
161 template<
class Scalar>
162 void vectorToDataStoreList(
163 const Array<Scalar> &time_vec
164 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
165 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
166 ,
typename DataStore<Scalar>::DataStoreList_t *ds);
170 #endif // Rythmos_DATA_STORE_DECL_H