The TELEMAC-MASCARET system  trunk
char_gauss.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE char_gauss
3 ! *********************
4 !
5  &(xconv,yconv,zconv,shp,shz,elt,eta,x,y,ikle,npoin,nelem,nelmax,
6  & ng,ngauss,ielm,nplan,zstar)
7 !
8 !***********************************************************************
9 ! BIEF V6P3 21/08/2010
10 !***********************************************************************
11 !
12 !brief Prepares the data on advected Gauss points for the weak form
13 !+ of the method of characteristics.
14 !
15 !history J-M HERVOUET (EDF R&D, LNHE)
16 !+ 18/06/2013
17 !+ V6P3
18 !+ First version.
19 !
20 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21 !| ELT |<--| STARTING ELEMENT OF GAUSS POINTS
22 !| IELM |-->| TYPE OF ELEMENT
23 !| IKLE |-->| CONNECTIVITY TABLE FOR ALL POINTS
24 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
25 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS IN THE MESH
26 !| NG |-->| TOTAL NUMBER OF GAUSS POINTS IN THE MESH
27 !| NGAUSS |-->| NUMBER OF GAUSS POINTS PER ELEMENT
28 !| NLAN |-->| NUMBER OF PLANES IN THE MESH IN 3D
29 !| NPOIN |-->| NUMBER OF POINTS IN THE MESH
30 !| SHP |<--| BARYCENTRIC COORDINATES OF GAUSS POINTS
31 !| XCONV |<--| ABSCISSAE OF GAUSS POINTS
32 !| YCONV |<--| ORDINATES OF GAUSS POINTS
33 !| ZCONV |<--| TRANSFORMED ELEVATIONS OF GAUSS POINTS
34 !| X |-->| ABSCISSAE OF MESH POINTS
35 !| Y |-->| ORDINATES OF MESH POINTS
36 !| ZSTAR |-->| TRANSFORMED ELEVATIONS OF MESH POINTS
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !
39  USE bief
40 !
42  IMPLICIT NONE
43 !
44 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45 !
46  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,NG,IELM
47  INTEGER, INTENT(IN) :: NPLAN,NGAUSS
48 ! HERE IKLE2
49  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
50  INTEGER, INTENT(INOUT) :: ELT(ng),ETA(ng)
51  DOUBLE PRECISION, INTENT(IN) :: X(npoin*nplan)
52  DOUBLE PRECISION, INTENT(IN) :: Y(npoin*nplan)
53  DOUBLE PRECISION, INTENT(IN) :: ZSTAR(nplan)
54  DOUBLE PRECISION, INTENT(INOUT) :: XCONV(ng),YCONV(ng),ZCONV(*)
55  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,ng)
56  DOUBLE PRECISION, INTENT(INOUT) :: SHZ(*)
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER IELEM,I1,I2,I3,IG,IPLAN
61  DOUBLE PRECISION TIERS,A,B,C,D
62  tiers=1.d0/3.d0
63 !
64 !-----------------------------------------------------------------------
65 !
66  IF(ng.NE.nelem*ngauss.AND.ielm.EQ.11) THEN
67  WRITE(lu,*) 'CHAR_GAUSS: BAD NUMBER OF POINTS'
68  WRITE(lu,*) 'NG=',ng,' NELEM=',nelem,' NGAUSS=',ngauss
69  CALL plante(1)
70  stop
71  ELSEIF(ng.NE.nelem*(nplan-1)*ngauss.AND.ielm.EQ.41) THEN
72  WRITE(lu,*) 'CHAR_GAUSS: BAD NUMBER OF POINTS'
73  WRITE(lu,*) 'NG=',ng,' NELEM=',nelem,' NGAUSS=',ngauss
74  WRITE(lu,*) 'NPLAN=',nplan
75  CALL plante(1)
76  stop
77  ENDIF
78 !
79 !-----------------------------------------------------------------------
80 !
81  IF(ngauss.EQ.1.AND.ielm.EQ.11) THEN
82 !
83  DO ielem=1,nelem
84  i1=ikle(ielem,1)
85  i2=ikle(ielem,2)
86  i3=ikle(ielem,3)
87  xconv(ielem)=(x(i1)+x(i2)+x(i3))*tiers
88  yconv(ielem)=(y(i1)+y(i2)+y(i3))*tiers
89  shp(1,ielem)=tiers
90  shp(2,ielem)=tiers
91  shp(3,ielem)=tiers
92  elt(ielem)=ielem
93  ENDDO
94 !
95  ELSEIF(ngauss.EQ.3.AND.ielm.EQ.11) THEN
96 !
97  ig=0
98  DO ielem=1,nelem
99  i1=ikle(ielem,1)
100  i2=ikle(ielem,2)
101  i3=ikle(ielem,3)
102  ig=ig+1
103  shp(1,ig)=1.d0-1.d0/6.d0-1.d0/6.d0
104  shp(2,ig)=1.d0/6.d0
105  shp(3,ig)=1.d0/6.d0
106  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
107  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
108  elt(ig)=ielem
109  ig=ig+1
110  shp(1,ig)=1.d0-2.d0/3.d0-1.d0/6.d0
111  shp(2,ig)=2.d0/3.d0
112  shp(3,ig)=1.d0/6.d0
113  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
114  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
115  elt(ig)=ielem
116  ig=ig+1
117  shp(1,ig)=1.d0-1.d0/6.d0-2.d0/3.d0
118  shp(2,ig)=1.d0/6.d0
119  shp(3,ig)=2.d0/3.d0
120  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
121  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
122  elt(ig)=ielem
123  ENDDO
124 !
125  ELSEIF(ngauss.EQ.4.AND.ielm.EQ.11) THEN
126 !
127  ig=0
128  DO ielem=1,nelem
129  i1=ikle(ielem,1)
130  i2=ikle(ielem,2)
131  i3=ikle(ielem,3)
132  ig=ig+1
133  shp(1,ig)=1.d0-1.d0/3.d0-1.d0/3.d0
134  shp(2,ig)=1.d0/3.d0
135  shp(3,ig)=1.d0/3.d0
136  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
137  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
138  elt(ig)=ielem
139  ig=ig+1
140  shp(1,ig)=1.d0-1.d0/5.d0-1.d0/5.d0
141  shp(2,ig)=1.d0/5.d0
142  shp(3,ig)=1.d0/5.d0
143  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
144  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
145  elt(ig)=ielem
146  ig=ig+1
147  shp(1,ig)=1.d0-3.d0/5.d0-1.d0/5.d0
148  shp(2,ig)=3.d0/5.d0
149  shp(3,ig)=1.d0/5.d0
150  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
151  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
152  elt(ig)=ielem
153  ig=ig+1
154  shp(1,ig)=1.d0-1.d0/5.d0-3.d0/5.d0
155  shp(2,ig)=1.d0/5.d0
156  shp(3,ig)=3.d0/5.d0
157  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
158  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
159  elt(ig)=ielem
160  ENDDO
161 !
162  ELSEIF(ngauss.EQ.6.AND.ielm.EQ.11) THEN
163 !
164  a=0.445948490915965d0
165  b=0.091576213509771d0
166 !
167  ig=0
168  DO ielem=1,nelem
169  i1=ikle(ielem,1)
170  i2=ikle(ielem,2)
171  i3=ikle(ielem,3)
172  ig=ig+1
173  shp(1,ig)=1.d0-a-a
174  shp(2,ig)=a
175  shp(3,ig)=a
176  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
177  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
178  elt(ig)=ielem
179  ig=ig+1
180  shp(1,ig)=a
181  shp(2,ig)=1.d0-a-a
182  shp(3,ig)=a
183  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
184  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
185  elt(ig)=ielem
186  ig=ig+1
187  shp(1,ig)=a
188  shp(2,ig)=a
189  shp(3,ig)=1.d0-a-a
190  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
191  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
192  elt(ig)=ielem
193  ig=ig+1
194  shp(1,ig)=1.d0-b-b
195  shp(2,ig)=b
196  shp(3,ig)=b
197  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
198  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
199  elt(ig)=ielem
200  ig=ig+1
201  shp(1,ig)=b
202  shp(2,ig)=1.d0-b-b
203  shp(3,ig)=b
204  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
205  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
206  elt(ig)=ielem
207  ig=ig+1
208  shp(1,ig)=b
209  shp(2,ig)=b
210  shp(3,ig)=1.d0-b-b
211  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
212  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
213  elt(ig)=ielem
214  ENDDO
215 !
216  ELSEIF(ngauss.EQ.7.AND.ielm.EQ.11) THEN
217 !
218  a=(6.d0+sqrt(15.d0))/21.d0
219  b=4.d0/7.d0-a
220 !
221  ig=0
222  DO ielem=1,nelem
223  i1=ikle(ielem,1)
224  i2=ikle(ielem,2)
225  i3=ikle(ielem,3)
226  ig=ig+1
227  shp(1,ig)=tiers
228  shp(2,ig)=tiers
229  shp(3,ig)=tiers
230  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
231  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
232  elt(ig)=ielem
233  ig=ig+1
234  shp(1,ig)=1.d0-a-a
235  shp(2,ig)=a
236  shp(3,ig)=a
237  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
238  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
239  elt(ig)=ielem
240  ig=ig+1
241  shp(1,ig)=a
242  shp(2,ig)=1.d0-a-a
243  shp(3,ig)=a
244  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
245  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
246  elt(ig)=ielem
247  ig=ig+1
248  shp(1,ig)=a
249  shp(2,ig)=a
250  shp(3,ig)=1.d0-a-a
251  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
252  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
253  elt(ig)=ielem
254  ig=ig+1
255  shp(1,ig)=1.d0-b-b
256  shp(2,ig)=b
257  shp(3,ig)=b
258  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
259  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
260  elt(ig)=ielem
261  ig=ig+1
262  shp(1,ig)=b
263  shp(2,ig)=1.d0-b-b
264  shp(3,ig)=b
265  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
266  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
267  elt(ig)=ielem
268  ig=ig+1
269  shp(1,ig)=b
270  shp(2,ig)=b
271  shp(3,ig)=1.d0-b-b
272  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
273  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
274  elt(ig)=ielem
275  ENDDO
276 !
277  ELSEIF(ngauss.EQ.12.AND.ielm.EQ.11) THEN
278 !
279  a=0.063089014491502d0
280  b=0.249286745170910d0
281  c=0.310352451033785d0
282  d=0.053145049844816d0
283 !
284  ig=0
285  DO ielem=1,nelem
286  i1=ikle(ielem,1)
287  i2=ikle(ielem,2)
288  i3=ikle(ielem,3)
289  ig=ig+1
290  shp(1,ig)=1.d0-a-a
291  shp(2,ig)=a
292  shp(3,ig)=a
293  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
294  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
295  elt(ig)=ielem
296  ig=ig+1
297  shp(1,ig)=a
298  shp(2,ig)=1.d0-a-a
299  shp(3,ig)=a
300  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
301  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
302  elt(ig)=ielem
303  ig=ig+1
304  shp(1,ig)=a
305  shp(2,ig)=a
306  shp(3,ig)=1.d0-a-a
307  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
308  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
309  elt(ig)=ielem
310  ig=ig+1
311  shp(1,ig)=1.d0-b-b
312  shp(2,ig)=b
313  shp(3,ig)=b
314  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
315  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
316  elt(ig)=ielem
317  ig=ig+1
318  shp(1,ig)=b
319  shp(2,ig)=1.d0-b-b
320  shp(3,ig)=b
321  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
322  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
323  elt(ig)=ielem
324  ig=ig+1
325  shp(1,ig)=b
326  shp(2,ig)=b
327  shp(3,ig)=1.d0-b-b
328  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
329  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
330  elt(ig)=ielem
331  ig=ig+1
332  shp(1,ig)=1.d0-c-d
333  shp(2,ig)=c
334  shp(3,ig)=d
335  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
336  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
337  elt(ig)=ielem
338  ig=ig+1
339  shp(1,ig)=1.d0-c-d
340  shp(2,ig)=d
341  shp(3,ig)=c
342  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
343  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
344  elt(ig)=ielem
345  ig=ig+1
346  shp(1,ig)=d
347  shp(2,ig)=1.d0-c-d
348  shp(3,ig)=c
349  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
350  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
351  elt(ig)=ielem
352  ig=ig+1
353  shp(1,ig)=c
354  shp(2,ig)=1.d0-c-d
355  shp(3,ig)=d
356  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
357  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
358  elt(ig)=ielem
359  ig=ig+1
360  shp(1,ig)=d
361  shp(2,ig)=c
362  shp(3,ig)=1.d0-c-d
363  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
364  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
365  elt(ig)=ielem
366  ig=ig+1
367  shp(1,ig)=c
368  shp(2,ig)=d
369  shp(3,ig)=1.d0-c-d
370  xconv(ig)=shp(1,ig)*x(i1)+shp(2,ig)*x(i2)+shp(3,ig)*x(i3)
371  yconv(ig)=shp(1,ig)*y(i1)+shp(2,ig)*y(i2)+shp(3,ig)*y(i3)
372  elt(ig)=ielem
373  ENDDO
374 !
375  ELSEIF(ngauss.EQ.6.AND.ielm.EQ.41) THEN
376 !
377  IF(ng.NE.6*nelem*(nplan-1)) THEN
378  WRITE(lu,*) 'CHAR_GAUSS: BAD NUMBER OF POINTS'
379  WRITE(lu,*) 'NG=',ng
380  WRITE(lu,*) '6*NELEM*(NPLAN-1)=',6*nelem*nplan
381  CALL plante(1)
382  stop
383  ENDIF
384 !
385  ig=0
386 !
387  a=1.d0/6.d0
388  b=2.d0/3.d0
389  c=0.5d0*(1.d0-1.d0/sqrt(3.d0))
390  d=0.5d0*(1.d0+1.d0/sqrt(3.d0))
391 !
392  DO iplan=1,nplan-1
393  DO ielem=1,nelem
394  i1=ikle(ielem,1)
395  i2=ikle(ielem,2)
396  i3=ikle(ielem,3)
397 !
398  ig=ig+1
399  shp(1,ig)=(1.d0-a-a)
400  shp(2,ig)=a
401  shp(3,ig)=a
402  shz(ig)=c
403  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
404  & +shp(2,ig)*x(i2)
405  & +shp(3,ig)*x(i3) )
406  & +shz(ig) *( shp(1,ig)*x(i1)
407  & +shp(2,ig)*x(i2)
408  & +shp(3,ig)*x(i3) )
409  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
410  & +shp(2,ig)*y(i2)
411  & +shp(3,ig)*y(i3) )
412  & +shz(ig) *( shp(1,ig)*y(i1)
413  & +shp(2,ig)*y(i2)
414  & +shp(3,ig)*y(i3) )
415  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
416  & +shz(ig) *zstar(iplan+1)
417  elt(ig)=ielem
418  eta(ig)=iplan
419 !
420  ig=ig+1
421  shp(1,ig)=(1.d0-b-a)
422  shp(2,ig)=b
423  shp(3,ig)=a
424  shz(ig)=c
425  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
426  & +shp(2,ig)*x(i2)
427  & +shp(3,ig)*x(i3) )
428  & +shz(ig) *( shp(1,ig)*x(i1)
429  & +shp(2,ig)*x(i2)
430  & +shp(3,ig)*x(i3) )
431  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
432  & +shp(2,ig)*y(i2)
433  & +shp(3,ig)*y(i3) )
434  & +shz(ig) *( shp(1,ig)*y(i1)
435  & +shp(2,ig)*y(i2)
436  & +shp(3,ig)*y(i3) )
437  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
438  & +shz(ig) *zstar(iplan+1)
439  elt(ig)=ielem
440  eta(ig)=iplan
441 !
442  ig=ig+1
443  shp(1,ig)=(1.d0-a-b)
444  shp(2,ig)=a
445  shp(3,ig)=b
446  shz(ig)=c
447  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
448  & +shp(2,ig)*x(i2)
449  & +shp(3,ig)*x(i3) )
450  & +shz(ig) *( shp(1,ig)*x(i1)
451  & +shp(2,ig)*x(i2)
452  & +shp(3,ig)*x(i3) )
453  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
454  & +shp(2,ig)*y(i2)
455  & +shp(3,ig)*y(i3) )
456  & +shz(ig) *( shp(1,ig)*y(i1)
457  & +shp(2,ig)*y(i2)
458  & +shp(3,ig)*y(i3) )
459  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
460  & +shz(ig) *zstar(iplan+1)
461  elt(ig)=ielem
462  eta(ig)=iplan
463 !
464  ig=ig+1
465  shp(1,ig)=(1.d0-a-a)
466  shp(2,ig)=a
467  shp(3,ig)=a
468  shz(ig)=d
469  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
470  & +shp(2,ig)*x(i2)
471  & +shp(3,ig)*x(i3) )
472  & +shz(ig) *( shp(1,ig)*x(i1)
473  & +shp(2,ig)*x(i2)
474  & +shp(3,ig)*x(i3) )
475  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
476  & +shp(2,ig)*y(i2)
477  & +shp(3,ig)*y(i3) )
478  & +shz(ig) *( shp(1,ig)*y(i1)
479  & +shp(2,ig)*y(i2)
480  & +shp(3,ig)*y(i3) )
481  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
482  & +shz(ig) *zstar(iplan+1)
483  elt(ig)=ielem
484  eta(ig)=iplan
485 !
486  ig=ig+1
487  shp(1,ig)=(1.d0-b-a)
488  shp(2,ig)=b
489  shp(3,ig)=a
490  shz(ig)=d
491  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
492  & +shp(2,ig)*x(i2)
493  & +shp(3,ig)*x(i3) )
494  & +shz(ig) *( shp(1,ig)*x(i1)
495  & +shp(2,ig)*x(i2)
496  & +shp(3,ig)*x(i3) )
497  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
498  & +shp(2,ig)*y(i2)
499  & +shp(3,ig)*y(i3) )
500  & +shz(ig) *( shp(1,ig)*y(i1)
501  & +shp(2,ig)*y(i2)
502  & +shp(3,ig)*y(i3) )
503  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
504  & +shz(ig) *zstar(iplan+1)
505  elt(ig)=ielem
506  eta(ig)=iplan
507 !
508  ig=ig+1
509  shp(1,ig)=(1.d0-a-b)
510  shp(2,ig)=a
511  shp(3,ig)=b
512  shz(ig)=d
513  xconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*x(i1)
514  & +shp(2,ig)*x(i2)
515  & +shp(3,ig)*x(i3) )
516  & +shz(ig) *( shp(1,ig)*x(i1)
517  & +shp(2,ig)*x(i2)
518  & +shp(3,ig)*x(i3) )
519  yconv(ig)=(1.d0-shz(ig))*( shp(1,ig)*y(i1)
520  & +shp(2,ig)*y(i2)
521  & +shp(3,ig)*y(i3) )
522  & +shz(ig) *( shp(1,ig)*y(i1)
523  & +shp(2,ig)*y(i2)
524  & +shp(3,ig)*y(i3) )
525  zconv(ig)=(1.d0-shz(ig))*zstar(iplan)
526  & +shz(ig) *zstar(iplan+1)
527  elt(ig)=ielem
528  eta(ig)=iplan
529 !
530  ENDDO
531  ENDDO
532 !
533  ELSE
534 !
535  WRITE(lu,11) ngauss,ielm
536 11 FORMAT(1x,'CHAR_GAUSS: OPTION NOT IMPLEMENTED:',i6,
537  & ' WITH IELM=',i6)
538  CALL plante(1)
539  stop
540 !
541  ENDIF
542 !
543 !-----------------------------------------------------------------------
544 !
545  RETURN
546  END
subroutine char_gauss(XCONV, YCONV, ZCONV, SHP, SHZ, ELT, ETA, X, Y, IKLE, NPOIN, NELEM, NELMAX, NG, NGAUSS, IELM, NPLAN, ZSTAR)
Definition: char_gauss.f:8
Definition: bief.f:3