Intrepid
Intrepid_AdaptiveSparseGrid.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ************************************************************************
3 //
4 // Intrepid Package
5 // Copyright (2007) 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 Pavel Bochev (pbboche@sandia.gov)
38 // Denis Ridzal (dridzal@sandia.gov), or
39 // Kara Peterson (kjpeter@sandia.gov)
40 //
41 // ************************************************************************
42 // @HEADER
43 
49 #ifndef INTREPID_ADAPTIVESPARSEGRID_HPP
50 #define INTREPID_ADAPTIVESPARSEGRID_HPP
51 
53 #include <set>
54 
55 namespace Intrepid {
56 
63 template<class Scalar, class UserVector>
65 public:
72  static Scalar refine_grid(
73  typename std::multimap<Scalar,std::vector<int> > & indexSet,
74  UserVector & integralValue,
76 
85  static Scalar refine_grid(
86  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
87  std::set<std::vector<int> > & oldIndex,
88  UserVector & integralValue,
89  Scalar globalErrorIndicator,
91 
101  static Scalar refine_grid(
102  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
103  std::set<std::vector<int> > & oldIndex,
104  UserVector & integralValue,
106  Scalar globalErrorIndicator,
108  /*
109  static void coarsen_grid(
110  typename std::multimap<Scalar,std::vector<int> > & indexSet,
111  int dimension,
112  std::vector<EIntrepidBurkardt> rule1D,
113  std::vector<EIntrepidGrowth> growth1D);
114 
115  static void coarsen_grid(
116  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
117  std::set<std::vector<int> > oldIndex,
118  int dimension;
119  std::vector<EIntrepidBurkardt> rule1D,
120  std::vector<EIntrepidGrowth> growth1D);
121  */
122 
129  static void build_diffRule(
131  std::vector<int> index,
133 
143  static void build_diffRule(
145  std::vector<int> index,
146  int dimension,
147  std::vector<EIntrepidBurkardt> rule1D,
148  std::vector<EIntrepidGrowth> growth1D,
149  bool isNormalized);
150 
158  static bool isAdmissible(
159  std::vector<int> index,
160  int direction,
161  std::set<std::vector<int> > inOldIndex,
163 
173  static void buildSparseGrid(
175  int dimension, int maxlevel,
176  std::vector<EIntrepidBurkardt> rule1D,
177  std::vector<EIntrepidGrowth> growth1D,
178  bool isNormalized);
179 
180 
181 
182 };
183 
184 } // End Intrepid namespace
185 
186 // include templated definitions
188 
189 #endif
static void buildSparseGrid(CubatureTensorSorted< Scalar > &output, int dimension, int maxlevel, std::vector< EIntrepidBurkardt > rule1D, std::vector< EIntrepidGrowth > growth1D, bool isNormalized)
Build a classic isotropic sparse grid.
static Scalar refine_grid(typename std::multimap< Scalar, std::vector< int > > &indexSet, UserVector &integralValue, AdaptiveSparseGridInterface< Scalar, UserVector > &problem_data)
Update adaptive sparse grid.
static void build_diffRule(CubatureTensorSorted< Scalar > &outRule, std::vector< int > index, AdaptiveSparseGridInterface< Scalar, UserVector > &problem_data)
Given an index, build the corresponding differential cubature rule.
Builds general adaptive sparse grid rules (Gerstner and Griebel) using the 1D cubature rules in the I...
Header file for the Intrepid::AdaptiveSparseGridInterface class.
static bool isAdmissible(std::vector< int > index, int direction, std::set< std::vector< int > > inOldIndex, AdaptiveSparseGridInterface< Scalar, UserVector > &problem_data)
Check admissibility of an index set, outputs true if admissible.
Definition file for the Intrepid::AdaptiveSparseGrid class.
Utilizes 1D cubature (integration) rules contained in the library sandia_rules (John Burkardt...