The TELEMAC-MASCARET system  trunk
vc04tt.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE vc04tt
3 ! *****************
4 !
5  &(xmul,su,sv,sw,u,v,w,f,h,x,y,z,
6  & ikle1,ikle2,ikle3,ikle4,nelem,nelmax,w1,w2,w3,w4,formul,specad,
7  & npoin2,nelem2)
8 !
9 !***********************************************************************
10 ! BIEF V6P2 21/08/2010
11 !***********************************************************************
12 !
13 !brief COMPUTES THE FOLLOWING VECTOR IN FINITE ELEMENTS:
14 !code
15 !+ / D(PSII) D(PSII)
16 !+ V = XMUL / U * ------- + V * ------- D(OMEGA)
17 !+ I /OMEGA DX DY
18 !+
19 !+ / D(PSII*) D(PSII*)
20 !+ = XMUL / DZ * U * -------- + DZ * V * -------- D(OMEGA*)
21 !+ /OMEGA* DX DY
22 !+
23 !+ PSII IS OF TYPE P1 TETRAHEDRON
24 !+
25 !+ REAL MESH HERE, CAN BE REGARDED AS A COMPUTATION
26 !+ IN A TRANSFORMED MESH, BUT WITH H IN THE INTEGRAL.
27 !
28 !warning THE JACOBIAN MUST BE POSITIVE
29 !warning THE RESULT IS IN W IN NOT ASSEMBLED FORM
30 !warning IF SPECAD=.TRUE., THE ADVECTING FIELD IS NOT ONLY
31 !+ U AND V BUT U+DM1*GRAD(ZCONV). GRAD(ZCONV) IS HERE H, DM1 IS F
32 !+
33 !
34 !history J-M HERVOUET (LNH)
35 !+ 22/03/02
36 !+ V5P3
37 !+
38 !
39 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
40 !+ 13/07/2010
41 !+ V6P0
42 !+ Translation of French comments within the FORTRAN sources into
43 !+ English comments
44 !
45 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
46 !+ 21/08/2010
47 !+ V6P0
48 !+ Creation of DOXYGEN tags for automated documentation and
49 !+ cross-referencing of the FORTRAN sources
50 !
51 !history J-M HERVOUET (LNHE)
52 !+ 07/09/2011
53 !+ V6P2
54 !+ Adaptation to case SPECAD=.TRUE.
55 !
56 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57 !| FORMUL |-->| STRING WITH FORMULA OF VECTOR
58 !| IKLE1 |-->| FIRST POINT OF TETRAHEDRA
59 !| IKLE2 |-->| SECOND POINT OF TETRAHEDRA
60 !| IKLE3 |-->| THIRD POINT OF TETRAHEDRA
61 !| IKLE4 |-->| FOURTH POINT OF TETRAHEDRA
62 !| NELEM |-->| NUMBER OF ELEMENTS
63 !| NELEM2 |-->| NUMBER OF 2D ELEMENTS (CASE SPECAD)
64 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
65 !| SPECAD |-->| IF YES, SPECIAL ADVECTION FIELD, SEE ABOVE
66 !| SU |-->| BIEF_OBJ STRUCTURE OF U
67 !| SV |-->| BIEF_OBJ STRUCTURE OF V
68 !| SW |-->| BIEF_OBJ STRUCTURE OF W
69 !| U |-->| FUNCTION USED IN THE VECTOR FORMULA
70 !| V |-->| FUNCTION USED IN THE VECTOR FORMULA
71 !| W |-->| FUNCTION USED IN THE VECTOR FORMULA
72 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
73 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
74 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
75 !| W4 |<--| RESULT IN NON ASSEMBLED FORM
76 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
77 !| Y |-->| ORDINATES OF POINTS IN THE MESH
78 !| XMUL |-->| MULTIPLICATION COEFFICIENT
79 !| Z |-->| ELEVATIONS OF POINTS
80 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81 !
82  USE bief, ex_vc04tt => vc04tt
83 !
85  IMPLICIT NONE
86 !
87 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
88 !
89  INTEGER, INTENT(IN) :: NELEM,NELMAX,NELEM2,NPOIN2
90  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
91  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
92 !
93  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
94  DOUBLE PRECISION, INTENT(INOUT) :: W1(nelmax),W2(nelmax)
95  DOUBLE PRECISION, INTENT(INOUT) :: W3(nelmax),W4(nelmax)
96  DOUBLE PRECISION, INTENT(IN) :: XMUL
97 !
98  LOGICAL, INTENT(IN) :: SPECAD
99 !
100  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
101 !
102 ! STRUCTURES AND THERE REAL DATA
103 !
104  TYPE(bief_obj), INTENT(IN) :: SU,SV,SW
105  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*),F(*)
106  DOUBLE PRECISION, INTENT(IN) :: H(*)
107 !
108 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
109 !
110  DOUBLE PRECISION XSUR24,XSUR120,X2,X3,X4,Y2,Y3,Y4,Z1,Z2,Z3,Z4
111  DOUBLE PRECISION F123,F134,F142,F243
112  DOUBLE PRECISION U1,U2,U3,U4,V1,V2,V3,V4
113  DOUBLE PRECISION UUUU,VVVV,WWWW,H1,H2,H3,H4
114  INTEGER I1,I2,I3,I4,IELEM,IELEM2,IELMU,IELMV,IELMW
115  INTEGER IP,I12D,I22D,I32D,I42D
116 !
117 !**********************************************************************
118 !
119  xsur24 = xmul / 24.d0
120  xsur120 = xmul / 120.d0
121 !
122 !-----------------------------------------------------------------------
123 !
124  ielmu=su%ELM
125  ielmv=sv%ELM
126  ielmw=sw%ELM
127 !
128 !-----------------------------------------------------------------------
129 !
130 ! HORIZONTAL TERMS
131 !
132  IF(formul(14:16).EQ.'HOR') THEN
133 !
134 ! LOOP ON THE ELEMENTS
135 !
136  IF(ielmu.EQ.51.AND.ielmv.EQ.51) THEN
137 !
138 !-----------------------------------------------------------------------
139 !
140 ! U AND V DISCRETISED IN P1 PRISM:
141 !
142  IF(.NOT.specad) THEN
143 !
144 ! STANDARD CASE
145 !
146  DO ielem = 1 , nelem
147 !
148  i1 = ikle1(ielem)
149  i2 = ikle2(ielem)
150  i3 = ikle3(ielem)
151  i4 = ikle4(ielem)
152 !
153  x2 = x(i2) - x(i1)
154  x3 = x(i3) - x(i1)
155  x4 = x(i4) - x(i1)
156 !
157  y2 = y(i2) - y(i1)
158  y3 = y(i3) - y(i1)
159  y4 = y(i4) - y(i1)
160 !
161 ! REAL MESH
162 !
163 ! Z2 = Z(I2) - Z(I1)
164 ! Z3 = Z(I3) - Z(I1)
165 ! Z4 = Z(I4) - Z(I1)
166 !
167  u1 = u(i1)
168  u2 = u(i2)
169  u3 = u(i3)
170  u4 = u(i4)
171  v1 = v(i1)
172  v2 = v(i2)
173  v3 = v(i3)
174  v4 = v(i4)
175 !
176 ! RETRIEVING THE LOWER PLANE NUMBER
177 !
178  ip=(min(i1,i2,i3,i4)-1)/npoin2 +1
179 !
180 ! TRANSFORMED MESH, 0 FOR LOWER POINTS, 1 FOR UPPER POINTS
181 !
182  z1=dble((i1-1)/npoin2+1-ip)
183  z2=dble((i2-1)/npoin2+1-ip)-z1
184  z3=dble((i3-1)/npoin2+1-ip)-z1
185  z4=dble((i4-1)/npoin2+1-ip)-z1
186 !
187 ! RETRIEVING THE 2D POINTS NUMBERS ON THE SAME VERTICAL
188 !
189  i12d=mod(i1-1,npoin2)+1
190  i22d=mod(i2-1,npoin2)+1
191  i32d=mod(i3-1,npoin2)+1
192  i42d=mod(i4-1,npoin2)+1
193 !
194 ! RETRIEVING THE ORIGINAL PRISM HEIGHTS ON THE VERTICAL
195 ! TWO OF THE FOUR HEIGHTS WILL BE EQUAL, THE TWO CORRESPONDING
196 ! POINTS OF THE TETRAHEDRON BEING ON THE SAME VERTICAL
197 !
198  h1=z(ip*npoin2+i12d)-z((ip-1)*npoin2+i12d)
199  h2=z(ip*npoin2+i22d)-z((ip-1)*npoin2+i22d)
200  h3=z(ip*npoin2+i32d)-z((ip-1)*npoin2+i32d)
201  h4=z(ip*npoin2+i42d)-z((ip-1)*npoin2+i42d)
202 !
203 ! EACH CONTRIBUTION IS THE EXITING FLUX THROUGH ADJACENT FACES / 3
204 ! THE TOTAL FLUX IS ZERO, SO THE RESULT IS THE ENTERING FLUX
205 ! THROUGH THE OPPOSITE FACE /3
206 ! POINT 1 : (FACE 123 + FACE 134 + FACE 142) /3 = - (FACE 243) /3
207 ! POINT 2 : - (FACE 134) /3
208 ! POINT 3 : - (FACE 142) /3
209 ! POINT 4 : - (FACE 123) /3
210 !
211 ! FIJK IS IN FACT 8 TIMES THE REAL FLUX THROUGH FACE IJK
212 !
213 ! IN THE REAL MESH (WITH COEFFICIENT XSUR24)
214 !
215 ! UUUU=U1+U2+U3+U4
216 ! VVVV=V1+V2+V3+V4
217 !
218 ! IN THE TRANSFORMED MESH (WITH COEFFICIENT XSUR120)
219 !
220  uuuu=(h1*u1+h2*u2+h3*u3+h4*u4+(h1+h2+h3+h4)*(u1+u2+u3+u4))
221  vvvv=(h1*v1+h2*v2+h3*v3+h4*v4+(h1+h2+h3+h4)*(v1+v2+v3+v4))
222 !
223 ! FLUXES WITH OUTWARD NORMAL VECTOR
224 !
225  f123=(z2*y3-z3*y2)*uuuu+(x2*z3-z2*x3)*vvvv
226  f134=(z3*y4-z4*y3)*uuuu+(x3*z4-z3*x4)*vvvv
227  f142=(z4*y2-z2*y4)*uuuu+(x4*z2-z4*x2)*vvvv
228  f243=-f123-f134-f142
229 !
230 ! REAL MESH
231 !
232 ! W1(IELEM) = -F243*XSUR24
233 ! W2(IELEM) = -F134*XSUR24
234 ! W3(IELEM) = -F142*XSUR24
235 ! W4(IELEM) = -F123*XSUR24
236 !
237 ! TRANSFORMED MESH
238 !
239  w1(ielem) = -f243*xsur120
240  w2(ielem) = -f134*xsur120
241  w3(ielem) = -f142*xsur120
242  w4(ielem) = -f123*xsur120
243 !
244  ENDDO
245 !
246  ELSE
247 !
248 ! CASE WITH SPECIFIC ADVECTING FIELD
249 !
250  DO ielem = 1 , nelem
251 !
252 ! CORRESPONDING 2D ELEMENT ON THE VERTICAL
253 ! SEE NUMBERING OF ELEMENTS WHEN PRISMS ARE
254 ! CUT INTO TETRAHEDRONS
255 !
256  ielem2 = mod(ielem-1,nelem2) + 1
257 !
258  i1 = ikle1(ielem)
259  i2 = ikle2(ielem)
260  i3 = ikle3(ielem)
261  i4 = ikle4(ielem)
262 !
263  x2 = x(i2) - x(i1)
264  x3 = x(i3) - x(i1)
265  x4 = x(i4) - x(i1)
266 !
267  y2 = y(i2) - y(i1)
268  y3 = y(i3) - y(i1)
269  y4 = y(i4) - y(i1)
270 !
271 ! REAL MESH
272 !
273 ! Z2 = Z(I2) - Z(I1)
274 ! Z3 = Z(I3) - Z(I1)
275 ! Z4 = Z(I4) - Z(I1)
276 !
277 !
278 ! RETRIEVING THE LOWER PLANE NUMBER
279 !
280  ip=(min(i1,i2,i3,i4)-1)/npoin2 +1
281 !
282 ! TRANSFORMED MESH, 0 FOR LOWER POINTS, 1 FOR UPPER POINTS
283 !
284  z1=dble((i1-1)/npoin2+1-ip)
285  z2=dble((i2-1)/npoin2+1-ip)-z1
286  z3=dble((i3-1)/npoin2+1-ip)-z1
287  z4=dble((i4-1)/npoin2+1-ip)-z1
288 !
289 ! SPECIFIC ADVECTION FIELD
290 !
291  u1 = u(i1)+f(i1)*h(ielem2+(1-1)*nelem2)
292  u2 = u(i2)+f(i2)*h(ielem2+(1-1)*nelem2)
293  u3 = u(i3)+f(i3)*h(ielem2+(1-1)*nelem2)
294  u4 = u(i4)+f(i4)*h(ielem2+(1-1)*nelem2)
295  v1 = v(i1)+f(i1)*h(ielem2+(2-1)*nelem2)
296  v2 = v(i2)+f(i2)*h(ielem2+(2-1)*nelem2)
297  v3 = v(i3)+f(i3)*h(ielem2+(2-1)*nelem2)
298  v4 = v(i4)+f(i4)*h(ielem2+(2-1)*nelem2)
299 !
300 ! RETRIEVING THE 2D POINTS NUMBERS ON THE SAME VERTICAL
301 !
302  i12d=mod(i1-1,npoin2)+1
303  i22d=mod(i2-1,npoin2)+1
304  i32d=mod(i3-1,npoin2)+1
305  i42d=mod(i4-1,npoin2)+1
306 !
307 ! RETRIEVING THE ORIGINAL PRISM HEIGHTS ON THE VERTICAL
308 ! TWO OF THE FOUR HEIGHTS WILL BE EQUAL, THE TWO CORRESPONDING
309 ! POINTS OF THE TETRAHEDRON BEING ON THE SAME VERTICAL
310 !
311  h1=z(ip*npoin2+i12d)-z((ip-1)*npoin2+i12d)
312  h2=z(ip*npoin2+i22d)-z((ip-1)*npoin2+i22d)
313  h3=z(ip*npoin2+i32d)-z((ip-1)*npoin2+i32d)
314  h4=z(ip*npoin2+i42d)-z((ip-1)*npoin2+i42d)
315 !
316 ! EACH CONTRIBUTION IS THE EXITING FLUX THROUGH ADJACENT FACES / 3
317 ! THE TOTAL FLUX IS ZERO, SO THE RESULT IS THE ENTERING FLUX
318 ! THROUGH THE OPPOSITE FACE /3
319 ! POINT 1 : (FACE 123 + FACE 134 + FACE 142) /3 = - (FACE 243) /3
320 ! POINT 2 : - (FACE 134) /3
321 ! POINT 3 : - (FACE 142) /3
322 ! POINT 4 : - (FACE 123) /3
323 !
324 ! FIJK IS IN FACT 8 TIMES THE REAL FLUX THROUGH FACE IJK
325 !
326 ! IN THE REAL MESH (WITH COEFFICIENT XSUR24)
327 !
328 ! UUUU=U1+U2+U3+U4
329 ! VVVV=V1+V2+V3+V4
330 !
331 ! IN THE TRANSFORMED MESH (WITH COEFFICIENT XSUR120)
332 ! SIMPLIFYING BY TAKING AVERAGE DEPTH * AVERAGE VELOCITY
333 ! WITH AVERAGE DEPTH = REAL VOLUME / TRANSFORMED VOLUME
334 ! DOES NOT SEEM TO WORK VERY WELL (NON LINEAR WAVES, BUMPRES)
335 !
336  uuuu=(h1*u1+h2*u2+h3*u3+h4*u4+(h1+h2+h3+h4)
337  & *(u1+u2+u3+u4))
338  vvvv=(h1*v1+h2*v2+h3*v3+h4*v4+(h1+h2+h3+h4)
339  & *(v1+v2+v3+v4))
340 !
341 ! FLUXES WITH OUTWARD NORMAL VECTOR
342 !
343  f123=(z2*y3-z3*y2)*uuuu+(x2*z3-z2*x3)*vvvv
344  f134=(z3*y4-z4*y3)*uuuu+(x3*z4-z3*x4)*vvvv
345  f142=(z4*y2-z2*y4)*uuuu+(x4*z2-z4*x2)*vvvv
346  f243=-f123-f134-f142
347 !
348 ! REAL MESH
349 !
350 ! W1(IELEM) = -F243*XSUR24
351 ! W2(IELEM) = -F134*XSUR24
352 ! W3(IELEM) = -F142*XSUR24
353 ! W4(IELEM) = -F123*XSUR24
354 !
355 ! TRANSFORMED MESH
356 !
357  w1(ielem) = -f243*xsur120
358  w2(ielem) = -f134*xsur120
359  w3(ielem) = -f142*xsur120
360  w4(ielem) = -f123*xsur120
361 !
362  ENDDO
363 !
364  ENDIF
365 !
366 !-----------------------------------------------------------------------
367 !
368 ! ELSEIF(IELMU.EQ. ) THEN
369 !
370 !-----------------------------------------------------------------------
371 !
372  ELSE
373 !
374 !-----------------------------------------------------------------------
375 !
376  WRITE(lu,102) ielmu,su%NAME
377 102 FORMAT(1x,'VC04TT (BIEF) :',/,
378  & 1x,'DISCRETISATION OF U ET V : ',1i6,' NOT IMPLEMENTED',/,
379  & 1x,'REAL NAME OF U : ',a6)
380  CALL plante(1)
381  stop
382 !
383  ENDIF
384 !
385 !-----------------------------------------------------------------------
386 !
387  ELSEIF(formul(14:16).EQ.'TOT') THEN
388 !
389  IF(ielmw.NE.31.AND.ielmw.NE.51) THEN
390  WRITE(lu,302)
391 302 FORMAT(1x,'VC04TT (BIEF) :',/,
392  & 1x,.NE..NE.'UNEXPECTED CASE (IELMW31 AND 51)')
393  CALL plante(1)
394  stop
395  ENDIF
396 !
397  DO ielem = 1 , nelem
398 !
399  i1 = ikle1(ielem)
400  i2 = ikle2(ielem)
401  i3 = ikle3(ielem)
402  i4 = ikle4(ielem)
403 !
404  x2 = x(i2) - x(i1)
405  x3 = x(i3) - x(i1)
406  x4 = x(i4) - x(i1)
407 !
408  y2 = y(i2) - y(i1)
409  y3 = y(i3) - y(i1)
410  y4 = y(i4) - y(i1)
411 !
412  z2 = z(i2) - z(i1)
413  z3 = z(i3) - z(i1)
414  z4 = z(i4) - z(i1)
415 !
416  uuuu=u(i1)+u(i2)+u(i3)+u(i4)
417  vvvv=v(i1)+v(i2)+v(i3)+v(i4)
418  wwww=w(i1)+w(i2)+w(i3)+w(i4)
419 !
420  f123=(z2*y3-z3*y2)*uuuu+(x2*z3-z2*x3)*vvvv+(x3*y2-x2*y3)*wwww
421  f134=(z3*y4-z4*y3)*uuuu+(x3*z4-z3*x4)*vvvv+(x4*y3-x3*y4)*wwww
422  f142=(z4*y2-z2*y4)*uuuu+(x4*z2-z4*x2)*vvvv+(x2*y4-x4*y2)*wwww
423  f243=-f123-f134-f142
424 !
425  w1(ielem) = -f243*xsur24
426  w2(ielem) = -f134*xsur24
427  w3(ielem) = -f142*xsur24
428  w4(ielem) = -f123*xsur24
429 !
430 !
431 ! ORIGINAL MAPLE FORMULAS FOR HORIZONTAL PART
432 !
433 ! W1(IELEM) = XSUR24*(
434 ! &U3*Z2*Y3+V4*X3*Z4-U4*Y3*Z4+U4*Z2*Y3+U4*Y4*Z3-U4*Z2*Y4-U4*
435 ! &Y2*Z3+U1*Y4*Z3+V1*Z2*X4-V4*X2*Z4-U3*Z2*Y4-U2*Y2*Z3+V4*X2*Z3+V4*Z2*
436 ! &X4-V4*X4*Z3+V2*Z2*X4-U2*Z2*Y4+U2*Y2*Z4+U2*Y4*Z3+U2*Z2*Y3-V1*Z2*X3+
437 ! &V1*X2*Z3-V1*X4*Z3+V1*X3*Z4+U3*Y2*Z4+U3*Y4*Z3-V3*X2*Z4-V3*X4*Z3+V3*
438 ! &X3*Z4-V3*Z2*X3+V3*X2*Z3+V3*Z2*X4+U1*Z2*Y3-U1*Y2*Z3+U1*Y2*Z4-V2*X2*
439 ! &Z4-V2*X4*Z3-V2*Z2*X3+V2*X2*Z3-U3*Y2*Z3+V2*X3*Z4-V4*Z2*X3-U1*Y3*Z4+
440 ! &U4*Y2*Z4-U3*Y3*Z4-V1*X2*Z4-U1*Z2*Y4-U2*Y3*Z4)
441 !
442 ! W2(IELEM) = XSUR24*(
443 ! &-U4*Y4*Z3+U4*Y3*Z4-V4*X3*Z4+V4*X4*Z3+U1*Y3*Z4-U1*Y4*Z3-V3
444 ! &*X3*Z4+V3*X4*Z3+U3*Y3*Z4-U3*Y4*Z3-V1*X3*Z4+V1*X4*Z3+U2*Y3*Z4-U2*Y4
445 ! &*Z3-V2*X3*Z4+V2*X4*Z3)
446 !
447 ! W3(IELEM) = XSUR24*(
448 ! &U4*Z2*Y4-U4*Y2*Z4-V4*Z2*X4+U3*Z2*Y4+V4*X2*Z4-V1*Z2*X4-U1*
449 ! &Y2*Z4-V3*Z2*X4+V3*X2*Z4-U3*Y2*Z4+V1*X2*Z4-U2*Y2*Z4+U2*Z2*Y4-V2*Z2*
450 ! &X4+V2*X2*Z4+U1*Z2*Y4)
451 !
452 ! W4(IELEM) = XSUR24*(
453 ! &U4*Y2*Z3-U4*Z2*Y3+V4*Z2*X3-V4*X2*Z3+U1*Y2*Z3-U1*Z2*Y3+U3*
454 ! &Y2*Z3-U3*Z2*Y3-V3*X2*Z3+V3*Z2*X3-V1*X2*Z3+V1*Z2*X3-U2*Z2*Y3+U2*Y2*
455 ! &Z3-V2*X2*Z3+V2*Z2*X3)
456 !
457 ! ORIGINAL MAPLE FORMULAS FOR VERTICAl PART
458 !
459 ! Q1 = W(I1)
460 ! Q2 = W(I2)
461 ! Q3 = W(I3)
462 ! Q4 = W(I4)
463 !
464 ! W1(IELEM) = (
465 ! & X4*Y3*Q4-Y2*X4*Q4+X2*Y4*Q4-X2*Y3*Q4-X3*Y4*Q4+Y2*X3*Q4-X2*
466 ! &Y3*Q3-Y2*X4*Q3+X2*Y4*Q1-X3*Y4*Q3+X2*Y4*Q3+Y2*X3*Q3-X3*Y4*Q2+X4*Y3*
467 ! &Q2+X2*Y4*Q2-Y2*X4*Q2-X2*Y3*Q2+Y2*X3*Q2+Y2*X3*Q1-Y2*X4*Q1-X2*Y3*Q1+
468 ! &X4*Y3*Q3+X4*Y3*Q1-X3*Y4*Q1 )*XSUR24
469 !
470 ! W2(IELEM) = (
471 ! & -X4*Y3*Q4+X3*Y4*Q4+X3*Y4*Q3+X3*Y4*Q2-X4*Y3*Q2-X4*Y3*Q3-X4
472 ! &*Y3*Q1+X3*Y4*Q1 )*XSUR24
473 !
474 ! W3(IELEM) = (
475 ! & Y2*X4*Q4-X2*Y4*Q4+Y2*X4*Q3-X2*Y4*Q1-X2*Y4*Q3-X2*Y4*Q2+Y2*
476 ! &X4*Q2+Y2*X4*Q1 )*XSUR24
477 !
478 ! W4(IELEM) = (
479 ! & X2*Y3*Q4-Y2*X3*Q4+X2*Y3*Q3-Y2*X3*Q3+X2*Y3*Q2-Y2*X3*Q2-Y2*
480 ! &X3*Q1+X2*Y3*Q1 )*XSUR24
481 !
482  ENDDO
483 !
484  ELSE
485 !
486 !-----------------------------------------------------------------------
487 !
488  WRITE(lu,202) formul
489 202 FORMAT(1x,'VC04TT (BIEF):',/,
490  & 1x,'HOR OR VER LACKING AT THE END OF THE FORMULA : ',a16)
491  CALL plante(1)
492  stop
493 !
494 !-----------------------------------------------------------------------
495 !
496  ENDIF
497 !
498 !-----------------------------------------------------------------------
499 !
500  RETURN
501  END
subroutine vc04tt(XMUL, SU, SV, SW, U, V, W, F, H, X, Y, Z, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, W1, W2, W3, W4, FORMUL, SPECAD, NPOIN2, NELEM2)
Definition: vc04tt.f:9
Definition: bief.f:3