|
Intrepid
|
00001 // @HEADER 00002 // ************************************************************************ 00003 // 00004 // Intrepid Package 00005 // Copyright (2007) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // Redistribution and use in source and binary forms, with or without 00011 // modification, are permitted provided that the following conditions are 00012 // met: 00013 // 00014 // 1. Redistributions of source code must retain the above copyright 00015 // notice, this list of conditions and the following disclaimer. 00016 // 00017 // 2. Redistributions in binary form must reproduce the above copyright 00018 // notice, this list of conditions and the following disclaimer in the 00019 // documentation and/or other materials provided with the distribution. 00020 // 00021 // 3. Neither the name of the Corporation nor the names of the 00022 // contributors may be used to endorse or promote products derived from 00023 // this software without specific prior written permission. 00024 // 00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00036 // 00037 // Questions? Contact Pavel Bochev (pbboche@sandia.gov) 00038 // Denis Ridzal (dridzal@sandia.gov), or 00039 // Kara Peterson (kjpeter@sandia.gov) 00040 // 00041 // ************************************************************************ 00042 // @HEADER 00043 00049 #ifndef INTREPID_ADAPTIVESPARSEGRID_HPP 00050 #define INTREPID_ADAPTIVESPARSEGRID_HPP 00051 00052 #include "Intrepid_AdaptiveSparseGridInterface.hpp" 00053 00054 namespace Intrepid { 00055 00062 template<class Scalar, class UserVector> 00063 class AdaptiveSparseGrid { 00064 public: 00071 static Scalar refine_grid( 00072 typename std::multimap<Scalar,std::vector<int> > & indexSet, 00073 UserVector & integralValue, 00074 AdaptiveSparseGridInterface<Scalar,UserVector> & problem_data); 00075 00084 static Scalar refine_grid( 00085 typename std::multimap<Scalar,std::vector<int> > & activeIndex, 00086 std::set<std::vector<int> > & oldIndex, 00087 UserVector & integralValue, 00088 Scalar globalErrorIndicator, 00089 AdaptiveSparseGridInterface<Scalar,UserVector> & problem_data); 00090 00100 static Scalar refine_grid( 00101 typename std::multimap<Scalar,std::vector<int> > & activeIndex, 00102 std::set<std::vector<int> > & oldIndex, 00103 UserVector & integralValue, 00104 CubatureTensorSorted<Scalar> & cubRule, 00105 Scalar globalErrorIndicator, 00106 AdaptiveSparseGridInterface<Scalar,UserVector> & problem_data); 00107 /* 00108 static void coarsen_grid( 00109 typename std::multimap<Scalar,std::vector<int> > & indexSet, 00110 int dimension, 00111 std::vector<EIntrepidBurkardt> rule1D, 00112 std::vector<EIntrepidGrowth> growth1D); 00113 00114 static void coarsen_grid( 00115 typename std::multimap<Scalar,std::vector<int> > & activeIndex, 00116 std::set<std::vector<int> > oldIndex, 00117 int dimension; 00118 std::vector<EIntrepidBurkardt> rule1D, 00119 std::vector<EIntrepidGrowth> growth1D); 00120 */ 00121 00128 static void build_diffRule( 00129 CubatureTensorSorted<Scalar> & outRule, 00130 std::vector<int> index, 00131 AdaptiveSparseGridInterface<Scalar,UserVector> & problem_data); 00132 00142 static void build_diffRule( 00143 CubatureTensorSorted<Scalar> & outRule, 00144 std::vector<int> index, 00145 int dimension, 00146 std::vector<EIntrepidBurkardt> rule1D, 00147 std::vector<EIntrepidGrowth> growth1D, 00148 bool isNormalized); 00149 00157 static bool isAdmissible( 00158 std::vector<int> index, 00159 int direction, 00160 std::set<std::vector<int> > inOldIndex, 00161 AdaptiveSparseGridInterface<Scalar,UserVector> & problem_data); 00162 00172 static void buildSparseGrid( 00173 CubatureTensorSorted<Scalar> & output, 00174 int dimension, int maxlevel, 00175 std::vector<EIntrepidBurkardt> rule1D, 00176 std::vector<EIntrepidGrowth> growth1D, 00177 bool isNormalized); 00178 00179 00180 00181 }; 00182 00183 } // End Intrepid namespace 00184 00185 // include templated definitions 00186 #include <Intrepid_AdaptiveSparseGridDef.hpp> 00187 00188 #endif
1.7.6.1