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