Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_PolynomialDecl.hpp
1// @HEADER
2// ***********************************************************************
3//
4// Teuchos: Common Tools Package
5// Copyright (2004) 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// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ***********************************************************************
40// @HEADER
41
42#ifndef TEUCHOS_POLYNOMIAL_DECL_HPP
43#define TEUCHOS_POLYNOMIAL_DECL_HPP
44
45#include "Teuchos_Describable.hpp"
46#include "Teuchos_RCP.hpp"
47#include "Teuchos_PolynomialTraits.hpp"
48
49namespace Teuchos {
50
52
68 template <typename CoeffT>
69 class Polynomial : virtual public Teuchos::Describable {
70 public:
71
74
77
79
85 Polynomial(unsigned int deg, const CoeffT& cloneCoeff,
86 unsigned int reserve = 0);
87
89
96 Polynomial(unsigned int deg, unsigned int reserve = 0);
97
100
102 unsigned int degree() const { return d; }
103
105 void setDegree(unsigned int deg);
106
109 getCoefficient(unsigned int i);
110
113 getCoefficient(unsigned int i) const;
114
116 void setCoefficient(unsigned int i, const CoeffT& v);
117
119
125 void setCoefficientPtr(unsigned int i,
127
129
138 CoeffT* x, CoeffT* xdot = NULL) const;
139
140 private:
141
143 Polynomial(const Polynomial&);
144
146 Polynomial& operator=(const Polynomial&);
147
148 protected:
149
151 unsigned int d;
152
154 unsigned int sz;
155
157
160 std::vector< Teuchos::RCP<CoeffT> > coeff;
161
162 }; // class Polynomial
163
164} // end namespace Teuchos
165
166#endif // TEUCHOS_POLYNOMIAL_DECL_HPP
Reference-counted pointer class and non-member templated function implementations.
Base class for all objects that can describe themselves.
Scalar scalar_type
Typename of scalars.
Lightweight container class to represent a simple polynomial.
void setCoefficient(unsigned int i, const CoeffT &v)
Set coefficient i to c.
Teuchos::RCP< CoeffT > getCoefficient(unsigned int i)
Return ref-count pointer to coefficient i.
Teuchos::PolynomialTraits< coeff_type >::scalar_type scalar_type
Typename of scalars.
unsigned int sz
Size of polynomial (may be > d)
unsigned int degree() const
Return degree of polynomial.
CoeffT coeff_type
Typename of coefficients.
void evaluate(typename Teuchos::Polynomial< CoeffT >::scalar_type &t, CoeffT *x, CoeffT *xdot=NULL) const
Evaluate polynomial and possibly its derivative at time t.
void setDegree(unsigned int deg)
Set degree of polynomial to deg.
std::vector< Teuchos::RCP< CoeffT > > coeff
Vector of polynomial coefficients.
unsigned int d
Degree of polynomial.
Polynomial(unsigned int deg, const CoeffT &cloneCoeff, unsigned int reserve=0)
Create a polynomial of degree deg.
void setCoefficientPtr(unsigned int i, const Teuchos::RCP< CoeffT > &c_ptr)
Set pointer for coefficient i to c_ptr. DANGEROUS!
Smart reference counting pointer class for automatic garbage collection.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...