Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stokhos_ProductLanczosGramSchmidtPCEBasis.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Stokhos Package
5 // Copyright (2009) 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 Eric T. Phipps (etphipp@sandia.gov).
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef STOKHOS_PRODUCT_LANCZOS_GRAM_SCHMIDT_PCE_BASIS_HPP
43 #define STOKHOS_PRODUCT_LANCZOS_GRAM_SCHMIDT_PCE_BASIS_HPP
44 
45 #include "Teuchos_RCP.hpp"
46 #include "Teuchos_Array.hpp"
50 
53 #include "Stokhos_Quadrature.hpp"
56 
57 namespace Stokhos {
58 
69  template <typename ordinal_type, typename value_type>
71  public ReducedPCEBasis<ordinal_type,value_type> {
72  public:
73 
75 
86 
89 
91 
92 
94  ordinal_type order() const;
95 
97  ordinal_type dimension() const;
98 
100  virtual ordinal_type size() const;
101 
103 
107  virtual const Teuchos::Array<value_type>& norm_squared() const;
108 
110  virtual const value_type& norm_squared(ordinal_type i) const;
111 
113 
119  virtual
122 
124  virtual
127 
129  virtual value_type evaluateZero(ordinal_type i) const;
130 
132 
136  virtual void evaluateBases(
138  Teuchos::Array<value_type>& basis_vals) const;
139 
141  virtual void print(std::ostream& os) const;
142 
144  virtual const std::string& getName() const;
145 
147 
149 
150 
152  virtual void
154  value_type *out,
155  ordinal_type ncol = 1,
156  bool transpose = false) const;
157 
159  virtual void
161  value_type *out,
162  ordinal_type ncol = 1,
163  bool transpose = false) const;
164 
167  getReducedQuadrature() const;
168 
170 
171  protected:
172 
173  // Determine if a pce is linear, in that it has a total degree of at
174  // most 1. If the pce is nonlinear, return -2, or if it is constant,
175  // return -1, otherwise return the index of the variable the pce is
176  // linear in, ie, if return value is i, the pce = a_{i+1}*\xi_i
179 
180  private:
181 
182  // Prohibit copying
184 
185  // Prohibit Assignment
187 
188  protected:
189 
192 
194  std::string name;
195 
198 
201 
204 
207 
210 
213 
216 
219 
222 
225 
228 
229  }; // class ProductLanczosGramSchmidtPCEBasis
230 
231 } // Namespace Stokhos
232 
233 // Include template definitions
235 
236 #endif
virtual void transformToOriginalBasis(const value_type *in, value_type *out, ordinal_type ncol=1, bool transpose=false) const
Transform coefficients to original basis from this basis.
virtual value_type evaluateZero(ordinal_type i) const
Evaluate basis polynomial i at zero.
Teuchos::RCP< const Stokhos::Quadrature< ordinal_type, value_type > > reduced_quad
Reduced quadrature object.
Data structure storing a sparse 3-tensor C(i,j,k) in a a compressed format.
SDM Qp
Coefficients of transformed basis in original basis.
virtual void evaluateBases(const Teuchos::ArrayView< const value_type > &point, Teuchos::Array< value_type > &basis_vals) const
Evaluate basis polynomials at given point point.
virtual Teuchos::RCP< Stokhos::Sparse3Tensor< ordinal_type, value_type > > computeLinearTripleProductTensor() const
Compute linear triple product tensor where k = 0,1,..,d.
ordinal_type dimension() const
Return dimension of basis.
SDM Q
Values of transformed basis at quadrature points.
virtual Teuchos::RCP< Stokhos::Sparse3Tensor< ordinal_type, value_type > > computeTripleProductTensor() const
Compute triple product tensor.
virtual void transformFromOriginalBasis(const value_type *in, value_type *out, ordinal_type ncol=1, bool transpose=false) const
Transform coefficients from original basis to this basis.
virtual ordinal_type size() const
Return total size of basis.
Generate a basis from a given set of PCE expansions that is orthogonal with respect to the product me...
Abstract base class for quadrature methods.
Abstract base class for reduced basis strategies built from polynomial chaos expansions in some other...
virtual void print(std::ostream &os) const
Print basis to stream os.
virtual Teuchos::RCP< const Stokhos::Quadrature< ordinal_type, value_type > > getReducedQuadrature() const
Get reduced quadrature object.
Stokhos::OrthogPolyApprox< ordinal_type, value_type > tmp_pce
Temporary pce used in invariant subspace calculations.
ProductLanczosGramSchmidtPCEBasis & operator=(const ProductLanczosGramSchmidtPCEBasis &)
virtual const std::string & getName() const
Return string name of basis.
virtual const Teuchos::Array< value_type > & norm_squared() const
Return array storing norm-squared of each basis polynomial.
Teuchos::SerialDenseMatrix< ordinal_type, value_type > SDM
Teuchos::RCP< Stokhos::CompletePolynomialBasis< ordinal_type, value_type > > tensor_lanczos_basis
Product Lanczos basis.
ProductLanczosGramSchmidtPCEBasis(ordinal_type p, const Teuchos::Array< Stokhos::OrthogPolyApprox< ordinal_type, value_type > > &pce, const Teuchos::RCP< const Stokhos::Quadrature< ordinal_type, value_type > > &quad, const Teuchos::RCP< const Stokhos::Sparse3Tensor< ordinal_type, value_type > > &Cijk, const Teuchos::ParameterList &params=Teuchos::ParameterList())
Constructor.
ordinal_type isInvariant(const Stokhos::OrthogPolyApprox< ordinal_type, value_type > &pce) const
Teuchos::SerialDenseVector< ordinal_type, value_type > SDV