The TELEMAC-MASCARET system  trunk
mv0304.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mv0304
3 ! *****************
4 !
5  &(op, x , da,typdia,
6  & xa12,xa13,xa14,xa21,xa23,xa24,xa31,xa32,xa34,
7  & typext, y,c,ikle1,ikle2,ikle3,ikle4,npoin,nelem,w1,w2,w3,w4)
8 !
9 !***********************************************************************
10 ! BIEF V6P1 21/08/2010
11 !***********************************************************************
12 !
13 !brief MATRIX VECTOR OPERATIONS FOR Q1 QUADRILATERALS.
14 !code
15 !+ OP IS A STRING OF 8 CHARACTERS, WHICH INDICATES THE OPERATION TO BE
16 !+ PERFORMED ON VECTORS X,Y AND MATRIX M.
17 !+
18 !+ THE RESULT IS VECTOR X.
19 !+
20 !+ THESE OPERATIONS ARE DIFFERENT DEPENDING ON THE DIAGONAL TYPE
21 !+ AND THE TYPE OF EXTRADIAGONAL TERMS.
22 !+
23 !+ IMPLEMENTED OPERATIONS:
24 !+
25 !+ OP = 'X=AY ' : X = AY
26 !+ OP = 'X=-AY ' : X = - AY
27 !+ OP = 'X=X+AY ' : X = X + AY
28 !+ OP = 'X=X-AY ' : X = X - AY
29 !+ OP = 'X=X+CAY ' : X = X + C AY
30 !+ OP = 'X=TAY ' : X = TA Y (TRANSPOSE OF A)
31 !+ OP = 'X=-TAY ' : X = - TA Y (- TRANSPOSE OF A)
32 !+ OP = 'X=X+TAY ' : X = X + TA Y
33 !+ OP = 'X=X-TAY ' : X = X - TA Y
34 !+ OP = 'X=X+CTAY' : X = X + C TA Y
35 !
36 !history J-M HERVOUET (LNH) ; F LEPEINTRE (LNH)
37 !+ 05/02/91
38 !+ V5P1
39 !+
40 !
41 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
42 !+ 13/07/2010
43 !+ V6P0
44 !+ Translation of French comments within the FORTRAN sources into
45 !+ English comments
46 !
47 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
48 !+ 21/08/2010
49 !+ V6P0
50 !+ Creation of DOXYGEN tags for automated documentation and
51 !+ cross-referencing of the FORTRAN sources
52 !
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !| C |-->| A GIVEN CONSTANT
55 !| DA |-->| MATRIX DIAGONAL
56 !| IKLE1 |-->| FIRST POINTS OF ELEMENTS
57 !| IKLE2 |-->| SECOND POINTS OF ELEMENTS
58 !| IKLE3 |-->| THIRD POINTS OF ELEMENTS
59 !| IKLE4 |-->| FOURTH POINTS OF ELEMENTS
60 !| NELEM |-->| NUMBER OF ELEMENTS
61 !| NPOIN |-->| NUMBER OF POINTS
62 !| OP |-->| OPERATION TO BE DONE (SEE ABOVE)
63 !| TYPDIA |-->| TYPE OF DIAGONAL:
64 !| | | TYPDIA = 'Q' : ANY VALUE
65 !| | | TYPDIA = 'I' : IDENTITY
66 !| | | TYPDIA = '0' : ZERO
67 !| TYPEXT |-->| TYPE OF OFF-DIAGONAL TERMS
68 !| | | TYPEXT = 'Q' : ANY VALUE
69 !| | | TYPEXT = 'S' : SYMMETRIC
70 !| | | TYPEXT = '0' : ZERO
71 !| W1 |<->| RESULT IN NON ASSEMBLED FORM
72 !| W2 |<->| RESULT IN NON ASSEMBLED FORM
73 !| W3 |<->| RESULT IN NON ASSEMBLED FORM
74 !| W4 |<->| RESULT IN NON ASSEMBLED FORM
75 !| X |<->| RESULT IN ASSEMBLED FORM
76 !| XA13 |-->| OFF-DIAGONAL TERM OF MATRIX
77 !| XA14 |-->| OFF-DIAGONAL TERM OF MATRIX
78 !| XA21 |-->| OFF-DIAGONAL TERM OF MATRIX
79 !| XA23 |-->| OFF-DIAGONAL TERM OF MATRIX
80 !| XA24 |-->| OFF-DIAGONAL TERM OF MATRIX
81 !| XA31 |-->| OFF-DIAGONAL TERM OF MATRIX
82 !| XA32 |-->| OFF-DIAGONAL TERM OF MATRIX
83 !| XA34 |-->| OFF-DIAGONAL TERM OF MATRIX
84 !| Y |-->| VECTOR USED IN THE OPERATION
85 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86 !
87  USE bief, ex_mv0304 => mv0304
88 !
90  IMPLICIT NONE
91 !
92 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
93 !
94  INTEGER, INTENT(IN) :: NELEM,NPOIN
95 !
96  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
97 !
98  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
99  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
100  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
101  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
102  DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
103  DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
104  DOUBLE PRECISION, INTENT(IN) :: C
105 !
106  CHARACTER(LEN=8), INTENT(IN) :: OP
107  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
108 !
109 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
110 !
111  INTEGER IELEM
112  DOUBLE PRECISION Z(1)
113 !
114 !-----------------------------------------------------------------------
115 !
116  IF(op(1:8).EQ.'X=AY ') THEN
117 !
118 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
119 !
120  IF(typext(1:1).EQ.'Q') THEN
121 !
122  DO ielem = 1 , nelem
123  w1(ielem) = xa12(ielem) * y(ikle2(ielem))
124  & + xa13(ielem) * y(ikle3(ielem))
125  & + xa14(ielem) * y(ikle4(ielem))
126  w2(ielem) = xa21(ielem) * y(ikle1(ielem))
127  & + xa23(ielem) * y(ikle3(ielem))
128  & + xa24(ielem) * y(ikle4(ielem))
129  w3(ielem) = xa31(ielem) * y(ikle1(ielem))
130  & + xa32(ielem) * y(ikle2(ielem))
131  & + xa34(ielem) * y(ikle4(ielem))
132  ENDDO ! IELEM
133 !
134  ELSEIF(typext(1:1).EQ.'0') THEN
135 !
136  CALL ov ('X=C ', w1 , y , z , 0.d0 , nelem )
137  CALL ov ('X=C ', w2 , y , z , 0.d0 , nelem )
138  CALL ov ('X=C ', w3 , y , z , 0.d0 , nelem )
139 !
140  ELSE
141 !
142  WRITE(lu,1001) typext
143  CALL plante(0)
144  stop
145 !
146  ENDIF
147 !
148 ! CONTRIBUTION OF THE DIAGONAL:
149 !
150  IF(typdia(1:1).EQ.'Q') THEN
151  CALL ov ('X=YZ ', x , y , da , c , npoin )
152  ELSEIF(typdia(1:1).EQ.'I') THEN
153  CALL ov ('X=Y ', x , y , z , c , npoin )
154  ELSEIF(typdia(1:1).EQ.'0') THEN
155  CALL ov ('X=C ', x , y , z , 0.d0 , npoin )
156  ELSE
157  WRITE(lu,2001) typdia
158  CALL plante(0)
159  stop
160  ENDIF
161 !
162 !-----------------------------------------------------------------------
163 !
164  ELSEIF(op(1:8).EQ.'X=-AY ') THEN
165 !
166 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
167 !
168  IF(typext(1:1).EQ.'Q') THEN
169 !
170  DO ielem = 1 , nelem
171  w1(ielem) = - xa12(ielem) * y(ikle2(ielem))
172  & - xa13(ielem) * y(ikle3(ielem))
173  & - xa14(ielem) * y(ikle4(ielem))
174  w2(ielem) = - xa21(ielem) * y(ikle1(ielem))
175  & - xa23(ielem) * y(ikle3(ielem))
176  & - xa24(ielem) * y(ikle4(ielem))
177  w3(ielem) = - xa31(ielem) * y(ikle1(ielem))
178  & - xa32(ielem) * y(ikle2(ielem))
179  & - xa34(ielem) * y(ikle4(ielem))
180  ENDDO ! IELEM
181 !
182  ELSEIF(typext(1:1).EQ.'0') THEN
183 !
184  CALL ov ('X=C ', w1 , y , z , 0.d0 , nelem )
185  CALL ov ('X=C ', w2 , y , z , 0.d0 , nelem )
186  CALL ov ('X=C ', w3 , y , z , 0.d0 , nelem )
187 !
188  ELSE
189 !
190  WRITE(lu,1001) typext
191  CALL plante(0)
192  stop
193 !
194  ENDIF
195 !
196 ! CONTRIBUTION OF THE DIAGONAL:
197 !
198  IF(typdia(1:1).EQ.'Q') THEN
199  CALL ov ('X=-YZ ', x , y , da , c , npoin )
200  ELSEIF(typdia(1:1).EQ.'I') THEN
201  CALL ov ('X=-Y ', x , y , z , c , npoin )
202  ELSEIF(typdia(1:1).EQ.'0') THEN
203  CALL ov ('X=C ', x , y , z , 0.d0 , npoin )
204  ELSE
205  WRITE(lu,2001) typdia
206  CALL plante(0)
207  stop
208  ENDIF
209 !
210 !-----------------------------------------------------------------------
211 !
212  ELSEIF(op(1:8).EQ.'X=X+AY ') THEN
213 !
214 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
215 !
216  IF(typext(1:1).EQ.'Q') THEN
217 !
218  DO ielem = 1 , nelem
219  w1(ielem) = w1(ielem) + xa12(ielem) * y(ikle2(ielem))
220  & + xa13(ielem) * y(ikle3(ielem))
221  & + xa14(ielem) * y(ikle4(ielem))
222  w2(ielem) = w2(ielem) + xa21(ielem) * y(ikle1(ielem))
223  & + xa23(ielem) * y(ikle3(ielem))
224  & + xa24(ielem) * y(ikle4(ielem))
225  w3(ielem) = w3(ielem) + xa31(ielem) * y(ikle1(ielem))
226  & + xa32(ielem) * y(ikle2(ielem))
227  & + xa34(ielem) * y(ikle4(ielem))
228  ENDDO ! IELEM
229 !
230  ELSEIF(typext(1:1).NE.'0') THEN
231 !
232  WRITE(lu,1001) typext
233  CALL plante(0)
234  stop
235 !
236  ENDIF
237 !
238 ! CONTRIBUTION OF THE DIAGONAL:
239 !
240  IF(typdia(1:1).EQ.'Q') THEN
241  CALL ov ('X=X+YZ ', x , y , da , c , npoin )
242  ELSEIF(typdia(1:1).EQ.'I') THEN
243  CALL ov ('X=X+Y ', x , y , z , c , npoin )
244  ELSEIF(typdia(1:1).NE.'0') THEN
245  WRITE(lu,2001) typdia
246  CALL plante(0)
247  stop
248  ENDIF
249 !
250 !-----------------------------------------------------------------------
251 !
252  ELSEIF(op(1:8).EQ.'X=X-AY ') THEN
253 !
254 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
255 !
256  IF(typext(1:1).EQ.'Q') THEN
257 !
258  DO ielem = 1 , nelem
259  w1(ielem) = w1(ielem) - xa12(ielem) * y(ikle2(ielem))
260  & - xa13(ielem) * y(ikle3(ielem))
261  & - xa14(ielem) * y(ikle4(ielem))
262  w2(ielem) = w2(ielem) - xa21(ielem) * y(ikle1(ielem))
263  & - xa23(ielem) * y(ikle3(ielem))
264  & - xa24(ielem) * y(ikle4(ielem))
265  w3(ielem) = w3(ielem) - xa31(ielem) * y(ikle1(ielem))
266  & - xa32(ielem) * y(ikle2(ielem))
267  & - xa34(ielem) * y(ikle4(ielem))
268  ENDDO ! IELEM
269 !
270  ELSEIF(typext(1:1).NE.'0') THEN
271 !
272  WRITE(lu,1001) typext
273  CALL plante(0)
274  stop
275 !
276  ENDIF
277 !
278 ! CONTRIBUTION OF THE DIAGONAL:
279 !
280  IF(typdia(1:1).EQ.'Q') THEN
281  CALL ov ('X=X-YZ ', x , y , da , c , npoin )
282  ELSEIF(typdia(1:1).EQ.'I') THEN
283  CALL ov ('X=X-Y ', x , y , z , c , npoin )
284  ELSEIF(typdia(1:1).NE.'0') THEN
285  WRITE(lu,2001) typdia
286  CALL plante(0)
287  stop
288  ENDIF
289 !
290 !-----------------------------------------------------------------------
291 !
292  ELSEIF(op(1:8).EQ.'X=X+CAY ') THEN
293 !
294 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
295 !
296  IF(typext(1:1).EQ.'Q') THEN
297 !
298  DO ielem = 1 , nelem
299  w1(ielem) = w1(ielem)
300  & + c * ( xa12(ielem) * y(ikle2(ielem))
301  & + xa13(ielem) * y(ikle3(ielem))
302  & + xa14(ielem) * y(ikle4(ielem)) )
303  w2(ielem) = w2(ielem)
304  & + c * ( xa21(ielem) * y(ikle1(ielem))
305  & + xa23(ielem) * y(ikle3(ielem))
306  & + xa24(ielem) * y(ikle4(ielem)) )
307  w3(ielem) = w3(ielem)
308  & + c * ( xa31(ielem) * y(ikle1(ielem))
309  & + xa32(ielem) * y(ikle2(ielem))
310  & + xa34(ielem) * y(ikle4(ielem)) )
311  ENDDO ! IELEM
312 !
313  ELSEIF(typext(1:1).NE.'0') THEN
314 !
315  WRITE(lu,1001) typext
316  CALL plante(0)
317  stop
318 !
319  ENDIF
320 !
321 ! CONTRIBUTION OF THE DIAGONAL:
322 !
323  IF(typdia(1:1).EQ.'Q') THEN
324  CALL ov ('X=X+CYZ ', x , y , da , c , npoin )
325  ELSEIF(typdia(1:1).EQ.'I') THEN
326  CALL ov ('X=X+CY ', x , y , z , c , npoin )
327  ELSEIF(typdia(1:1).NE.'0') THEN
328  WRITE(lu,2001) typdia
329  CALL plante(0)
330  stop
331  ENDIF
332 !
333 !-----------------------------------------------------------------------
334 !
335  ELSEIF(op(1:8).EQ.'X=TAY ') THEN
336 !
337 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
338 !
339  IF(typext(1:1).EQ.'Q') THEN
340 !
341  DO ielem = 1 , nelem
342  w1(ielem) = + xa21(ielem) * y(ikle2(ielem))
343  & + xa31(ielem) * y(ikle3(ielem))
344  w2(ielem) = + xa12(ielem) * y(ikle1(ielem))
345  & + xa32(ielem) * y(ikle3(ielem))
346  w3(ielem) = + xa13(ielem) * y(ikle1(ielem))
347  & + xa23(ielem) * y(ikle2(ielem))
348  w4(ielem) = + xa14(ielem) * y(ikle1(ielem))
349  & + xa24(ielem) * y(ikle2(ielem))
350  & + xa34(ielem) * y(ikle3(ielem))
351  x(npoin+ielem)=0.d0
352  ENDDO ! IELEM
353 !
354  ELSEIF(typext(1:1).EQ.'0') THEN
355 !
356  CALL ov ('X=C ', w1 , y , z , 0.d0 , nelem )
357  CALL ov ('X=C ', w2 , y , z , 0.d0 , nelem )
358  CALL ov ('X=C ', w3 , y , z , 0.d0 , nelem )
359  CALL ov ('X=C ', w4 , y , z , 0.d0 , nelem )
360  CALL ov ('X=C ', x(npoin+1) , y , z , 0.d0 , nelem )
361 !
362  ELSE
363 !
364  WRITE(lu,1001) typext
365  CALL plante(0)
366  stop
367 !
368  ENDIF
369 !
370 ! CONTRIBUTION OF THE DIAGONAL
371 !
372  IF(typdia(1:1).EQ.'Q') THEN
373  CALL ov ('X=YZ ', x , y , da , c , npoin )
374  ELSEIF(typdia(1:1).EQ.'I') THEN
375  CALL ov ('X=Y ', x , y , z , c , npoin )
376  ELSEIF(typdia(1:1).EQ.'0') THEN
377  CALL ov ('X=C ', x , y , da , 0.d0 , npoin )
378  ELSE
379  WRITE(lu,2001) typdia
380  CALL plante(0)
381  stop
382  ENDIF
383 !
384 !-----------------------------------------------------------------------
385 !
386  ELSEIF(op(1:8).EQ.'X=-TAY ') THEN
387 !
388 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
389 !
390  IF(typext(1:1).EQ.'Q') THEN
391 !
392  DO ielem = 1 , nelem
393  w1(ielem) = - xa21(ielem) * y(ikle2(ielem))
394  & - xa31(ielem) * y(ikle3(ielem))
395  w2(ielem) = - xa12(ielem) * y(ikle1(ielem))
396  & - xa32(ielem) * y(ikle3(ielem))
397  w3(ielem) = - xa13(ielem) * y(ikle1(ielem))
398  & - xa23(ielem) * y(ikle2(ielem))
399  w4(ielem) = - xa14(ielem) * y(ikle1(ielem))
400  & - xa24(ielem) * y(ikle2(ielem))
401  & - xa34(ielem) * y(ikle3(ielem))
402  x(npoin+ielem)=0.d0
403  ENDDO ! IELEM
404 !
405  ELSEIF(typext(1:1).EQ.'0') THEN
406 !
407  CALL ov ('X=C ', w1 , y , z , 0.d0 , nelem )
408  CALL ov ('X=C ', w2 , y , z , 0.d0 , nelem )
409  CALL ov ('X=C ', w3 , y , z , 0.d0 , nelem )
410  CALL ov ('X=C ', w4 , y , z , 0.d0 , nelem )
411  CALL ov ('X=C ', x(npoin+1) , y , z , 0.d0 , nelem )
412 !
413  ELSE
414 !
415  WRITE(lu,1001) typext
416  CALL plante(0)
417  stop
418 !
419  ENDIF
420 !
421 ! CONTRIBUTION OF THE DIAGONAL
422 !
423  IF(typdia(1:1).EQ.'Q') THEN
424  CALL ov ('X=-YZ ', x , y , da , c , npoin )
425  ELSEIF(typdia(1:1).EQ.'I') THEN
426  CALL ov ('X=-Y ', x , y , z , c , npoin )
427  ELSEIF(typdia(1:1).EQ.'0') THEN
428  CALL ov ('X=C ', x , y , da , 0.d0 , npoin )
429  ELSE
430  WRITE(lu,2001) typdia
431  CALL plante(0)
432  stop
433  ENDIF
434 !
435 !-----------------------------------------------------------------------
436 !
437  ELSEIF(op(1:8).EQ.'X=X+TAY ') THEN
438 !
439 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
440 !
441  IF(typext(1:1).EQ.'Q') THEN
442 !
443  DO ielem = 1 , nelem
444  w1(ielem) = w1(ielem) + xa21(ielem) * y(ikle2(ielem))
445  & + xa31(ielem) * y(ikle3(ielem))
446  w2(ielem) = w2(ielem) + xa12(ielem) * y(ikle1(ielem))
447  & + xa32(ielem) * y(ikle3(ielem))
448  w3(ielem) = w3(ielem) + xa13(ielem) * y(ikle1(ielem))
449  & + xa23(ielem) * y(ikle2(ielem))
450  w4(ielem) = w4(ielem) + xa14(ielem) * y(ikle1(ielem))
451  & + xa24(ielem) * y(ikle2(ielem))
452  & + xa34(ielem) * y(ikle3(ielem))
453  ENDDO ! IELEM
454 !
455  ELSEIF(typext(1:1).NE.'0') THEN
456 !
457  WRITE(lu,1001) typext
458  CALL plante(0)
459  stop
460 !
461  ENDIF
462 !
463 ! CONTRIBUTION OF THE DIAGONAL
464 !
465  IF(typdia(1:1).EQ.'Q') THEN
466  CALL ov ('X=X+YZ ', x , y , da , c , npoin )
467  ELSEIF(typdia(1:1).EQ.'I') THEN
468  CALL ov ('X=X+Y ', x , y , z , c , npoin )
469  ELSEIF(typdia(1:1).NE.'0') THEN
470  WRITE(lu,2001) typdia
471  CALL plante(0)
472  stop
473  ENDIF
474 !
475 !-----------------------------------------------------------------------
476 !
477  ELSEIF(op(1:8).EQ.'X=X-TAY ') THEN
478 !
479 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
480 !
481  IF(typext(1:1).EQ.'Q') THEN
482 !
483  DO ielem = 1 , nelem
484  w1(ielem) = w1(ielem) - xa21(ielem) * y(ikle2(ielem))
485  & - xa31(ielem) * y(ikle3(ielem))
486  w2(ielem) = w2(ielem) - xa12(ielem) * y(ikle1(ielem))
487  & - xa32(ielem) * y(ikle3(ielem))
488  w3(ielem) = w3(ielem) - xa13(ielem) * y(ikle1(ielem))
489  & - xa23(ielem) * y(ikle2(ielem))
490  w4(ielem) = w4(ielem) - xa14(ielem) * y(ikle1(ielem))
491  & - xa24(ielem) * y(ikle2(ielem))
492  & - xa34(ielem) * y(ikle3(ielem))
493  ENDDO ! IELEM
494 !
495  ELSEIF(typext(1:1).NE.'0') THEN
496 !
497  WRITE(lu,1001) typext
498  CALL plante(0)
499  stop
500 !
501  ENDIF
502 !
503 ! CONTRIBUTION OF THE DIAGONAL
504 !
505  IF(typdia(1:1).EQ.'Q') THEN
506  CALL ov ('X=X-YZ ', x , y , da , c , npoin )
507  ELSEIF(typdia(1:1).EQ.'I') THEN
508  CALL ov ('X=X-Y ', x , y , z , c , npoin )
509  ELSEIF(typdia(1:1).NE.'0') THEN
510  WRITE(lu,2001) typdia
511  CALL plante(0)
512  stop
513  ENDIF
514 !
515 !-----------------------------------------------------------------------
516 !
517  ELSEIF(op(1:8).EQ.'X=X+CTAY') THEN
518 !
519 ! CONTRIBUTION OF EXTRADIAGONAL TERMS:
520 !
521  IF(typext(1:1).EQ.'Q') THEN
522 !
523  DO ielem = 1 , nelem
524  w1(ielem) = w1(ielem)
525  & + c * ( + xa21(ielem) * y(ikle2(ielem))
526  & + xa31(ielem) * y(ikle3(ielem)) )
527  w2(ielem) = w2(ielem)
528  & + c * ( + xa12(ielem) * y(ikle1(ielem))
529  & + xa32(ielem) * y(ikle3(ielem)) )
530  w3(ielem) = w3(ielem)
531  & + c * ( + xa13(ielem) * y(ikle1(ielem))
532  & + xa23(ielem) * y(ikle2(ielem)) )
533  w4(ielem) = w4(ielem)
534  & + c * ( + xa14(ielem) * y(ikle1(ielem))
535  & + xa24(ielem) * y(ikle2(ielem))
536  & + xa34(ielem) * y(ikle3(ielem)) )
537  ENDDO ! IELEM
538 !
539  ELSEIF(typext(1:1).NE.'0') THEN
540 !
541  WRITE(lu,1001) typext
542  CALL plante(0)
543  stop
544 !
545  ENDIF
546 !
547 ! CONTRIBUTION OF THE DIAGONAL
548 !
549  IF(typdia(1:1).EQ.'Q') THEN
550  CALL ov ('X=X+CYZ ', x , y , da , c , npoin )
551  ELSEIF(typdia(1:1).EQ.'I') THEN
552  CALL ov ('X=X+CY ', x , y , z , c , npoin )
553  ELSEIF(typdia(1:1).NE.'0') THEN
554  WRITE(lu,2001) typdia
555  CALL plante(0)
556  stop
557  ENDIF
558 !
559 !-----------------------------------------------------------------------
560 !
561  ELSE
562 !
563  WRITE(lu,3001) op
564  CALL plante(0)
565  stop
566 !
567 !-----------------------------------------------------------------------
568 !
569  ENDIF
570 !
571 !-----------------------------------------------------------------------
572 !
573  RETURN
574 !
575 1001 FORMAT(1x,'MV0304 (BIEF) : EXTRADIAG. TERMS UNKNOWN TYPE : ',a1)
576 2001 FORMAT(1x,'MV0304 (BIEF) : DIAGONAL : UNKNOWN TYPE : ',a1)
577 3001 FORMAT(1x,'MV0304 (BIEF) : UNKNOWN OPERATION : ',a8)
578 !
579 !-----------------------------------------------------------------------
580 !
581  END
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
subroutine mv0304(OP, X, DA, TYPDIA, XA12, XA13, XA14, XA21, XA23, XA24, XA31, XA32, XA34, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, NPOIN, NELEM, W1, W2, W3, W4)
Definition: mv0304.f:9
Definition: bief.f:3