6 & xa12,xa13,xa14,xa21,xa23,xa24,xa31,xa32,xa34,
7 & typext, y,c,ikle1,ikle2,ikle3,ikle4,npoin,nelem,w1,w2,w3,w4)
94 INTEGER,
INTENT(IN) :: NELEM,NPOIN
96 INTEGER,
INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
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
106 CHARACTER(LEN=8),
INTENT(IN) :: OP
107 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXT
112 DOUBLE PRECISION Z(1)
116 IF(op(1:8).EQ.
'X=AY ')
THEN 120 IF(typext(1:1).EQ.
'Q')
THEN 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))
134 ELSEIF(typext(1:1).EQ.
'0')
THEN 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 )
142 WRITE(
lu,1001) typext
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 )
157 WRITE(
lu,2001) typdia
164 ELSEIF(op(1:8).EQ.
'X=-AY ')
THEN 168 IF(typext(1:1).EQ.
'Q')
THEN 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))
182 ELSEIF(typext(1:1).EQ.
'0')
THEN 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 )
190 WRITE(
lu,1001) typext
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 )
205 WRITE(
lu,2001) typdia
212 ELSEIF(op(1:8).EQ.
'X=X+AY ')
THEN 216 IF(typext(1:1).EQ.
'Q')
THEN 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))
230 ELSEIF(typext(1:1).NE.
'0')
THEN 232 WRITE(
lu,1001) typext
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
252 ELSEIF(op(1:8).EQ.
'X=X-AY ')
THEN 256 IF(typext(1:1).EQ.
'Q')
THEN 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))
270 ELSEIF(typext(1:1).NE.
'0')
THEN 272 WRITE(
lu,1001) typext
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
292 ELSEIF(op(1:8).EQ.
'X=X+CAY ')
THEN 296 IF(typext(1:1).EQ.
'Q')
THEN 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)) )
313 ELSEIF(typext(1:1).NE.
'0')
THEN 315 WRITE(
lu,1001) typext
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
335 ELSEIF(op(1:8).EQ.
'X=TAY ')
THEN 339 IF(typext(1:1).EQ.
'Q')
THEN 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))
354 ELSEIF(typext(1:1).EQ.
'0')
THEN 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 )
364 WRITE(
lu,1001) typext
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 )
379 WRITE(
lu,2001) typdia
386 ELSEIF(op(1:8).EQ.
'X=-TAY ')
THEN 390 IF(typext(1:1).EQ.
'Q')
THEN 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))
405 ELSEIF(typext(1:1).EQ.
'0')
THEN 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 )
415 WRITE(
lu,1001) typext
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 )
430 WRITE(
lu,2001) typdia
437 ELSEIF(op(1:8).EQ.
'X=X+TAY ')
THEN 441 IF(typext(1:1).EQ.
'Q')
THEN 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))
455 ELSEIF(typext(1:1).NE.
'0')
THEN 457 WRITE(
lu,1001) typext
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
477 ELSEIF(op(1:8).EQ.
'X=X-TAY ')
THEN 481 IF(typext(1:1).EQ.
'Q')
THEN 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))
495 ELSEIF(typext(1:1).NE.
'0')
THEN 497 WRITE(
lu,1001) typext
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
517 ELSEIF(op(1:8).EQ.
'X=X+CTAY')
THEN 521 IF(typext(1:1).EQ.
'Q')
THEN 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)) )
539 ELSEIF(typext(1:1).NE.
'0')
THEN 541 WRITE(
lu,1001) typext
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
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)
subroutine ov(OP, X, Y, Z, C, DIM1)
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)