Sacado_PCE_HermiteBasis.hpp

Go to the documentation of this file.
00001 // $Id: Sacado_PCE_HermiteBasis.hpp,v 1.2 2008/01/22 17:56:14 etphipp Exp $ 
00002 // $Source: /space/CVS/Trilinos/packages/sacado/src/pce/Sacado_PCE_HermiteBasis.hpp,v $ 
00003 // @HEADER
00004 // ***********************************************************************
00005 // 
00006 //                           Sacado Package
00007 //                 Copyright (2006) Sandia Corporation
00008 // 
00009 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00010 // license for use of this work by or on behalf of the U.S. Government.
00011 // 
00012 // This library is free software; you can redistribute it and/or modify
00013 // it under the terms of the GNU Lesser General Public License as
00014 // published by the Free Software Foundation; either version 2.1 of the
00015 // License, or (at your option) any later version.
00016 //  
00017 // This library is distributed in the hope that it will be useful, but
00018 // WITHOUT ANY WARRANTY; without even the implied warranty of
00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020 // Lesser General Public License for more details.
00021 //  
00022 // You should have received a copy of the GNU Lesser General Public
00023 // License along with this library; if not, write to the Free Software
00024 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00025 // USA
00026 // Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
00027 // (etphipp@sandia.gov).
00028 // 
00029 // ***********************************************************************
00030 // @HEADER
00031 
00032 #ifndef SACADO_PCE_HERMITEBASIS_HPP
00033 #define SACADO_PCE_HERMITEBASIS_HPP
00034 
00035 #include <vector>
00036 #include <ostream>
00037 #include "Sacado_PCE_StandardPoly.hpp"
00038 
00039 namespace Sacado {
00040 
00041   namespace PCE {
00042 
00043     template <typename T>
00044     class HermiteBasis {
00045     public:
00046 
00048       typedef T value_type;
00049 
00051       HermiteBasis(unsigned int degree);
00052       
00054       HermiteBasis(const HermiteBasis& b);
00055 
00057       ~HermiteBasis();
00058 
00060       HermiteBasis& operator=(const HermiteBasis& b);
00061 
00063       unsigned int size() const;
00064 
00066       const std::vector<T>& norm_squared() const;
00067 
00069       T derivCoeff(unsigned int i) const;
00070 
00072       void project(const StandardPoly<T>& poly, std::vector<T>& coeffs) const;
00073 
00075       StandardPoly<T> toStandardBasis(const T coeffs[], unsigned int n) const;
00076 
00078       const StandardPoly<T>& getBasisPoly(unsigned int i) const;
00079 
00080       void print(std::ostream& os) const;
00081 
00082     protected:
00083 
00085       unsigned int d;
00086 
00088       std::vector< StandardPoly<T> > basis;
00089 
00091       std::vector<T> norms;
00092 
00093     }; // class HermiteBasis
00094 
00095     template <typename T> 
00096     std::ostream& operator << (std::ostream& os, const HermiteBasis<T>& b) {
00097       b.print(os);
00098       return os;
00099     }
00100 
00101   } // Namespace PCE
00102 
00103 } // Namespace Sacado
00104 
00105 // Include template definitions
00106 #include "Sacado_PCE_HermiteBasisImp.hpp"
00107 
00108 #endif

Generated on Wed May 12 21:59:04 2010 for Sacado Package Browser (Single Doxygen Collection) by  doxygen 1.4.7