Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
Stokhos_ReducedQuadratureFactory.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_REDUCED_QUADRATURE_FACTORY_HPP
43 #define STOKHOS_REDUCED_QUADRATURE_FACTORY_HPP
44 
45 #include "Teuchos_RCP.hpp"
46 #include "Teuchos_Array.hpp"
47 #include "Teuchos_BLAS.hpp"
48 #include "Teuchos_LAPACK.hpp"
49 #include "Teuchos_SerialDenseMatrix.hpp"
50 #include "Teuchos_ParameterList.hpp"
52 
53 namespace Stokhos {
54 
64  template <typename ordinal_type, typename value_type>
66  public:
67 
69 
72  ReducedQuadratureFactory(const Teuchos::ParameterList& params);
73 
76 
78  virtual Teuchos::RCP<const Stokhos::UserDefinedQuadrature<ordinal_type, value_type> >
80  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
81  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q2,
82  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
83  const Teuchos::Array<value_type>& weights) const;
84 
85  protected:
86 
88  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
89  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
90  const Teuchos::Array<value_type>& weights,
91  Teuchos::RCP< Teuchos::Array<value_type> >& red_weights,
92  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_points,
93  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_values
94  ) const;
95 
97  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
98  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
99  const Teuchos::Array<value_type>& weights,
100  Teuchos::RCP< Teuchos::Array<value_type> >& red_weights,
101  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_points,
102  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_values
103  ) const;
104 
106  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
107  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
108  const Teuchos::Array<value_type>& weights,
109  Teuchos::RCP< Teuchos::Array<value_type> >& red_weights,
110  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_points,
111  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_values
112  ) const;
113 
115  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
116  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q2,
117  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
118  const Teuchos::Array<value_type>& weights,
119  Teuchos::RCP< Teuchos::Array<value_type> >& red_weights,
120  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_points,
121  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_values
122  ) const;
123 
125  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q,
126  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& Q2,
127  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& F,
128  const Teuchos::Array<value_type>& weights,
129  Teuchos::RCP< Teuchos::Array<value_type> >& red_weights,
130  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_points,
131  Teuchos::RCP< Teuchos::Array< Teuchos::Array<value_type> > >& red_values
132  ) const;
133 
135  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
136  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
137  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
138  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
139 
140  void solver_TRSM(
141  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
142  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
143  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
144  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
145 
146  void solver_GLPK(
147  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
148  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
149  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
150  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
151 
152  void solver_CLP(
153  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
154  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
155  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
156  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
157 
158  void solver_CLP_IP(
159  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
160  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
161  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
162  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
163 
164  void solver_qpOASES(
165  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
166  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
167  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
168  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
169 
171  const Teuchos::SerialDenseMatrix<ordinal_type, value_type>& A,
172  const Teuchos::SerialDenseVector<ordinal_type, value_type>& b,
173  Teuchos::SerialDenseVector<ordinal_type, value_type>& x,
174  Teuchos::ETransp transa, Teuchos::EUplo uplo) const;
175 
177  const Teuchos::SerialDenseMatrix<ordinal_type,value_type>& R,
178  const value_type tol) const;
179 
183  ordinal_type n_choose_k(const ordinal_type& n, const ordinal_type& k) const;
184 
185  private:
186 
187  // Prohibit copying
189 
190  // Prohibit Assignment
192 
193  protected:
194 
196  mutable Teuchos::ParameterList params;
197 
199  std::string reduction_method;
200 
202  std::string solver_method;
203 
206 
208  bool verbose;
209 
212 
215 
217  Teuchos::BLAS<ordinal_type,value_type> blas;
218 
219  }; // class ReducedQuadratureFactory
220 
221 } // Namespace Stokhos
222 
223 // Include template definitions
225 
226 #endif
value_type reduction_tol
Dimension reduction tolerance.
value_type objective_value
Value used in LP-based objective function.
bool eliminate_dependent_rows
Whether to eliminate dependent rows in constraints.
bool verbose
Whether to print a bunch of stuff out.
void reducedQuadrature_Q_Squared(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights, Teuchos::RCP< Teuchos::Array< value_type > > &red_weights, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_points, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_values) const
Teuchos::ParameterList params
Algorithm parameters.
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType * x
Definition: csr_vector.h:260
std::string solver_method
Underdetermined solver method.
void underdetermined_solver(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
Teuchos::LAPACK< ordinal_type, value_type > lapack
void solver_GLPK(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
void solver_CLP_IP(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
Top-level namespace for Stokhos classes and functions.
ReducedQuadratureFactory(const Teuchos::ParameterList &params)
Constructor.
void solver_CLP(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
void reducedQuadrature_Q2_CPQR(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q2, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights, Teuchos::RCP< Teuchos::Array< value_type > > &red_weights, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_points, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_values) const
Generate a basis from a given set of PCE expansions that is orthogonal with respect to the product me...
ordinal_type n_choose_k(const ordinal_type &n, const ordinal_type &k) const
Compute bionomial coefficient (n ; k) = n!/( k! (n-k)! )
void reducedQuadrature_Q2(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q2, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights, Teuchos::RCP< Teuchos::Array< value_type > > &red_weights, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_points, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_values) const
ordinal_type computeRank(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &R, const value_type tol) const
void solver_TRSM(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
void solver_qpOASES(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
ReducedQuadratureFactory & operator=(const ReducedQuadratureFactory &)
void reducedQuadrature_Q_Squared_CPQR(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights, Teuchos::RCP< Teuchos::Array< value_type > > &red_weights, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_points, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_values) const
void solver_CompressedSensing(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &A, const Teuchos::SerialDenseVector< ordinal_type, value_type > &b, Teuchos::SerialDenseVector< ordinal_type, value_type > &x, Teuchos::ETransp transa, Teuchos::EUplo uplo) const
virtual Teuchos::RCP< const Stokhos::UserDefinedQuadrature< ordinal_type, value_type > > createReducedQuadrature(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q2, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights) const
Get reduced quadrature object.
void reducedQuadrature_Q_Squared_CPQR2(const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &Q, const Teuchos::SerialDenseMatrix< ordinal_type, value_type > &F, const Teuchos::Array< value_type > &weights, Teuchos::RCP< Teuchos::Array< value_type > > &red_weights, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_points, Teuchos::RCP< Teuchos::Array< Teuchos::Array< value_type > > > &red_values) const
Teuchos::BLAS< ordinal_type, value_type > blas