Rythmos - Transient Integration for Differential Equations  Version of the Day
 All Classes Functions Variables Typedefs Pages
Rythmos_LinearInterpolator_decl.hpp
1 //@HEADER
2 // ***********************************************************************
3 //
4 // Rythmos Package
5 // Copyright (2006) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // This library is free software; you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as
12 // published by the Free Software Foundation; either version 2.1 of the
13 // License, or (at your option) any later version.
14 //
15 // This library is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23 // USA
24 // Questions? Contact Todd S. Coffey (tscoffe@sandia.gov)
25 //
26 // ***********************************************************************
27 //@HEADER
28 
29 #ifndef Rythmos_LINEAR_INTERPOLATOR_DECL_H
30 #define Rythmos_LINEAR_INTERPOLATOR_DECL_H
31 
32 #include "Rythmos_InterpolatorBase.hpp"
33 #include "Rythmos_Types.hpp"
34 
35 namespace Rythmos {
36 
37 
41 template<class Scalar>
42 class LinearInterpolator : virtual public InterpolatorBase<Scalar>
43 {
44 public:
45 
48 
51 
53  bool supportsCloning() const;
54 
56  RCP<InterpolatorBase<Scalar> > cloneInterpolator() const;
57 
59  void setNodes(
60  const RCP<const typename DataStore<Scalar>::DataStoreVector_t> & nodes
61  );
62 
64  void interpolate(
65  const Array<Scalar> &t_values,
66  typename DataStore<Scalar>::DataStoreVector_t *data_out
67  ) const;
68 
70  int order() const;
71 
73  std::string description() const;
74 
76  void describe(
77  FancyOStream &out,
78  const Teuchos::EVerbosityLevel verbLevel
79  ) const;
80 
82  void setParameterList(RCP<ParameterList> const& paramList);
83 
85  RCP<ParameterList> getNonconstParameterList();
86 
88  RCP<ParameterList> unsetParameterList();
89 
91  RCP<const Teuchos::ParameterList> getValidParameters() const;
92 
93 private:
94 
95  RCP<const typename DataStore<Scalar>::DataStoreVector_t> nodes_;
96 
97  RCP<ParameterList> parameterList_;
98 
99 };
100 
101 // non-member constructor
102 template<class Scalar>
103 RCP<LinearInterpolator<Scalar> > linearInterpolator();
104 
105 
106 } // namespace Rythmos
107 
108 
109 #endif // Rythmos_LINEAR_INTERPOLATOR_DECL_H
void setParameterList(RCP< ParameterList > const &paramList)
Base strategy class for interpolation functionality.
RCP< const Teuchos::ParameterList > getValidParameters() const
RCP< InterpolatorBase< Scalar > > cloneInterpolator() const
Concrete implemenation of InterpolatorBase just just does simple linear interploation.
void interpolate(const Array< Scalar > &t_values, typename DataStore< Scalar >::DataStoreVector_t *data_out) const
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
void setNodes(const RCP< const typename DataStore< Scalar >::DataStoreVector_t > &nodes)