6 & xa12,xa13,xa21,xa23,xa31,xa32,xa41,xa42,xa43,
7 & xa51,xa52,xa53,xa61,xa62,xa63,
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(*),XA21(*)
118 DOUBLE PRECISION,
INTENT(IN) :: XA23(*),XA31(*),XA32(*)
119 DOUBLE PRECISION,
INTENT(IN) :: XA41(*),XA42(*),XA43(*)
120 DOUBLE PRECISION,
INTENT(IN) :: XA51(*),XA52(*),XA53(*)
121 DOUBLE PRECISION,
INTENT(IN) :: XA61(*),XA62(*),XA63(*)
122 DOUBLE PRECISION,
INTENT(IN) :: C
124 CHARACTER(LEN=8),
INTENT(IN) :: OP
125 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXT
130 DOUBLE PRECISION Z(1)
134 IF(op(1:8).EQ.
'X=AY ')
THEN 138 IF(typdia(1:1).EQ.
'Q')
THEN 139 CALL ov (
'X=YZ ', x , y , da , c , npoin )
140 ELSEIF(typdia(1:1).EQ.
'I')
THEN 141 CALL ov (
'X=Y ', x , y , z , c , npoin )
142 ELSEIF(typdia(1:1).EQ.
'0')
THEN 143 CALL ov (
'X=C ', x , y , z , 0.d0 , npoin )
145 WRITE(
lu,2001) typdia
152 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
156 IF(typext(1:1).EQ.
'Q')
THEN 159 w1(ielem) = xa12(ielem) * y(ikle2(ielem))
160 & + xa13(ielem) * y(ikle3(ielem))
161 w2(ielem) = xa21(ielem) * y(ikle1(ielem))
162 & + xa23(ielem) * y(ikle3(ielem))
163 w3(ielem) = xa31(ielem) * y(ikle1(ielem))
164 & + xa32(ielem) * y(ikle2(ielem))
165 w4(ielem) = xa41(ielem) * y(ikle1(ielem))
166 & + xa42(ielem) * y(ikle2(ielem))
167 & + xa43(ielem) * y(ikle3(ielem))
168 w5(ielem) = xa51(ielem) * y(ikle1(ielem))
169 & + xa52(ielem) * y(ikle2(ielem))
170 & + xa53(ielem) * y(ikle3(ielem))
171 w6(ielem) = xa61(ielem) * y(ikle1(ielem))
172 & + xa62(ielem) * y(ikle2(ielem))
173 & + xa63(ielem) * y(ikle3(ielem))
176 ELSEIF(typext(1:1).EQ.
'0')
THEN 178 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
179 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
180 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
181 CALL ov (
'X=C ', w4 , y , z , 0.d0 , nelem )
182 CALL ov (
'X=C ', w5 , y , z , 0.d0 , nelem )
183 CALL ov (
'X=C ', w6 , y , z , 0.d0 , nelem )
187 WRITE(
lu,1001) typext
195 ELSEIF(op(1:8).EQ.
'X=-AY ')
THEN 199 IF(typdia(1:1).EQ.
'Q')
THEN 200 CALL ov (
'X=-YZ ', x , y , da , c , npoin )
201 ELSEIF(typdia(1:1).EQ.
'I')
THEN 202 CALL ov (
'X=-Y ', x , y , z , c , npoin )
203 ELSEIF(typdia(1:1).EQ.
'0')
THEN 204 CALL ov (
'X=C ', x , y , z , 0.d0 , npoin )
206 WRITE(
lu,2001) typdia
213 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
217 IF(typext(1:1).EQ.
'Q')
THEN 220 w1(ielem) = - xa12(ielem) * y(ikle2(ielem))
221 & - xa13(ielem) * y(ikle3(ielem))
222 w2(ielem) = - xa21(ielem) * y(ikle1(ielem))
223 & - xa23(ielem) * y(ikle3(ielem))
224 w3(ielem) = - xa31(ielem) * y(ikle1(ielem))
225 & - xa32(ielem) * y(ikle2(ielem))
226 w4(ielem) = - xa41(ielem) * y(ikle1(ielem))
227 & - xa42(ielem) * y(ikle2(ielem))
228 & - xa43(ielem) * y(ikle3(ielem))
229 w5(ielem) = - xa51(ielem) * y(ikle1(ielem))
230 & - xa52(ielem) * y(ikle2(ielem))
231 & - xa53(ielem) * y(ikle3(ielem))
232 w6(ielem) = - xa61(ielem) * y(ikle1(ielem))
233 & - xa62(ielem) * y(ikle2(ielem))
234 & - xa63(ielem) * y(ikle3(ielem))
237 ELSEIF(typext(1:1).EQ.
'0')
THEN 239 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
240 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
241 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
242 CALL ov (
'X=C ', w4 , y , z , 0.d0 , nelem )
243 CALL ov (
'X=C ', w5 , y , z , 0.d0 , nelem )
244 CALL ov (
'X=C ', w6 , y , z , 0.d0 , nelem )
248 WRITE(
lu,1001) typext
256 ELSEIF(op(1:8).EQ.
'X=X+AY ')
THEN 260 IF(typext(1:1).EQ.
'Q')
THEN 263 w1(ielem) = w1(ielem) + xa12(ielem) * y(ikle2(ielem))
264 & + xa13(ielem) * y(ikle3(ielem))
265 w2(ielem) = w2(ielem) + xa21(ielem) * y(ikle1(ielem))
266 & + xa23(ielem) * y(ikle3(ielem))
267 w3(ielem) = w3(ielem) + xa31(ielem) * y(ikle1(ielem))
268 & + xa32(ielem) * y(ikle2(ielem))
269 w4(ielem) = w4(ielem) + xa41(ielem) * y(ikle1(ielem))
270 & + xa42(ielem) * y(ikle2(ielem))
271 & + xa43(ielem) * y(ikle3(ielem))
272 w5(ielem) = w5(ielem) + xa51(ielem) * y(ikle1(ielem))
273 & + xa52(ielem) * y(ikle2(ielem))
274 & + xa53(ielem) * y(ikle3(ielem))
275 w6(ielem) = w6(ielem) + xa61(ielem) * y(ikle1(ielem))
276 & + xa62(ielem) * y(ikle2(ielem))
277 & + xa63(ielem) * y(ikle3(ielem))
280 ELSEIF(typext(1:1).NE.
'0')
THEN 282 WRITE(
lu,1001) typext
290 IF(typdia(1:1).EQ.
'Q')
THEN 291 CALL ov (
'X=X+YZ ', x , y , da , c , npoin )
292 ELSEIF(typdia(1:1).EQ.
'I')
THEN 293 CALL ov (
'X=X+Y ', x , y , z , c , npoin )
294 ELSEIF(typdia(1:1).NE.
'0')
THEN 295 WRITE(
lu,2001) typdia
302 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
306 ELSEIF(op(1:8).EQ.
'X=X-AY ')
THEN 310 IF(typext(1:1).EQ.
'Q')
THEN 313 w1(ielem) = w1(ielem) - xa12(ielem) * y(ikle2(ielem))
314 & - xa13(ielem) * y(ikle3(ielem))
315 w2(ielem) = w2(ielem) - xa21(ielem) * y(ikle1(ielem))
316 & - xa23(ielem) * y(ikle3(ielem))
317 w3(ielem) = w3(ielem) - xa31(ielem) * y(ikle1(ielem))
318 & - xa32(ielem) * y(ikle2(ielem))
319 w4(ielem) = w4(ielem) - xa41(ielem) * y(ikle1(ielem))
320 & - xa42(ielem) * y(ikle2(ielem))
321 & - xa43(ielem) * y(ikle3(ielem))
322 w5(ielem) = w5(ielem) - xa51(ielem) * y(ikle1(ielem))
323 & - xa52(ielem) * y(ikle2(ielem))
324 & - xa53(ielem) * y(ikle3(ielem))
325 w6(ielem) = w6(ielem) - xa61(ielem) * y(ikle1(ielem))
326 & - xa62(ielem) * y(ikle2(ielem))
327 & - xa63(ielem) * y(ikle3(ielem))
330 ELSEIF(typext(1:1).NE.
'0')
THEN 332 WRITE(
lu,1001) typext
340 IF(typdia(1:1).EQ.
'Q')
THEN 341 CALL ov (
'X=X-YZ ', x , y , da , c , npoin )
342 ELSEIF(typdia(1:1).EQ.
'I')
THEN 343 CALL ov (
'X=X-Y ', x , y , z , c , npoin )
344 ELSEIF(typdia(1:1).NE.
'0')
THEN 345 WRITE(
lu,2001) typdia
352 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
356 ELSEIF(op(1:8).EQ.
'X=X+CAY ')
THEN 360 IF(typext(1:1).EQ.
'Q')
THEN 363 w1(ielem) = w1(ielem)
364 & + c * ( xa12(ielem) * y(ikle2(ielem))
365 & + xa13(ielem) * y(ikle3(ielem)) )
366 w2(ielem) = w2(ielem)
367 & + c * ( xa21(ielem) * y(ikle1(ielem))
368 & + xa23(ielem) * y(ikle3(ielem)) )
369 w3(ielem) = w3(ielem)
370 & + c * ( xa31(ielem) * y(ikle1(ielem))
371 & + xa32(ielem) * y(ikle2(ielem)) )
372 w4(ielem) = w4(ielem)
373 & + c * ( xa41(ielem) * y(ikle1(ielem))
374 & + xa42(ielem) * y(ikle2(ielem))
375 & + xa43(ielem) * y(ikle3(ielem)) )
376 w5(ielem) = w5(ielem)
377 & + c * ( xa51(ielem) * y(ikle1(ielem))
378 & + xa52(ielem) * y(ikle2(ielem))
379 & + xa53(ielem) * y(ikle3(ielem)) )
380 w6(ielem) = w6(ielem)
381 & + c * ( xa61(ielem) * y(ikle1(ielem))
382 & + xa62(ielem) * y(ikle2(ielem))
383 & + xa63(ielem) * y(ikle3(ielem)) )
386 ELSEIF(typext(1:1).NE.
'0')
THEN 388 WRITE(
lu,1001) typext
396 IF(typdia(1:1).EQ.
'Q')
THEN 397 CALL ov (
'X=X+CYZ ', x , y , da , c , npoin )
398 ELSEIF(typdia(1:1).EQ.
'I')
THEN 399 CALL ov (
'X=X+CY ', x , y , z , c , npoin )
400 ELSEIF(typdia(1:1).NE.
'0')
THEN 401 WRITE(
lu,2001) typdia
408 CALL ov (
'X=C ',x(npoin+1:npt2),y,z,0.d0,npt2-npoin)
412 ELSEIF(op(1:8).EQ.
'X=TAY ')
THEN 416 IF(typdia(1:1).EQ.
'Q')
THEN 417 CALL ov (
'X=YZ ', x , y , da , c , npoin )
418 ELSEIF(typdia(1:1).EQ.
'I')
THEN 419 CALL ov (
'X=Y ', x , y , z , c , npoin )
420 ELSEIF(typdia(1:1).EQ.
'0')
THEN 421 CALL ov (
'X=C ', x , y , da , 0.d0 , npoin )
423 WRITE(
lu,2001) typdia
430 IF(typext(1:1).EQ.
'Q')
THEN 433 w1(ielem) = + xa21(ielem) * y(ikle2(ielem))
434 & + xa31(ielem) * y(ikle3(ielem))
435 & + xa41(ielem) * y(ikle4(ielem))
436 & + xa51(ielem) * y(ikle5(ielem))
437 & + xa61(ielem) * y(ikle6(ielem))
438 w2(ielem) = + xa12(ielem) * y(ikle1(ielem))
439 & + xa32(ielem) * y(ikle3(ielem))
440 & + xa42(ielem) * y(ikle4(ielem))
441 & + xa52(ielem) * y(ikle5(ielem))
442 & + xa62(ielem) * y(ikle6(ielem))
443 w3(ielem) = + xa13(ielem) * y(ikle1(ielem))
444 & + xa23(ielem) * y(ikle2(ielem))
445 & + xa43(ielem) * y(ikle4(ielem))
446 & + xa53(ielem) * y(ikle5(ielem))
447 & + xa63(ielem) * y(ikle6(ielem))
450 ELSEIF(typext(1:1).EQ.
'0')
THEN 452 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
453 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
454 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
458 WRITE(
lu,1001) typext
466 ELSEIF(op(1:8).EQ.
'X=-TAY ')
THEN 470 IF(typext(1:1).EQ.
'Q')
THEN 473 w1(ielem) = - xa21(ielem) * y(ikle2(ielem))
474 & - xa31(ielem) * y(ikle3(ielem))
475 & - xa41(ielem) * y(ikle4(ielem))
476 & - xa51(ielem) * y(ikle5(ielem))
477 & - xa61(ielem) * y(ikle6(ielem))
478 w2(ielem) = - xa12(ielem) * y(ikle1(ielem))
479 & - xa32(ielem) * y(ikle3(ielem))
480 & - xa42(ielem) * y(ikle4(ielem))
481 & - xa52(ielem) * y(ikle5(ielem))
482 & - xa62(ielem) * y(ikle6(ielem))
483 w3(ielem) = - xa13(ielem) * y(ikle1(ielem))
484 & - xa23(ielem) * y(ikle2(ielem))
485 & - xa43(ielem) * y(ikle4(ielem))
486 & - xa53(ielem) * y(ikle5(ielem))
487 & - xa63(ielem) * y(ikle6(ielem))
490 ELSEIF(typext(1:1).EQ.
'0')
THEN 492 CALL ov (
'X=C ', w1 , y , z , 0.d0 , nelem )
493 CALL ov (
'X=C ', w2 , y , z , 0.d0 , nelem )
494 CALL ov (
'X=C ', w3 , y , z , 0.d0 , nelem )
498 WRITE(
lu,1001) typext
506 IF(typdia(1:1).EQ.
'Q')
THEN 507 CALL ov (
'X=-YZ ', x , y , da , c , npoin )
508 ELSEIF(typdia(1:1).EQ.
'I')
THEN 509 CALL ov (
'X=-Y ', x , y , z , c , npoin )
510 ELSEIF(typdia(1:1).EQ.
'0')
THEN 511 CALL ov (
'X=C ', x , y , da , 0.d0 , npoin )
513 WRITE(
lu,2001) typdia
520 ELSEIF(op(1:8).EQ.
'X=X+TAY ')
THEN 524 IF(typext(1:1).EQ.
'Q')
THEN 527 w1(ielem) = w1(ielem) + xa21(ielem) * y(ikle2(ielem))
528 & + xa31(ielem) * y(ikle3(ielem))
529 & + xa41(ielem) * y(ikle4(ielem))
530 & + xa51(ielem) * y(ikle5(ielem))
531 & + xa61(ielem) * y(ikle6(ielem))
532 w2(ielem) = w2(ielem) + xa12(ielem) * y(ikle1(ielem))
533 & + xa32(ielem) * y(ikle3(ielem))
534 & + xa42(ielem) * y(ikle4(ielem))
535 & + xa52(ielem) * y(ikle5(ielem))
536 & + xa62(ielem) * y(ikle6(ielem))
537 w3(ielem) = w3(ielem) + xa13(ielem) * y(ikle1(ielem))
538 & + xa23(ielem) * y(ikle2(ielem))
539 & + xa43(ielem) * y(ikle4(ielem))
540 & + xa53(ielem) * y(ikle5(ielem))
541 & + xa63(ielem) * y(ikle6(ielem))
544 ELSEIF(typext(1:1).NE.
'0')
THEN 546 WRITE(
lu,1001) typext
554 IF(typdia(1:1).EQ.
'Q')
THEN 555 CALL ov (
'X=X+YZ ', x , y , da , c , npoin )
556 ELSEIF(typdia(1:1).EQ.
'I')
THEN 557 CALL ov (
'X=X+Y ', x , y , z , c , npoin )
558 ELSEIF(typdia(1:1).NE.
'0')
THEN 559 WRITE(
lu,2001) typdia
566 ELSEIF(op(1:8).EQ.
'X=X-TAY ')
THEN 570 IF(typext(1:1).EQ.
'Q')
THEN 573 w1(ielem) = w1(ielem) - xa21(ielem) * y(ikle2(ielem))
574 & - xa31(ielem) * y(ikle3(ielem))
575 & - xa41(ielem) * y(ikle4(ielem))
576 & - xa51(ielem) * y(ikle5(ielem))
577 & - xa61(ielem) * y(ikle6(ielem))
578 w2(ielem) = w2(ielem) - xa12(ielem) * y(ikle1(ielem))
579 & - xa32(ielem) * y(ikle3(ielem))
580 & - xa42(ielem) * y(ikle4(ielem))
581 & - xa52(ielem) * y(ikle5(ielem))
582 & - xa62(ielem) * y(ikle6(ielem))
583 w3(ielem) = w3(ielem) - xa13(ielem) * y(ikle1(ielem))
584 & - xa23(ielem) * y(ikle2(ielem))
585 & - xa43(ielem) * y(ikle4(ielem))
586 & - xa53(ielem) * y(ikle5(ielem))
587 & - xa63(ielem) * y(ikle6(ielem))
590 ELSEIF(typext(1:1).NE.
'0')
THEN 592 WRITE(
lu,1001) typext
600 IF(typdia(1:1).EQ.
'Q')
THEN 601 CALL ov (
'X=X-YZ ', x , y , da , c , npoin )
602 ELSEIF(typdia(1:1).EQ.
'I')
THEN 603 CALL ov (
'X=X-Y ', x , y , z , c , npoin )
604 ELSEIF(typdia(1:1).NE.
'0')
THEN 605 WRITE(
lu,2001) typdia
612 ELSEIF(op(1:8).EQ.
'X=X+CTAY')
THEN 616 IF(typext(1:1).EQ.
'Q')
THEN 619 w1(ielem) = w1(ielem)
620 & + c * ( + xa21(ielem) * y(ikle2(ielem))
621 & + xa31(ielem) * y(ikle3(ielem))
622 & + xa41(ielem) * y(ikle4(ielem))
623 & + xa51(ielem) * y(ikle5(ielem))
624 & + xa61(ielem) * y(ikle6(ielem)) )
625 w2(ielem) = w2(ielem)
626 & + c * ( + xa12(ielem) * y(ikle1(ielem))
627 & + xa32(ielem) * y(ikle3(ielem))
628 & + xa42(ielem) * y(ikle4(ielem))
629 & + xa52(ielem) * y(ikle5(ielem))
630 & + xa62(ielem) * y(ikle6(ielem)) )
631 w3(ielem) = w3(ielem)
632 & + c * ( + xa13(ielem) * y(ikle1(ielem))
633 & + xa23(ielem) * y(ikle2(ielem))
634 & + xa43(ielem) * y(ikle4(ielem))
635 & + xa53(ielem) * y(ikle5(ielem))
636 & + xa63(ielem) * y(ikle6(ielem)))
639 ELSEIF(typext(1:1).NE.
'0')
THEN 641 WRITE(
lu,1001) typext
649 IF(typdia(1:1).EQ.
'Q')
THEN 650 CALL ov (
'X=X+CYZ ', x , y , da , c , npoin )
651 ELSEIF(typdia(1:1).EQ.
'I')
THEN 652 CALL ov (
'X=X+CY ', x , y , z , c , npoin )
653 ELSEIF(typdia(1:1).NE.
'0')
THEN 654 WRITE(
lu,2001) typdia
675 1001
FORMAT(1x,
'MV0603 (BIEF) : EXTRADIAG. TERMS UNKNOWN TYPE : ',a1)
676 2001
FORMAT(1x,
'MV0603 (BIEF) : DIAGONAL : UNKNOWN TYPE : ',a1)
677 3001
FORMAT(1x,
'MV0603 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine mv0603(OP, X, DA, TYPDIA, XA12, XA13, XA21, XA23, XA31, XA32, XA41, XA42, XA43, XA51, XA52, XA53, XA61, XA62, XA63, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NPOIN, NPT2, NELEM, W1, W2, W3, W4, W5, W6)