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"
40class DataStore :
virtual public Teuchos::Describable
45 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
55 DataStore(Scalar& time_
56 ,
const Teuchos::RCP<
const Thyra::VectorBase<Scalar> >& x_
57 ,
const Teuchos::RCP<
const Thyra::VectorBase<Scalar> >& xdot_
58 ,ScalarMag& accuracy_);
62 DataStore(
const DataStore<Scalar>& ds_in);
66 RCP<DataStore<Scalar> > clone()
const;
72 Teuchos::RCP<const Thyra::VectorBase<Scalar> > x;
75 Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot;
81 bool operator< (
const DataStore<Scalar>& ds)
const;
84 bool operator<= (
const DataStore<Scalar>& ds)
const;
87 bool operator< (
const Scalar& t)
const;
90 bool operator<= (
const Scalar& t)
const;
93 bool operator> (
const DataStore<Scalar>& ds)
const;
96 bool operator>= (
const DataStore<Scalar>& ds)
const;
99 bool operator> (
const Scalar& t)
const;
102 bool operator>= (
const Scalar& t)
const;
105 bool operator== (
const DataStore<Scalar>& ds)
const;
108 bool operator== (
const Scalar& t)
const;
111 typedef Array<DataStore<Scalar> > DataStoreVector_t;
114 typedef Array<const DataStore<Scalar> > constDataStoreVector_t;
117 typedef std::list<DataStore<Scalar> > DataStoreList_t;
120 typedef std::list<const DataStore<Scalar> > constDataStoreList_t;
124 std::string description()
const;
129 Teuchos::FancyOStream &out
130 ,
const Teuchos::EVerbosityLevel verbLevel
136template<
class Scalar>
137void dataStoreVectorToVector(
138 const typename DataStore<Scalar>::DataStoreVector_t &ds
139 ,Array<Scalar> *time_vec
140 ,Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > *x_vec
141 ,Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > *xdot_vec
142 ,Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> *accuracy_vec);
145template<
class Scalar>
146void vectorToDataStoreVector(
147 const Array<Scalar> &time_vec
148 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
149 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
150 ,
const Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> &accuracy_vec
151 ,
typename DataStore<Scalar>::DataStoreVector_t *ds);
154template<
class Scalar>
155void vectorToDataStoreList(
156 const Array<Scalar> &time_vec
157 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
158 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
159 ,
const Array<
typename Teuchos::ScalarTraits<Scalar>::magnitudeType> &accuracy_vec
160 ,
typename DataStore<Scalar>::DataStoreList_t *ds);
162template<
class Scalar>
163void vectorToDataStoreList(
164 const Array<Scalar> &time_vec
165 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &x_vec
166 ,
const Array<Teuchos::RCP<
const Thyra::VectorBase<Scalar> > > &xdot_vec
167 ,
typename DataStore<Scalar>::DataStoreList_t *ds);