Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Tempus_InterpolatorLagrange_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// ****************************************************************************
3// Tempus: Copyright (2017) Sandia Corporation
4//
5// Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6// ****************************************************************************
7// @HEADER
8
9#ifndef Tempus_InterpolatorLagrange_decl_hpp
10#define Tempus_InterpolatorLagrange_decl_hpp
11
12#include "Tempus_config.hpp"
14
15namespace Tempus {
16
20template<class Scalar>
21class InterpolatorLagrange : virtual public Interpolator<Scalar>
22{
23public:
24
27
30
32
33
36 const Teuchos::RCP<const std::vector<Teuchos::RCP<SolutionState<Scalar> > > > & nodes) { nodes_ = nodes; }
37
39 void interpolate(const Scalar& t, SolutionState<Scalar>* state_out) const;
40
42 int order() const { return order_; }
43
45
47
48 std::string description() const { return "Tempus::InterpolatorLagrange"; }
49 void describe(Teuchos::FancyOStream &out,
50 const Teuchos::EVerbosityLevel /* verbLevel */) const
51 {
52 out.setOutputToRootOnly(0);
53 out << description() << "::describe" << std::endl;
54 }
56
58
59 void setParameterList(const Teuchos::RCP<Teuchos::ParameterList>& paramList);
60 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
61 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
62 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
64
65private:
66
67 void lagrange(const int p, const Scalar& t,
68 SolutionState<Scalar>* state_out) const;
69
70 Teuchos::RCP<const std::vector<Teuchos::RCP<SolutionState<Scalar> > > > nodes_;
71 Teuchos::RCP<Teuchos::ParameterList> pl_;
72 int order_;
73
74};
75
76// Nonmember constructor
77template<class Scalar>
78Teuchos::RCP<InterpolatorLagrange<Scalar> > lagrangeInterpolator()
79{
80 return Teuchos::rcp(new InterpolatorLagrange<Scalar>);
81}
82
83} // namespace Tempus
84
85#endif // Tempus_InterpolatorLagrange_decl_hpp
Concrete implemenation of Interpolator that does simple lagrange interpolation.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel) const
int order() const
Return the order of the interpolation.
Teuchos::RCP< Teuchos::ParameterList > pl_
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
Teuchos::RCP< const std::vector< Teuchos::RCP< SolutionState< Scalar > > > > nodes_
void setNodes(const Teuchos::RCP< const std::vector< Teuchos::RCP< SolutionState< Scalar > > > > &nodes)
Store pointer to interpolation nodes.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &paramList)
void lagrange(const int p, const Scalar &t, SolutionState< Scalar > *state_out) const
void interpolate(const Scalar &t, SolutionState< Scalar > *state_out) const
Perform an interpolation.
Base strategy class for interpolation functionality.
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
Teuchos::RCP< InterpolatorLagrange< Scalar > > lagrangeInterpolator()