6 & xa12,xa13,xa14,xa15,xa16,xa21,xa23,xa24,
7 & xa25,xa26,xa31,xa32,xa34,xa35,xa36,
9 & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
10 & npoin,npt2,nelem,w1,w2,w3,w4,w5,w6)
108 INTEGER,
INTENT(IN) :: NELEM,NPOIN,NPT2
110 INTEGER,
INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
111 INTEGER,
INTENT(IN) :: IKLE4(*),IKLE5(*),IKLE6(*)
113 DOUBLE PRECISION,
INTENT(INOUT) :: W1(*),W2(*),W3(*)
114 DOUBLE PRECISION,
INTENT(INOUT) :: W4(*),W5(*),W6(*)
115 DOUBLE PRECISION,
INTENT(IN) :: Y(*),DA(*)
116 DOUBLE PRECISION,
INTENT(INOUT) :: X(*)
117 DOUBLE PRECISION,
INTENT(IN) :: XA12(*),XA13(*),XA14(*),XA15(*)
118 DOUBLE PRECISION,
INTENT(IN) :: XA16(*),XA21(*),XA23(*),XA24(*)
119 DOUBLE PRECISION,
INTENT(IN) :: XA25(*),XA26(*),XA31(*),XA32(*)
120 DOUBLE PRECISION,
INTENT(IN) :: XA34(*),XA35(*),XA36(*)
121 DOUBLE PRECISION,
INTENT(IN) :: C
123 CHARACTER(LEN=8),
INTENT(IN) :: OP
124 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXT
129 DOUBLE PRECISION Z(1)
133 IF(op(1:8).EQ.
'X=AY ')
THEN 137 IF(typext(1:1).EQ.
'Q')
THEN 140 w1(ielem) = xa12(ielem) * y(ikle2(ielem))
141 & + xa13(ielem) * y(ikle3(ielem))
142 & + xa14(ielem) * y(ikle4(ielem))
143 & + xa15(ielem) * y(ikle5(ielem))
144 & + xa16(ielem) * y(ikle6(ielem))
145 w2(ielem) = xa21(ielem) * y(ikle1(ielem))
146 & + xa23(ielem) * y(ikle3(ielem))
147 & + xa24(ielem) * y(ikle4(ielem))
148 & + xa25(ielem) * y(ikle5(ielem))
149 & + xa26(ielem) * y(ikle6(ielem))
150 w3(ielem) = xa31(ielem) * y(ikle1(ielem))
151 & + xa32(ielem) * y(ikle2(ielem))
152 & + xa34(ielem) * y(ikle4(ielem))
153 & + xa35(ielem) * y(ikle5(ielem))
154 & + xa36(ielem) * y(ikle6(ielem))
158 ELSEIF(typext(1:1).EQ.
'0')
THEN 160 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
161 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
162 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
166 WRITE(
lu,1001) typext
174 IF(typdia(1:1).EQ.
'Q')
THEN 175 CALL ov (
'X=YZ ', x , y , da , c , npoin )
176 ELSEIF(typdia(1:1).EQ.
'I')
THEN 177 CALL ov (
'X=Y ', x , y , z , c , npoin )
178 ELSEIF(typdia(1:1).EQ.
'0')
THEN 179 CALL ov (
'X=C ', x , y , z , 0.d0 , npoin )
181 WRITE(
lu,2001) typdia
188 ELSEIF(op(1:8).EQ.
'X=-AY ')
THEN 192 IF(typext(1:1).EQ.
'Q')
THEN 195 w1(ielem) = - xa12(ielem) * y(ikle2(ielem))
196 & - xa13(ielem) * y(ikle3(ielem))
197 & - xa14(ielem) * y(ikle4(ielem))
198 & - xa15(ielem) * y(ikle5(ielem))
199 & - xa16(ielem) * y(ikle6(ielem))
200 w2(ielem) = - xa21(ielem) * y(ikle1(ielem))
201 & - xa23(ielem) * y(ikle3(ielem))
202 & - xa24(ielem) * y(ikle4(ielem))
203 & - xa25(ielem) * y(ikle5(ielem))
204 & - xa26(ielem) * y(ikle6(ielem))
205 w3(ielem) = - xa31(ielem) * y(ikle1(ielem))
206 & - xa32(ielem) * y(ikle2(ielem))
207 & - xa34(ielem) * y(ikle4(ielem))
208 & - xa35(ielem) * y(ikle5(ielem))
209 & - xa36(ielem) * y(ikle6(ielem))
212 ELSEIF(typext(1:1).EQ.
'0')
THEN 214 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
215 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
216 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
220 WRITE(
lu,1001) typext
228 IF(typdia(1:1).EQ.
'Q')
THEN 229 CALL ov (
'X=-YZ ', x , y , da , c , npoin )
230 ELSEIF(typdia(1:1).EQ.
'I')
THEN 231 CALL ov (
'X=-Y ', x , y , z , c , npoin )
232 ELSEIF(typdia(1:1).EQ.
'0')
THEN 233 CALL ov (
'X=C ', x , y , z , 0.d0 , npoin )
235 WRITE(
lu,2001) typdia
242 ELSEIF(op(1:8).EQ.
'X=X+AY ')
THEN 246 IF(typext(1:1).EQ.
'Q')
THEN 249 w1(ielem) = w1(ielem) + xa12(ielem) * y(ikle2(ielem))
250 & + xa13(ielem) * y(ikle3(ielem))
251 & + xa14(ielem) * y(ikle4(ielem))
252 & + xa15(ielem) * y(ikle5(ielem))
253 & + xa16(ielem) * y(ikle6(ielem))
254 w2(ielem) = w2(ielem) + xa21(ielem) * y(ikle1(ielem))
255 & + xa23(ielem) * y(ikle3(ielem))
256 & + xa24(ielem) * y(ikle4(ielem))
257 & + xa25(ielem) * y(ikle5(ielem))
258 & + xa26(ielem) * y(ikle6(ielem))
259 w3(ielem) = w3(ielem) + xa31(ielem) * y(ikle1(ielem))
260 & + xa32(ielem) * y(ikle2(ielem))
261 & + xa34(ielem) * y(ikle4(ielem))
262 & + xa35(ielem) * y(ikle5(ielem))
263 & + xa36(ielem) * y(ikle6(ielem))
266 ELSEIF(typext(1:1).NE.
'0')
THEN 268 WRITE(
lu,1001) typext
276 IF(typdia(1:1).EQ.
'Q')
THEN 277 CALL ov (
'X=X+YZ ', x , y , da , c , npoin )
278 ELSEIF(typdia(1:1).EQ.
'I')
THEN 279 CALL ov (
'X=X+Y ', x , y , z , c , npoin )
280 ELSEIF(typdia(1:1).NE.
'0')
THEN 281 WRITE(
lu,2001) typdia
288 ELSEIF(op(1:8).EQ.
'X=X-AY ')
THEN 292 IF(typext(1:1).EQ.
'Q')
THEN 295 w1(ielem) = w1(ielem) - xa12(ielem) * y(ikle2(ielem))
296 & - xa13(ielem) * y(ikle3(ielem))
297 & - xa14(ielem) * y(ikle4(ielem))
298 & - xa15(ielem) * y(ikle5(ielem))
299 & - xa16(ielem) * y(ikle6(ielem))
300 w2(ielem) = w2(ielem) - xa21(ielem) * y(ikle1(ielem))
301 & - xa23(ielem) * y(ikle3(ielem))
302 & - xa24(ielem) * y(ikle4(ielem))
303 & - xa25(ielem) * y(ikle5(ielem))
304 & - xa26(ielem) * y(ikle6(ielem))
305 w3(ielem) = w3(ielem) - xa31(ielem) * y(ikle1(ielem))
306 & - xa32(ielem) * y(ikle2(ielem))
307 & - xa34(ielem) * y(ikle4(ielem))
308 & - xa35(ielem) * y(ikle5(ielem))
309 & - xa36(ielem) * y(ikle6(ielem))
312 ELSEIF(typext(1:1).NE.
'0')
THEN 314 WRITE(
lu,1001) typext
322 IF(typdia(1:1).EQ.
'Q')
THEN 323 CALL ov (
'X=X-YZ ', x , y , da , c , npoin )
324 ELSEIF(typdia(1:1).EQ.
'I')
THEN 325 CALL ov (
'X=X-Y ', x , y , z , c , npoin )
326 ELSEIF(typdia(1:1).NE.
'0')
THEN 327 WRITE(
lu,2001) typdia
334 ELSEIF(op(1:8).EQ.
'X=X+CAY ')
THEN 338 IF(typext(1:1).EQ.
'Q')
THEN 341 w1(ielem) = w1(ielem)
342 & + c * ( xa12(ielem) * y(ikle2(ielem))
343 & + xa13(ielem) * y(ikle3(ielem))
344 & + xa14(ielem) * y(ikle4(ielem))
345 & + xa15(ielem) * y(ikle5(ielem))
346 & + xa16(ielem) * y(ikle6(ielem)) )
347 w2(ielem) = w2(ielem)
348 & + c * ( xa21(ielem) * y(ikle1(ielem))
349 & + xa23(ielem) * y(ikle3(ielem))
350 & + xa24(ielem) * y(ikle4(ielem))
351 & + xa25(ielem) * y(ikle5(ielem))
352 & + xa26(ielem) * y(ikle6(ielem)) )
353 w3(ielem) = w3(ielem)
354 & + c * ( xa31(ielem) * y(ikle1(ielem))
355 & + xa32(ielem) * y(ikle2(ielem))
356 & + xa34(ielem) * y(ikle4(ielem))
357 & + xa35(ielem) * y(ikle5(ielem))
358 & + xa36(ielem) * y(ikle6(ielem)) )
361 ELSEIF(typext(1:1).NE.
'0')
THEN 363 WRITE(
lu,1001) typext
371 IF(typdia(1:1).EQ.
'Q')
THEN 372 CALL ov (
'X=X+CYZ ', x , y , da , c , npoin )
373 ELSEIF(typdia(1:1).EQ.
'I')
THEN 374 CALL ov (
'X=X+CY ', x , y , z , c , npoin )
375 ELSEIF(typdia(1:1).NE.
'0')
THEN 376 WRITE(
lu,2001) typdia
383 ELSEIF(op(1:8).EQ.
'X=TAY ')
THEN 387 IF(typext(1:1).EQ.
'Q')
THEN 390 w1(ielem) = + xa21(ielem) * y(ikle2(ielem))
391 & + xa31(ielem) * y(ikle3(ielem))
392 w2(ielem) = + xa12(ielem) * y(ikle1(ielem))
393 & + xa32(ielem) * y(ikle3(ielem))
394 w3(ielem) = + xa13(ielem) * y(ikle1(ielem))
395 & + xa23(ielem) * y(ikle2(ielem))
396 w4(ielem) = + xa14(ielem) * y(ikle1(ielem))
397 & + xa24(ielem) * y(ikle2(ielem))
398 & + xa34(ielem) * y(ikle3(ielem))
399 w5(ielem) = + xa15(ielem) * y(ikle1(ielem))
400 & + xa25(ielem) * y(ikle2(ielem))
401 & + xa35(ielem) * y(ikle3(ielem))
402 w6(ielem) = + xa16(ielem) * y(ikle1(ielem))
403 & + xa26(ielem) * y(ikle2(ielem))
404 & + xa36(ielem) * y(ikle3(ielem))
407 ELSEIF(typext(1:1).EQ.
'0')
THEN 409 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
410 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
411 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
412 CALL ov (
'X=C ', w4 , y , z , 0.d0 , nelem )
413 CALL ov (
'X=C ', w5 , y , z , 0.d0 , nelem )
414 CALL ov (
'X=C ', w6 , y , z , 0.d0 , nelem )
418 WRITE(
lu,1001) typext
426 IF(typdia(1:1).EQ.
'Q')
THEN 427 CALL ov (
'X=YZ ', x , y , da , c , npoin )
428 ELSEIF(typdia(1:1).EQ.
'I')
THEN 429 CALL ov (
'X=Y ', x , y , z , c , npoin )
430 ELSEIF(typdia(1:1).EQ.
'0')
THEN 431 CALL ov (
'X=C ', x , y , da , 0.d0 , npoin )
433 WRITE(
lu,2001) typdia
440 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
444 ELSEIF(op(1:8).EQ.
'X=-TAY ')
THEN 448 IF(typext(1:1).EQ.
'Q')
THEN 451 w1(ielem) = - xa21(ielem) * y(ikle2(ielem))
452 & - xa31(ielem) * y(ikle3(ielem))
453 w2(ielem) = - xa12(ielem) * y(ikle1(ielem))
454 & - xa32(ielem) * y(ikle3(ielem))
455 w3(ielem) = - xa13(ielem) * y(ikle1(ielem))
456 & - xa23(ielem) * y(ikle2(ielem))
457 w4(ielem) = - xa14(ielem) * y(ikle1(ielem))
458 & - xa24(ielem) * y(ikle2(ielem))
459 & - xa34(ielem) * y(ikle3(ielem))
460 w5(ielem) = - xa15(ielem) * y(ikle1(ielem))
461 & - xa25(ielem) * y(ikle2(ielem))
462 & - xa35(ielem) * y(ikle3(ielem))
463 w6(ielem) = - xa16(ielem) * y(ikle1(ielem))
464 & - xa26(ielem) * y(ikle2(ielem))
465 & - xa36(ielem) * y(ikle3(ielem))
468 ELSEIF(typext(1:1).EQ.
'0')
THEN 470 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
471 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
472 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
473 CALL ov (
'X=C ', w4 , y , z , 0.d0 , nelem )
474 CALL ov (
'X=C ', w5 , y , z , 0.d0 , nelem )
475 CALL ov (
'X=C ', w6 , y , z , 0.d0 , nelem )
479 WRITE(
lu,1001) typext
487 IF(typdia(1:1).EQ.
'Q')
THEN 488 CALL ov (
'X=-YZ ', x , y , da , c , npoin )
489 ELSEIF(typdia(1:1).EQ.
'I')
THEN 490 CALL ov (
'X=-Y ', x , y , z , c , npoin )
491 ELSEIF(typdia(1:1).EQ.
'0')
THEN 492 CALL ov (
'X=C ', x , y , da , 0.d0 , npoin )
494 WRITE(
lu,2001) typdia
501 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
505 ELSEIF(op(1:8).EQ.
'X=X+TAY ')
THEN 509 IF(typext(1:1).EQ.
'Q')
THEN 512 w1(ielem) = w1(ielem) + xa21(ielem) * y(ikle2(ielem))
513 & + xa31(ielem) * y(ikle3(ielem))
514 w2(ielem) = w2(ielem) + xa12(ielem) * y(ikle1(ielem))
515 & + xa32(ielem) * y(ikle3(ielem))
516 w3(ielem) = w3(ielem) + xa13(ielem) * y(ikle1(ielem))
517 & + xa23(ielem) * y(ikle2(ielem))
518 w4(ielem) = w4(ielem) + xa14(ielem) * y(ikle1(ielem))
519 & + xa24(ielem) * y(ikle2(ielem))
520 & + xa34(ielem) * y(ikle3(ielem))
521 w5(ielem) = w5(ielem) + xa15(ielem) * y(ikle1(ielem))
522 & + xa25(ielem) * y(ikle2(ielem))
523 & + xa35(ielem) * y(ikle3(ielem))
524 w6(ielem) = w6(ielem) + xa16(ielem) * y(ikle1(ielem))
525 & + xa26(ielem) * y(ikle2(ielem))
526 & + xa36(ielem) * y(ikle3(ielem))
529 ELSEIF(typext(1:1).NE.
'0')
THEN 531 WRITE(
lu,1001) typext
539 IF(typdia(1:1).EQ.
'Q')
THEN 540 CALL ov (
'X=X+YZ ', x , y , da , c , npoin )
541 ELSEIF(typdia(1:1).EQ.
'I')
THEN 542 CALL ov (
'X=X+Y ', x , y , z , c , npoin )
543 ELSEIF(typdia(1:1).NE.
'0')
THEN 544 WRITE(
lu,2001) typdia
551 ELSEIF(op(1:8).EQ.
'X=X-TAY ')
THEN 555 IF(typext(1:1).EQ.
'Q')
THEN 558 w1(ielem) = w1(ielem) - xa21(ielem) * y(ikle2(ielem))
559 & - xa31(ielem) * y(ikle3(ielem))
560 w2(ielem) = w2(ielem) - xa12(ielem) * y(ikle1(ielem))
561 & - xa32(ielem) * y(ikle3(ielem))
562 w3(ielem) = w3(ielem) - xa13(ielem) * y(ikle1(ielem))
563 & - xa23(ielem) * y(ikle2(ielem))
564 w4(ielem) = w4(ielem) - xa14(ielem) * y(ikle1(ielem))
565 & - xa24(ielem) * y(ikle2(ielem))
566 & - xa34(ielem) * y(ikle3(ielem))
567 w5(ielem) = w5(ielem) - xa15(ielem) * y(ikle1(ielem))
568 & - xa25(ielem) * y(ikle2(ielem))
569 & - xa35(ielem) * y(ikle3(ielem))
570 w6(ielem) = w6(ielem) - xa16(ielem) * y(ikle1(ielem))
571 & - xa26(ielem) * y(ikle2(ielem))
572 & - xa36(ielem) * y(ikle3(ielem))
575 ELSEIF(typext(1:1).NE.
'0')
THEN 577 WRITE(
lu,1001) typext
585 IF(typdia(1:1).EQ.
'Q')
THEN 586 CALL ov (
'X=X-YZ ', x , y , da , c , npoin )
587 ELSEIF(typdia(1:1).EQ.
'I')
THEN 588 CALL ov (
'X=X-Y ', x , y , z , c , npoin )
589 ELSEIF(typdia(1:1).NE.
'0')
THEN 590 WRITE(
lu,2001) typdia
597 ELSEIF(op(1:8).EQ.
'X=X+CTAY')
THEN 601 IF(typext(1:1).EQ.
'Q')
THEN 604 w1(ielem) = w1(ielem)
605 & + c * ( + xa21(ielem) * y(ikle2(ielem))
606 & + xa31(ielem) * y(ikle3(ielem)) )
607 w2(ielem) = w2(ielem)
608 & + c * ( + xa12(ielem) * y(ikle1(ielem))
609 & + xa32(ielem) * y(ikle3(ielem)) )
610 w3(ielem) = w3(ielem)
611 & + c * ( + xa13(ielem) * y(ikle1(ielem))
612 & + xa23(ielem) * y(ikle2(ielem)) )
613 w4(ielem) = w4(ielem)
614 & + c * ( + xa14(ielem) * y(ikle1(ielem))
615 & + xa24(ielem) * y(ikle2(ielem))
616 & + xa34(ielem) * y(ikle3(ielem)) )
617 w5(ielem) = w5(ielem)
618 & + c * ( + xa15(ielem) * y(ikle1(ielem))
619 & + xa25(ielem) * y(ikle2(ielem))
620 & + xa35(ielem) * y(ikle3(ielem)) )
621 w6(ielem) = w6(ielem)
622 & + c * ( + xa16(ielem) * y(ikle1(ielem))
623 & + xa26(ielem) * y(ikle2(ielem))
624 & + xa36(ielem) * y(ikle3(ielem)) )
627 ELSEIF(typext(1:1).NE.
'0')
THEN 629 WRITE(
lu,1001) typext
637 IF(typdia(1:1).EQ.
'Q')
THEN 638 CALL ov (
'X=X+CYZ ', x , y , da , c , npoin )
639 ELSEIF(typdia(1:1).EQ.
'I')
THEN 640 CALL ov (
'X=X+CY ', x , y , z , c , npoin )
641 ELSEIF(typdia(1:1).NE.
'0')
THEN 642 WRITE(
lu,2001) typdia
663 1001
FORMAT(1x,
'MV0306 (BIEF) : EXTRADIAG. TERMS UNKNOWN TYPE : ',a1)
664 2001
FORMAT(1x,
'MV0306 (BIEF) : DIAGONAL : UNKNOWN TYPE : ',a1)
665 3001
FORMAT(1x,
'MV0306 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine mv0306(OP, X, DA, TYPDIA, XA12, XA13, XA14, XA15, XA16, XA21, XA23, XA24, XA25, XA26, XA31, XA32, XA34, XA35, XA36, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NPOIN, NPT2, NELEM, W1, W2, W3, W4, W5, W6)