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 
54 namespace Intrepid {
55 
62 template<class Scalar, class UserVector>
64 public:
71  static Scalar refine_grid(
72  typename std::multimap<Scalar,std::vector<int> > & indexSet,
73  UserVector & integralValue,
75 
84  static Scalar refine_grid(
85  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
86  std::set<std::vector<int> > & oldIndex,
87  UserVector & integralValue,
88  Scalar globalErrorIndicator,
90 
100  static Scalar refine_grid(
101  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
102  std::set<std::vector<int> > & oldIndex,
103  UserVector & integralValue,
105  Scalar globalErrorIndicator,
107  /*
108  static void coarsen_grid(
109  typename std::multimap<Scalar,std::vector<int> > & indexSet,
110  int dimension,
111  std::vector<EIntrepidBurkardt> rule1D,
112  std::vector<EIntrepidGrowth> growth1D);
113 
114  static void coarsen_grid(
115  typename std::multimap<Scalar,std::vector<int> > & activeIndex,
116  std::set<std::vector<int> > oldIndex,
117  int dimension;
118  std::vector<EIntrepidBurkardt> rule1D,
119  std::vector<EIntrepidGrowth> growth1D);
120  */
121 
128  static void build_diffRule(
129  CubatureTensorSorted<Scalar> & outRule,
130  std::vector<int> index,
132 
142  static void build_diffRule(
143  CubatureTensorSorted<Scalar> & outRule,
144  std::vector<int> index,
145  int dimension,
146  std::vector<EIntrepidBurkardt> rule1D,
147  std::vector<EIntrepidGrowth> growth1D,
148  bool isNormalized);
149 
157  static bool isAdmissible(
158  std::vector<int> index,
159  int direction,
160  std::set<std::vector<int> > inOldIndex,
162 
172  static void buildSparseGrid(
174  int dimension, int maxlevel,
175  std::vector<EIntrepidBurkardt> rule1D,
176  std::vector<EIntrepidGrowth> growth1D,
177  bool isNormalized);
178 
179 
180 
181 };
182 
183 } // End Intrepid namespace
184 
185 // include templated definitions
187 
188 #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...