ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/ot_quadrature_gauss.cpp
Revision: 757
Committed: Fri Nov 6 13:42:55 2015 UTC (9 years, 7 months ago) by francois
Original Path: magic/lib/outil/src/ot_quadrature_gauss.cpp
File size: 16293 byte(s)
Log Message:
Possibilite de calculer les comtraintes et les deformations aux points de gauss
Tester en elasticite volumique

File Contents

# User Rev Content
1 francois 283 //---------------------------------------------------------------------------
2    
3     #include <math.h>
4     #include <stdio.h>
5     #define EPS 3.0e-11
6    
7     #pragma hdrstop
8    
9     #include "gestionversion.h"
10     #include "ot_quadrature_gauss.h"
11     //---------------------------------------------------------------------------
12     #pragma package(smart_init)
13    
14     void OT_QUADRATURE_GAUSS::gauss_legendre_points(double x1, double x2, double x[], double w[], int n)
15     {
16     int m,j,i;
17     double z1,z,xm,xl,pp,p3,p2,p1;
18     m=(n+1)/2;
19     xm=0.5*(x2+x1);
20     xl=0.5*(x2-x1);
21     for (i=1;i<=m;i++) {
22     z=cos(M_PI*(i-0.25)/(n+0.5));
23     do {
24     p1=1;
25     p2=0;
26     for (j=1;j<=n;j++) {
27     p3=p2;
28     p2=p1;
29     p1=((2*j-1)*z*p2-(j-1)*p3)/j;
30     }
31     pp=n*(z*p1-p2)/(z*z-1);
32     z1=z;
33     z=z1-p1/pp;
34     } while (fabs(z-z1) > EPS);
35     x[i]=xm-xl*z;
36     x[n+1-i]=xm+xl*z;
37     w[i]=2*xl/((1-z*z)*pp*pp);
38     w[n+1-i]=w[i];
39     }
40     }
41 francois 754
42    
43    
44    
45    
46     int OT_POINTS_GAUSS::get_nb_point_seg(int degre)
47     {
48     if (degre<2) return 1;
49     if (degre<4) return 2;
50     if (degre<6) return 3;
51     if (degre<8) return 4;
52     if (degre<10) return 5;
53     if (degre<12) return 6;
54     if (degre<14) return 7;
55     return 0;
56     }
57    
58 francois 757
59    
60     int OT_POINTS_GAUSS::get_degre_gauss_seg(int num)
61     {
62     if (num<2) return 1;
63     if (num<3) return 3;
64     if (num<4) return 7;
65     if (num<5) return 9;
66     if (num<6) return 11;
67     if (num<7) return 13;
68     if (num<8) return 15;
69     return 0;
70     }
71    
72    
73    
74 francois 754 int OT_POINTS_GAUSS::get_nb_point_tri(int degre)
75     {
76     if (degre<2) return 1;
77     if (degre<3) return 3;
78     if (degre<4) return 4;
79     if (degre<5) return 6;
80     if (degre<6) return 7;
81 francois 757 return 0;
82     }
83 francois 754
84 francois 757 int OT_POINTS_GAUSS::get_degre_gauss_tri(int num)
85     {
86     if (num<2) return 1;
87     if (num<4) return 2;
88     if (num<6) return 3;
89     if (num<7) return 4;
90     if (num<8) return 5;
91     return 0;
92     }
93    
94 francois 754 int OT_POINTS_GAUSS::get_nb_point_quad(int degre)
95     {
96     if (degre<3) return 3;
97     if (degre<4) return 4;
98     if (degre<6) return 7;
99     return 0;
100     }
101 francois 757
102     int OT_POINTS_GAUSS::get_degre_gauss_quad(int num)
103     {
104     if (num<4) return 2;
105     if (num<5) return 3;
106     if (num<8) return 5;
107     return 0;
108     }
109    
110    
111 francois 754 int OT_POINTS_GAUSS::get_nb_point_quad_prod(int degre)
112     {
113     if (degre<2) return 1;
114     if (degre<4) return 4;
115     if (degre<6) return 9;
116     return 0;
117     }
118 francois 757
119     int OT_POINTS_GAUSS::get_degre_gauss_quad_prod(int num)
120     {
121     if (num<2) return 1;
122     if (num<5) return 3;
123     if (num<10) return 5;
124     return 0;
125     }
126    
127 francois 754 int OT_POINTS_GAUSS::get_nb_point_tetra(int degre)
128     {
129     if (degre<2) return 1;
130     if (degre<3) return 4;
131     if (degre<4) return 5;
132     if (degre<6) return 15;
133 francois 757 return 0;
134     }
135 francois 754
136 francois 757 int OT_POINTS_GAUSS::get_degre_gauss_tetra(int num)
137     {
138     if (num<2) return 1;
139     if (num<5) return 2;
140     if (num<6) return 3;
141     if (num<16) return 5;
142     return 0;
143     }
144    
145 francois 754 int OT_POINTS_GAUSS::get_nb_point_hexa(int degre)
146     {
147     if (degre<3) return 4;
148     if (degre<4) return 6;
149     if (degre<6) return 14;
150     return 0;
151     }
152    
153 francois 757 int OT_POINTS_GAUSS::get_degre_gauss_hexa(int num)
154     {
155     if (num<5) return 2;
156     if (num<7) return 3;
157     if (num<15) return 5;
158     return 0;
159     }
160    
161 francois 754 int OT_POINTS_GAUSS::get_nb_point_hexa_prod(int degre)
162     {
163     if (degre<2) return 1;
164     if (degre<4) return 8;
165     if (degre<6) return 27;
166     return 0;
167     }
168    
169 francois 757 int OT_POINTS_GAUSS::get_degre_gauss_hexa_prod(int num)
170     {
171     if (num<2) return 1;
172     if (num<9) return 3;
173     if (num<28) return 5;
174     return 0;
175     }
176    
177    
178    
179    
180 francois 754 void OT_POINTS_GAUSS::get_pt_gauss_seg(int degre,int num,double &w,double *u)
181     {
182     if (degre<2)
183     {
184     if (num==0) {w=2;u[0]=0;}
185     return;
186     }
187     if (degre<4)
188     {
189     if (num==0) {w=1;u[0]=0.577350269189626;}
190     if (num==1) {w=1;u[0]=-0.577350269189626;}
191     return;
192     }
193     if (degre<6)
194     {
195     if (num==0) {w=0.555555555555556;u[0]=-0.774596669241483;}
196     if (num==1) {w=0.888888888888889;u[0]=0.;}
197     if (num==2) {w=0.555555555555556;u[0]=0.774596669241483;}
198     return;
199     }
200     if (degre<8)
201     {
202     if (num==0) {w=0.652145154862546;u[0]=0.339981043584856;}
203     if (num==1) {w=0.652145154862546;u[0]=-0.339981043584856;}
204     if (num==2) {w=0.347854845137454;u[0]=0.861136311594053;}
205     if (num==3) {w=0.347854845137454;u[0]=-0.861136311594053;}
206     return;
207     }
208     // limite conformite code aster
209     if (degre<10)
210     {
211     if (num==0) {w=0.568888888888889;u[0]=0.;}
212     if (num==1) {w=0.478628670499366;u[0]=-0.538469310105683;}
213     if (num==2) {w=0.478628670499366;u[0]=0.538469310105683;}
214     if (num==3) {w=0.236926885056189;u[0]=-0.906179845938664;}
215     if (num==4) {w=0.236926885056189;u[0]=0.906179845938664;}
216     return;
217     }
218     if (degre<12)
219     {
220     if (num==0) {w=0.467913934572691;u[0]=-0.238619186083197;}
221     if (num==1) {w=0.467913934572691;u[0]=0.238619186083197;}
222     if (num==2) {w=0.360761573048139;u[0]=-0.661209386466265;}
223     if (num==3) {w=0.360761573048139;u[0]=0.661209386466265;}
224     if (num==4) {w=0.171324492379170;u[0]=-0.932469514203152;}
225     if (num==5) {w=0.171324492379170;u[0]=0.932469514203152;}
226     return;
227     }
228     if (degre<14)
229     {
230     if (num==0) {w=0.417959183673469;u[0]=0;}
231     if (num==1) {w=0.381830050505119;u[0]=-0.405845151377397;}
232     if (num==2) {w=0.381830050505119;u[0]=0.405845151377397;}
233     if (num==3) {w=0.279705391489277;u[0]=-0.741531185599394;}
234     if (num==4) {w=0.279705391489277;u[0]=0.741531185599394;}
235     if (num==5) {w=0.129484966168870;u[0]=-0.949107912342759;}
236     if (num==6) {w=0.129484966168870;u[0]=0.949107912342759;}
237     return;
238     }
239     }
240    
241    
242     void OT_POINTS_GAUSS::get_pt_gauss_tri(int degre, int num, double& w, double* uv)
243     {
244     if (degre<2)
245     {
246     if (num==0) {w=0.5;uv[0]=0.333333333333333;uv[1]=0.333333333333333;}
247     return;
248     }
249     if (degre<3)
250     {
251     if (num==0) {w=0.166666666666667;uv[0]=0.166666666666667;uv[1]=0.166666666666667;}
252     if (num==1) {w=0.166666666666667;uv[0]=0.666666666666667;uv[1]=0.166666666666667;}
253     if (num==2) {w=0.166666666666667;uv[0]=0.166666666666667;uv[1]=0.666666666666667;}
254     return;
255     }
256     if (degre<4)
257     {
258     if (num==0) {w=0.260416666666667;uv[0]=0.2;uv[1]=0.2;}
259     if (num==1) {w=0.260416666666667;uv[0]=0.6;uv[1]=0.2;}
260     if (num==2) {w=0.260416666666667;uv[0]=0.2;uv[1]=0.6;}
261     if (num==3) {w=-0.28125;uv[0]=0.333333333333333;uv[1]=0.333333333333333;}
262     return;
263     }
264     if (degre<5)
265     {
266     if (num==0) {w=0.054975871827661;uv[0]=0.091576213509771;uv[1]=0.091576213509771;}
267     if (num==1) {w=0.054975871827661;uv[0]=0.816847572980458;uv[1]=0.091576213509771;}
268     if (num==2) {w=0.054975871827661;uv[0]=0.091576213509771;uv[1]=0.816847572980458;}
269     if (num==3) {w=0.111690794839005;uv[0]=0.445948490915965;uv[1]=0.445948490915965;}
270     if (num==4) {w=0.111690794839005;uv[0]=0.445948490915965;uv[1]=0.108103018168070;}
271     if (num==5) {w=0.111690794839005;uv[0]=0.108103018168070;uv[1]=0.445948490915965;}
272     return;
273     }
274     if (degre<6)
275     {
276     if (num==0) {w=0.1125;uv[0]=0.333333333333333;uv[1]=0.333333333333333;}
277     if (num==1) {w=0.066197076394253;uv[0]=0.470142064105115;uv[1]=0.470142064105115;}
278     if (num==2) {w=0.066197076394253;uv[0]=0.059715871789770;uv[1]=0.470142064105115;}
279     if (num==3) {w=0.066197076394253;uv[0]=0.470142064105115;uv[1]=0.059715871789770;}
280     if (num==4) {w=0.062969590272413;uv[0]=0.101286507323456;uv[1]=0.101286507323456;}
281     if (num==5) {w=0.062969590272413;uv[0]=0.797426985353088;uv[1]=0.101286507323456;}
282     if (num==6) {w=0.062969590272413;uv[0]=0.101286507323456;uv[1]=0.797426985353088;}
283     return;
284     }
285     }
286    
287 francois 757
288    
289    
290    
291 francois 754 void OT_POINTS_GAUSS::get_pt_gauss_tet(int degre, int num, double& w, double* uvw)
292     {
293     if (degre<2)
294     {
295     if (num==0) {w=0.166666666666667;uvw[0]=0.25;uvw[1]=0.25;uvw[2]=0.25;}
296     return;
297     }
298     if (degre<3)
299     {
300     if (num==0) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.138196601125011;uvw[2]=0.138196601125011;}
301     if (num==1) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.138196601125011;uvw[2]=0.585410196624968;}
302     if (num==2) {w=0.041666666666667;uvw[0]=0.138196601125011;uvw[1]=0.585410196624968;uvw[2]=0.138196601125011;}
303     if (num==3) {w=0.041666666666667;uvw[0]=0.585410196624968;uvw[1]=0.138196601125011;uvw[2]=0.138196601125011;}
304     return;
305     }
306     if (degre<4)
307     {
308     if (num==0) {w=-0.133333333333333;uvw[0]=0.25;uvw[1]=0.25;uvw[2]=0.25;}
309     if (num==1) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.166666666666667;uvw[2]=0.166666666666667;}
310     if (num==2) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.166666666666667;uvw[2]=0.5;}
311     if (num==3) {w=0.075;uvw[0]=0.166666666666667;uvw[1]=0.5;uvw[2]=0.166666666666667;}
312     if (num==4) {w=0.075;uvw[0]=0.5;uvw[1]=0.166666666666667;uvw[2]=0.166666666666667;}
313     return;
314     }
315     if (degre<6)
316     {
317     double a=0.25;
318     double b1=0.3197936278;
319     double b2=0.0919710781;
320     double c2=0.7240867658;
321     double c1=0.0406191165;
322     double d=0.0563508327;
323     double e=0.4436491673;
324     double w1=0.0197530864;
325     double w3=0.011989514;
326     double w2=0.0115113679;
327     double w4=0.0088183422;
328     if (num==0) {w=w1;uvw[0]=a;uvw[1]=a;uvw[2]=a;}
329     if (num==1) {w=w2;uvw[0]=b1;uvw[1]=b1;uvw[2]=b1;}
330     if (num==2) {w=w2;uvw[0]=b1;uvw[1]=b1;uvw[2]=c1;}
331     if (num==3) {w=w2;uvw[0]=b1;uvw[1]=c1;uvw[2]=b1;}
332     if (num==4) {w=w2;uvw[0]=c1;uvw[1]=b1;uvw[2]=b1;}
333     if (num==5) {w=w3;uvw[0]=b2;uvw[1]=b2;uvw[2]=b2;}
334     if (num==6) {w=w3;uvw[0]=b2;uvw[1]=b2;uvw[2]=c2;}
335     if (num==7) {w=w3;uvw[0]=b2;uvw[1]=c2;uvw[2]=b2;}
336     if (num==8) {w=w3;uvw[0]=c2;uvw[1]=b2;uvw[2]=b2;}
337     if (num==9) {w=w4;uvw[0]=d;uvw[1]=d;uvw[2]=e;}
338     if (num==10) {w=w4;uvw[0]=d;uvw[1]=e;uvw[2]=d;}
339     if (num==11) {w=w4;uvw[0]=e;uvw[1]=d;uvw[2]=d;}
340     if (num==12) {w=w4;uvw[0]=d;uvw[1]=e;uvw[2]=e;}
341     if (num==13) {w=w4;uvw[0]=e;uvw[1]=d;uvw[2]=e;}
342     if (num==14) {w=w4;uvw[0]=e;uvw[1]=e;uvw[2]=d;}
343     return;
344     }
345     }
346    
347     void OT_POINTS_GAUSS::get_pt_gauss_qua(int degre, int num, double& w, double* uv)
348     {
349     if (degre<3)
350     {
351     if (num==0) {w=1.333333333333333;uv[0]=0.816496580927726;uv[1]=0.;}
352     if (num==1) {w=1.333333333333333;uv[0]=-0.408248290463863;uv[1]=-0.707106781186548;}
353     if (num==2) {w=1.333333333333333;uv[0]=-0.408248290463863;uv[1]=0.707106781186548;}
354     return;
355     }
356     if (degre<4)
357     {
358     if (num==0) {w=1.;uv[0]=0.816496580927726;uv[1]=0.;}
359     if (num==1) {w=1.;uv[0]=-0.816496580927726;uv[1]=0.;}
360     if (num==2) {w=1.;uv[0]=0.;uv[1]=0.816496580927726;}
361     if (num==3) {w=1.;uv[0]=0.;uv[1]=-0.816496580927726;}
362     return;
363     }
364     if (degre<6)
365     {
366     if (num==0) {w=1.142857142857140;uv[0]=0.;uv[1]=0.;}
367     if (num==1) {w=0.317460317460317;uv[0]=0.;uv[1]=0.966091783079296;}
368     if (num==2) {w=0.317460317460317;uv[0]=0.;uv[1]=-0.966091783079296;}
369     if (num==3) {w=0.555555555555556;uv[0]=0.774596669241483;uv[1]=-0.577350269189626;}
370     if (num==4) {w=0.555555555555556;uv[0]=-0.774596669241483;uv[1]=-0.577350269189626;}
371     if (num==5) {w=0.555555555555556;uv[0]=-0.774596669241483;uv[1]=0.577350269189626;}
372     if (num==6) {w=0.555555555555556;uv[0]=0.774596669241483;uv[1]=0.577350269189626;}
373     return;
374     }
375     }
376    
377     void OT_POINTS_GAUSS::get_pt_gauss_qua_prod(int degre, int num, double& w, double* uv)
378     {
379     if (degre<2)
380     {
381     if (num==0) {w=4.0;uv[0]=0.;uv[1]=0.;}
382     return;
383     }
384     if (degre<4)
385     {
386     if (num==0) {w=1.;uv[0]=-0.577350269189626;uv[1]=-0.577350269189626;}
387     if (num==0) {w=1.;uv[0]=0.577350269189626;uv[1]=-0.577350269189626;}
388     if (num==0) {w=1.;uv[0]=0.577350269189626;uv[1]=0.577350269189626;}
389     if (num==0) {w=1.;uv[0]=-0.577350269189626;uv[1]=0.577350269189626;}
390     return;
391     }
392     if (degre<6)
393     {
394     double a=0.774596669241483;
395     if (num==0) {w=25./81.;uv[0]=-a;uv[1]=-a;}
396     if (num==1) {w=25./81.;uv[0]=a;uv[1]=-a;}
397     if (num==2) {w=25./81.;uv[0]=a;uv[1]=a;}
398     if (num==3) {w=25./81.;uv[0]=-a;uv[1]=a;}
399     if (num==4) {w=40./81.;uv[0]=0.;uv[1]=-a;}
400     if (num==5) {w=40./81.;uv[0]=a;uv[1]=0.;}
401     if (num==6) {w=40./81.;uv[0]=0.;uv[1]=a;}
402     if (num==7) {w=40./81.;uv[0]=-a;uv[1]=0.;}
403     if (num==8) {w=64./81.;uv[0]=0.;uv[1]=0.;}
404     return;
405     }
406     }
407    
408    
409     void OT_POINTS_GAUSS::get_pt_gauss_hex_prod(int degre, int num, double& w, double* uvw)
410     {
411     if (degre<2)
412     {
413     if (num==0) {w=8.0;uvw[0]=0.;uvw[1]=0.;uvw[2]=0.;}
414     return;
415     }
416     if (degre<4)
417     {
418     double a=0.577350269189626;
419     if (num==0) {w=1.0;uvw[0]=-a;uvw[1]=-a;uvw[2]=-a;}
420     if (num==1) {w=1.0;uvw[0]=-a;uvw[1]=-a;uvw[2]=a;}
421     if (num==2) {w=1.0;uvw[0]=-a;uvw[1]=a;uvw[2]=-a;}
422     if (num==3) {w=1.0;uvw[0]=-a;uvw[1]=a;uvw[2]=a;}
423     if (num==4) {w=1.0;uvw[0]=a;uvw[1]=-a;uvw[2]=-a;}
424     if (num==5) {w=1.0;uvw[0]=a;uvw[1]=-a;uvw[2]=a;}
425     if (num==6) {w=1.0;uvw[0]=a;uvw[1]=a;uvw[2]=-a;}
426     if (num==7) {w=1.0;uvw[0]=a;uvw[1]=a;uvw[2]=a;}
427     return;
428     }
429     if (degre<6)
430     {
431     double a=0.774596669241483;
432     double c1=0.555555555555556;
433     double c2=0.888888888888889;
434     if (num==0) {w=c1*c1*c1;uvw[0]=-a;uvw[1]=-a;uvw[2]=-a;}
435     if (num==1) {w=c1*c1*c2;uvw[0]=-a;uvw[1]=-a;uvw[2]=0.;}
436     if (num==2) {w=c1*c1*c1;uvw[0]=-a;uvw[1]=-a;uvw[2]=a;}
437     if (num==3) {w=c1*c1*c2;uvw[0]=-a;uvw[1]=0.;uvw[2]=-a;}
438     if (num==4) {w=c1*c2*c2;uvw[0]=-a;uvw[1]=0.;uvw[2]=0.;}
439     if (num==5) {w=c1*c1*c2;uvw[0]=-a;uvw[1]=0.;uvw[2]=a;}
440     if (num==6) {w=c1*c1*c1;uvw[0]=-a;uvw[1]=a;uvw[2]=-a;}
441     if (num==7) {w=c1*c1*c2;uvw[0]=-a;uvw[1]=a;uvw[2]=0.;}
442     if (num==8) {w=c1*c1*c1;uvw[0]=-a;uvw[1]=a;uvw[2]=a;}
443     if (num==9) {w=c1*c1*c2;uvw[0]=0.;uvw[1]=-a;uvw[2]=-a;}
444     if (num==10) {w=c1*c2*c2;uvw[0]=0.;uvw[1]=-a;uvw[2]=0.;}
445     if (num==11) {w=c1*c1*c2;uvw[0]=0.;uvw[1]=-a;uvw[2]=a;}
446     if (num==12) {w=c1*c2*c2;uvw[0]=0.;uvw[1]=0.;uvw[2]=-a;}
447     if (num==13) {w=c2*c2*c2;uvw[0]=0.;uvw[1]=0.;uvw[2]=0.;}
448     if (num==14) {w=c1*c2*c2;uvw[0]=0.;uvw[1]=0.;uvw[2]=a;}
449     if (num==15) {w=c1*c1*c2;uvw[0]=0.;uvw[1]=a;uvw[2]=-a;}
450     if (num==16) {w=c1*c2*c2;uvw[0]=0.;uvw[1]=a;uvw[2]=0.;}
451     if (num==17) {w=c1*c1*c2;uvw[0]=0.;uvw[1]=a;uvw[2]=a;}
452     if (num==18) {w=c1*c1*c1;uvw[0]=a;uvw[1]=-a;uvw[2]=-a;}
453     if (num==19) {w=c1*c1*c2;uvw[0]=a;uvw[1]=-a;uvw[2]=0.;}
454     if (num==20) {w=c1*c1*c1;uvw[0]=a;uvw[1]=-a;uvw[2]=a;}
455     if (num==21) {w=c1*c1*c2;uvw[0]=a;uvw[1]=0.;uvw[2]=-a;}
456     if (num==22) {w=c1*c2*c2;uvw[0]=a;uvw[1]=0.;uvw[2]=0.;}
457     if (num==23) {w=c1*c1*c2;uvw[0]=a;uvw[1]=0.;uvw[2]=a;}
458     if (num==24) {w=c1*c1*c1;uvw[0]=a;uvw[1]=a;uvw[2]=-a;}
459     if (num==25) {w=c1*c1*c2;uvw[0]=a;uvw[1]=a;uvw[2]=0.;}
460     if (num==26) {w=c1*c1*c1;uvw[0]=a;uvw[1]=a;uvw[2]=a;}
461     return;
462     }
463     }
464    
465    
466    
467     void OT_POINTS_GAUSS::get_pt_gauss_hex(int degre, int num, double& w, double* uvw)
468     {
469     if (degre<3)
470     {
471     if (num==0) {w=2.;uvw[0]=0.;uvw[1]=0.816496580927726;uvw[2]=-0,577350269189626;}
472     if (num==1) {w=2.;uvw[0]=0.;uvw[1]=-0.816496580927726;uvw[2]=-0,577350269189626;}
473     if (num==2) {w=2.;uvw[0]=-0.816496580927726;uvw[1]=0.;uvw[2]=0,577350269189626;}
474     if (num==2) {w=2.;uvw[0]=0.816496580927726;uvw[1]=0.;uvw[2]=0,577350269189626;}
475     return;
476     }
477     if (degre<4)
478     {
479     if (num==0) {w=1.333333333333333;uvw[0]=1.;uvw[1]=0.;uvw[2]=0.;}
480     if (num==1) {w=1.333333333333333;uvw[0]=-1.;uvw[1]=0.;uvw[2]=0.;}
481     if (num==2) {w=1.333333333333333;uvw[0]=0.;uvw[1]=1.;uvw[2]=0.;}
482     if (num==3) {w=1.333333333333333;uvw[0]=0.;uvw[1]=-1.;uvw[2]=0.;}
483     if (num==4) {w=1.333333333333333;uvw[0]=0.;uvw[1]=0.;uvw[2]=1.;}
484     if (num==5) {w=1.333333333333333;uvw[0]=0.;uvw[1]=0.;uvw[2]=-1.;}
485     return;
486     }
487     if (degre<6)
488     {
489     double a=0.795822425754221;
490     double b=0.758786910639328;
491     double w1=0.886426592797784;
492     double w2=0.335180055401662;
493     if (num==0) {w=w1;uvw[0]=a;uvw[1]=0.;uvw[2]=0.;}
494     if (num==1) {w=w1;uvw[0]=-a;uvw[1]=0.;uvw[2]=0.;}
495     if (num==2) {w=w1;uvw[0]=0.;uvw[1]=a;uvw[2]=0.;}
496     if (num==3) {w=w1;uvw[0]=0.;uvw[1]=-a;uvw[2]=0.;}
497     if (num==4) {w=w1;uvw[0]=0.;uvw[1]=0.;uvw[2]=a;}
498     if (num==5) {w=w1;uvw[0]=0.;uvw[1]=0.;uvw[2]=-a;}
499     if (num==6) {w=w2;uvw[0]=b;uvw[1]=b;uvw[2]=b;}
500     if (num==7) {w=w2;uvw[0]=b;uvw[1]=-b;uvw[2]=-b;}
501     if (num==8) {w=w2;uvw[0]=b;uvw[1]=b;uvw[2]=-b;}
502     if (num==9) {w=w2;uvw[0]=b;uvw[1]=-b;uvw[2]=b;}
503     if (num==10) {w=w2;uvw[0]=-b;uvw[1]=b;uvw[2]=b;}
504     if (num==11) {w=w2;uvw[0]=-b;uvw[1]=-b;uvw[2]=-b;}
505     if (num==12) {w=w2;uvw[0]=-b;uvw[1]=b;uvw[2]=-b;}
506     if (num==13) {w=w2;uvw[0]=-b;uvw[1]=-b;uvw[2]=b;}
507     return;
508     }
509    
510     }