The TELEMAC-MASCARET system  trunk
matriy.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE matriy
3 ! *****************
4 !
5  &(formul,xm,typdia,typext,
6  & xmul,sf,sg,sh,su,sv,sw,f,g,h,u,v,w,t,lego,
7  & xel,yel,zel,xpt,ypt,zpt,surfac,lgseg,ikle,iklbor,nbor,nelbor,
8  & nulone,nelem,nelmax,neleb,nelebx,ielm1,ielm2,s,nplan,mesh,
9  & sizexmt,stox)
10 !
11 !***********************************************************************
12 ! BIEF V7P2
13 !***********************************************************************
14 !
15 !brief OPERATIONS BETWEEN MATRICES.
16 !+
17 !+ THE MATRIX IS IDENTIFIED BY THE FORMULATION IN
18 !+ CHARACTER STRING FORMUL.
19 !
20 !warning Coordinates per element (XEL, YEL, ZEL) or coordinates per
21 !+ points (XPT,YPT, ZPT) may be used, depending on element and
22 !+ formula. ZEL is not built in 3D (as the mesh may be moving).
23 !
24 !code
25 !+-----------------------------------------------------------------------
26 !+
27 !+ MEANING OF IELM AND IELM2
28 !+
29 !+ TYPE OF ELEMENT NUMBER OF POINTS
30 !+
31 !+ A OR 11 : P1 TRIANGLE 3
32 !+ B OR 12 : QUASI-BUBBLE TRIANGLE 4
33 !+ C OR 13 : P1-ISO P1 TRIANGLE 6
34 !+ D OR 14 : P2 TRIANGLE 7
35 !+ E : NOTHING FOR NOW
36 !+
37 !+ F OR 21 : Q1 QUADRILATERAL 4
38 !+ G OR 22 : Q2 QUADRILATERAL 8
39 !+ H OR 24 : Q2 QUADRILATERAL 9
40 !+
41 !+ T OR 31 : P1 TETRAHEDRON 4
42 !+
43 !+ P OR 41 : TELEMAC-3D PRISMS 6
44 !+
45 !+-----------------------------------------------------------------------
46 !
47 !history
48 !+ 16/09/2005
49 !+
50 !+ MT04PP NOW IN 2 OPTIONS, AND WITHOUT VERTICAL UPWIND
51 !
52 !history JM HERVOUET (LNHE)
53 !+ 21/07/2008
54 !+ V5P9
55 !+
56 !
57 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
58 !+ 13/07/2010
59 !+ V6P0
60 !+ Translation of French comments within the FORTRAN sources into
61 !+ English comments
62 !
63 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
64 !+ 21/08/2010
65 !+ V6P0
66 !+ Creation of DOXYGEN tags for automated documentation and
67 !+ cross-referencing of the FORTRAN sources
68 !
69 !history J-M HERVOUET (LNHE)
70 !+ 18/10/2011
71 !+ V6P2
72 !+ Argument MESH added, call to MT14TT.
73 !+
74 !history J-M HERVOUET (LNHE)
75 !+ 15/06/2012
76 !+ V6P2
77 !+ Call to MT12AA modified.
78 !
79 !history J-M HERVOUET (EDF R&D, LNHE)
80 !+ 11/01/2013
81 !+ V6P3
82 !+ Arguments XPT, YPT and ZPT added, various XEL, YEL and ZEL changed
83 !+ into XPT, etc. in the calls to 3D matrices. Arguments NELEBD,
84 !+ NELEBX,IKLBOR,NELBOR,NULONE.
85 !
86 !history J.M. HERVOUET (EDF LAB, LNHE)
87 !+ 03/06/2014
88 !+ V7P0
89 !+ Call to mt15pp (settling velocity matrix) added.
90 !
91 !history J.M. HERVOUET (EDF LAB, LNHE)
92 !+ 22/03/2016
93 !+ V7P2
94 !+ Adding STOX, storage option of off-diagonal terms.
95 !
96 !history S.E.BOURBAN (HRW)
97 !+ 21/03/2017
98 !+ V7P3
99 !+ Replacement of the DATA declarations by the PARAMETER associates
100 !
101 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102 !| F |-->| FUNCTION USED IN THE FORMULA
103 !| FORMUL |-->| FORMULA DESCRIBING THE RESULTING MATRIX
104 !| G |-->| FUNCTION USED IN THE FORMULA
105 !| H |-->| FUNCTION USED IN THE FORMULA
106 !| IELM1 |-->| TYPE OF ELEMENT FOR LINES
107 !| IELM2 |-->| TYPE OF ELEMENT FOR COLUMNS
108 !| IKLBOR |-->| BOUNDARY ELEMENTS CONNECTIVITY TABLE.
109 !| IKLE |-->| CONNECTIVITY TABLE.
110 !| LEGO |-->| IF YES: ASSEMBLE THE DIAGONAL
111 !| LGSEG |-->| LENGTH OF SEGMENTS ON 2D BOUNDARIES
112 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
113 !| NELBOR |-->| ADJACENT ELEMENT NUMBER
114 !| NELEB |-->| NUMBER OF BOUNDARY ELEMENTS
115 !| NELEBX |-->| MAXIMUM NUMBER OF BOUNDARY ELEMENTS
116 !| NELEM |-->| NUMBER OF ELEMENTS
117 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
118 !| NULONE |-->| LOCAL NUMBERING OF BOUNDARY ELEMENT IN ADJACENT
119 !| | | ELEMENT.
120 !| S |-->| TYPE OF MATRIX STORAGE
121 !| SF |-->| STRUCTURE OF FUNCTIONS F
122 !| SG |-->| STRUCTURE OF FUNCTIONS G
123 !| SH |-->| STRUCTURE OF FUNCTIONS H
124 !| SU |-->| STRUCTURE OF FUNCTIONS U
125 !| SV |-->| STRUCTURE OF FUNCTIONS V
126 !| SW |-->| STRUCTURE OF FUNCTIONS W
127 !| STOX |<--| STORAGE OPTION OF OFF-DIAGONAL TERMS
128 !| | | 1=(NELMAX,NDP) 2=(NDP,NELMAX)
129 !| SURFAC |-->| AREA OF 2D ELEMENTS
130 !| T |<->| WORK ARRAY FOR ELEMENT BY ELEMENT DIAGONAL
131 !| TYPDIA |<--| TYPE OF DIAGONAL
132 !| TYPEXT |<--| TYPE OF OFF-DIAGONAL TERMS
133 !| U |-->| FUNCTION USED IN THE FORMULA (COMPONENT OF VECTOR)
134 !| V |-->| FUNCTION USED IN THE FORMULA (COMPONENT OF VECTOR)
135 !| W |-->| FUNCTION USED IN THE FORMULA (COMPONENT OF VECTOR)
136 !| XEL |-->| ABSCISSAE OF POINTS, PER ELEMENT
137 !| YEL |-->| ORDINATES OF POINTS, PER ELEMENT
138 !| ZEL |-->| ELEVATIONS OF POINTS, PER ELEMENT
139 !| XM |<->| OFF-DIAGONAL TERMS
140 !| XMUL |-->| COEFFICIENT FOR MULTIPLICATION
141 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142 !
143  USE bief, ex_matriy => matriy
144 !
146  IMPLICIT NONE
147 !
148 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
149 !
150  INTEGER, INTENT(IN) :: NELMAX,NELEM,IELM1,IELM2,S
151  INTEGER, INTENT(IN) :: NPLAN,NELEB,NELEBX,SIZEXMT
152  INTEGER, INTENT(IN) :: IKLE(nelmax,*),NBOR(*)
153  INTEGER, INTENT(IN) :: IKLBOR(nelebx,*)
154  INTEGER, INTENT(IN) :: NELBOR(nelebx)
155  INTEGER, INTENT(IN) :: NULONE(nelebx,*)
156  INTEGER, INTENT(INOUT) :: STOX
157  LOGICAL, INTENT(INOUT) :: LEGO
158  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH,SU,SV,SW
159  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*),U(*),V(*),W(*)
160  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax),LGSEG(nelebx)
161  DOUBLE PRECISION, INTENT(IN) :: XEL(*),YEL(*),ZEL(*)
162  DOUBLE PRECISION, INTENT(IN) :: XPT(*),YPT(*),ZPT(*)
163  DOUBLE PRECISION, INTENT(IN) :: XMUL
164  DOUBLE PRECISION, INTENT(INOUT) :: XM(sizexmt,*),T(sizexmt,*)
165  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
166  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIA,TYPEXT
167  TYPE(bief_mesh), INTENT(INOUT) :: MESH
168 !
169 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
170 !
171  LOGICAL SIGMAG,INCHYD,SPECAD
172 !
173  CHARACTER(LEN=1) TDIA,TEXT
174 !
175 !-----------------------------------------------------------------------
176 !
177  INTEGER ICOORD
178 !
179 ! BEWARE: SHOULD TRANSPOSE THE FOLLOWING MATRICES IN NON-SPECIAL
180 ! CASES, BECAUSE OF THE FORTRAN NOTATION OF DATA
181 !
182 ! BEWARE: OM WAS NOT PARAMETERISED WITH THESE ARRAYS
183 ! THESE DATA ALSO APPEAR IN MATVCT
184 !
185  INTEGER :: OOS(2,2,2)
186  parameter( oos = reshape( (/
187  & 0 , 1 ,
188  & 1 , 0 ,
189 ! S=2 NOT IMPLEMENTED
190  & 0 , 0 ,
191  & 0 , 0 /), shape=(/ 2,2,2 /) ) )
192 !
193  INTEGER :: OOQ(2,2,2)
194  parameter( ooq = reshape( (/
195  & 0 , 2 ,
196  & 1 , 0 ,
197 ! S=2 NOT IMPLEMENTED
198  & 0 , 0 ,
199  & 0 , 0 /), shape=(/ 2,2,2 /) ) )
200 !
201  INTEGER :: AAS(3,3,2)
202  parameter( aas = reshape( (/
203 ! SYMMETRICAL P1-P1 EBE (S=1)
204  & 0 , 1 , 2 ,
205  & 1 , 0 , 3 ,
206  & 2 , 3 , 0 ,
207 ! SYMMETRICAL P1-P1 PRE-ASSEMBLED EBE (S=2)
208  & 0 , 1 , 3 ,
209  & 1 , 0 , 2 ,
210  & 3 , 2 , 0 /), shape=(/ 3,3,2 /) ) )
211 !
212  INTEGER :: AAQ(3,3,2)
213  parameter( aaq = reshape( (/
214 ! NONSYMMETRICAL P1-P1 EBE (S=1)
215  & 0 , 4 , 5 ,
216  & 1 , 0 , 6 ,
217  & 2 , 3 , 0 ,
218 ! NONSYMMETRICAL P1-P1 PRE-ASSEMBLED EBE (S=2)
219  & 0 , 4 , 3 ,
220  & 1 , 0 , 5 ,
221  & 6 , 2 , 0 /), shape=(/ 3,3,2 /) ) )
222 !
223  INTEGER :: BBS(4,4,2)
224  parameter( bbs = reshape( (/
225 ! SYMMETRICAL QUASI-BUBBLE QUASI-BUBBLE EBE (S=1)
226  & 0 , 1 , 2 , 3 ,
227  & 1 , 0 , 4 , 5 ,
228  & 2 , 4 , 0 , 6 ,
229  & 3 , 5 , 6 , 0 ,
230 ! SYMMETRICAL QUASI-BUBBLE QUASI-BUBBLE PRE-ASSEMBLED EBE (S=2)
231  & 0 , 4 , 6 , 1 ,
232  & 4 , 0 , 5 , 2 ,
233  & 6 , 5 , 0 , 3 ,
234  & 1 , 2 , 3 , 0 /), shape=(/ 4,4,2 /) ) )
235 !
236  INTEGER :: BBQ(4,4,2)
237  parameter( bbq = reshape( (/
238 ! NONSYMMETRICAL QUASI-BUBBLE QUASI-BUBBLE EBE (S=1)
239  & 0 , 7 , 8 , 9 ,
240  & 1 , 0 , 10 , 11 ,
241  & 2 , 4 , 0 , 12 ,
242  & 3 , 5 , 6 , 0 ,
243 ! NONSYMMETRICAL QUASI-BUBBLE QUASI-BUBBLE PRE-ASSEMBLED EBE (S=2)
244  & 0 , 10 , 6 , 7 ,
245  & 4 , 0 , 11 , 8 ,
246  & 12 , 5 , 0 , 9 ,
247  & 1 , 2 , 3 , 0 /), shape=(/ 4,4,2 /) ) )
248 !
249  INTEGER :: ABQ(3,4,2)
250  parameter( abq = reshape( (/
251 ! NONSYMMETRICAL P1 QUASI-BUBBLE EBE (S=1)
252  & 0 , 4 , 7 ,
253  & 1 , 0 , 8 ,
254  & 2 , 5 , 0 ,
255  & 3 , 6 , 9 ,
256 ! NONSYMMETRICAL P1 QUASI-BUBBLE PRE-ASSEMBLED EBE (S=2)
257  & 0 , 7 , 3 ,
258  & 1 , 0 , 8 ,
259  & 9 , 2 , 0 ,
260  & 4 , 5 , 6 /), shape=(/ 3,4,2 /) ) )
261 !
262  INTEGER :: BAQ(4,3,2)
263  parameter( baq = reshape( (/
264 ! NONSYMMETRICAL QUASI-BUBBLE P1 EBE (S=1)
265  & 0 , 3 , 5 , 7 ,
266  & 1 , 0 , 6 , 8 ,
267  & 2 , 4 , 0 , 9 ,
268 ! NONSYMMETRICAL QUASI-BUBBLE P1 PRE-ASSEMBLED EBE (S=2)
269  & 0 , 7 , 3 , 4 ,
270  & 1 , 0 , 8 , 5 ,
271  & 9 , 2 , 0 , 6 /), shape=(/ 4,3,2 /) ) )
272 !
273  INTEGER :: ACQ(3,6,2)
274  parameter( acq = reshape( (/
275 ! NONSYMMETRICAL P1 P2 EBE (S=1)
276  & 0 , 6 , 11 ,
277  & 1 , 0 , 12 ,
278  & 2 , 7 , 0 ,
279  & 3 , 8 , 13 ,
280  & 4 , 9 , 14 ,
281  & 5 , 10 , 15 ,
282 ! S=2 NOT IMPLEMENTED
283  & 0 , 0 , 0 ,
284  & 0 , 0 , 0 ,
285  & 0 , 0 , 0 ,
286  & 0 , 0 , 0 ,
287  & 0 , 0 , 0 ,
288  & 0 , 0 , 0 /), shape=(/ 3,6,2 /) ) )
289 !
290  INTEGER :: CAQ(6,3,2)
291  parameter( caq = reshape( (/
292 ! NONSYMMETRICAL P2 P1 EBE (S=1)
293  & 0 , 3 , 5 , 7 , 10 , 13 ,
294  & 1 , 0 , 6 , 8 , 11 , 14 ,
295  & 2 , 4 , 0 , 9 , 12 , 15 ,
296 ! NONSYMMETRICAL P2 P1 PRE-ASSEMBLED EBE (S=2) - NOT IMPLEMENTED
297  & 0 , 0 , 0 , 0 , 0 , 0 ,
298  & 0 , 0 , 0 , 0 , 0 , 0 ,
299  & 0 , 0 , 0 , 0 , 0 , 0 /), shape=(/ 6,3,2 /) ) )
300 !
301  INTEGER :: PPS(6,6,2)
302 ! ADDED BY JMJ BUT NOT USED
303  parameter( pps = reshape( (/
304 ! SYMMETRICAL P1-P1 PRISMS AND P2 TRIANGLES EBE (S=1)
305  & 0 , 1 , 2 , 3 , 4 , 5 ,
306  & 1 , 0 , 6 , 7 , 8 , 9 ,
307  & 2 , 6 , 0 , 10 , 11 , 12 ,
308  & 3 , 7 , 10 , 0 , 13 , 14 ,
309  & 4 , 8 , 11 , 13 , 0 , 15 ,
310  & 5 , 9 , 12 , 14 , 15 , 0 ,
311 ! SYMMETRICAL P1-P1 PRISMS PRE-ASSEMBLED EBE (S=2) - NOT IMPLEMENTED
312  & 0 , 0 , 0 , 0 , 0 , 0 ,
313  & 0 , 0 , 0 , 0 , 0 , 0 ,
314  & 0 , 0 , 0 , 0 , 0 , 0 ,
315  & 0 , 0 , 0 , 0 , 0 , 0 ,
316  & 0 , 0 , 0 , 0 , 0 , 0 ,
317  & 0 , 0 , 0 , 0 , 0 , 0 /), shape=(/ 6,6,2 /) ) )
318 !
319  INTEGER :: PPQ(6,6,2)
320  parameter( ppq = reshape( (/
321 ! NONSYMMETRICAL P1-P1 PRISMS EBE (S=1)
322  & 0 , 16 , 17 , 18 , 19 , 20 ,
323  & 1 , 0 , 21 , 22 , 23 , 24 ,
324  & 2 , 6 , 0 , 25 , 26 , 27 ,
325  & 3 , 7 , 10 , 0 , 28 , 29 ,
326  & 4 , 8 , 11 , 13 , 0 , 30 ,
327  & 5 , 9 , 12 , 14 , 15 , 0 ,
328 ! NONSYMMETRICAL P1-P1 PRISMS PRE-ASSEMBLED EBE (S=2) - NOT IMPLEMENTED
329  & 0 , 0 , 0 , 0 , 0 , 0 ,
330  & 0 , 0 , 0 , 0 , 0 , 0 ,
331  & 0 , 0 , 0 , 0 , 0 , 0 ,
332  & 0 , 0 , 0 , 0 , 0 , 0 ,
333  & 0 , 0 , 0 , 0 , 0 , 0 ,
334  & 0 , 0 , 0 , 0 , 0 , 0 /), shape=(/ 6,6,2 /) ) )
335 !
336  INTEGER :: FFS(4,4,2)
337  parameter( ffs = reshape( (/
338 ! SYMMETRICAL Q1-Q1 QUADRANGLES EBE (S=1)
339  & 0 , 1 , 2 , 3 ,
340  & 1 , 0 , 4 , 5 ,
341  & 2 , 4 , 0 , 6 ,
342  & 3 , 5 , 6 , 0 ,
343 ! SYMMETRICAL Q1-Q1 QUADRANGLES PRE-ASSEMBLED EBE (S=2) - NOT IMPLEMENTED
344  & 0 , 0 , 0 , 0 ,
345  & 0 , 0 , 0 , 0 ,
346  & 0 , 0 , 0 , 0 ,
347  & 0 , 0 , 0 , 0 /), shape=(/ 4,4,2 /) ) )
348 !
349 !-----------------------------------------------------------------------
350 !
351 ! STORAGE (NELMAX,NDP) UNLESS OTHERWISE STATED AFTER
352 !
353  stox=1
354 !
355 !-----------------------------------------------------------------------
356 !
357 ! TESTS THE TYPE OF MATRIX
358 !
359 !=======================================================================
360 ! MASS MATRIX
361 !=======================================================================
362 !
363  IF(formul(1:16).EQ.'MATMAS ') THEN
364 !
365 !-----------------------------------------------------------------------
366 ! P1 TRIANGLE ROW ELEMENT
367  IF(ielm1.EQ.11) THEN
368 !
369 !.......................................................................
370 ! P1 TRIANGLE COLUMN ELEMENT
371  IF(ielm2.EQ.11) THEN
372  CALL mt01aa( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
373  & t(1,2) ,xm(1,aas(2,3,s)),
374  & t(1,3) ,
375  & xmul,surfac,nelem,nelmax)
376 !
377  typdia='Q'
378  typext='S'
379 !
380 !.......................................................................
381 ! OTHER
382 !.......................................................................
383 !
384 ! ELSEIF
385 !
386 !.......................................................................
387 ! ERROR ON THE COLUMN ELEMENT
388 !.......................................................................
389  ELSE
390  WRITE(lu,1001) formul
391  WRITE(lu,2001) ielm1
392  WRITE(lu,3001) ielm2
393  CALL plante(1)
394  stop
395  ENDIF
396 !
397 !-----------------------------------------------------------------------
398 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
399  ELSEIF(ielm1.EQ.12) THEN
400 !
401 !.......................................................................
402 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
403  IF(ielm2.EQ.12) THEN
404  CALL mt01bb
405  & ( t(1,1) ,xm(1,bbs(1,2,s)),xm(1,bbs(1,3,s)),xm(1,bbs(1,4,s)),
406  & t(1,2) ,xm(1,bbs(2,3,s)),xm(1,bbs(2,4,s)),
407  & t(1,3) ,xm(1,bbs(3,4,s)),
408  & t(1,4) ,
409  & xmul,surfac,nelem,nelmax)
410 !
411  typdia='Q'
412  typext='S'
413 !
414 !.......................................................................
415 ! OTHER
416 !.......................................................................
417 !
418 ! ELSEIF
419 !
420 !.......................................................................
421 ! ERROR ON THE COLUMN ELEMENT
422 !.......................................................................
423  ELSE
424  WRITE(lu,1001) formul
425  WRITE(lu,2001) ielm1
426  WRITE(lu,3001) ielm2
427  CALL plante(1)
428  stop
429  ENDIF
430 !
431 !-----------------------------------------------------------------------
432 ! P2 TRIANGLE
433 !-----------------------------------------------------------------------
434 !
435  ELSEIF(ielm1.EQ.13) THEN
436 !
437 ! TESTS THE COLUMN ELEMENT
438 !
439 !.......................................................................
440 ! P2 TRIANGLE
441 !.......................................................................
442 !
443  IF(ielm2.EQ.13) THEN
444  CALL mt01cc
445  & ( t(1,1) ,xm(1,pps(1,2,s)),xm(1,pps(1,3,s)),
446  & xm(1,pps(1,4,s)),xm(1,pps(1,5,s)),xm(1,pps(1,6,s)),
447  & t(1,2) ,xm(1,pps(2,3,s)),xm(1,pps(2,4,s)),
448  & xm(1,pps(2,5,s)),xm(1,pps(2,6,s)),
449  & t(1,3) ,xm(1,pps(3,4,s)),xm(1,pps(3,5,s)),
450  & xm(1,pps(3,6,s)),
451  & t(1,4) ,xm(1,pps(4,5,s)),xm(1,pps(4,6,s)),
452  & t(1,5) ,xm(1,pps(5,6,s)),t(1,6),
453  & xmul,surfac,nelem,nelmax)
454 !
455  typdia='Q'
456  typext='S'
457 !
458 !.......................................................................
459 ! OTHER
460 !.......................................................................
461 !
462 ! ELSEIF
463 !
464 !-----------------------------------------------------------------------
465 ! ERROR ON THE COLUMN ELEMENT
466 !-----------------------------------------------------------------------
467 !
468  ELSE
469  WRITE(lu,1001) formul
470  WRITE(lu,2001) ielm1
471  WRITE(lu,3001) ielm2
472  CALL plante(1)
473  stop
474  ENDIF
475 !
476 !-----------------------------------------------------------------------
477 ! P1 SEGMENT ROW ELEMENT
478  ELSEIF(ielm1.EQ.1) THEN
479 !.......................................................................
480 ! P1 SEGMENT COLUMN ELEMENT
481  IF(ielm2.EQ.1.AND.s.EQ.1) THEN
482  CALL mt01oo( t(1,1) ,xm(1,oos(1,2,s)),
483  & t(1,2) ,
484  & xmul,lgseg,neleb,nelebx)
485 !
486  typdia='Q'
487  typext='S'
488 !
489 !.......................................................................
490 ! OTHER COLUMN ELEMENT
491 !.......................................................................
492 !
493 ! ELSEIF
494 !
495 !-----------------------------------------------------------------------
496 ! ERROR ON THE COLUMN ELEMENT
497 !-----------------------------------------------------------------------
498 !
499  ELSE
500  WRITE(lu,1001) formul
501  WRITE(lu,2001) ielm1
502  WRITE(lu,3001) ielm2
503  CALL plante(1)
504  stop
505  ENDIF
507 !-----------------------------------------------------------------------
508 ! P1 PRISM ROW ELEMENT
509  ELSEIF(ielm1.EQ.41) THEN
510 !
511 !.......................................................................
512 ! P1 PRISM COLUMN ELEMENT
513  IF(ielm2.EQ.41) THEN
514  CALL mt01pp(t,xm,xmul,zpt,surfac,ikle,nelem,nelmax)
515 !
516  typdia='Q'
517  typext='S'
518 !
519 !.......................................................................
520 ! OTHER
521 !.......................................................................
522 !
523 ! ELSEIF
524 !
525 !-----------------------------------------------------------------------
526 ! ERROR ON THE COLUMN ELEMENT
527 !-----------------------------------------------------------------------
528 !
529  ELSE
530  WRITE(lu,1001) formul
531  WRITE(lu,2001) ielm1
532  WRITE(lu,3001) ielm2
533  CALL plante(1)
534  stop
535  ENDIF
536 !
537 !-----------------------------------------------------------------------
538 ! T1 TETRAHEDRON ROW ELEMENT
539  ELSEIF(ielm1.EQ.31.OR.ielm1.EQ.51) THEN
540 !
541 !.......................................................................
542 ! P1 PRISM COLUMN ELEMENT
543  IF(ielm2.EQ.31.OR.ielm2.EQ.51) THEN
544  CALL mt01tt(t,xm,xmul,xpt,ypt,zpt,ikle,nelem,nelmax)
545 !
546  typdia='Q'
547  typext='S'
548 !
549 !.......................................................................
550 ! OTHER
551 !.......................................................................
552 !
553 ! ELSEIF
554 !
555 !-----------------------------------------------------------------------
556 ! ERROR ON THE COLUMN ELEMENT
557 !-----------------------------------------------------------------------
558 !
559  ELSE
560  WRITE(lu,1001) formul
561  WRITE(lu,2001) ielm1
562  WRITE(lu,3001) ielm2
563  CALL plante(1)
564  stop
565  ENDIF
566 !
567 !-----------------------------------------------------------------------
568 ! OTHER ROW ELEMENT
569 !-----------------------------------------------------------------------
570 !
571 ! ELSEIF
572 !
573 !-----------------------------------------------------------------------
574 ! ERROR ON THE ROW ELEMENT
575 !-----------------------------------------------------------------------
576 !
577  ELSE
578  WRITE(lu,1001) formul
579  WRITE(lu,2001) ielm1
580  CALL plante(1)
581  stop
582  ENDIF
583 !
584 !=======================================================================
585 ! DIFFUSION MATRIX
586 !=======================================================================
587 !
588  ELSEIF(formul(1:6).EQ.'MATDIF') THEN
589 !
590 ! CHARACTER 7 INFORMS WHETHER INCHYD OR NOT
591 !
592  inchyd = .false.
593  IF(formul(7:7).EQ.'2') inchyd = .true.
594 !
595 ! TESTS THE ROW ELEMENT
596 !
597 !-----------------------------------------------------------------------
598 ! P1 TRIANGLE
599  IF(ielm1.EQ.11) THEN
600 !
601 !.......................................................................
602 ! P1 TRIANGLE COLUMN ELEMENT
603  IF(ielm2.EQ.11) THEN
604 !
605 ! CHARACTER 7 ALSO INFORMS WHETHER THE DIFFUSION TERM IS REQUIRED
606 ! FOR ESTEL
607 !
608  IF(formul(7:7).NE.'3') THEN
609 !
610  CALL mt02aa( t(1,1),xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
611  & t(1,2) ,xm(1,aas(2,3,s)),
612  & t(1,3) ,
613  & xmul,su,u,sv,v,xel,yel,surfac,
614  & ikle(1,1),ikle(1,2),ikle(1,3),nelem,nelmax,formul)
615 !
616  ELSE
617 !
618  CALL mt02aa_2( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
619  & t(1,2) ,xm(1,aas(2,3,s)),
620  & t(1,3) ,
621  & xmul,su,sv,xel,yel,surfac,nelem,nelmax)
622 !
623  ENDIF
624 !
625  typdia='Q'
626  typext='S'
627 !
628 !.......................................................................
629 ! OTHER
630 !.......................................................................
631 !
632 ! ELSEIF
633 !
634 !-----------------------------------------------------------------------
635 ! ERROR ON THE COLUMN ELEMENT
636 !-----------------------------------------------------------------------
637 !
638  ELSE
639  WRITE(lu,1001) formul
640  WRITE(lu,2001) ielm1
641  WRITE(lu,3001) ielm2
642  CALL plante(1)
643  stop
644  ENDIF
645 !
646 !-----------------------------------------------------------------------
647 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
648  ELSEIF(ielm1.EQ.12) THEN
649 !
650 !.......................................................................
651 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
652  IF(ielm2.EQ.12) THEN
653  CALL mt02bb
654  & ( t(1,1) ,xm(1,bbs(1,2,s)),xm(1,bbs(1,3,s)),xm(1,bbs(1,4,s)),
655  & t(1,2) ,xm(1,bbs(2,3,s)),xm(1,bbs(2,4,s)),
656  & t(1,3) ,xm(1,bbs(3,4,s)),
657  & t(1,4) ,
658  & xmul,su,u,xel,yel,surfac,
659  & ikle(1,1),ikle(1,2),ikle(1,3),nelem,nelmax)
660 !
661  typdia='Q'
662  typext='S'
663 !
664 !.......................................................................
665 ! OTHER
666 !.......................................................................
667 !
668 ! ELSEIF
669 !
670 !-----------------------------------------------------------------------
671 ! ERROR ON THE COLUMN ELEMENT
672 !-----------------------------------------------------------------------
673 !
674  ELSE
675  WRITE(lu,1001) formul
676  WRITE(lu,2001) ielm1
677  WRITE(lu,3001) ielm2
678  CALL plante(1)
679  stop
680  ENDIF
681 !
682 !-----------------------------------------------------------------------
683 ! P2 TRIANGLE ROW ELEMENT
684 !
685  ELSEIF(ielm1.EQ.13) THEN
686 !
687 !.......................................................................
688 ! P2 TRIANGLE COLUMN ELEMENT
689 ! USES MATRIX PPS BECAUSE WILL BE A 6X6 SYMMETRICAL MATRIX
690 !
691  IF(ielm2.EQ.13) THEN
692  CALL mt02cc
693  & ( t(1,1) ,xm(1,pps(1,2,s)),xm(1,pps(1,3,s)),
694  & xm(1,pps(1,4,s)),xm(1,pps(1,5,s)),xm(1,pps(1,6,s)),
695  & t(1,2) ,xm(1,pps(2,3,s)),xm(1,pps(2,4,s)),
696  & xm(1,pps(2,5,s)),xm(1,pps(2,6,s)),
697  & t(1,3) ,xm(1,pps(3,4,s)),xm(1,pps(3,5,s)),
698  & xm(1,pps(3,6,s)),
699  & t(1,4) ,xm(1,pps(4,5,s)),xm(1,pps(4,6,s)),
700  & t(1,5) ,xm(1,pps(5,6,s)),t(1,6),
701  & xmul,su,u,xel,yel,surfac,
702  & ikle(1,1),ikle(1,2),ikle(1,3),
703  & nelem,nelmax)
704 !
705  typdia='Q'
706  typext='S'
707 !
708 !.......................................................................
709 ! OTHER
710 !.......................................................................
711 !
712 ! ELSEIF
713 !
714 !-----------------------------------------------------------------------
715 ! ERROR ON THE COLUMN ELEMENT
716 !-----------------------------------------------------------------------
717 !
718  ELSE
719  WRITE(lu,1001) formul
720  WRITE(lu,2001) ielm1
721  WRITE(lu,3001) ielm2
722  CALL plante(1)
723  stop
724  ENDIF
725 !
726 !-----------------------------------------------------------------------
727 ! P1 PRISM ROW ELEMENT
728  ELSEIF(ielm1.EQ.41) THEN
729 !
730 !.......................................................................
731 ! P1 PRISM COLUMN ELEMENT
732  IF(ielm2.EQ.41) THEN
733 !
734  IF(formul(7:7).EQ.'*') THEN
735 ! COMPUTATION BASED ON THE TRANSFORMED MESH
736  CALL mt02pp_star(t,xm,xmul,sf,sg,sh,f,g,h,
737  & xel,yel,zpt,surfac,ikle,nelem,nelmax,inchyd,
738  & formul,nplan)
739  IF(formul(10:13).EQ.'1234') THEN
740  typext='S'
741  ELSEIF(formul(10:13).EQ.'1 3 ') THEN
742  typext='Q'
743  ELSEIF(formul(10:13).EQ.' 2 4') THEN
744  typext='Q'
745  ELSE
746  WRITE(lu,*) 'ERROR ON FORMULA=',formul
747  CALL plante(1)
748  stop
749  ENDIF
750  ELSE
751 ! COMPUTATION IN REAL MESH
752 ! CALL MT02PT(T,XM,XMUL,SF,SG,SH,F,G,H,
753 ! * XPT,YPT,ZPT,IKLE,NELEM,NELMAX,INCHYD)
754  CALL mt02pp(t,xm,xmul,sf,sg,sh,f,g,h,
755  & xel,yel,zpt,surfac,ikle,nelem,nelmax,inchyd,
756  & formul,nplan)
757  typext='S'
758  ENDIF
759  typdia='Q'
760 !
761 !.......................................................................
762 ! OTHER
763 !.......................................................................
764 !
765 ! ELSEIF
766 !
767 !-----------------------------------------------------------------------
768 ! ERROR ON THE COLUMN ELEMENT
769 !-----------------------------------------------------------------------
770 !
771  ELSE
772  WRITE(lu,1001) formul
773  WRITE(lu,2001) ielm1
774  WRITE(lu,3001) ielm2
775  CALL plante(1)
776  stop
777  ENDIF
778 !
779 !-----------------------------------------------------------------------
780 ! TETRAHEDRON ROW ELEMENT
781  ELSEIF(ielm1.EQ.31.OR.ielm1.EQ.51) THEN
782 !
783 !.......................................................................
784 ! P1 PRISM COLUMN ELEMENT
785  IF(ielm2.EQ.31.OR.ielm2.EQ.51) THEN
786 !
787  CALL mt02tt(t,xm,xmul,sf,sg,sh,f,g,h,
788  & xpt,ypt,zpt,ikle,nelem,nelmax,
789  & bief_nbpts(11,mesh))
790 !
791  typdia='Q'
792  typext='S'
793 !
794 !.......................................................................
795 ! OTHER
796 !.......................................................................
797 !
798 ! ELSEIF
799 !
800 !-----------------------------------------------------------------------
801 ! ERROR ON THE COLUMN ELEMENT
802 !-----------------------------------------------------------------------
803 !
804  ELSE
805  WRITE(lu,1001) formul
806  WRITE(lu,2001) ielm1
807  WRITE(lu,3001) ielm2
808  CALL plante(1)
809  stop
810  ENDIF
811 !
812 !-----------------------------------------------------------------------
813 ! OTHER ROW ELEMENT
814 !-----------------------------------------------------------------------
815 !
816 ! ELSEIF
817 !
818 !-----------------------------------------------------------------------
819 ! ERROR ON THE ROW ELEMENT
820 !-----------------------------------------------------------------------
821 !
822  ELSE
823  WRITE(lu,1001) formul
824  WRITE(lu,2001) ielm1
825  CALL plante(1)
826  stop
827  ENDIF
828 !
829 !=======================================================================
830 ! CONTRIBUTION OF SUPG TO THE MASS MATRIX
831 !=======================================================================
832 !
833  ELSEIF(formul(1:16).EQ.'MASUPG ') THEN
834 !
835 !-----------------------------------------------------------------------
836 ! P1 TRIANGLE ROW ELEMENT
837  IF(ielm1.EQ.11) THEN
838 !
839 !.......................................................................
840 ! P1 TRIANGLE COLUMN ELEMENT
841  IF(ielm2.EQ.11) THEN
842  ! IKLE4 is not used because we are not in quasi bubble
843  ! GIving it IKLE(1,4) instead
844  CALL mt03aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
845  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
846  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
847  & xmul,sf,sg,su,sv,f,g,u,v,xel,yel,surfac,
848  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,3),
849  & nelem,nelmax)
850 !
851  typdia='Q'
852  typext='Q'
853 !
854 !.......................................................................
855 ! OTHER
856 !.......................................................................
857 !
858 ! ELSEIF
859 !
860 !-----------------------------------------------------------------------
861 ! ERROR ON THE COLUMN ELEMENT
862 !-----------------------------------------------------------------------
863 !
864  ELSE
865  WRITE(lu,1001) formul
866  WRITE(lu,2001) ielm1
867  WRITE(lu,3001) ielm2
868  CALL plante(1)
869  stop
870  ENDIF
871 !
872 !-----------------------------------------------------------------------
873 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
874  ELSEIF(ielm1.EQ.12) THEN
875 !
876 !.......................................................................
877 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
878  IF(ielm2.EQ.12) THEN
879  CALL mt03bb
880  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
881  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
882  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
883  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
884  & xmul,sf,sg,su,sv,f,g,u,v,
885  & xel,yel,ikle(1,1),ikle(1,2),ikle(1,3),nelem,nelmax)
886 !
887  typdia='Q'
888  typext='Q'
889 !
890 !.......................................................................
891 ! OTHER
892 !.......................................................................
893 !
894 ! ELSEIF
895 !
896 !-----------------------------------------------------------------------
897 ! ERROR ON THE COLUMN ELEMENT
898 !-----------------------------------------------------------------------
899 !
900  ELSE
901  WRITE(lu,1001) formul
902  WRITE(lu,2001) ielm1
903  WRITE(lu,3001) ielm2
904  CALL plante(1)
905  stop
906  ENDIF
907 !
908 !-----------------------------------------------------------------------
909 ! P2 TRIANGLE ROW ELEMENT
910  ELSEIF(ielm1.EQ.13) THEN
911 !
912 !.......................................................................
913 ! P2 TRIANGLE COLUMN ELEMENT
914  IF(ielm2.EQ.13) THEN
915  CALL mt03cc
916  & ( t(1,1) ,xm(1,ppq(1,2,s)),xm(1,ppq(1,3,s)),
917  & xm(1,ppq(1,4,s)),xm(1,ppq(1,5,s)),xm(1,ppq(1,6,s)),
918  & xm(1,ppq(2,1,s)),t(1,2),xm(1,ppq(2,3,s)),xm(1,ppq(2,4,s)),
919  & xm(1,ppq(2,5,s)),xm(1,ppq(2,6,s)),xm(1,ppq(3,1,s)),
920  & xm(1,ppq(3,2,s)),t(1,3),xm(1,ppq(3,4,s)),xm(1,ppq(3,5,s)),
921  & xm(1,ppq(3,6,s)),xm(1,ppq(4,1,s)),xm(1,ppq(4,2,s)),
922  & xm(1,ppq(4,3,s)),t(1,4),xm(1,ppq(4,5,s)),xm(1,ppq(4,6,s)),
923  & xm(1,ppq(5,1,s)),xm(1,ppq(5,2,s)),xm(1,ppq(5,3,s)),
924  & xm(1,ppq(5,4,s)), t(1,5) ,xm(1,ppq(5,6,s)),
925  & xm(1,ppq(6,1,s)),xm(1,ppq(6,2,s)) ,xm(1,ppq(6,3,s)),
926  & xm(1,ppq(6,4,s)),xm(1,ppq(6,5,s)),t(1,6),
927  & xmul,sf,sg,su,sv,f,g,u,v,xel,yel,
928  & ikle(1,1),ikle(1,2),ikle(1,3),
929  & ikle(1,4),ikle(1,5),ikle(1,6),
930  & nelem,nelmax)
931 !
932  typdia='Q'
933  typext='Q'
934 !.......................................................................
935 ! OTHER
936 !.......................................................................
937 !
938 ! ELSEIF
939 !
940 !-----------------------------------------------------------------------
941 ! ERROR ON THE COLUMN ELEMENT
942 !-----------------------------------------------------------------------
943 !
944  ELSE
945  WRITE(lu,1001) formul
946  WRITE(lu,2001) ielm1
947  WRITE(lu,3001) ielm2
948  CALL plante(1)
949  stop
950  ENDIF
951 !
952 !-----------------------------------------------------------------------
953 ! OTHER
954 !-----------------------------------------------------------------------
955 !
956 ! ELSEIF
957 !
958 !-----------------------------------------------------------------------
959 ! ERROR ON THE ROW ELEMENT
960 !-----------------------------------------------------------------------
961 !
962  ELSE
963  WRITE(lu,1001) formul
964  WRITE(lu,2001) ielm1
965  CALL plante(1)
966  stop
967  ENDIF
968 !
969 !=======================================================================
970 ! U.GRAD U.GRAD MATRIX
971 !=======================================================================
972 !
973  ELSEIF(formul(1:6).EQ.'MAUGUG') THEN
974 !
975 !-----------------------------------------------------------------------
976 ! P1 TRIANGLE ROW ELEMENT
977  IF(ielm1.EQ.11) THEN
978 !
979 !.......................................................................
980 ! P1 TRIANGLE COLUMN ELEMENT
981  IF(ielm2.EQ.11) THEN
982  CALL mt04aa( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
983  & t(1,2) ,xm(1,aas(2,3,s)),
984  & t(1,3) ,
985  & xmul,su,sv,u,v,xel,yel,surfac,ikle,
986  & nelem,nelmax)
987 !
988  typdia='Q'
989  typext='S'
990 !
991 !.......................................................................
992 ! OTHER
993 !.......................................................................
994 !
995 ! ELSEIF
996 !
997 !-----------------------------------------------------------------------
998 ! ERROR ON THE COLUMN ELEMENT
999 !-----------------------------------------------------------------------
1000 !
1001  ELSE
1002  WRITE(lu,1001) formul
1003  WRITE(lu,2001) ielm1
1004  WRITE(lu,3001) ielm2
1005  CALL plante(1)
1006  stop
1007  ENDIF
1008 !
1009 !-----------------------------------------------------------------------
1010 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
1011  ELSEIF(ielm1.EQ.12) THEN
1012 !
1013 !.......................................................................
1014 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
1015  IF(ielm2.EQ.12) THEN
1016  CALL mt04bb
1017  & ( t(1,1) ,xm(1,bbs(1,2,s)),xm(1,bbs(1,3,s)),xm(1,bbs(1,4,s)),
1018  & t(1,2) ,xm(1,bbs(2,3,s)),xm(1,bbs(2,4,s)),
1019  & t(1,3) ,xm(1,bbs(3,4,s)),
1020  & t(1,4) ,
1021  & xmul,su,sv,u,v,xel,yel,
1022  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),nelem,nelmax)
1023 !
1024  typdia='Q'
1025  typext='S'
1026 !
1027 !.......................................................................
1028 ! OTHER
1029 !.......................................................................
1030 !
1031 ! ELSEIF
1032 !
1033 !-----------------------------------------------------------------------
1034 ! ERROR ON THE COLUMN ELEMENT
1035 !-----------------------------------------------------------------------
1036 !
1037  ELSE
1038  WRITE(lu,1001) formul
1039  WRITE(lu,2001) ielm1
1040  WRITE(lu,3001) ielm2
1041  CALL plante(1)
1042  stop
1043  ENDIF
1044 !
1045 !-----------------------------------------------------------------------
1046 ! P2 TRIANGLE ROW ELEMENT
1047  ELSEIF(ielm1.EQ.13) THEN
1048 !
1049 !.......................................................................
1050 ! P2 TRIANGLE COLUMN ELEMENT
1051  IF(ielm2.EQ.13) THEN
1052  CALL mt04cc
1053  & ( t(1,1) ,xm(1,pps(1,2,s)),xm(1,pps(1,3,s)),
1054  & xm(1,pps(1,4,s)),xm(1,pps(1,5,s)),xm(1,pps(1,6,s)),
1055  & t(1,2) ,xm(1,pps(2,3,s)),xm(1,pps(2,4,s)),
1056  & xm(1,pps(2,5,s)),xm(1,pps(2,6,s)),
1057  & t(1,3) ,xm(1,pps(3,4,s)),xm(1,pps(3,5,s)),
1058  & xm(1,pps(3,6,s)),
1059  & t(1,4) ,xm(1,pps(4,5,s)),xm(1,pps(4,6,s)),
1060  & t(1,5) ,xm(1,pps(5,6,s)),t(1,6),
1061  & xmul,su,sv,u,v,xel,yel,
1062  & ikle(1,1),ikle(1,2),ikle(1,3),
1063  & ikle(1,4),ikle(1,5),ikle(1,6),nelem,nelmax)
1064 !
1065  typdia='Q'
1066  typext='S'
1067 !
1068 !.......................................................................
1069 ! OTHER
1070 !.......................................................................
1071 !
1072 ! ELSEIF
1073 !
1074 !-----------------------------------------------------------------------
1075 ! ERROR ON THE COLUMN ELEMENT
1076 !-----------------------------------------------------------------------
1077 !
1078  ELSE
1079  WRITE(lu,1001) formul
1080  WRITE(lu,2001) ielm1
1081  WRITE(lu,3001) ielm2
1082  CALL plante(1)
1083  stop
1084  ENDIF
1085 !
1086 !-----------------------------------------------------------------------
1087 ! P1 PRISM ROW ELEMENT
1088  ELSEIF(ielm1.EQ.41) THEN
1089 !
1090 !.......................................................................
1091 ! P1 PRISM COLUMN ELEMENT
1092  IF(ielm2.EQ.41) THEN
1093  CALL mt04pp(t,xm,xmul,su,sv,sw,u,v,
1094  & xel,yel,zpt,surfac,ikle,nelem,nelmax,formul)
1095 !
1096  typdia='Q'
1097  IF(formul(7:7).EQ.'2') THEN
1098  typext='S'
1099  ELSE
1100  typext='Q'
1101  ENDIF
1102 !
1103 !.......................................................................
1104 ! OTHER
1105 !.......................................................................
1106 !
1107 ! ELSEIF
1108 !
1109 !-----------------------------------------------------------------------
1110 ! ERROR ON THE COLUMN ELEMENT
1111 !-----------------------------------------------------------------------
1112 !
1113  ELSE
1114  WRITE(lu,1001) formul
1115  WRITE(lu,2001) ielm1
1116  WRITE(lu,3001) ielm2
1117  CALL plante(1)
1118  stop
1119  ENDIF
1120 !
1121 !-----------------------------------------------------------------------
1122 ! TETRAHEDRON ROW ELEMENT
1123  ELSEIF(ielm1.EQ.31.OR.ielm1.EQ.51) THEN
1124 !
1125 !.......................................................................
1126 ! P1 PRISM COLUMN ELEMENT
1127  IF(ielm2.EQ.31.OR.ielm2.EQ.51) THEN
1128  CALL mt04tt(t,xm,xmul,su,sv,sw,u,v,w,
1129  & xpt,ypt,zpt,ikle,nelem,nelmax,formul)
1130 !
1131  typdia='Q'
1132  IF(formul(7:7).EQ.'2') THEN
1133  typext='S'
1134  ELSE
1135  typext='Q'
1136  ENDIF
1137 !
1138 !.......................................................................
1139 ! OTHER
1140 !.......................................................................
1141 !
1142 ! ELSEIF
1143 !
1144 !-----------------------------------------------------------------------
1145 ! ERROR ON THE COLUMN ELEMENT
1146 !-----------------------------------------------------------------------
1147 !
1148  ELSE
1149  WRITE(lu,1001) formul
1150  WRITE(lu,2001) ielm1
1151  WRITE(lu,3001) ielm2
1152  CALL plante(1)
1153  stop
1154  ENDIF
1155 !
1156 !-----------------------------------------------------------------------
1157 ! OTHER ROW ELEMENT
1158 !-----------------------------------------------------------------------
1159 !
1160 ! ELSEIF
1161 !
1162 !-----------------------------------------------------------------------
1163 ! ERROR ON THE ROW ELEMENT
1164 !-----------------------------------------------------------------------
1165 !
1166  ELSE
1167  WRITE(lu,1001) formul
1168  WRITE(lu,2001) ielm1
1169  CALL plante(1)
1170  stop
1171  ENDIF
1172 !
1173 !=======================================================================
1174 ! U.GRAD MATRIX
1175 !=======================================================================
1176 !
1177  ELSEIF(formul(1:6).EQ.'MATVGR') THEN
1178 !
1179  sigmag = .false.
1180  IF(formul(7:7).EQ.'2') sigmag = .true.
1181  specad = .false.
1182  IF(formul(8:8).EQ.'2') specad = .true.
1183 !
1184 !-----------------------------------------------------------------------
1185 ! P1 TRIANGLE ROW ELEMENT
1186  IF(ielm1.EQ.11) THEN
1187 !
1188 !.......................................................................
1189 ! P1 TRIANGLE COLUMN ELEMENT
1190  IF(ielm2.EQ.11) THEN
1191  CALL mt05aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
1192  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
1193  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
1194  & xmul,su,sv,u,v,xel,yel,ikle,
1195  & nelem,nelmax,formul)
1196 !
1197  typdia='Q'
1198  typext='Q'
1199 !
1200 !.......................................................................
1201 ! OTHER
1202 !.......................................................................
1203 !
1204 ! ELSEIF
1205 !
1206 !-----------------------------------------------------------------------
1207 ! ERROR ON THE COLUMN ELEMENT
1208 !-----------------------------------------------------------------------
1209 !
1210  ELSE
1211  WRITE(lu,1001) formul
1212  WRITE(lu,2001) ielm1
1213  WRITE(lu,3001) ielm2
1214  CALL plante(1)
1215  stop
1216  ENDIF
1217 !
1218 !-----------------------------------------------------------------------
1219 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
1220  ELSEIF(ielm1.EQ.12) THEN
1221 !
1222 !.......................................................................
1223 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
1224  IF(ielm2.EQ.12) THEN
1225  CALL mt05bb
1226  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
1227  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
1228  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
1229  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
1230  & xmul,su,sv,u,v,xel,yel,
1231  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
1232  & nelem,nelmax,formul)
1233 !
1234  typdia='Q'
1235  typext='Q'
1236 !
1237 !.......................................................................
1238 ! OTHER
1239 !.......................................................................
1240 !
1241 ! ELSEIF
1242 !
1243 !-----------------------------------------------------------------------
1244 ! ERROR ON THE COLUMN ELEMENT
1245 !-----------------------------------------------------------------------
1246 !
1247  ELSE
1248  WRITE(lu,1001) formul
1249  WRITE(lu,2001) ielm1
1250  WRITE(lu,3001) ielm2
1251  CALL plante(1)
1252  stop
1253  ENDIF
1254 !
1255 !-----------------------------------------------------------------------
1256 ! P2 TRIANGLE ROW ELEMENT
1257  ELSEIF(ielm1.EQ.13) THEN
1258 !
1259 !.......................................................................
1260 ! P2 TRIANGLE COLUMN ELEMENT
1261  IF(ielm2.EQ.13) THEN
1262  CALL mt05cc
1263  & ( t(1,1) ,xm(1,ppq(1,2,s)),xm(1,ppq(1,3,s)),
1264  & xm(1,ppq(1,4,s)),xm(1,ppq(1,5,s)),xm(1,ppq(1,6,s)),
1265  & xm(1,ppq(2,1,s)),t(1,2),xm(1,ppq(2,3,s)),xm(1,ppq(2,4,s)),
1266  & xm(1,ppq(2,5,s)),xm(1,ppq(2,6,s)),xm(1,ppq(3,1,s)),
1267  & xm(1,ppq(3,2,s)),t(1,3),xm(1,ppq(3,4,s)),xm(1,ppq(3,5,s)),
1268  & xm(1,ppq(3,6,s)),xm(1,ppq(4,1,s)),xm(1,ppq(4,2,s)),
1269  & xm(1,ppq(4,3,s)),t(1,4),xm(1,ppq(4,5,s)),xm(1,ppq(4,6,s)),
1270  & xm(1,ppq(5,1,s)),xm(1,ppq(5,2,s)),xm(1,ppq(5,3,s)),
1271  & xm(1,ppq(5,4,s)), t(1,5) ,xm(1,ppq(5,6,s)),
1272  & xm(1,ppq(6,1,s)),xm(1,ppq(6,2,s)) ,xm(1,ppq(6,3,s)),
1273  & xm(1,ppq(6,4,s)),xm(1,ppq(6,5,s)),t(1,6),
1274  & xmul,su,sv,u,v,xel,yel,
1275  & ikle(1,1),ikle(1,2),ikle(1,3),
1276  & ikle(1,4),ikle(1,5),ikle(1,6),
1277  & nelem,nelmax,formul)
1278 !
1279  typdia='Q'
1280  typext='Q'
1281 !
1282 !.......................................................................
1283 ! OTHER
1284 !.......................................................................
1285 !
1286 ! ELSEIF
1287 !
1288 !-----------------------------------------------------------------------
1289 ! ERROR ON THE COLUMN ELEMENT
1290 !-----------------------------------------------------------------------
1291 !
1292  ELSE
1293  WRITE(lu,1001) formul
1294  WRITE(lu,2001) ielm1
1295  WRITE(lu,3001) ielm2
1296  CALL plante(1)
1297  stop
1298  ENDIF
1299 !
1300 !-----------------------------------------------------------------------
1301 ! P1 PRISM ROW ELEMENT
1302  ELSEIF(ielm1.EQ.41) THEN
1303 !
1304 !.......................................................................
1305 ! P1 PRISM COLUMN ELEMENT
1306  IF(ielm2.EQ.41) THEN
1307  CALL mt05pp(t,xm,xmul,su,sv,sw,u,v,w,f,g,
1308  & xel,yel,zpt,ikle,nelem,nelmax,sigmag,
1309  & specad,nplan)
1310 !
1311  typdia='Q'
1312  typext='Q'
1313 !
1314 !.......................................................................
1315 ! OTHER
1316 !.......................................................................
1317 !
1318 ! ELSEIF
1319 !
1320 !-----------------------------------------------------------------------
1321 ! ERROR ON THE COLUMN ELEMENT
1322 !-----------------------------------------------------------------------
1323 !
1324  ELSE
1325  WRITE(lu,1001) formul
1326  WRITE(lu,2001) ielm1
1327  WRITE(lu,3001) ielm2
1328  CALL plante(1)
1329  stop
1330  ENDIF
1331 !
1332 !-----------------------------------------------------------------------
1333 ! TETRAHEDRON ROW ELEMENT
1334  ELSEIF(ielm1.EQ.31.OR.ielm1.EQ.51) THEN
1335 !
1336 !.......................................................................
1337 ! P1 PRISM COLUMN ELEMENT
1338  IF(ielm2.EQ.31.OR.ielm2.EQ.51) THEN
1339  CALL mt05tt(t,xm,xmul,su,sv,sw,u,v,w,
1340  & xpt,ypt,zpt,ikle,nelem,nelmax)
1341 !
1342  typdia='Q'
1343  typext='Q'
1344 !
1345 !.......................................................................
1346 ! OTHER
1347 !.......................................................................
1348 !
1349 ! ELSEIF
1350 !
1351 !-----------------------------------------------------------------------
1352 ! ERROR ON THE COLUMN ELEMENT
1353 !-----------------------------------------------------------------------
1354 !
1355  ELSE
1356  WRITE(lu,1001) formul
1357  WRITE(lu,2001) ielm1
1358  WRITE(lu,3001) ielm2
1359  CALL plante(1)
1360  stop
1361  ENDIF
1362 !
1363 !-----------------------------------------------------------------------
1364 ! ERROR ON THE ROW ELEMENT
1365 !-----------------------------------------------------------------------
1366 !
1367  ELSE
1368  WRITE(lu,1001) formul
1369  WRITE(lu,2001) ielm1
1370  CALL plante(1)
1371  stop
1372  ENDIF
1373 !
1374 !=======================================================================
1375 ! F PSI PSJ MATRIX
1376 !=======================================================================
1377 !
1378  ELSEIF(formul(1:6).EQ.'FMATMA') THEN
1379 !
1380 !-----------------------------------------------------------------------
1381 ! P1 TRIANGLE ROW ELEMENT
1382  IF(ielm1.EQ.11) THEN
1383 !
1384 !.......................................................................
1385 ! P1 TRIANGLE COLUMN ELEMENT
1386  IF(ielm2.EQ.11) THEN
1387 !
1388  CALL mt06aa( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
1389  & t(1,2) ,xm(1,aas(2,3,s)),
1390  & t(1,3) ,
1391  & xmul,sf,f,surfac,
1392  & ikle(1,1),ikle(1,2),ikle(1,3),nelem,nelmax)
1393 !
1394  typdia='Q'
1395  typext='S'
1396 !
1397 !.......................................................................
1398 ! OTHER
1399 !.......................................................................
1400 !
1401 ! ELSEIF
1402 !
1403 !-----------------------------------------------------------------------
1404 ! ERROR ON THE COLUMN ELEMENT
1405 !-----------------------------------------------------------------------
1406 !
1407  ELSE
1408  WRITE(lu,1001) formul
1409  WRITE(lu,2001) ielm1
1410  WRITE(lu,3001) ielm2
1411  CALL plante(1)
1412  stop
1413  ENDIF
1414 !
1415 !-----------------------------------------------------------------------
1416 ! P1 TRIANGLE ROW ELEMENT
1417 ! (LATERAL SIDE OF PRISM SPLIT IN TETRAHEDRONS)
1418 !
1419  ELSEIF(ielm1.EQ.61.OR.ielm1.EQ.81) THEN
1420 !
1421 !.......................................................................
1422 ! P1 TRIANGLE COLUMN ELEMENT
1423  IF(ielm2.EQ.61.OR.ielm1.EQ.81) THEN
1424 !
1425 ! CHARACTER 7 ALSO INFORMS WHETHER THE ADDITIONAL TERM IS REQUIRED
1426 ! FOR ESTEL-3D
1427 !
1428  IF(formul(7:7).NE.'2') THEN
1429 !
1430  CALL mt06ft
1431  & ( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
1432  & t(1,2) ,xm(1,aas(2,3,s)),
1433  & t(1,3) ,
1434  & xmul,sf,f,xpt,ypt,zpt,
1435  & iklbor(1,1),iklbor(1,2),iklbor(1,3),
1436  & nbor,neleb,nelebx)
1437 !
1438  ELSE
1439  CALL mt06ft2
1440  & ( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
1441  & t(1,2) ,xm(1,aas(2,3,s)),
1442  & t(1,3) ,
1443  & xmul,sf,f,su,u,xpt,ypt,zpt,
1444  & iklbor(1,1),iklbor(1,2),iklbor(1,3),
1445  & nbor,neleb,nelebx)
1446  ENDIF
1447  typdia='Q'
1448  typext='S'
1449 !
1450 !.......................................................................
1451 ! OTHER
1452 !.......................................................................
1453 !
1454 ! ELSEIF
1455 !
1456 !-----------------------------------------------------------------------
1457 ! ERROR ON THE COLUMN ELEMENT
1458 !-----------------------------------------------------------------------
1459 !
1460  ELSE
1461  WRITE(lu,1001) formul
1462  WRITE(lu,2001) ielm1
1463  WRITE(lu,3001) ielm2
1464  CALL plante(1)
1465  stop
1466  ENDIF
1467 !
1468 !-----------------------------------------------------------------------
1469 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
1470 !
1471  ELSEIF(ielm1.EQ.12) THEN
1472 !
1473 !.......................................................................
1474 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
1475  IF(ielm2.EQ.12) THEN
1476  CALL mt06bb
1477  & ( t(1,1) ,xm(1,bbs(1,2,s)),xm(1,bbs(1,3,s)),xm(1,bbs(1,4,s)),
1478  & t(1,2) ,xm(1,bbs(2,3,s)),xm(1,bbs(2,4,s)),
1479  & t(1,3) ,xm(1,bbs(3,4,s)),
1480  & t(1,4) ,
1481  & xmul,sf,f,surfac,
1482  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),nelem,nelmax)
1483 !
1484  typdia='Q'
1485  typext='S'
1486 !
1487 !.......................................................................
1488 ! OTHER
1489 !.......................................................................
1490 !
1491 ! ELSEIF
1492 !
1493 !-----------------------------------------------------------------------
1494 ! ERROR ON THE COLUMN ELEMENT
1495 !-----------------------------------------------------------------------
1496 !
1497  ELSE
1498  WRITE(lu,1001) formul
1499  WRITE(lu,2001) ielm1
1500  WRITE(lu,3001) ielm2
1501  CALL plante(1)
1502  stop
1503  ENDIF
1504 !
1505 !-----------------------------------------------------------------------
1506 ! QUADRATIC TRIANGLE ROW ELEMENT
1507 !
1508  ELSEIF(ielm1.EQ.13) THEN
1509 !
1510 !.......................................................................
1511 ! QUADRATIC TRIANGLE COLUMN ELEMENT
1512  IF(ielm2.EQ.13) THEN
1513  CALL mt06cc
1514  & ( t(1,1) ,xm(1,pps(1,2,s)),xm(1,pps(1,3,s)),
1515  & xm(1,pps(1,4,s)),xm(1,pps(1,5,s)),xm(1,pps(1,6,s)),
1516  & t(1,2) ,xm(1,pps(2,3,s)),xm(1,pps(2,4,s)),
1517  & xm(1,pps(2,5,s)),xm(1,pps(2,6,s)),
1518  & t(1,3) ,xm(1,pps(3,4,s)),xm(1,pps(3,5,s)),xm(1,pps(3,6,s)),
1519  & t(1,4) ,xm(1,pps(4,5,s)),xm(1,pps(4,6,s)),
1520  & t(1,5) ,xm(1,pps(5,6,s)),t(1,6) ,
1521  & xmul,sf,f,surfac,
1522  & ikle(1,1),ikle(1,2),ikle(1,3),
1523  & ikle(1,4),ikle(1,5),ikle(1,6),nelem,nelmax)
1524 !
1525  typdia='Q'
1526  typext='S'
1527 !
1528 !.......................................................................
1529 ! OTHER
1530 !.......................................................................
1531 !
1532 ! ELSEIF
1533 !
1534 !-----------------------------------------------------------------------
1535 ! ERROR ON THE COLUMN ELEMENT
1536 !-----------------------------------------------------------------------
1537 !
1538  ELSE
1539  WRITE(lu,1001) formul
1540  WRITE(lu,2001) ielm1
1541  WRITE(lu,3001) ielm2
1542  CALL plante(1)
1543  stop
1544  ENDIF
1545 !
1546 !-----------------------------------------------------------------------
1547 ! QUADRILATERAL ROW ELEMENT (LATERAL SIDE OF PRISM)
1548  ELSEIF(ielm1.EQ.71) THEN
1549 !
1550 !.......................................................................
1551 !
1552 ! BEWARE !!!!!!!!!!
1553 ! QUADRANGLE COLUMN ELEMENT FOR TELEMAC-3D PRISMS
1554  IF(ielm2.EQ.71) THEN
1555 !
1556  CALL mt06ff
1557  & ( t(1,1) ,xm(1,ffs(1,2,s)),xm(1,ffs(1,3,s)),xm(1,ffs(1,4,s)),
1558  & t(1,2) ,xm(1,ffs(2,3,s)),xm(1,ffs(2,4,s)),
1559  & t(1,3) ,xm(1,ffs(3,4,s)),
1560  & t(1,4) ,
1561  & xmul,sf,f,xel,yel,zpt,
1562  & iklbor(1,1),iklbor(1,2),iklbor(1,3),iklbor(1,4),
1563  & nbor,nelbor,nulone,neleb,nelebx,nelmax)
1564 !
1565  typdia='Q'
1566  typext='S'
1567 !
1568 !.......................................................................
1569 ! OTHER
1570 !.......................................................................
1571 !
1572 ! ELSEIF
1573 !
1574 !-----------------------------------------------------------------------
1575 ! ERROR ON THE COLUMN ELEMENT
1576 !-----------------------------------------------------------------------
1577 !
1578  ELSE
1579  WRITE(lu,1001) formul
1580  WRITE(lu,2001) ielm1
1581  WRITE(lu,3001) ielm2
1582  CALL plante(1)
1583  stop
1584  ENDIF
1585 !-----------------------------------------------------------------------
1586 ! P1 SEGMENT ROW ELEMENT
1587  ELSEIF(ielm1.EQ.1) THEN
1588 !.......................................................................
1589 ! P1 SEGMENT COLUMN ELEMENT
1590  IF(ielm2.EQ.1.AND.s.EQ.1) THEN
1591  CALL mt06oo( t(1,1) ,xm(1,oos(1,2,s)),
1592  & t(1,2) ,
1593  & xmul,sf,f,lgseg,iklbor(1,1),iklbor(1,2),
1594  & nbor,neleb,nelebx)
1595 !
1596  typdia='Q'
1597  typext='S'
1598 !.......................................................................
1599 ! OTHER
1600 !.......................................................................
1601 !
1602 ! ELSEIF
1603 !
1604 !-----------------------------------------------------------------------
1605 ! ERROR ON THE COLUMN ELEMENT
1606 !-----------------------------------------------------------------------
1607 !
1608  ELSE
1609  WRITE(lu,1001) formul
1610  WRITE(lu,2001) ielm1
1611  WRITE(lu,3001) ielm2
1612  CALL plante(1)
1613  stop
1614  ENDIF
1615 !
1616 !-----------------------------------------------------------------------
1617 ! P2 SEGMENT ROW ELEMENT
1618  ELSEIF(ielm1.EQ.2) THEN
1619 !.......................................................................
1620 ! P2 SEGMENT COLUMN ELEMENT
1621  IF(ielm2.EQ.2.AND.s.EQ.1) THEN
1622  CALL mt06oc
1623  & ( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
1624  & t(1,2) ,xm(1,aas(2,3,s)),
1625  & t(1,3) ,
1626  & xmul,sf,f,lgseg,iklbor(1,1),iklbor(1,2),iklbor(1,3),
1627  & nbor,neleb,nelebx)
1628 !
1629  typdia='Q'
1630  typext='S'
1631 !.......................................................................
1632 ! OTHER
1633 !.......................................................................
1634 !
1635 ! ELSEIF
1636 !
1637 !-----------------------------------------------------------------------
1638 ! ERROR ON THE COLUMN ELEMENT
1639 !-----------------------------------------------------------------------
1640 !
1641  ELSE
1642  WRITE(lu,1001) formul
1643  WRITE(lu,2001) ielm1
1644  WRITE(lu,3001) ielm2
1645  CALL plante(1)
1646  stop
1647  ENDIF
1648 !
1649 !-----------------------------------------------------------------------
1650 ! P1 PRISM ROW ELEMENT
1651 !
1652  ELSE IF (ielm1.EQ.41) THEN
1653 !.......................................................................
1654 ! P1 PRISM COLUMN ELEMENT
1655  IF (ielm2.EQ.41) THEN
1656  CALL mt06pp(t,xm,xmul,sf,f,zpt,surfac,ikle,nelem,nelmax)
1657 !
1658  typdia='Q'
1659  typext='S'
1660 !
1661 !.......................................................................
1662 ! OTHER
1663 !.......................................................................
1664 !
1665 ! ELSEIF
1666 !
1667 !-----------------------------------------------------------------------
1668 ! ERROR ON THE COLUMN ELEMENT
1669 !-----------------------------------------------------------------------
1670 !
1671  ELSE
1672  WRITE(lu,1001) formul
1673  WRITE(lu,2001) ielm1
1674  WRITE(lu,3001) ielm2
1675  CALL plante(1)
1676  stop
1677  ENDIF
1678 !
1679 !-----------------------------------------------------------------------
1680 ! OTHER
1681 !-----------------------------------------------------------------------
1682 !
1683 ! ELSEIF
1684 !
1685 !
1686 !-----------------------------------------------------------------------
1687 ! TETRAHEDRON ROW ELEMENT
1688 !
1689  ELSE IF (ielm1.EQ.31.OR.ielm1.EQ.51) THEN
1690 !.......................................................................
1691 ! P1 PRISM COLUMN ELEMENT
1692  IF (ielm2.EQ.31.OR.ielm2.EQ.51) THEN
1693  CALL mt06tt(t,xm,
1694  & xmul,sf,f,
1695  & xpt,ypt,zpt,ikle,nelem,nelmax)
1696 !
1697  typdia='Q'
1698  typext='S'
1699 !
1700 !.......................................................................
1701 ! OTHER
1702 !.......................................................................
1703 !
1704 ! ELSEIF
1705 !
1706 !-----------------------------------------------------------------------
1707 ! ERROR ON THE COLUMN ELEMENT
1708 !-----------------------------------------------------------------------
1709 !
1710  ELSE
1711  WRITE(lu,1001) formul
1712  WRITE(lu,2001) ielm1
1713  WRITE(lu,3001) ielm2
1714  CALL plante(1)
1715  stop
1716  ENDIF
1717 !
1718 !-----------------------------------------------------------------------
1719 ! OTHER
1720 !-----------------------------------------------------------------------
1721 !
1722 ! ELSEIF
1723 !-----------------------------------------------------------------------
1724 ! ERROR ON THE ROW ELEMENT
1725 !-----------------------------------------------------------------------
1726 !
1727  ELSE
1728  WRITE(lu,1001) formul
1729  WRITE(lu,2001) ielm1
1730  CALL plante(1)
1731  stop
1732  ENDIF
1733 !
1734 !=======================================================================
1735 ! MASS-LUMPED MASS MATRIX
1736 !=======================================================================
1737 !
1738  ELSEIF(formul(1:16).EQ.'MSLUMP ') THEN
1739 !
1740 ! TESTS THE ROW ELEMENT
1741 !
1742 !-----------------------------------------------------------------------
1743 ! P1 TRIANGLE
1744 !-----------------------------------------------------------------------
1745 !
1746  IF(ielm1.EQ.11) THEN
1747 !
1748 ! TESTS THE COLUMN ELEMENT
1749 !
1750 !.......................................................................
1751 ! P1 TRIANGLE
1752 !.......................................................................
1753 !
1754  IF(ielm2.EQ.11) THEN
1755  CALL mt07aa( t(1,1) ,xm(1,aas(1,2,s)),xm(1,aas(1,3,s)),
1756  & t(1,2) ,xm(1,aas(2,3,s)),
1757  & t(1,3) ,
1758  & xmul,sf,f,surfac,nelem,nelmax)
1759 !
1760  typdia='Q'
1761  typext='S'
1762 !
1763 !.......................................................................
1764 ! OTHER
1765 !.......................................................................
1766 !
1767 ! ELSEIF
1768 !
1769 !-----------------------------------------------------------------------
1770 ! ERROR ON THE COLUMN ELEMENT
1771 !-----------------------------------------------------------------------
1772 !
1773  ELSE
1774  WRITE(lu,1001) formul
1775  WRITE(lu,2001) ielm1
1776  WRITE(lu,3001) ielm2
1777  CALL plante(1)
1778  stop
1779  ENDIF
1780 !
1781 !-----------------------------------------------------------------------
1782 ! QUASI-BUBBLE TRIANGLE
1783 !-----------------------------------------------------------------------
1784 !
1785  ELSEIF(ielm1.EQ.12) THEN
1786 !
1787 ! TESTS THE COLUMN ELEMENT
1788 !
1789 !.......................................................................
1790 ! QUASI-BUBBLE TRIANGLE
1791 !.......................................................................
1792 !
1793  IF(ielm2.EQ.12) THEN
1794  CALL mt07bb
1795  & ( t(1,1) ,xm(1,bbs(1,2,s)),xm(1,bbs(1,3,s)),xm(1,bbs(1,4,s)),
1796  & t(1,2) ,xm(1,bbs(2,3,s)),xm(1,bbs(2,4,s)),
1797  & t(1,3) ,xm(1,bbs(3,4,s)),
1798  & t(1,4) ,
1799  & xmul,sf,f,surfac,nelem,nelmax)
1800 !
1801  typdia='Q'
1802  typext='S'
1803 !
1804 !.......................................................................
1805 ! OTHER
1806 !.......................................................................
1807 !
1808 ! ELSEIF
1809 !
1810 !-----------------------------------------------------------------------
1811 ! ERROR ON THE COLUMN ELEMENT
1812 !-----------------------------------------------------------------------
1813 !
1814  ELSE
1815  WRITE(lu,1001) formul
1816  WRITE(lu,2001) ielm1
1817  WRITE(lu,3001) ielm2
1818  CALL plante(1)
1819  stop
1820  ENDIF
1821 !
1822 !-----------------------------------------------------------------------
1823 ! P2 TRIANGLE
1824 !-----------------------------------------------------------------------
1825 !
1826  ELSEIF(ielm1.EQ.13) THEN
1827 !
1828 ! TESTS THE COLUMN ELEMENT
1829 !
1830 !.......................................................................
1831 ! P2 TRIANGLE
1832 !.......................................................................
1833 !
1834  IF(ielm2.EQ.13) THEN
1835  CALL mt07cc
1836  & ( t(1,1) ,xm(1,pps(1,2,s)),xm(1,pps(1,3,s)),
1837  & xm(1,pps(1,4,s)),xm(1,pps(1,5,s)),xm(1,pps(1,6,s)),
1838  & t(1,2) ,xm(1,pps(2,3,s)),xm(1,pps(2,4,s)),
1839  & xm(1,pps(2,5,s)),xm(1,pps(2,6,s)),
1840  & t(1,3) ,xm(1,pps(3,4,s)),xm(1,pps(3,5,s)),
1841  & xm(1,pps(3,6,s)),
1842  & t(1,4) ,xm(1,pps(4,5,s)),xm(1,pps(4,6,s)),
1843  & t(1,5) ,xm(1,pps(5,6,s)),t(1,6),
1844  & xmul,sf,f,surfac,nelem,nelmax)
1845 !
1846  typdia='Q'
1847  typext='S'
1848 !
1849 !.......................................................................
1850 ! OTHER
1851 !.......................................................................
1852 !
1853 ! ELSEIF
1854 !
1855 !-----------------------------------------------------------------------
1856 ! ERROR ON THE COLUMN ELEMENT
1857 !-----------------------------------------------------------------------
1858 !
1859  ELSE
1860  WRITE(lu,1001) formul
1861  WRITE(lu,2001) ielm1
1862  WRITE(lu,3001) ielm2
1863  CALL plante(1)
1864  stop
1865  ENDIF
1866 !
1867 !-----------------------------------------------------------------------
1868 ! OTHER
1869 !-----------------------------------------------------------------------
1870 !
1871 ! ELSEIF
1872 !
1873 !-----------------------------------------------------------------------
1874 ! ERROR ON THE ROW ELEMENT
1875 !-----------------------------------------------------------------------
1876 !
1877  ELSE
1878  WRITE(lu,1001) formul
1879  WRITE(lu,2001) ielm1
1880  CALL plante(1)
1881  stop
1882  ENDIF
1883 !
1884 !=======================================================================
1885 ! U GRADIENT MATRIX
1886 !=======================================================================
1887 !
1888  ELSEIF(formul(1:15).EQ.'MATFGR ') THEN
1889 !
1890 ! CHARACTER 16 IS THE SELECTED COORDINATE
1891 !
1892  IF(formul(16:16).EQ.'X') THEN
1893  icoord=1
1894  ELSEIF(formul(16:16).EQ.'Y') THEN
1895  icoord=2
1896  ELSEIF(formul(16:16).EQ.'Z') THEN
1897  icoord=3
1898  ENDIF
1899 !
1900 !-----------------------------------------------------------------------
1901 ! P1 TRIANGLE ROW ELEMENT
1902 !-----------------------------------------------------------------------
1903 !
1904  IF(ielm1.EQ.11) THEN
1905 !
1906 !.......................................................................
1907 ! P1 TRIANGLE COLUMN ELEMENT
1908 !.......................................................................
1909 !
1910  IF(ielm2.EQ.11) THEN
1911  CALL mt08aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
1912  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
1913  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
1914  & xmul,sf,f,xel,yel,
1915  & ikle(1,1),ikle(1,2),ikle(1,3),
1916  & nelem,nelmax,icoord)
1917 !
1918  typdia='Q'
1919  typext='Q'
1920 !
1921 !.......................................................................
1922 !
1923  ELSEIF(ielm2.EQ.12) THEN
1924  CALL mt08ab
1925  & ( t(1,1) ,xm(1,abq(1,2,s)),xm(1,abq(1,3,s)),xm(1,abq(1,4,s)),
1926  & xm(1,abq(2,1,s)), t(1,2) ,xm(1,abq(2,3,s)),xm(1,abq(2,4,s)),
1927  & xm(1,abq(3,1,s)),xm(1,abq(3,2,s)), t(1,3) ,xm(1,abq(3,4,s)),
1928  & xmul,sf,f,xel,yel,
1929  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
1930  & nelem,nelmax,icoord)
1931 !
1932  typdia='Q'
1933  typext='Q'
1934 !
1935  ELSEIF(ielm2.EQ.13) THEN
1936  CALL mt08ac( t(1,1) ,xm(1,acq(1,2,s)),xm(1,acq(1,3,s)),
1937  & xm(1,acq(1,4,s)),xm(1,acq(1,5,s)),
1938  & xm(1,acq(1,6,s)),xm(1,acq(2,1,s)),
1939  & t(1,2) ,xm(1,acq(2,3,s)),
1940  & xm(1,acq(2,4,s)),xm(1,acq(2,5,s)),
1941  & xm(1,acq(2,6,s)),xm(1,acq(3,1,s)),
1942  & xm(1,acq(3,2,s)),t(1,3) ,xm(1,acq(3,4,s)),
1943  & xm(1,acq(3,5,s)),xm(1,acq(3,6,s)),
1944  & xmul,sf,f,xel,yel,
1945  & ikle(1,1),ikle(1,2),ikle(1,3),
1946  & ikle(1,4),ikle(1,5),ikle(1,6),
1947  & nelem,nelmax,icoord)
1948 !
1949  typdia='Q'
1950  typext='Q'
1951 !
1952 !.......................................................................
1953 ! OTHER
1954 !.......................................................................
1955 !
1956 ! ELSEIF
1957 !
1958 !-----------------------------------------------------------------------
1959 ! ERROR ON THE COLUMN ELEMENT
1960 !-----------------------------------------------------------------------
1961 !
1962  ELSE
1963  WRITE(lu,1001) formul
1964  WRITE(lu,2001) ielm1
1965  WRITE(lu,3001) ielm2
1966  CALL plante(1)
1967  stop
1968  ENDIF
1969 !
1970 !-----------------------------------------------------------------------
1971 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
1972  ELSEIF(ielm1.EQ.12) THEN
1973 !
1974 !.......................................................................
1975 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
1976  IF(ielm2.EQ.12) THEN
1977  CALL mt08bb
1978  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
1979  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
1980  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
1981  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
1982  & xmul,sf,f,xel,yel,
1983  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
1984  & nelem,nelmax,icoord)
1985 !
1986  typdia='Q'
1987  typext='Q'
1988 !
1989 ! LINEAR TRIANGLE COLUMN ELEMENT
1990  ELSEIF(ielm2.EQ.11) THEN
1991  CALL mt08ba
1992  & ( t(1,1) ,xm(1,baq(1,2,s)),xm(1,baq(1,3,s)),
1993  & xm(1,baq(2,1,s)), t(1,2) ,xm(1,baq(2,3,s)),
1994  & xm(1,baq(3,1,s)),xm(1,baq(3,2,s)), t(1,3) ,
1995  & xm(1,baq(4,1,s)),xm(1,baq(4,2,s)),xm(1,baq(4,3,s)),
1996  & xmul,sf,f,xel,yel,
1997  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
1998  & nelem,nelmax,icoord)
1999 !
2000  typdia='Q'
2001  typext='Q'
2002 !.......................................................................
2003 ! OTHER
2004 !.......................................................................
2005 !
2006 ! ELSEIF
2007 !
2008 !-----------------------------------------------------------------------
2009 ! ERROR ON THE COLUMN ELEMENT
2010 !-----------------------------------------------------------------------
2011 !
2012  ELSE
2013  WRITE(lu,1001) formul
2014  WRITE(lu,2001) ielm1
2015  WRITE(lu,3001) ielm2
2016  CALL plante(1)
2017  stop
2018  ENDIF
2019 !
2020 !-----------------------------------------------------------------------
2021 !
2022 ! P1 PRISM ROW ELEMENT
2023  ELSEIF(ielm1.EQ.41) THEN
2024 !
2025 !.......................................................................
2026 ! P1 PRISM COLUMN ELEMENT
2027  IF(ielm2.EQ.41.AND.icoord.EQ.3) THEN
2028  CALL mt08pp(t,xm,xmul,sf,f,surfac,ikle,nelem,nelmax)
2029  typdia='Q'
2030  typext='Q'
2031 !
2032 !.......................................................................
2033 ! OTHER
2034 !.......................................................................
2035 !
2036 ! ELSEIF
2037 !
2038 !-----------------------------------------------------------------------
2039 ! ERROR ON THE COLUMN ELEMENT
2040 !-----------------------------------------------------------------------
2041 !
2042  ELSE
2043  WRITE(lu,1001) formul
2044  WRITE(lu,2001) ielm1
2045  WRITE(lu,3001) ielm2
2046  CALL plante(1)
2047  stop
2048  ENDIF
2049 !
2050 !-----------------------------------------------------------------------
2051 ! P1 PRISM ROW ELEMENT
2052  ELSEIF(ielm1.EQ.31.OR.ielm1.EQ.51) THEN
2053 !
2054 !.......................................................................
2055 ! P1 PRISM COLUMN ELEMENT
2056  IF(ielm2.EQ.31.OR.ielm2.EQ.51) THEN
2057  CALL mt08tt(t,xm,xmul,xpt,ypt,sf,f,ikle,nelem,nelmax)
2058  typdia='Q'
2059  typext='Q'
2060 !
2061 !.......................................................................
2062 ! OTHER
2063 !.......................................................................
2064 !
2065 ! ELSEIF
2066 !
2067 !-----------------------------------------------------------------------
2068 ! ERROR ON THE COLUMN ELEMENT
2069 !-----------------------------------------------------------------------
2070 !
2071  ELSE
2072  WRITE(lu,1001) formul
2073  WRITE(lu,2001) ielm1
2074  WRITE(lu,3001) ielm2
2075  CALL plante(1)
2076  stop
2077  ENDIF
2078 !-----------------------------------------------------------------------
2079 ! OTHER
2080 !-----------------------------------------------------------------------
2081 !
2082 ! ELSEIF
2083 !-----------------------------------------------------------------------
2084 ! ERROR ON THE ROW ELEMENT
2085 !-----------------------------------------------------------------------
2086 !
2087  ELSE
2088  WRITE(lu,1001) formul
2089  WRITE(lu,2001) ielm1
2090  CALL plante(1)
2091  stop
2092  ENDIF
2093 !
2094 !=======================================================================
2095 ! F U GRADIENT MATRIX (NOT IMPLEMENTED)
2096 !=======================================================================
2097 !
2098 ! ELSEIF(FORMUL(1:15).EQ.'MATQGR ') THEN
2099 !
2100 ! CHARACTER 16 IS THE SELECTED COORDINATE
2101 !
2102 ! IF(FORMUL(16:16).EQ.'X') THEN
2103 ! ICOORD=1
2104 ! ELSEIF(FORMUL(16:16).EQ.'Y') THEN
2105 ! ICOORD=2
2106 ! ELSEIF(FORMUL(16:16).EQ.'Z') THEN
2107 ! ICOORD=3
2108 ! ENDIF
2109 !
2110 !-----------------------------------------------------------------------
2111 ! P1 TRIANGLE ROW ELEMENT
2112 !-----------------------------------------------------------------------
2113 !
2114 ! IF(IELM1.EQ.11) THEN
2115 !
2116 !.......................................................................
2117 ! P1 TRIANGLE COLUMN ELEMENT
2118 !.......................................................................
2119 !
2120 ! IF(IELM1.EQ.11) THEN
2121 ! CALL MT09AA( T(1,1) ,XM(1,AAQ(1,2,S)),XM(1,AAQ(1,3,S)),
2122 ! * XM(1,AAQ(2,1,S)), T(1,2) ,XM(1,AAQ(2,3,S)),
2123 ! * XM(1,AAQ(3,1,S)),XM(1,AAQ(3,2,S)), T(1,3) ,
2124 ! * XMUL,SF,SG,SH,SU,SV,SW,F,G,H,U,V,W,
2125 ! * XEL,YEL,ZEL,SURFAC,
2126 ! * IKLE(1,1),IKLE(1,2),IKLE(1,3),
2127 ! * NELEM,NELMAX,ICOORD)
2128 !
2129 ! TYPDIA='Q'
2130 ! TYPEXT='Q'
2131 !
2132 !.......................................................................
2133 ! OTHER
2134 !.......................................................................
2135 !
2136 ! ELSEIF
2137 !
2138 !-----------------------------------------------------------------------
2139 ! ERROR ON THE COLUMN ELEMENT
2140 !-----------------------------------------------------------------------
2141 !
2142 ! ELSE
2143 ! WRITE(LU,1001) FORMUL
2144 ! WRITE(LU,2001) IELM1
2145 ! WRITE(LU,3001) IELM2
2146 ! CALL PLANTE(1)
2147 ! STOP
2148 ! ENDIF
2149 !
2150 !-----------------------------------------------------------------------
2151 ! OTHER
2152 !-----------------------------------------------------------------------
2153 !
2154 ! ELSEIF
2155 !
2156 !-----------------------------------------------------------------------
2157 ! ERROR ON THE ROW ELEMENT
2158 !-----------------------------------------------------------------------
2159 !
2160 ! ELSE
2161 ! WRITE(LU,1001) FORMUL
2162 ! WRITE(LU,2001) IELM1
2163 ! CALL PLANTE(1)
2164 ! STOP
2165 ! ENDIF
2166 !
2167 !=======================================================================
2168 ! U.N MATRIX (NOT IMPLEMENTED)
2169 !=======================================================================
2170 !
2171 ! ELSEIF(FORMUL(1:15).EQ.'?????? ') THEN
2172 !
2173 ! CHARACTER 16 IS THE SELECTED COORDINATE
2174 !
2175 ! IF(FORMUL(16:16).EQ.'X') THEN
2176 ! ICOORD=1
2177 ! ELSEIF(FORMUL(16:16).EQ.'Y') THEN
2178 ! ICOORD=2
2179 ! ELSEIF(FORMUL(16:16).EQ.'Z') THEN
2180 ! ICOORD=3
2181 ! ENDIF
2182 !
2183 !-----------------------------------------------------------------------
2184 ! P1 TRIANGLE ROW ELEMENT
2185 !-----------------------------------------------------------------------
2186 !
2187 ! IF(IELM1.EQ.11) THEN
2188 !
2189 !.......................................................................
2190 ! P1 TRIANGLE COLUMN ELEMENT
2191 !.......................................................................
2192 !
2193 ! IF(IELM1.EQ.11) THEN
2194 ! CALL MT10AA( T(1,1) ,XM(1,AAQ(1,2,S)),XM(1,AAQ(1,3,S)),
2195 ! * XM(1,AAQ(2,1,S)), T(1,2) ,XM(1,AAQ(2,3,S)),
2196 ! * XM(1,AAQ(3,1,S)),XM(1,AAQ(3,2,S)), T(1,3) ,
2197 ! * XMUL,SF,SG,SH,SU,SV,SW,F,G,H,U,V,W,
2198 ! * XEL,YEL,ZEL,SURFAC,
2199 ! * IKLE(1,1),IKLE(1,2),IKLE(1,3),
2200 ! * NELEM,NELMAX,ICOORD)
2201 !
2202 ! TYPDIA='Q'
2203 ! TYPEXT='Q'
2204 !
2205 !.......................................................................
2206 ! OTHER
2207 !.......................................................................
2208 !
2209 ! ELSEIF
2210 !
2211 !-----------------------------------------------------------------------
2212 ! ERROR ON THE COLUMN ELEMENT
2213 !-----------------------------------------------------------------------
2214 !
2215 ! ELSE
2216 ! WRITE(LU,1001) FORMUL
2217 ! WRITE(LU,2001) IELM1
2218 ! WRITE(LU,3001) IELM2
2219 ! CALL PLANTE(1)
2220 ! STOP
2221 ! ENDIF
2222 !
2223 !-----------------------------------------------------------------------
2224 ! OTHER
2225 !-----------------------------------------------------------------------
2226 !
2227 ! ELSEIF
2228 !
2229 !-----------------------------------------------------------------------
2230 ! ERROR ON THE ROW ELEMENT
2231 !-----------------------------------------------------------------------
2232 !
2233 ! ELSE
2234 ! WRITE(LU,1001) FORMUL
2235 ! WRITE(LU,2001) IELM1
2236 ! CALL PLANTE(1)
2237 ! STOP
2238 ! ENDIF
2239 !
2240 !=======================================================================
2241 ! F GRAD (U.GRAD) MATRIX (NOT IMPLEMENTED)
2242 !=======================================================================
2243 !
2244  ELSEIF(formul(1:15).EQ.'MATFGUG ') THEN
2245 !
2246 ! P1 SEGMENT ROW ELEMENT
2247  IF(ielm1.EQ.1) THEN
2248 !.......................................................................
2249 ! P1 SEGMENT COLUMN ELEMENT
2250  IF(ielm2.EQ.1.AND.s.EQ.1) THEN
2251  CALL mt09oo( t(1,1) ,xm(1,ooq(1,2,s)),
2252  & xm(1,ooq(2,1,s)), t(1,2),
2253  & xmul,sf,f,g,su,u,v,
2254  & iklbor(1,1),iklbor(1,2),
2255  & nbor,neleb,nelmax)
2256 !
2257  typdia='Q'
2258  typext='Q'
2259 !.......................................................................
2260 ! OTHER
2261 !.......................................................................
2262 !
2263 ! ELSEIF
2264 !
2265 !-----------------------------------------------------------------------
2266 ! ERROR ON THE COLUMN ELEMENT
2267 !-----------------------------------------------------------------------
2268 !
2269  ELSE
2270  WRITE(lu,1001) formul
2271  WRITE(lu,2001) ielm1
2272  WRITE(lu,3001) ielm2
2273  CALL plante(1)
2274  stop
2275  ENDIF
2276 !
2277 !-----------------------------------------------------------------------
2278 ! OTHER
2279 !-----------------------------------------------------------------------
2280 !
2281 ! ELSEIF
2282 !-----------------------------------------------------------------------
2283 ! ERROR ON THE ROW ELEMENT
2284 !-----------------------------------------------------------------------
2285 !
2286  ELSE
2287  WRITE(lu,1001) formul
2288  WRITE(lu,2001) ielm1
2289  CALL plante(1)
2290  stop
2291  ENDIF
2292 !
2293 !=======================================================================
2294 ! - PSIJ GRAD(F PSII) MATRIX
2295 !=======================================================================
2296 !
2297  ELSEIF(formul(1:15).EQ.'MATGRF ') THEN
2298 !
2299 ! CHARACTER 16 IS THE SELECTED COORDINATE
2300 !
2301  IF(formul(16:16).EQ.'X') THEN
2302  icoord=1
2303  ELSEIF(formul(16:16).EQ.'Y') THEN
2304  icoord=2
2305  ELSEIF(formul(16:16).EQ.'Z') THEN
2306  icoord=3
2307  ENDIF
2308 !
2309 !-----------------------------------------------------------------------
2310 ! P1 TRIANGLE ROW ELEMENT
2311 !-----------------------------------------------------------------------
2312 !
2313  IF(ielm1.EQ.11) THEN
2314 !
2315 !.......................................................................
2316 ! P1 TRIANGLE COLUMN ELEMENT
2317 !.......................................................................
2318 !
2319  IF(ielm2.EQ.11) THEN
2320  CALL mt11aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
2321  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
2322  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
2323  & xmul,sf,f,xel,yel,
2324  & ikle(1,1),ikle(1,2),ikle(1,3),
2325  & nelem,nelmax,icoord)
2326 !
2327  typdia='Q'
2328  typext='Q'
2329 !
2330 !.......................................................................
2331 !
2332  ELSEIF(ielm2.EQ.12) THEN
2333  CALL mt11ab
2334  & ( t(1,1) ,xm(1,abq(1,2,s)),xm(1,abq(1,3,s)),xm(1,abq(1,4,s)),
2335  & xm(1,abq(2,1,s)), t(1,2) ,xm(1,abq(2,3,s)),xm(1,abq(2,4,s)),
2336  & xm(1,abq(3,1,s)),xm(1,abq(3,2,s)), t(1,3) ,xm(1,abq(3,4,s)),
2337  & xmul,sf,f,xel,yel,
2338  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2339  & nelem,nelmax,icoord)
2340 !
2341  typdia='Q'
2342  typext='Q'
2343 !
2344 !.......................................................................
2345 !
2346  ELSEIF(ielm2.EQ.13) THEN
2347  CALL mt11ac(
2348  & t(1,1) ,xm(1,acq(1,2,s)),xm(1,acq(1,3,s)),
2349  & xm(1,acq(1,4,s)),xm(1,acq(1,5,s)),
2350  & xm(1,acq(1,6,s)),xm(1,acq(2,1,s)),
2351  & t(1,2) ,xm(1,acq(2,3,s)),
2352  & xm(1,acq(2,4,s)),xm(1,acq(2,5,s)),
2353  & xm(1,acq(2,6,s)),xm(1,acq(3,1,s)),
2354  & xm(1,acq(3,2,s)),t(1,3) ,xm(1,acq(3,4,s)),
2355  & xm(1,acq(3,5,s)),xm(1,acq(3,6,s)),
2356  & xmul,sf,f,xel,yel,
2357  & ikle(1,1),ikle(1,2),ikle(1,3),
2358  & ikle(1,4),ikle(1,5),ikle(1,6),
2359  & nelem,nelmax,icoord)
2360 !
2361  typdia='Q'
2362  typext='Q'
2363 !
2364 !.......................................................................
2365 ! OTHER
2366 !.......................................................................
2367 !
2368 ! ELSEIF
2369 !
2370 !-----------------------------------------------------------------------
2371 ! ERROR ON THE COLUMN ELEMENT
2372 !-----------------------------------------------------------------------
2373 !
2374  ELSE
2375  WRITE(lu,1001) formul
2376  WRITE(lu,2001) ielm1
2377  WRITE(lu,3001) ielm2
2378  CALL plante(1)
2379  stop
2380  ENDIF
2381 !
2382 !-----------------------------------------------------------------------
2383 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
2384  ELSEIF(ielm1.EQ.12) THEN
2385 !
2386 !.......................................................................
2387 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
2388  IF(ielm2.EQ.12) THEN
2389  CALL mt11bb
2390  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
2391  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
2392  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
2393  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
2394  & xmul,sf,f,xel,yel,
2395  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2396  & nelem,nelmax,icoord)
2397 !
2398  typdia='Q'
2399  typext='Q'
2400 !
2401 ! LINEAR TRIANGLE COLUMN ELEMENT
2402  ELSEIF(ielm2.EQ.11) THEN
2403  CALL mt11ba
2404  & ( t(1,1) ,xm(1,baq(1,2,s)),xm(1,baq(1,3,s)),
2405  & xm(1,baq(2,1,s)), t(1,2) ,xm(1,baq(2,3,s)),
2406  & xm(1,baq(3,1,s)),xm(1,baq(3,2,s)), t(1,3) ,
2407  & xm(1,baq(4,1,s)),xm(1,baq(4,2,s)),xm(1,baq(4,3,s)),
2408  & xmul,sf,f,xel,yel,
2409  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2410  & nelem,nelmax,icoord)
2411 !
2412  typdia='Q'
2413  typext='Q'
2414 !.......................................................................
2415 ! OTHER
2416 !.......................................................................
2417 !
2418 ! ELSEIF
2419 !
2420 !-----------------------------------------------------------------------
2421 ! ERROR ON THE COLUMN ELEMENT
2422 !-----------------------------------------------------------------------
2423 !
2424  ELSE
2425  WRITE(lu,1001) formul
2426  WRITE(lu,2001) ielm1
2427  WRITE(lu,3001) ielm2
2428  CALL plante(1)
2429  stop
2430  ENDIF
2431 !
2432 !-----------------------------------------------------------------------
2433 ! OTHER
2434 !-----------------------------------------------------------------------
2435 !
2436 ! ELSEIF
2437 !
2438 !-----------------------------------------------------------------------
2439 ! ERROR ON THE ROW ELEMENT
2440 !-----------------------------------------------------------------------
2441 !
2442  ELSE
2443  WRITE(lu,1001) formul
2444  WRITE(lu,2001) ielm1
2445  CALL plante(1)
2446  stop
2447  ENDIF
2448 !
2449 !=======================================================================
2450 ! PSIJ GRAD(F) U .GRAD(PSII) MATRIX
2451 !=======================================================================
2452 !
2453  ELSEIF(formul(1:15).EQ.'MATUGH ') THEN
2454 !
2455 ! CHARACTER 16 IS THE SELECTED COORDINATE
2456 !
2457  IF(formul(16:16).EQ.'X') THEN
2458  icoord=1
2459  ELSEIF(formul(16:16).EQ.'Y') THEN
2460  icoord=2
2461  ELSEIF(formul(16:16).EQ.'Z') THEN
2462  icoord=3
2463  ENDIF
2464 !
2465 !-----------------------------------------------------------------------
2466 ! P1 TRIANGLE ROW ELEMENT
2467 !-----------------------------------------------------------------------
2468 !
2469  IF(ielm1.EQ.11) THEN
2470 !
2471 !.......................................................................
2472 ! P1 TRIANGLE COLUMN ELEMENT
2473 !.......................................................................
2474 !
2475  IF(ielm2.EQ.11) THEN
2476  CALL mt12aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
2477  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
2478  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
2479  & xmul,sf,su,sv,f,u,v,xel,yel,mesh%SURDET%R,
2480  & ikle(1,1),ikle(1,2),ikle(1,3),
2481  & nelem,nelmax,icoord)
2482 !
2483  typdia='Q'
2484  typext='Q'
2485 !
2486 !.......................................................................
2487 !
2488  ELSEIF(ielm2.EQ.12) THEN
2489  CALL mt12ab
2490  & ( t(1,1) ,xm(1,abq(1,2,s)),xm(1,abq(1,3,s)),xm(1,abq(1,4,s)),
2491  & xm(1,abq(2,1,s)), t(1,2) ,xm(1,abq(2,3,s)),xm(1,abq(2,4,s)),
2492  & xm(1,abq(3,1,s)),xm(1,abq(3,2,s)), t(1,3) ,xm(1,abq(3,4,s)),
2493  & xmul,sf,su,sv,f,u,v,
2494  & xel,yel,surfac,
2495  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2496  & nelem,nelmax,icoord)
2497 !
2498  typdia='Q'
2499  typext='Q'
2500 !
2501 !.......................................................................
2502 ! P2 TRIANGLE COLUMN ELEMENT
2503 !.......................................................................
2504 !
2505  ELSEIF(ielm2.EQ.13) THEN
2506  CALL mt12ac(
2507  & t(1,1) ,xm(1,acq(1,2,s)),xm(1,acq(1,3,s)),
2508  & xm(1,acq(1,4,s)),xm(1,acq(1,5,s)),
2509  & xm(1,acq(1,6,s)),xm(1,acq(2,1,s)),
2510  & t(1,2) ,xm(1,acq(2,3,s)),
2511  & xm(1,acq(2,4,s)),xm(1,acq(2,5,s)),
2512  & xm(1,acq(2,6,s)),xm(1,acq(3,1,s)),
2513  & xm(1,acq(3,2,s)),t(1,3) ,xm(1,acq(3,4,s)),
2514  & xm(1,acq(3,5,s)),xm(1,acq(3,6,s)),
2515  & xmul,sf,su,sv,f,u,v,
2516  & xel,yel,surfac,
2517  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2518  & ikle(1,5),ikle(1,6),
2519  & nelem,nelmax,icoord)
2520 !
2521  typdia='Q'
2522  typext='Q'
2523 !
2524 !.......................................................................
2525 ! OTHER
2526 !.......................................................................
2527 !
2528 ! ELSEIF
2529 !
2530 !-----------------------------------------------------------------------
2531 ! ERROR ON THE COLUMN ELEMENT
2532 !-----------------------------------------------------------------------
2533 !
2534  ELSE
2535  WRITE(lu,1001) formul
2536  WRITE(lu,2001) ielm1
2537  WRITE(lu,3001) ielm2
2538  CALL plante(1)
2539  stop
2540  ENDIF
2541 !
2542 !-----------------------------------------------------------------------
2543 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
2544  ELSEIF(ielm1.EQ.12) THEN
2545 !
2546 !.......................................................................
2547 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
2548  IF(ielm2.EQ.12) THEN
2549  CALL mt12bb
2550  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
2551  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
2552  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
2553  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
2554  & xmul,sf,su,sv,f,u,v,xel,yel,
2555  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2556  & nelem,nelmax,icoord)
2557 !
2558  typdia='Q'
2559  typext='Q'
2560 !
2561  ELSEIF(ielm2.EQ.11) THEN
2562  CALL mt12ba
2563  & ( t(1,1) ,xm(1,baq(1,2,s)),xm(1,baq(1,3,s)),
2564  & xm(1,baq(2,1,s)), t(1,2) ,xm(1,baq(2,3,s)),
2565  & xm(1,baq(3,1,s)),xm(1,baq(3,2,s)), t(1,3) ,
2566  & xm(1,baq(4,1,s)),xm(1,baq(4,2,s)),xm(1,baq(4,3,s)),
2567  & xmul,sf,su,sv,f,u,v,
2568  & xel,yel,surfac,
2569  & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
2570  & nelem,nelmax,icoord)
2571 !
2572  typdia='Q'
2573  typext='Q'
2574 !
2575 !.......................................................................
2576 ! OTHER
2577 !.......................................................................
2578 !
2579 ! ELSEIF
2580 !
2581 !-----------------------------------------------------------------------
2582 ! ERROR ON THE COLUMN ELEMENT
2583 !-----------------------------------------------------------------------
2584 !
2585  ELSE
2586  WRITE(lu,1001) formul
2587  WRITE(lu,2001) ielm1
2588  WRITE(lu,3001) ielm2
2589  CALL plante(1)
2590  stop
2591  ENDIF
2592 !
2593 !-----------------------------------------------------------------------
2594 ! OTHER
2595 !-----------------------------------------------------------------------
2596 !
2597 ! ELSEIF
2598 !
2599 !-----------------------------------------------------------------------
2600 ! ERROR ON THE ROW ELEMENT
2601 !-----------------------------------------------------------------------
2602 !
2603  ELSE
2604  WRITE(lu,1001) formul
2605  WRITE(lu,2001) ielm1
2606  CALL plante(1)
2607  stop
2608  ENDIF
2609 !
2610 !=======================================================================
2611 ! PSIJ GRAD(PSII) MATRIX (SIGN HAS CHANGED COMPARED TO 3.0)
2612 ! (PSIJ GRAD(PSII) IN THE CASE OF B/A)
2613 !=======================================================================
2614 !
2615  ELSEIF(formul(1:15).EQ.'MATGRA ') THEN
2616 !
2617 ! CHARACTER 16 IS THE SELECTED COORDINATE
2618 !
2619  IF(formul(16:16).EQ.'X') THEN
2620  icoord=1
2621  ELSEIF(formul(16:16).EQ.'Y') THEN
2622  icoord=2
2623  ELSEIF(formul(16:16).EQ.'Z') THEN
2624  icoord=3
2625  ENDIF
2626 !
2627 !-----------------------------------------------------------------------
2628 ! P1 TRIANGLE ROW ELEMENT
2629 !-----------------------------------------------------------------------
2630 !
2631  IF(ielm1.EQ.11) THEN
2632 !
2633 !.......................................................................
2634 ! P1 TRIANGLE COLUMN ELEMENT
2635 !.......................................................................
2636 !
2637  IF(ielm2.EQ.11) THEN
2638  CALL mt13aa( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
2639  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
2640  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
2641  & xmul,xel,yel,nelem,nelmax,icoord)
2642 !
2643  typdia='Q'
2644  typext='Q'
2645 !
2646  ELSEIF(ielm2.EQ.12) THEN
2647  CALL mt13ab( t(1,1) ,xm(1,abq(1,2,s)),xm(1,abq(1,3,s)),
2648  & xm(1,abq(1,4,s)),
2649  & xm(1,abq(2,1,s)), t(1,2) ,xm(1,abq(2,3,s)),
2650  & xm(1,abq(2,4,s)),
2651  & xm(1,abq(3,1,s)),xm(1,abq(3,2,s)), t(1,3) ,
2652  & xm(1,abq(3,4,s)),
2653  & xmul,xel,yel,nelem,nelmax,icoord)
2654 !
2655  typdia='Q'
2656  typext='Q'
2657 !
2658 !.......................................................................
2659 ! OTHER
2660 !.......................................................................
2661 !
2662 ! ELSEIF
2663 !
2664 !-----------------------------------------------------------------------
2665 ! ERROR ON THE COLUMN ELEMENT
2666 !-----------------------------------------------------------------------
2667 !
2668  ELSE
2669  WRITE(lu,1001) formul
2670  WRITE(lu,2001) ielm1
2671  WRITE(lu,3001) ielm2
2672  CALL plante(1)
2673  stop
2674  ENDIF
2675 !
2676 !-----------------------------------------------------------------------
2677 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
2678  ELSEIF(ielm1.EQ.12) THEN
2679 !
2680 !.......................................................................
2681 ! P1 TRIANGLE COLUMN ELEMENT
2682  IF(ielm2.EQ.11) THEN
2683  CALL mt13ba
2684  & ( t(1,1) ,xm(1,baq(1,2,s)),xm(1,baq(1,3,s)),
2685  & xm(1,baq(2,1,s)), t(1,2) ,xm(1,baq(2,3,s)),
2686  & xm(1,baq(3,1,s)),xm(1,baq(3,2,s)), t(1,3) ,
2687  & xm(1,baq(4,1,s)),xm(1,baq(4,2,s)),xm(1,baq(4,3,s)),
2688  & xmul,xel,yel,nelem,nelmax,icoord)
2689 !
2690  typdia='Q'
2691  typext='Q'
2692 !
2693 !.......................................................................
2694 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
2695  ELSEIF(ielm2.EQ.12) THEN
2696  CALL mt13bb
2697  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
2698  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
2699  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
2700  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
2701  & xmul,xel,yel,nelem,nelmax,icoord)
2702 !
2703  typdia='Q'
2704  typext='Q'
2705 !
2706 !.......................................................................
2707 ! OTHER
2708 !.......................................................................
2709 !
2710 ! ELSEIF
2711 !
2712 !-----------------------------------------------------------------------
2713 ! ERROR ON THE COLUMN ELEMENT
2714 !-----------------------------------------------------------------------
2715 !
2716  ELSE
2717  WRITE(lu,1001) formul
2718  WRITE(lu,2001) ielm1
2719  WRITE(lu,3001) ielm2
2720  CALL plante(1)
2721  stop
2722  ENDIF
2723 !
2724 !-----------------------------------------------------------------------
2725 ! P2 TRIANGLE ROW ELEMENT
2726  ELSEIF(ielm1.EQ.13) THEN
2727 !
2728 !.......................................................................
2729 ! P1 TRIANGLE COLUMN ELEMENT
2730  IF(ielm2.EQ.11) THEN
2731  CALL mt13ca
2732  & ( t(1,1) ,xm(1,caq(1,2,s)),xm(1,caq(1,3,s)),
2733  & xm(1,caq(2,1,s)), t(1,2) ,xm(1,caq(2,3,s)),
2734  & xm(1,caq(3,1,s)),xm(1,caq(3,2,s)), t(1,3) ,
2735  & xm(1,caq(4,1,s)),xm(1,caq(4,2,s)),xm(1,caq(4,3,s)),
2736  & xm(1,caq(5,1,s)),xm(1,caq(5,2,s)),xm(1,caq(5,3,s)),
2737  & xm(1,caq(6,1,s)),xm(1,caq(6,2,s)),xm(1,caq(6,3,s)),
2738  & xmul,xel,yel,nelem,nelmax,icoord)
2739 !
2740  typdia='Q'
2741  typext='Q'
2742 !
2743 !.......................................................................
2744 ! P2 TRIANGLE COLUMN ELEMENT
2745  ELSEIF(ielm2.EQ.13) THEN
2746  CALL mt13cc
2747  & ( t(1,1) ,xm(1,ppq(1,2,s)),xm(1,ppq(1,3,s)),
2748  & xm(1,ppq(1,4,s)),xm(1,ppq(1,5,s)),xm(1,ppq(1,6,s)),
2749  & xm(1,ppq(2,1,s)),t(1,2),xm(1,ppq(2,3,s)),xm(1,ppq(2,4,s)),
2750  & xm(1,ppq(2,5,s)),xm(1,ppq(2,6,s)),xm(1,ppq(3,1,s)),
2751  & xm(1,ppq(3,2,s)),t(1,3),xm(1,ppq(3,4,s)),xm(1,ppq(3,5,s)),
2752  & xm(1,ppq(3,6,s)),xm(1,ppq(4,1,s)),xm(1,ppq(4,2,s)),
2753  & xm(1,ppq(4,3,s)),t(1,4),xm(1,ppq(4,5,s)),xm(1,ppq(4,6,s)),
2754  & xm(1,ppq(5,1,s)),xm(1,ppq(5,2,s)),xm(1,ppq(5,3,s)),
2755  & xm(1,ppq(5,4,s)), t(1,5) ,xm(1,ppq(5,6,s)),
2756  & xm(1,ppq(6,1,s)),xm(1,ppq(6,2,s)) ,xm(1,ppq(6,3,s)),
2757  & xm(1,ppq(6,4,s)),xm(1,ppq(6,5,s)),t(1,6),
2758  & xmul,xel,yel,nelem,nelmax,icoord)
2759 !
2760  typdia='Q'
2761  typext='Q'
2762 !
2763 !.......................................................................
2764 ! OTHER
2765 !.......................................................................
2766 !
2767 ! ELSEIF
2768 !
2769 !-----------------------------------------------------------------------
2770 ! ERROR ON THE COLUMN ELEMENT
2771 !-----------------------------------------------------------------------
2772 !
2773  ELSE
2774  WRITE(lu,1001) formul
2775  WRITE(lu,2001) ielm1
2776  WRITE(lu,3001) ielm2
2777  CALL plante(1)
2778  stop
2779  ENDIF
2780 !
2781 !-----------------------------------------------------------------------
2782 ! OTHER ROW ELEMENT
2783 !-----------------------------------------------------------------------
2784 !
2785 ! ELSEIF
2786 !
2787 !-----------------------------------------------------------------------
2788 ! ERROR ON THE ROW ELEMENT
2789 !-----------------------------------------------------------------------
2790 !
2791  ELSE
2792  WRITE(lu,1001) formul
2793  WRITE(lu,2001) ielm1
2794  CALL plante(1)
2795  stop
2796  ENDIF
2797 !
2798 !=======================================================================
2799 ! MURD MATRIX
2800 !=======================================================================
2801 !
2802  ELSEIF(formul(1:6).EQ.'MAMURD') THEN
2803 !
2804 ! INVERTED STORAGE !!!!!!!!!!!!!! SEE MT14PP AND MT14TT !!!!!!!!!!!!
2805 !
2806  stox=2
2807 !
2808 ! CHARACTER 7 INFORMS WHETHER SIGMAG OR NOT
2809 !
2810  sigmag = .false.
2811  IF(formul(7:7).EQ.'2') sigmag = .true.
2812 !
2813 ! CHARACTER 8 GIVES THE DETAILS FOR CALL TO VC04PP
2814 !
2815  specad = .false.
2816  IF(formul(8:8).EQ.'2') specad = .true.
2817 !
2818 !!!!!!!!!!! DIAGONAL NEVER ASSEMBLED (IT IS REDONE IN MURD3D) !!!!!!!!!!
2819 !
2820  lego = .false.
2821 !
2822 !-----------------------------------------------------------------------
2823 !
2824 ! P1 PRISM ROW ELEMENT
2825  IF(ielm1.EQ.41) THEN
2826 !
2827 !.......................................................................
2828 ! P1 PRISM COLUMN ELEMENT
2829  IF(ielm2.EQ.41) THEN
2830  CALL mt14pp(t,xm,ppq(:,:,s),lego,
2831  & xmul,sw,w,h,
2832  & surfac,ikle,nelem,nelmax)
2833 !
2834  typdia='Q'
2835  typext='Q'
2836 !
2837 !.......................................................................
2838 ! OTHER
2839 !.......................................................................
2840 !
2841 !
2842 !.......................................................................
2843 ! ERROR ON THE COLUMN ELEMENT
2844 !.......................................................................
2845 !
2846  ELSE
2847  WRITE(lu,1001) formul
2848  WRITE(lu,2001) ielm1
2849  WRITE(lu,3001) ielm2
2850  CALL plante(1)
2851  stop
2852  ENDIF
2853 !
2854 !-----------------------------------------------------------------------
2855 ! OTHER ROW ELEMENT
2856 !-----------------------------------------------------------------------
2857 !
2858  ELSEIF(ielm1.EQ.51) THEN
2859 !
2860 !.......................................................................
2861 ! P1 PRISM COLUMN ELEMENT
2862 !
2863  IF(ielm2.EQ.51) THEN
2864  CALL mt14tt(t,xm,lego,
2865  & xmul,sw,w,h,
2866  & xpt,ypt,ikle,nelem,nelmax,
2867  & nplan,bief_nbpts(11,mesh))
2868  typdia='Q'
2869  typext='Q'
2870 !
2871 !.......................................................................
2872 ! OTHER
2873 !.......................................................................
2874 !
2875 !
2876 !.......................................................................
2877 ! ERROR ON THE COLUMN ELEMENT
2878 !.......................................................................
2879 !
2880  ELSE
2881  WRITE(lu,1001) formul
2882  WRITE(lu,2001) ielm1
2883  WRITE(lu,3001) ielm2
2884  CALL plante(1)
2885  stop
2886  ENDIF
2887 !
2888 !-----------------------------------------------------------------------
2889 ! ERROR ON THE ROW ELEMENT
2890 !-----------------------------------------------------------------------
2891 !
2892  ELSE
2893  WRITE(lu,1001) formul
2894  WRITE(lu,2001) ielm1
2895  CALL plante(1)
2896  stop
2897  ENDIF
2898 !
2899 !=======================================================================
2900 ! SETTLING VELOCITY MATRIX
2901 !=======================================================================
2902 !
2903  ELSEIF(formul(1:6).EQ.'MATWC ') THEN
2904 !
2905 !-----------------------------------------------------------------------
2906 !
2907 ! P1 PRISM ROW ELEMENT
2908  IF(ielm1.EQ.41) THEN
2909 !
2910 !.......................................................................
2911 ! P1 PRISM COLUMN ELEMENT
2912  IF(ielm2.EQ.41) THEN
2913  CALL mt15pp(t,xm,
2914  & xmul,f,zpt,surfac,ikle,nelem,nelmax)
2915 !
2916  typdia='Q'
2917  typext='Q'
2918 !
2919 !.......................................................................
2920 ! OTHER
2921 !.......................................................................
2922 !
2923 !
2924 !.......................................................................
2925 ! ERROR ON THE COLUMN ELEMENT
2926 !.......................................................................
2927 !
2928  ELSE
2929  WRITE(lu,1001) formul
2930  WRITE(lu,2001) ielm1
2931  WRITE(lu,3001) ielm2
2932  CALL plante(1)
2933  stop
2934  ENDIF
2935 !
2936 !-----------------------------------------------------------------------
2937 ! ERROR ON THE ROW ELEMENT
2938 !-----------------------------------------------------------------------
2939 !
2940  ELSE
2941  WRITE(lu,1001) formul
2942  WRITE(lu,2001) ielm1
2943  CALL plante(1)
2944  stop
2945  ENDIF
2946 !
2947 !=======================================================================
2948 ! BOUSSINESQ MATRIX
2949 !=======================================================================
2950 !
2951  ELSEIF(formul(1:7).EQ.'FFBT ') THEN
2952 !
2953 !-----------------------------------------------------------------------
2954 ! P1 TRIANGLE ROW ELEMENT
2955  IF(ielm1.EQ.11) THEN
2956 !
2957 !.......................................................................
2958 ! P1 TRIANGLE COLUMN ELEMENT
2959  IF(ielm2.EQ.11) THEN
2960  CALL mt99aa
2961  & ( t(1,1) ,xm(1,aaq(1,2,s)),xm(1,aaq(1,3,s)),
2962  & xm(1,aaq(2,1,s)), t(1,2) ,xm(1,aaq(2,3,s)),
2963  & xm(1,aaq(3,1,s)),xm(1,aaq(3,2,s)), t(1,3) ,
2964  & xmul,sf,f,xel,yel,surfac,
2965  & ikle(1,1),ikle(1,2),ikle(1,3),
2966  & nelem,nelmax,formul,tdia,text)
2967 !
2968  typdia = tdia
2969  typext = text
2970 !.......................................................................
2971 ! OTHER
2972 !.......................................................................
2973 !
2974 ! ELSEIF
2975 !
2976 !.......................................................................
2977 ! ERROR ON THE COLUMN ELEMENT
2978 !.......................................................................
2979  ELSE
2980  WRITE(lu,1001) formul
2981  WRITE(lu,2001) ielm1
2982  WRITE(lu,3001) ielm2
2983  CALL plante(1)
2984  stop
2985  ENDIF
2986 !-----------------------------------------------------------------------
2987 ! OTHER ROW ELEMENT
2988 !-----------------------------------------------------------------------
2989 !
2990 !
2991 !-----------------------------------------------------------------------
2992 ! QUASI-BUBBLE TRIANGLE ROW ELEMENT
2993 !
2994  ELSEIF(ielm1.EQ.12) THEN
2995 !
2996 !.......................................................................
2997 ! QUASI-BUBBLE TRIANGLE COLUMN ELEMENT
2998  IF(ielm2.EQ.12) THEN
2999  CALL mt99bb
3000  & ( t(1,1) ,xm(1,bbq(1,2,s)),xm(1,bbq(1,3,s)),xm(1,bbq(1,4,s)),
3001  & xm(1,bbq(2,1,s)), t(1,2) ,xm(1,bbq(2,3,s)),xm(1,bbq(2,4,s)),
3002  & xm(1,bbq(3,1,s)),xm(1,bbq(3,2,s)), t(1,3) ,xm(1,bbq(3,4,s)),
3003  & xm(1,bbq(4,1,s)),xm(1,bbq(4,2,s)),xm(1,bbq(4,3,s)), t(1,4) ,
3004  & xmul,sf,f,xel,yel,surfac,
3005  & ikle(1,1),ikle(1,2),ikle(1,3),
3006  & nelem,nelmax,formul,tdia,text)
3007 !
3008 !
3009  typdia = tdia
3010  typext = text
3011 !
3012 !.......................................................................
3013 ! OTHER
3014 !.......................................................................
3015 !
3016 !
3017 !.......................................................................
3018 ! ERROR ON THE COLUMN ELEMENT
3019 !.......................................................................
3020 !
3021  ELSE
3022  WRITE(lu,1001) formul
3023  WRITE(lu,2001) ielm1
3024  WRITE(lu,3001) ielm2
3025  CALL plante(1)
3026  stop
3027  ENDIF
3028 !
3029 !-----------------------------------------------------------------------
3030 ! ERROR ON THE ROW ELEMENT
3031 !-----------------------------------------------------------------------
3032 !
3033 !
3034  ELSE
3035  WRITE(lu,1001) formul
3036  WRITE(lu,2001) ielm1
3037  CALL plante(1)
3038  stop
3039  ENDIF
3040 !
3041  ELSE
3042 !
3043 !=======================================================================
3044 ! ERROR: TYPE OF MATRIX NOT IMPLEMENTED
3045 !=======================================================================
3046 !
3047  WRITE(lu,1001) formul
3048  CALL plante(1)
3049  stop
3050  ENDIF
3051 !
3052 !-----------------------------------------------------------------------
3053 !
3054 1001 FORMAT(1x,'MATRIY (BIEF) : MATRIX NOT IMPLEMENTED:',a16)
3055 2001 FORMAT(1x,' FOR IELM1 = ',1i6)
3056 3001 FORMAT(1x,' AND IELM2 = ',1i6)
3057 !
3058 !-----------------------------------------------------------------------
3059 !
3060  RETURN
3061  END
subroutine mt03bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SF, SG, SU, SV, F, G, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)
Definition: mt03bb.f:12
subroutine mt06pp(T, XM, XMUL, SF, F, Z, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt06pp.f:7
subroutine mt13aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13aa.f:10
subroutine mt03cc(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, A41, A42, A43, A44, A45, A46, A51, A52, A53, A54, A55, A56, A61, A62, A63, A64, A65, A66, XMUL, SF, SG, SU, SV, F, G, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX)
Definition: mt03cc.f:15
subroutine mt05bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SU, SV, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, FORMUL)
Definition: mt05bb.f:12
subroutine mt06bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SF, F, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX)
Definition: mt06bb.f:11
subroutine mt05cc(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, A41, A42, A43, A44, A45, A46, A51, A52, A53, A54, A55, A56, A61, A62, A63, A64, A65, A66, XMUL, SU, SV, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, FORMUL)
Definition: mt05cc.f:15
subroutine mt03aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, SG, SU, SV, F, G, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX)
Definition: mt03aa.f:11
integer function bief_nbpts(IELM, MESH)
Definition: bief_nbpts.f:7
subroutine mt02aa(A11, A12, A13, A22, A23, A33, XMUL, SU, U, SV, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, FORMUL)
Definition: mt02aa.f:11
subroutine mt06cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SF, F, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX)
Definition: mt06cc.f:14
subroutine mt02aa_2(A11, A12, A13, A22, A23, A33, XMUL, SU, SV, XEL, YEL, SURFAC, NELEM, NELMAX)
Definition: mt02aa_2.f:11
subroutine mt01pp(T, XM, XMUL, Z, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt01pp.f:7
subroutine mt07aa(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SURFAC, NELEM, NELMAX)
Definition: mt07aa.f:10
subroutine mt01aa(A11, A12, A13, A22, A23, A33, XMUL, SURFAC, NELEM, NELMAX)
Definition: mt01aa.f:10
subroutine mt06aa(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)
Definition: mt06aa.f:10
subroutine mt11aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, ICOORD)
Definition: mt11aa.f:10
subroutine mt08bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt08bb.f:11
subroutine mt09oo(A11, A12, A21, A22, XMUL, SF, F, G, SU, U, V, IKLE1, IKLE2, NBOR, NELEM, NELMAX)
Definition: mt09oo.f:8
subroutine mt04aa(A11, A12, A13, A22, A23, A33, XMUL, SU, SV, U, V, XEL, YEL, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt04aa.f:10
subroutine mt01bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SURFAC, NELEM, NELMAX)
Definition: mt01bb.f:11
subroutine mt11ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt11ba.f:12
subroutine mt01cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SURFAC, NELEM, NELMAX)
Definition: mt01cc.f:13
subroutine mt02cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SU, U, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)
Definition: mt02cc.f:13
subroutine mt08tt(T, XM, XMUL, X, Y, SF, F, IKLE, NELEM, NELMAX)
Definition: mt08tt.f:7
subroutine mt02tt(T, XM, XMUL, SF, SG, SH, F, G, H, X, Y, Z, IKLE, NELEM, NELMAX, NPOIN2)
Definition: mt02tt.f:7
subroutine mt01tt(T, XM, XMUL, X, Y, Z, IKLE, NELEM, NELMAX)
Definition: mt01tt.f:7
subroutine mt06oo(A11, A12, A22, XMUL, SF, F, LGSEG, IKLE1, IKLE2, NBOR, NELEM, NELMAX)
Definition: mt06oo.f:7
subroutine mt13ca(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, A51, A52, A53, A61, A62, A63, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ca.f:13
subroutine mt99bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SF, F, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, FORMUL, TDIA, TEXT)
Definition: mt99bb.f:12
subroutine mt07bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SF, F, SURFAC, NELEM, NELMAX)
Definition: mt07bb.f:11
subroutine mt06oc(A11, A12, A13, A22, A23, A33, XMUL, SF, F, LGSEG, IKLE1, IKLE2, IKLE3, NBOR, NELEM, NELMAX)
Definition: mt06oc.f:8
subroutine matriy(FORMUL, XM, TYPDIA, TYPEXT, XMUL, SF, SG, SH, SU, SV, SW, F, G, H, U, V, W, T, LEGO, XEL, YEL, ZEL, XPT, YPT, ZPT, SURFAC, LGSEG, IKLE, IKLBOR, NBOR, NELBOR, NULONE, NELEM, NELMAX, NELEB, NELEBX, IELM1, IELM2, S, NPLAN, MESH, SIZEXMT, STOX)
Definition: matriy.f:11
subroutine mt06ft2(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SG, G, X, Y, Z, IKLE1, IKLE2, IKLE3, NBOR, NELEM, NELMAX)
Definition: mt06ft2.f:10
subroutine mt08ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt08ba.f:12
subroutine mt11ac(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, ICOORD)
Definition: mt11ac.f:12
subroutine mt08pp(T, XM, XMUL, SF, F, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt08pp.f:7
subroutine mt01oo(A11, A12, A22, XMUL, LGSEG, NELEM, NELMAX)
Definition: mt01oo.f:7
subroutine mt06ff(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SF, F, X, Y, Z, IKLE1, IKLE2, IKLE3, IKLE4, NBOR, NELBOR, NULONE, NELEB, NELEBX, NELMAX)
Definition: mt06ff.f:12
subroutine mt15pp(T, XM, XMUL, F, ZPT, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt15pp.f:7
subroutine mt12aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, SU, SV, F, U, V, XEL, YEL, SURDET, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, ICOORD)
Definition: mt12aa.f:13
subroutine mt02pp(T, XM, XMUL, SF, SG, SH, F, G, H, X, Y, Z, SURFAC, IKLE, NELEM, NELMAX, INCHYD, FORMUL, NPLAN)
Definition: mt02pp.f:8
subroutine mt06ft(A11, A12, A13, A22, A23, A33, XMUL, SF, F, X, Y, Z, IKLE1, IKLE2, IKLE3, NBOR, NELEM, NELMAX)
Definition: mt06ft.f:10
subroutine mt99aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, F, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, FORMUL, TDIA, TEXT)
Definition: mt99aa.f:11
subroutine mt06tt(T, XM, XMUL, SF, F, X, Y, Z, IKLE, NELEM, NELMAX)
Definition: mt06tt.f:7
subroutine mt14tt(T, XM, LEGO, XMUL, SW, W, H, X, Y, IKLE, NELEM, NELMAX, NPLAN, NPOIN2)
Definition: mt14tt.f:8
subroutine mt02pp_star(T, XM, XMUL, SF, SG, SH, F, G, H, X, Y, Z, SURFAC, IKLE, NELEM, NELMAX, INCHYD, FORMUL, NPLAN)
Definition: mt02pp_star.f:8
subroutine mt13cc(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, A41, A42, A43, A44, A45, A46, A51, A52, A53, A54, A55, A56, A61, A62, A63, A64, A65, A66, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13cc.f:13
subroutine mt04tt(T, XM, XMUL, SU, SV, SW, U, V, W, X, Y, Z, IKLE, NELEM, NELMAX, FORMUL)
Definition: mt04tt.f:7
subroutine mt04bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SU, SV, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX)
Definition: mt04bb.f:11
subroutine mt14pp(T, XM, PPQ, LEGO, XMUL, SW, W, H, SURFAC, IKLE, NELEM, NELMAX)
Definition: mt14pp.f:8
subroutine mt08ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt08ab.f:11
subroutine mt12bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SF, SU, SV, F, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt12bb.f:14
subroutine mt12ac(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, XMUL, SF, SU, SV, F, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, ICOORD)
Definition: mt12ac.f:13
subroutine mt12ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, SF, SU, SV, F, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt12ba.f:14
subroutine mt04pp(T, XM, XMUL, SU, SV, SW, U, V, X, Y, Z, SURFAC, IKLE, NELEM, NELMAX, FORMUL)
Definition: mt04pp.f:7
subroutine mt02bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SU, U, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)
Definition: mt02bb.f:11
subroutine mt04cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SU, SV, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX)
Definition: mt04cc.f:14
subroutine mt05aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SU, SV, U, V, XEL, YEL, IKLE, NELEM, NELMAX, FORMUL)
Definition: mt05aa.f:11
subroutine mt07cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SF, F, SURFAC, NELEM, NELMAX)
Definition: mt07cc.f:13
subroutine mt08ac(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, ICOORD)
Definition: mt08ac.f:12
subroutine mt13bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13bb.f:11
subroutine mt13ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ba.f:11
subroutine mt05tt(T, XM, XMUL, SU, SV, SW, U, V, W, X, Y, Z, IKLE, NELEM, NELMAX)
Definition: mt05tt.f:7
subroutine mt05pp(T, XM, XMUL, SU, SV, SW, U, V, W, F, G, X, Y, Z, IKLE, NELEM, NELMAX, SIGMAG, SPECAD, NPLAN)
Definition: mt05pp.f:8
subroutine mt13ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ab.f:10
subroutine mt12ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, SF, SU, SV, F, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt12ab.f:13
subroutine mt08aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, ICOORD)
Definition: mt08aa.f:10
subroutine mt11bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt11bb.f:12
subroutine mt11ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt11ab.f:11
Definition: bief.f:3