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 |
|
|
} |