00001
00011 #ifndef _QUADRATURE_RULES_BASSO_H_
00012 #define _QUADRATURE_RULES_BASSO_H_
00013
00014
00015 #include <iostream>
00016
00017
00018 #include "basso.h"
00019 #include "QuadraturePoint.h"
00020
00021 #define QuadratureRule Array< QuadraturePoint >
00022
00023 namespace basso {
00024
00026 void quadrature_gauss1d( QuadratureRule &qr )
00027 {
00028 int npts=vect_size(qr);
00029 switch (npts) {
00030
00031 case 2:
00032 qr[0]=QuadraturePoint( Point( -0.577350269189626 ), 1.0 );
00033 qr[1]=QuadraturePoint( Point( 0.577350269189626 ), 1.0 );
00034 break;
00035
00036 case 3:
00037 qr[0]=QuadraturePoint( Point( -0.774596669241483 ), 0.555555555555556 );
00038 qr[1]=QuadraturePoint( Point( 0.000000000000000 ), 0.888888888888889 );
00039 qr[2]=QuadraturePoint( Point( 0.774596669241483 ), 0.555555555555556 );
00040 break;
00041
00042 case 4:
00043 qr[0]=QuadraturePoint( Point( -0.861134311594053 ), 0.347854845137454 );
00044 qr[1]=QuadraturePoint( Point( -0.339981043584856 ), 0.652145154862546 );
00045 qr[2]=QuadraturePoint( Point( 0.339981043584856 ), 0.652145154862546 );
00046 qr[3]=QuadraturePoint( Point( 0.861134311594053 ), 0.347854845137454 );
00047 break;
00048
00049 case 5:
00050 qr[0]=QuadraturePoint( Point( -0.906179845938664 ), 0.236726885056189 );
00051 qr[1]=QuadraturePoint( Point( -0.538469310105683 ), 0.478628670499366 );
00052 qr[2]=QuadraturePoint( Point( 0.000000000000000 ), 0.568888888888889 );
00053 qr[3]=QuadraturePoint( Point( 0.538469310105683 ), 0.478628670499366 );
00054 qr[4]=QuadraturePoint( Point( 0.906179845938664 ), 0.236726885056189 );
00055 break;
00056
00057 case 6:
00058 qr[0]=QuadraturePoint( Point( 0.932469514203152 ), 0.171324492379170 );
00059 qr[1]=QuadraturePoint( Point( -0.932469514203152 ), 0.171324492379170 );
00060 qr[2]=QuadraturePoint( Point( 0.661209386466265 ), 0.360761573048139 );
00061 qr[3]=QuadraturePoint( Point( -0.661209386466265 ), 0.360761573048139 );
00062 qr[4]=QuadraturePoint( Point( 0.238619186003152 ), 0.467913934572691 );
00063 qr[5]=QuadraturePoint( Point( -0.238619186003152 ), 0.467913934572691 );
00064 break;
00065
00066 case 7:
00067 qr[0]=QuadraturePoint( Point( 0.949107912342759 ), 0.129484966168870 );
00068 qr[1]=QuadraturePoint( Point( -0.949107912342759 ), 0.129484966168870 );
00069 qr[2]=QuadraturePoint( Point( 0.741531185599394 ), 0.279705391489277 );
00070 qr[3]=QuadraturePoint( Point( -0.741531185599394 ), 0.279705391489277 );
00071 qr[4]=QuadraturePoint( Point( 0.405845151377397 ), 0.381830050505119 );
00072 qr[5]=QuadraturePoint( Point( -0.405845151377397 ), 0.381830050505119 );
00073 qr[6]=QuadraturePoint( Point( 0.000000000000000 ), 0.417959183673469 );
00074 break;
00075
00076 case 8:
00077 qr[0]=QuadraturePoint( Point( 0.960289856497536 ), 0.101228536290376 );
00078 qr[1]=QuadraturePoint( Point( -0.960289856497536 ), 0.101228536290376 );
00079 qr[2]=QuadraturePoint( Point( 0.796666477413627 ), 0.222381034453374 );
00080 qr[3]=QuadraturePoint( Point( -0.796666477413627 ), 0.222381034453374 );
00081 qr[4]=QuadraturePoint( Point( 0.525532409916329 ), 0.313706645877887 );
00082 qr[5]=QuadraturePoint( Point( -0.525532409916329 ), 0.313706645877887 );
00083 qr[6]=QuadraturePoint( Point( 0.183434642495650 ), 0.362683783378362 );
00084 qr[7]=QuadraturePoint( Point( -0.183434642495650 ), 0.362683783378362 );
00085 break;
00086
00087 default:
00088 ErrorMessage("quadrature_gauss1d","too many points");
00089 break;
00090
00091 }
00092 }
00093
00097 void quadrature_gauss2d( QuadratureRule &qr )
00098 {
00099 double qrsize=vect_size(qr);
00100 int npts=static_cast<int>(sqrt(qrsize)+0.5);
00101
00102 switch (npts) {
00103
00104 case 1:
00105 qr[0]=QuadraturePoint( Point( 0.0, 0.0 ), 4.0 );
00106 break;
00107
00108 case 2:
00109 qr[0]=QuadraturePoint( Point( 0.57735026918963, 0.57735026918963 ), 1.0 );
00110 qr[1]=QuadraturePoint( Point( 0.57735026918963, -0.57735026918963 ), 1.0 );
00111 qr[2]=QuadraturePoint( Point( -0.57735026918963, 0.57735026918963 ), 1.0 );
00112 qr[3]=QuadraturePoint( Point( -0.57735026918963, -0.57735026918963 ), 1.0 );
00113 break;
00114
00115 case 3:
00116 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.77459666924148 ), 0.30864197530864 );
00117 qr[1]=QuadraturePoint( Point( 0.77459666924148, -0.77459666924148 ), 0.30864197530864 );
00118 qr[2]=QuadraturePoint( Point( 0.77459666924148, 0.00000000000000 ), 0.49382716049383 );
00119 qr[3]=QuadraturePoint( Point( -0.77459666924148, 0.77459666924148 ), 0.30864197530864 );
00120 qr[4]=QuadraturePoint( Point( -0.77459666924148, -0.77459666924148 ), 0.30864197530864 );
00121 qr[5]=QuadraturePoint( Point( -0.77459666924148, 0.00000000000000 ), 0.49382716049383 );
00122 qr[6]=QuadraturePoint( Point( 0.00000000000000, 0.77459666924148 ), 0.49382716049383 );
00123 qr[7]=QuadraturePoint( Point( 0.00000000000000, -0.77459666924148 ), 0.49382716049383 );
00124 qr[8]=QuadraturePoint( Point( 0.00000000000000, 0.00000000000000 ), 0.79012345679012 );
00125 break;
00126
00127 case 4:
00128 qr[0]=QuadraturePoint( Point( 0.86113431159405, 0.86113431159405 ), 0.12100299328560 );
00129 qr[1]=QuadraturePoint( Point( 0.86113431159405, -0.86113431159405 ), 0.12100299328560 );
00130 qr[2]=QuadraturePoint( Point( 0.86113431159405, 0.33998104358486 ), 0.22685185185185 );
00131 qr[3]=QuadraturePoint( Point( 0.86113431159405, -0.33998104358486 ), 0.22685185185185 );
00132 qr[4]=QuadraturePoint( Point( -0.86113431159405, 0.86113431159405 ), 0.12100299328560 );
00133 qr[5]=QuadraturePoint( Point( -0.86113431159405, -0.86113431159405 ), 0.12100299328560 );
00134 qr[6]=QuadraturePoint( Point( -0.86113431159405, 0.33998104358486 ), 0.22685185185185 );
00135 qr[7]=QuadraturePoint( Point( -0.86113431159405, -0.33998104358486 ), 0.22685185185185 );
00136 qr[8]=QuadraturePoint( Point( 0.33998104358486, 0.86113431159405 ), 0.22685185185185 );
00137 qr[9]=QuadraturePoint( Point( 0.33998104358486, -0.86113431159405 ), 0.22685185185185 );
00138 qr[10]=QuadraturePoint( Point( 0.33998104358486, 0.33998104358486 ), 0.42529330301069 );
00139 qr[11]=QuadraturePoint( Point( 0.33998104358486, -0.33998104358486 ), 0.42529330301069 );
00140 qr[12]=QuadraturePoint( Point( -0.33998104358486, 0.86113431159405 ), 0.22685185185185 );
00141 qr[13]=QuadraturePoint( Point( -0.33998104358486, -0.86113431159405 ), 0.22685185185185 );
00142 qr[14]=QuadraturePoint( Point( -0.33998104358486, 0.33998104358486 ), 0.42529330301069 );
00143 qr[14]=QuadraturePoint( Point( -0.33998104358486, -0.33998104358486 ), 0.42529330301069 );
00144 break;
00145
00146 default:
00147 ErrorMessage("quadrature_gauss2d","too many points");
00148 break;
00149
00150 }
00151 }
00152
00159 void tensorial_quadrature_rule( const QuadratureRule &q1, const QuadratureRule &q2,
00160 QuadratureRule &qr )
00161 {
00162
00163 QuadratureRule::const_iterator q1Itr, q2Itr;
00164 Numeric xi, wt1, wt;
00165
00166 int n=0;
00167 for ( q1Itr=q1.begin(); q1Itr!=q1.end(); ++q1Itr, ++n )
00168 {
00169
00170 wt1 = q1Itr->weight();
00171 xi = (q1Itr->point()).x();
00172
00173 for ( q2Itr=q2.begin(); q2Itr!=q2.end(); ++q2Itr )
00174 {
00175 Point pt( xi, (q2Itr->point()).x() );
00176 wt=wt1*(q2Itr->weight( ));
00177 qr[n]=QuadraturePoint( pt, wt );
00178 }
00179
00180 }
00181 }
00182
00183
00185 void quadrature_gauss3d( QuadratureRule &qr )
00186 {
00187 double qrsize=vect_size(qr);
00188 int npts=static_cast<int>( pow(qrsize,0.33333333333333333333)+0.5 );
00189
00190 switch (npts)
00191 {
00192 case 1:
00193 qr[0]=QuadraturePoint( Point( 0.0, 0.0, 0.0 ), 8.0 );
00194 break;
00195
00196 case 2:
00197 qr[0]=QuadraturePoint( Point( 0.57735026918963, 0.57735026918963, 0.57735026918963 ), 1.0 );
00198 qr[1]=QuadraturePoint( Point( 0.57735026918963, 0.57735026918963, -0.57735026918963 ), 1.0 );
00199 qr[2]=QuadraturePoint( Point( 0.57735026918963, -0.57735026918963, 0.57735026918963 ), 1.0 );
00200 qr[3]=QuadraturePoint( Point( 0.57735026918963, -0.57735026918963, -0.57735026918963 ), 1.0 );
00201 qr[4]=QuadraturePoint( Point(-0.57735026918963, 0.57735026918963, 0.57735026918963 ), 1.0 );
00202 qr[5]=QuadraturePoint( Point(-0.57735026918963, 0.57735026918963, -0.57735026918963 ), 1.0 );
00203 qr[6]=QuadraturePoint( Point(-0.57735026918963, -0.57735026918963, 0.57735026918963 ), 1.0 );
00204 qr[7]=QuadraturePoint( Point(-0.57735026918963, -0.57735026918963, -0.57735026918963 ), 1.0 );
00205 break;
00206
00207 case 3:
00208 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.77459666924148, 0.77459666924148 ), 0.17146776406036 );
00209 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.77459666924148, -0.77459666924148 ), 0.17146776406036 );
00210 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.77459666924148, 0.0 ), 0.27434842249657 );
00211 qr[0]=QuadraturePoint( Point( 0.77459666924148, -0.77459666924148, 0.77459666924148 ), 0.17146776406036 );
00212 qr[0]=QuadraturePoint( Point( 0.77459666924148, -0.77459666924148, -0.77459666924148 ), 0.17146776406036 );
00213 qr[0]=QuadraturePoint( Point( 0.77459666924148, -0.77459666924148, 0.0 ), 0.27434842249657 );
00214 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.0, 0.77459666924148 ), 0.27434842249657 );
00215 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.0, -0.77459666924148 ), 0.27434842249657 );
00216 qr[0]=QuadraturePoint( Point( 0.77459666924148, 0.0, 0.0 ), 0.43895747599451 );
00217 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.77459666924148, 0.77459666924148 ), 0.17146776406036 );
00218 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.77459666924148, -0.77459666924148 ), 0.17146776406036 );
00219 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.77459666924148, 0.0 ), 0.27434842249657 );
00220 qr[0]=QuadraturePoint( Point(-0.77459666924148, -0.77459666924148, 0.77459666924148 ), 0.17146776406036 );
00221 qr[0]=QuadraturePoint( Point(-0.77459666924148, -0.77459666924148, -0.77459666924148 ), 0.17146776406036 );
00222 qr[0]=QuadraturePoint( Point(-0.77459666924148, -0.77459666924148, 0.0 ), 0.27434842249657 );
00223 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.0, 0.77459666924148 ), 0.27434842249657 );
00224 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.0, -0.77459666924148 ), 0.27434842249657 );
00225 qr[0]=QuadraturePoint( Point(-0.77459666924148, 0.0, 0.0 ), 0.43895747599451 );
00226 qr[0]=QuadraturePoint( Point( 0.0, 0.77459666924148, 0.77459666924148 ), 0.27434842249657 );
00227 qr[0]=QuadraturePoint( Point( 0.0, 0.77459666924148, -0.77459666924148 ), 0.27434842249657 );
00228 qr[0]=QuadraturePoint( Point( 0.0, 0.77459666924148, 0.0 ), 0.43895747599451 );
00229 qr[0]=QuadraturePoint( Point( 0.0, -0.77459666924148, 0.77459666924148 ), 0.27434842249657 );
00230 qr[0]=QuadraturePoint( Point( 0.0, -0.77459666924148, -0.77459666924148 ), 0.27434842249657 );
00231 qr[0]=QuadraturePoint( Point( 0.0, -0.77459666924148, 0.0 ), 0.43895747599451 );
00232 qr[0]=QuadraturePoint( Point( 0.0, 0.0, 0.77459666924148 ), 0.43895747599451 );
00233 qr[0]=QuadraturePoint( Point( 0.0, 0.0, -0.77459666924148 ), 0.43895747599451 );
00234 qr[0]=QuadraturePoint( Point( 0.0, 0.0, 0.0 ), 0.70233196159122 );
00235 break;
00236
00237 default:
00238 ErrorMessage("quadrature_gauss3d","too many points");
00239 break;
00240
00241 }
00242 }
00243
00245 void quadrature_tria( QuadratureRule &qr )
00246 {
00247 int npts=vect_size(qr);
00248 int ord;
00249 switch (npts)
00250 {
00251 case 1:
00252 ord=1;
00253 qr[0]=QuadraturePoint( Point(0.333333333333,0.333333333333), 0.5 );
00254 break;
00255
00256 case 3:
00257 ord=2;
00258 qr[0]=QuadraturePoint( Point( 0.1666666666667, 0.1666666666667 ), 0.1666666666667 );
00259 qr[1]=QuadraturePoint( Point( 0.6666666666667, 0.1666666666667 ), 0.1666666666667 );
00260 qr[2]=QuadraturePoint( Point( 0.1666666666667, 0.6666666666667 ), 0.1666666666667 );
00261 break;
00262
00263 case 4:
00264 ord=3;
00265 qr[0]=QuadraturePoint( Point( 0.333333333333333, 0.333333333333333 ), -0.5625000000000000*0.5 );
00266 qr[1]=QuadraturePoint( Point( 0.600000000000000, 0.200000000000000 ), 0.5208333333333333*0.5 );
00267 qr[2]=QuadraturePoint( Point( 0.200000000000000, 0.600000000000000 ), 0.5208333333333333*0.5 );
00268 qr[3]=QuadraturePoint( Point( 0.200000000000000, 0.200000000000000 ), 0.5208333333333333*0.5 );
00269 break;
00270
00271 case 6:
00272 ord= 4;
00273 qr[0]=QuadraturePoint( Point( 0.816847572980459, 0.091576213509770 ), 0.109951743655233*0.5 );
00274 qr[1]=QuadraturePoint( Point( 0.091576213509771, 0.816847572980459 ), 0.109951743655233*0.5 );
00275 qr[2]=QuadraturePoint( Point( 0.091576213509771, 0.091576213509771 ), 0.109951743655233*0.5 );
00276 qr[3]=QuadraturePoint( Point( 0.108103018168070, 0.445948490915965 ), 0.223381589678011*0.5 );
00277 qr[4]=QuadraturePoint( Point( 0.445948490915965, 0.108103018168070 ), 0.223381589678011*0.5 );
00278 qr[5]=QuadraturePoint( Point( 0.445948490915965, 0.445948490915965 ), 0.223381589678011*0.5 );
00279 break;
00280
00281 case 7:
00282 ord=5;
00283 qr[0]=QuadraturePoint( Point( 0.1012865073235, 0.1012865073235 ), 0.06296959027240 );
00284 qr[1]=QuadraturePoint( Point( 0.7974269853531, 0.1012865073235 ), 0.06296959027240 );
00285 qr[2]=QuadraturePoint( Point( 0.1012865073235, 0.7974269853531 ), 0.06296959027240 );
00286 qr[3]=QuadraturePoint( Point( 0.4701420641051, 0.0597158717898 ), 0.06619707639425 );
00287 qr[4]=QuadraturePoint( Point( 0.4701420641051, 0.4701420641051 ), 0.06619707639425 );
00288 qr[5]=QuadraturePoint( Point( 0.0597158717898, 0.4701420641051 ), 0.06619707639425 );
00289 qr[6]=QuadraturePoint( Point( 0.3333333333333, 0.3333333333333 ), 0.11250000000000 );
00290 break;
00291
00292 case 9:
00293 ord=5;
00294 qr[0]=QuadraturePoint( Point( 0.124949503233232, 0.437525248383384 ), 0.205950504760887*0.5 );
00295 qr[1]=QuadraturePoint( Point( 0.437525248383384, 0.124949503233232 ), 0.205950504760887*0.5 );
00296 qr[2]=QuadraturePoint( Point( 0.437525248383384, 0.437525248383384 ), 0.205950504760887*0.5 );
00297 qr[3]=QuadraturePoint( Point( 0.797112651860071, 0.165409927389841 ), 0.063691414286223*0.5 );
00298 qr[4]=QuadraturePoint( Point( 0.797112651860071, 0.037477420750088 ), 0.063691414286223*0.5 );
00299 qr[5]=QuadraturePoint( Point( 0.165409927389841, 0.797112651860071 ), 0.063691414286223*0.5 );
00300 qr[6]=QuadraturePoint( Point( 0.165409927389841, 0.037477420750088 ), 0.063691414286223*0.5 );
00301 qr[7]=QuadraturePoint( Point( 0.037477420750088, 0.797112651860071 ), 0.063691414286223*0.5 );
00302 qr[8]=QuadraturePoint( Point( 0.037477420750088, 0.165409927389841 ), 0.063691414286223*0.5 );
00303 break;
00304
00305 case 12:
00306 ord=6;
00307 qr[0]=QuadraturePoint( Point( 0.873821971016996, 0.063089014491502 ), 0.050844906370207*0.5 );
00308 qr[1]=QuadraturePoint( Point( 0.063089014491502, 0.873821971016996 ), 0.050844906370207*0.5 );
00309 qr[2]=QuadraturePoint( Point( 0.063089014491502, 0.063089014491502 ), 0.050844906370207*0.5 );
00310 qr[3]=QuadraturePoint( Point( 0.501426509658179, 0.249286745170910 ), 0.116786275726379*0.5 );
00311 qr[4]=QuadraturePoint( Point( 0.249286745170910, 0.501426509658179 ), 0.116786275726379*0.5 );
00312 qr[5]=QuadraturePoint( Point( 0.249286745170910, 0.249286745170910 ), 0.116786275726379*0.5 );
00313 qr[6]=QuadraturePoint( Point( 0.636502499121399, 0.310352451033785 ), 0.082581075618374*0.5 );
00314 qr[7]=QuadraturePoint( Point( 0.636502499121399, 0.053145049844816 ), 0.082581075618374*0.5 );
00315 qr[8]=QuadraturePoint( Point( 0.310352451033785, 0.636502499121399 ), 0.082581075618374*0.5 );
00316 qr[9]=QuadraturePoint( Point( 0.310352451033785, 0.053145049844816 ), 0.082581075618374*0.5 );
00317 qr[10]=QuadraturePoint( Point( 0.053145049844816, 0.636502499121399 ), 0.082581075618374*0.5 );
00318 qr[11]=QuadraturePoint( Point( 0.053145049844816, 0.310352451033785 ), 0.082581075618374*0.5 );
00319 break;
00320
00321 case 13:
00322 ord=7;
00323 qr[0]=QuadraturePoint( Point( 0.0651301029022, 0.0651301029022 ), 0.02667361780440 );
00324 qr[1]=QuadraturePoint( Point( 0.8697397941956, 0.0651301029022 ), 0.02667361780440 );
00325 qr[2]=QuadraturePoint( Point( 0.0651301029022, 0.8697397941956 ), 0.02667361780440 );
00326 qr[3]=QuadraturePoint( Point( 0.3128654960049, 0.0486903154253 ), 0.03855688044515 );
00327 qr[4]=QuadraturePoint( Point( 0.6384441885698, 0.3128654960049 ), 0.03855688044515 );
00328 qr[5]=QuadraturePoint( Point( 0.0486903154253, 0.6384441885698 ), 0.03855688044515 );
00329 qr[6]=QuadraturePoint( Point( 0.6384441885698, 0.0486903154253 ), 0.03855688044515 );
00330 qr[7]=QuadraturePoint( Point( 0.3128654960049, 0.6384441885698 ), 0.03855688044515 );
00331 qr[8]=QuadraturePoint( Point( 0.0486903154253, 0.3128654960049 ), 0.03855688044515 );
00332 qr[9]=QuadraturePoint( Point( 0.2603459660790, 0.2603459660790 ), 0.08780762881660 );
00333 qr[10]=QuadraturePoint( Point( 0.4793080678419, 0.2603459660790 ), 0.08780762881660 );
00334 qr[11]=QuadraturePoint( Point( 0.2603459660790, 0.4793080678419 ), 0.08780762881660 );
00335 qr[12]=QuadraturePoint( Point( 0.3333333333333, 0.3333333333333 ), -0.07478502223385 );
00336 break;
00337
00338 default:
00339 ErrorMessage("quadrature_tria","Incorrect number of points");
00340 break;
00341
00342 }
00343 }
00344
00345
00349 void quadrature_tetra( QuadratureRule &qr )
00350 {
00351 int npts=vect_size(qr);
00352 int ord;
00353 switch (npts)
00354 {
00355 case 1:
00356 ord=1;
00357 qr[0]=QuadraturePoint( Point(0.25000000000000, 0.25000000000000, 0.25000000000000), 0.16666666666667 );
00358 break;
00359
00360 case 4:
00361 ord=2;
00362 qr[0]=QuadraturePoint( Point( 0.58541020000000, 0.13819660000000, 0.13819660000000 ), 0.04166666666667 );
00363 qr[1]=QuadraturePoint( Point( 0.13819660000000, 0.58541020000000, 0.13819660000000 ), 0.04166666666667 );
00364 qr[2]=QuadraturePoint( Point( 0.13819660000000, 0.13819660000000, 0.58541020000000 ), 0.04166666666667 );
00365 qr[3]=QuadraturePoint( Point( 0.13819660000000, 0.13819660000000, 0.13819660000000 ), 0.04166666666667 );
00366 break;
00367
00368 case 5:
00369 ord=3;
00370 qr[0]=QuadraturePoint( Point( 0.25000000000000, 0.25000000000000, 0.25000000000000 ), -0.13333333333333 );
00371 qr[1]=QuadraturePoint( Point( 0.50000000000000, 0.16666666666667, 0.16666666666667 ), 0.07500000000000 );
00372 qr[2]=QuadraturePoint( Point( 0.16666666666667, 0.50000000000000, 0.16666666666667 ), 0.07500000000000 );
00373 qr[3]=QuadraturePoint( Point( 0.16666666666667, 0.16666666666667, 0.50000000000000 ), 0.07500000000000 );
00374 qr[4]=QuadraturePoint( Point( 0.16666666666667, 0.16666666666667, 0.16666666666667 ), 0.07500000000000 );
00375 break;
00376
00377 default:
00378 ErrorMessage("quadrature_tetra","Incorrect number of points");
00379 break;
00380
00381 }
00382 }
00383
00384
00385 }
00386
00387 #endif