00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <cmath>
00030
00031 #include "GaussianQuadratureRule.hpp"
00032 #include "Exception.hpp"
00033
00034 template<unsigned ELEM_DIM>
00035 const ChastePoint<ELEM_DIM>& GaussianQuadratureRule<ELEM_DIM>::rGetQuadPoint(unsigned index) const
00036 {
00037 assert(index < mNumQuadPoints);
00038 return mPoints[index];
00039 }
00040
00041 template<unsigned ELEM_DIM>
00042 double GaussianQuadratureRule<ELEM_DIM>::GetWeight(unsigned index) const
00043 {
00044 assert(index < mNumQuadPoints);
00045 return mWeights[index];
00046 }
00047
00048 template<unsigned ELEM_DIM>
00049 unsigned GaussianQuadratureRule<ELEM_DIM>::GetNumQuadPoints() const
00050 {
00051 return mNumQuadPoints;
00052 }
00053
00054 template<unsigned ELEM_DIM>
00055 GaussianQuadratureRule<ELEM_DIM>::GaussianQuadratureRule(unsigned numPointsInEachDimension)
00056 {
00057 mNumQuadPoints = (unsigned) pow((double) numPointsInEachDimension,(ELEM_DIM));
00058
00059 mWeights.reserve(mNumQuadPoints);
00060 mPoints.reserve(mNumQuadPoints);
00061
00062 switch (ELEM_DIM)
00063 {
00064 case 0 :
00065 {
00066
00067
00068 mWeights.push_back(1);
00069 mPoints.push_back(ChastePoint<ELEM_DIM>());
00070 }
00071 break;
00072 case 1 :
00073 {
00074 switch (numPointsInEachDimension)
00075 {
00076 case 1:
00077 mWeights.push_back(1);
00078 mPoints.push_back(ChastePoint<ELEM_DIM>(0.5));
00079 break;
00080
00081 case 2:
00082 mWeights.push_back(0.5);
00083 mWeights.push_back(0.5);
00084
00085 mPoints.push_back(ChastePoint<ELEM_DIM>(0.21132486540519));
00086 mPoints.push_back(ChastePoint<ELEM_DIM>(0.78867513459481));
00087 break;
00088
00089 case 3:
00090 mWeights.push_back(5.0/18.0);
00091 mWeights.push_back(4.0/9.0);
00092 mWeights.push_back(5.0/18.0);
00093
00094 mPoints.push_back(ChastePoint<ELEM_DIM>(0.1127016654));
00095 mPoints.push_back(ChastePoint<ELEM_DIM>(0.5));
00096 mPoints.push_back(ChastePoint<ELEM_DIM>(0.8872983346));
00097 break;
00098
00099 default:
00100 EXCEPTION("Number of gauss points per dimension not supported.");
00101 }
00102 }
00103 break;
00104 case 2 :
00105 {
00106 switch (numPointsInEachDimension)
00107 {
00108 case 1:
00109 mWeights.push_back(0.5);
00110 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25,0.5));
00111 break;
00112
00113 case 2:
00114 mWeights.push_back(0.19716878364870);
00115 mWeights.push_back(0.19716878364870);
00116 mWeights.push_back(0.05283121635130);
00117 mWeights.push_back(0.05283121635130);
00118
00119 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667,0.21132486540519));
00120 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62200846792815,0.21132486540519));
00121 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04465819873852,0.78867513459481));
00122 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667,0.78867513459481));
00123 break;
00124
00125 case 3:
00126 mWeights.push_back(0.06846437766975);
00127 mWeights.push_back(0.10954300427160);
00128 mWeights.push_back(0.06846437766975);
00129 mWeights.push_back(0.06172839506173);
00130 mWeights.push_back(0.09876543209877);
00131 mWeights.push_back(0.06172839506173);
00132 mWeights.push_back(0.00869611615741);
00133 mWeights.push_back(0.01391378585185);
00134 mWeights.push_back(0.00869611615741);
00135
00136 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607,0.11270166540000));
00137 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000,0.11270166540000));
00138 mPoints.push_back(ChastePoint<ELEM_DIM>(0.78729833458393,0.11270166540000));
00139 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000,0.50000000000000));
00140 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25000000000000,0.50000000000000));
00141 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000,0.50000000000000));
00142 mPoints.push_back(ChastePoint<ELEM_DIM>(0.01270166538393,0.88729833460000));
00143 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000,0.88729833460000));
00144 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607,0.88729833460000));
00145 break;
00146
00147 default:
00148 EXCEPTION("Number of gauss points per dimension not supported.");
00149 }
00150
00151 }
00152 break;
00153 case 3 :
00154 {
00155 switch (numPointsInEachDimension)
00156 {
00157 case 1:
00158 mWeights.push_back(0.12500000000000);
00159 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25000000000000,0.50000000000000,0.12500000000000));
00160 break;
00161
00162 case 2:
00163 mWeights.push_back(0.06132032652029);
00164 mWeights.push_back(0.01643073197073);
00165 mWeights.push_back(0.00440260136261);
00166 mWeights.push_back(0.00117967347971);
00167 mWeights.push_back(0.06132032652029);
00168 mWeights.push_back(0.01643073197073);
00169 mWeights.push_back(0.00440260136261);
00170 mWeights.push_back(0.00117967347971);
00171
00172 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667, 0.21132486540519, 0.13144585576580));
00173 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62200846792815, 0.21132486540519, 0.03522081090086));
00174 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04465819873852, 0.78867513459481, 0.03522081090086));
00175 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667, 0.78867513459481, 0.00943738783766));
00176 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667, 0.21132486540519, 0.49056261216234));
00177 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62200846792815, 0.21132486540519, 0.13144585576580));
00178 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04465819873852, 0.78867513459481, 0.13144585576580));
00179 mPoints.push_back(ChastePoint<ELEM_DIM>(0.16666666666667, 0.78867513459481, 0.03522081090086));
00180 break;
00181
00182 case 3:
00183 mWeights.push_back(0.01497274736603);
00184 mWeights.push_back(0.01349962850795);
00185 mWeights.push_back(0.00190178826891);
00186 mWeights.push_back(0.00760715307442);
00187 mWeights.push_back(0.00685871056241);
00188 mWeights.push_back(0.00096623512860);
00189 mWeights.push_back(0.00024155878219);
00190 mWeights.push_back(0.00021779261632);
00191 mWeights.push_back(0.00003068198821);
00192 mWeights.push_back(0.02395639578565);
00193 mWeights.push_back(0.02159940561273);
00194 mWeights.push_back(0.00304286123026);
00195 mWeights.push_back(0.01217144491907);
00196 mWeights.push_back(0.01097393689986);
00197 mWeights.push_back(0.00154597620576);
00198 mWeights.push_back(0.00038649405150);
00199 mWeights.push_back(0.00034846818612);
00200 mWeights.push_back(0.00004909118114);
00201 mWeights.push_back(0.01497274736603);
00202 mWeights.push_back(0.01349962850795);
00203 mWeights.push_back(0.00190178826891);
00204 mWeights.push_back(0.00760715307442);
00205 mWeights.push_back(0.00685871056241);
00206 mWeights.push_back(0.00096623512860);
00207 mWeights.push_back(0.00024155878219);
00208 mWeights.push_back(0.00021779261632);
00209 mWeights.push_back(0.00003068198821);
00210
00211 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.11270166540000, 0.08872983347426));
00212 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.11270166540000, 0.05000000000803));
00213 mPoints.push_back(ChastePoint<ELEM_DIM>(0.78729833458393, 0.11270166540000, 0.01127016654181));
00214 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.50000000000000, 0.05000000000803));
00215 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25000000000000, 0.50000000000000, 0.02817541635000));
00216 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.50000000000000, 0.00635083269197));
00217 mPoints.push_back(ChastePoint<ELEM_DIM>(0.01270166538393, 0.88729833460000, 0.01127016654181));
00218 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.88729833460000, 0.00635083269197));
00219 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.88729833460000, 0.00143149884212));
00220 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.11270166540000, 0.39364916729197));
00221 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.11270166540000, 0.22182458365000));
00222 mPoints.push_back(ChastePoint<ELEM_DIM>(0.78729833458393, 0.11270166540000, 0.05000000000803));
00223 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.50000000000000, 0.22182458365000));
00224 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25000000000000, 0.50000000000000, 0.12500000000000));
00225 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.50000000000000, 0.02817541635000));
00226 mPoints.push_back(ChastePoint<ELEM_DIM>(0.01270166538393, 0.88729833460000, 0.05000000000803));
00227 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.88729833460000, 0.02817541635000));
00228 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.88729833460000, 0.00635083269197));
00229 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.11270166540000, 0.69856850110968));
00230 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.11270166540000, 0.39364916729197));
00231 mPoints.push_back(ChastePoint<ELEM_DIM>(0.78729833458393, 0.11270166540000, 0.08872983347426));
00232 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.50000000000000, 0.39364916729197));
00233 mPoints.push_back(ChastePoint<ELEM_DIM>(0.25000000000000, 0.50000000000000, 0.22182458365000));
00234 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44364916730000, 0.50000000000000, 0.05000000000803));
00235 mPoints.push_back(ChastePoint<ELEM_DIM>(0.01270166538393, 0.88729833460000, 0.08872983347426));
00236 mPoints.push_back(ChastePoint<ELEM_DIM>(0.05635083270000, 0.88729833460000, 0.05000000000803));
00237 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10000000001607, 0.88729833460000, 0.01127016654181));
00238 break;
00239
00240 case 4:
00241 mWeights.push_back(0.00423982561968);
00242 mWeights.push_back(0.00572288385156);
00243 mWeights.push_back(0.00281885467361);
00244 mWeights.push_back(0.00031634320391);
00245 mWeights.push_back(0.00412036229051);
00246 mWeights.push_back(0.00556163317318);
00247 mWeights.push_back(0.00273942929295);
00248 mWeights.push_back(0.00030742976838);
00249 mWeights.push_back(0.00099965677330);
00250 mWeights.push_back(0.00134932898618);
00251 mWeights.push_back(0.00066462336430);
00252 mWeights.push_back(0.00007458670588);
00253 mWeights.push_back(0.00002360309872);
00254 mWeights.push_back(0.00003185928022);
00255 mWeights.push_back(0.00001569255698);
00256 mWeights.push_back(0.00000176108183);
00257 mWeights.push_back(0.00794866986669);
00258 mWeights.push_back(0.01072905315027);
00259 mWeights.push_back(0.00528468555374);
00260 mWeights.push_back(0.00059306865848);
00261 mWeights.push_back(0.00772470439029);
00262 mWeights.push_back(0.01042674628127);
00263 mWeights.push_back(0.00513578175757);
00264 mWeights.push_back(0.00057635807584);
00265 mWeights.push_back(0.00187411992466);
00266 mWeights.push_back(0.00252967258912);
00267 mWeights.push_back(0.00124601155388);
00268 mWeights.push_back(0.00013983242583);
00269 mWeights.push_back(0.00004425022545);
00270 mWeights.push_back(0.00005972861231);
00271 mWeights.push_back(0.00002941983138);
00272 mWeights.push_back(0.00000330161175);
00273 mWeights.push_back(0.00794866986669);
00274 mWeights.push_back(0.01072905315027);
00275 mWeights.push_back(0.00528468555374);
00276 mWeights.push_back(0.00059306865848);
00277 mWeights.push_back(0.00772470439029);
00278 mWeights.push_back(0.01042674628127);
00279 mWeights.push_back(0.00513578175757);
00280 mWeights.push_back(0.00057635807584);
00281 mWeights.push_back(0.00187411992466);
00282 mWeights.push_back(0.00252967258912);
00283 mWeights.push_back(0.00124601155388);
00284 mWeights.push_back(0.00013983242583);
00285 mWeights.push_back(0.00004425022545);
00286 mWeights.push_back(0.00005972861231);
00287 mWeights.push_back(0.00002941983138);
00288 mWeights.push_back(0.00000330161175);
00289 mWeights.push_back(0.00423982561968);
00290 mWeights.push_back(0.00572288385156);
00291 mWeights.push_back(0.00281885467361);
00292 mWeights.push_back(0.00031634320391);
00293 mWeights.push_back(0.00412036229051);
00294 mWeights.push_back(0.00556163317318);
00295 mWeights.push_back(0.00273942929295);
00296 mWeights.push_back(0.00030742976838);
00297 mWeights.push_back(0.00099965677330);
00298 mWeights.push_back(0.00134932898618);
00299 mWeights.push_back(0.00066462336430);
00300 mWeights.push_back(0.00007458670588);
00301 mWeights.push_back(0.00002360309872);
00302 mWeights.push_back(0.00003185928022);
00303 mWeights.push_back(0.00001569255698);
00304 mWeights.push_back(0.00000176108183);
00305
00306 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.06943184420000, 0.06012499793653));
00307 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.06943184420000, 0.04328879995478));
00308 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.06943184420000, 0.02132226325621));
00309 mPoints.push_back(ChastePoint<ELEM_DIM>(0.86595709258901, 0.06943184420000, 0.00448606527446));
00310 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.33000947820000, 0.04328879995478));
00311 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.33000947820000, 0.03116707302848));
00312 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44888729930184, 0.33000947820000, 0.01535160449661));
00313 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.33000947820000, 0.00322987757031));
00314 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.66999052180000, 0.02132226325621));
00315 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10890625570184, 0.66999052180000, 0.01535160449661));
00316 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.66999052180000, 0.00756156217830));
00317 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.66999052180000, 0.00159090341870));
00318 mPoints.push_back(ChastePoint<ELEM_DIM>(0.00482078098901, 0.93056815580000, 0.00448606527446));
00319 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.93056815580000, 0.00322987757031));
00320 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.93056815580000, 0.00159090341870));
00321 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.93056815580000, 0.00033471571455));
00322 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.06943184420000, 0.28577404826889));
00323 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.06943184420000, 0.20575161800155));
00324 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.06943184420000, 0.10134469352354));
00325 mPoints.push_back(ChastePoint<ELEM_DIM>(0.86595709258901, 0.06943184420000, 0.02132226325621));
00326 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.33000947820000, 0.20575161800155));
00327 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.33000947820000, 0.14813706341321));
00328 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44888729930184, 0.33000947820000, 0.07296615908496));
00329 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.33000947820000, 0.01535160449661));
00330 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.66999052180000, 0.10134469352354));
00331 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10890625570184, 0.66999052180000, 0.07296615908496));
00332 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.66999052180000, 0.03594009661688));
00333 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.66999052180000, 0.00756156217830));
00334 mPoints.push_back(ChastePoint<ELEM_DIM>(0.00482078098901, 0.93056815580000, 0.02132226325621));
00335 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.93056815580000, 0.01535160449661));
00336 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.93056815580000, 0.00756156217830));
00337 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.93056815580000, 0.00159090341870));
00338 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.06943184420000, 0.58018304432012));
00339 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.06943184420000, 0.41772022627335));
00340 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.06943184420000, 0.20575161800155));
00341 mPoints.push_back(ChastePoint<ELEM_DIM>(0.86595709258901, 0.06943184420000, 0.04328879995478));
00342 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.33000947820000, 0.41772022627335));
00343 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.33000947820000, 0.30075023588863));
00344 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44888729930184, 0.33000947820000, 0.14813706341321));
00345 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.33000947820000, 0.03116707302848));
00346 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.66999052180000, 0.20575161800155));
00347 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10890625570184, 0.66999052180000, 0.14813706341321));
00348 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.66999052180000, 0.07296615908496));
00349 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.66999052180000, 0.01535160449661));
00350 mPoints.push_back(ChastePoint<ELEM_DIM>(0.00482078098901, 0.93056815580000, 0.04328879995478));
00351 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.93056815580000, 0.03116707302848));
00352 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.93056815580000, 0.01535160449661));
00353 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.93056815580000, 0.00322987757031));
00354 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.06943184420000, 0.80583209465249));
00355 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.06943184420000, 0.58018304432012));
00356 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.06943184420000, 0.28577404826889));
00357 mPoints.push_back(ChastePoint<ELEM_DIM>(0.86595709258901, 0.06943184420000, 0.06012499793653));
00358 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.33000947820000, 0.58018304432012));
00359 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.33000947820000, 0.41772022627335));
00360 mPoints.push_back(ChastePoint<ELEM_DIM>(0.44888729930184, 0.33000947820000, 0.20575161800155));
00361 mPoints.push_back(ChastePoint<ELEM_DIM>(0.62347184427491, 0.33000947820000, 0.04328879995478));
00362 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.66999052180000, 0.28577404826889));
00363 mPoints.push_back(ChastePoint<ELEM_DIM>(0.10890625570184, 0.66999052180000, 0.20575161800155));
00364 mPoints.push_back(ChastePoint<ELEM_DIM>(0.22110322249816, 0.66999052180000, 0.10134469352354));
00365 mPoints.push_back(ChastePoint<ELEM_DIM>(0.30709631152509, 0.66999052180000, 0.02132226325621));
00366 mPoints.push_back(ChastePoint<ELEM_DIM>(0.00482078098901, 0.93056815580000, 0.06012499793653));
00367 mPoints.push_back(ChastePoint<ELEM_DIM>(0.02291316667491, 0.93056815580000, 0.04328879995478));
00368 mPoints.push_back(ChastePoint<ELEM_DIM>(0.04651867752509, 0.93056815580000, 0.02132226325621));
00369 mPoints.push_back(ChastePoint<ELEM_DIM>(0.06461106321099, 0.93056815580000, 0.00448606527446));
00370 break;
00371
00372 default:
00373 EXCEPTION("Number of gauss points per dimension not supported.");
00374 }
00375 }
00376 break;
00377
00378 default:
00379 EXCEPTION("Gauss points not available for this dimension.");
00380 }
00381
00382 }
00383
00384
00386
00388
00389 template class GaussianQuadratureRule<0>;
00390 template class GaussianQuadratureRule<1>;
00391 template class GaussianQuadratureRule<2>;
00392 template class GaussianQuadratureRule<3>;
00393 template class GaussianQuadratureRule<4>;