5 &(op, x , da,typdia,xa,typext, y ,
6 & c,ikle,npt,nelem,nelmax,w,lego,ielm1,ielm2,ielmx,lv,
7 & s,p,iklem1,dimikm,limvoi,mxptvs,npmax,npoin,
8 & gloseg,sizglo,sizxa,ndp,mesh,stox
118 INTEGER,
INTENT(IN) :: IELM1,IELM2,IELMX,NPOIN,NPMAX,S,P,SIZXA
119 INTEGER,
INTENT(IN) :: NDP,STOX
120 INTEGER,
INTENT(INOUT) :: NPT
121 INTEGER,
INTENT(IN) :: NELEM,NELMAX,LV,DIMIKM,MXPTVS,SIZGLO
122 INTEGER,
INTENT(IN) :: IKLE(nelmax,*),IKLEM1(*),LIMVOI(*)
123 INTEGER,
INTENT(IN) :: GLOSEG(sizglo,2)
124 CHARACTER(LEN=8),
INTENT(IN) :: OP
125 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXT
126 DOUBLE PRECISION,
INTENT(INOUT) :: X(*)
127 DOUBLE PRECISION,
INTENT(IN) :: Y(*),DA(*),XA(sizxa,*),C
128 DOUBLE PRECISION,
INTENT(INOUT) :: W(nelmax,*)
129 LOGICAL,
INTENT(IN) :: LEGO
130 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
131 DOUBLE PRECISION,
OPTIONAL,
INTENT(INOUT) :: X_ERR(*)
132 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: Y_ERR(*),DA_ERR(*)
136 INTEGER NSEG1,NSEG2,SYM,NPT2,DIM1XA
138 DOUBLE PRECISION Z(1)
150 INTEGER :: AAS(3,3,2)
151 parameter( aas = reshape( (/
159 & 3 , 2 , 0 /), shape=(/ 3,3,2 /) ) )
161 INTEGER :: AAQ(3,3,2)
162 parameter( aaq = reshape( (/
170 & 6 , 2 , 0 /), shape=(/ 3,3,2 /) ) )
172 INTEGER :: BBS(4,4,2)
173 parameter( bbs = reshape( (/
183 & 1 , 2 , 3 , 0 /), shape=(/ 4,4,2 /) ) )
185 INTEGER :: BBQ(4,4,2)
186 parameter( bbq = reshape( (/
196 & 1 , 2 , 3 , 0 /), shape=(/ 4,4,2 /) ) )
198 INTEGER :: ABQ(3,4,2)
199 parameter( abq = reshape( (/
209 & 4 , 5 , 6 /), shape=(/ 3,4,2 /) ) )
211 INTEGER :: ACQ(3,6,2)
212 parameter( acq = reshape( (/
226 & 0 , 0 , 0 /), shape=(/ 3,6,2 /) ) )
228 INTEGER :: BAQ(4,3,2)
229 parameter( baq = reshape( (/
237 & 9 , 2 , 0 , 6 /), shape=(/ 4,3,2 /) ) )
239 INTEGER :: CAQ(6,3,2)
241 parameter( caq = reshape( (/
243 & 0 , 3 , 5 , 7 , 10 , 13 ,
244 & 1 , 0 , 6 , 8 , 11 , 14 ,
245 & 2 , 4 , 0 , 9 , 12 , 15 ,
247 & 0 , 0 , 0 , 0 , 0 , 0 ,
248 & 0 , 0 , 0 , 0 , 0 , 0 ,
249 & 0 , 0 , 0 , 0 , 0 , 0 /), shape=(/ 6,3,2 /) ) )
264 CALL mv0202(op, x , da,typdia,
265 & xa(1,1),xa(1,2),typext, y,c,
266 & ikle(1,1),ikle(1,2),
267 & npt,nelem,w(1,1),w(1,2))
269 WRITE(
lu,101) ielm1,ielm2,s
274 ELSEIF(ielm1.EQ.11)
THEN 277 IF(typext(1:1).EQ.
'S')
THEN 279 CALL mv0303(op, x , da,typdia,
287 & ikle(1,1),ikle(1,2),ikle(1,3),
289 & w(1,1),w(1,2),w(1,3))
290 ELSEIF (
modass .EQ. 3)
THEN 291 CALL mv0303(op, x , da,typdia,
299 & ikle(1,1),ikle(1,2),ikle(1,3),
301 & w(1,1),w(1,2),w(1,3)
302 & ,x_err,y_err,da_err)
306 CALL mv0303(op, x , da,typdia,
314 & ikle(1,1),ikle(1,2),ikle(1,3),
316 & w(1,1),w(1,2),w(1,3))
317 ELSEIF (
modass .EQ. 3)
THEN 318 CALL mv0303(op, x , da,typdia,
326 & ikle(1,1),ikle(1,2),ikle(1,3),
328 & w(1,1),w(1,2),w(1,3)
329 & ,x_err,y_err,da_err)
333 ELSEIF(ielm2.EQ.12)
THEN 335 CALL mv0304(op, x , da,typdia,
346 & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
348 & w(1,1),w(1,2),w(1,3),w(1,4))
350 ELSEIF(ielm2.EQ.13)
THEN 353 CALL mv0306(op, x , da,typdia,
354 & xa(1,acq(1,2,s)), xa(1,acq(1,3,s)),
355 & xa(1,acq(1,4,s)), xa(1,acq(1,5,s)),
356 & xa(1,acq(1,6,s)), xa(1,acq(2,1,s)),
357 & xa(1,acq(2,3,s)), xa(1,acq(2,4,s)),
358 & xa(1,acq(2,5,s)), xa(1,acq(2,6,s)),
359 & xa(1,acq(3,1,s)), xa(1,acq(3,2,s)),
360 & xa(1,acq(3,4,s)), xa(1,acq(3,5,s)),
363 & ikle(1,1),ikle(1,2),ikle(1,3),
364 & ikle(1,4),ikle(1,5),ikle(1,6),
366 & w(1,1),w(1,2),w(1,3),
367 & w(1,4),w(1,5),w(1,6))
370 WRITE(
lu,101) ielm1,ielm2,s
375 ELSEIF(ielm1.EQ.12.OR.ielm2.EQ.31.OR.ielm2.EQ.51)
THEN 377 IF(ielm2.EQ.12.OR.ielm2.EQ.31.OR.ielm2.EQ.51)
THEN 379 IF(typext(1:1).EQ.
'S')
THEN 380 CALL mv0404(op, x , da,typdia,
394 & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
396 & w(1,1),w(1,2),w(1,3),w(1,4))
398 CALL mv0404(op, x , da,typdia,
412 & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
414 & w(1,1),w(1,2),w(1,3),w(1,4))
416 ELSEIF(stox.EQ.2)
THEN 417 IF(typext.EQ.
'Q')
THEN 419 ELSEIF(typext.EQ.
'S')
THEN 425 CALL mv0404_2(op, x , da,typdia,xa,typext, y,c,
426 & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
427 & npt,nelem,w(1,1),w(1,2),w(1,3),w(1,4),dim1xa)
429 WRITE(
lu,*)
'MATVCT, UNKNOWN STORAGE FOR' 430 WRITE(
lu,*)
'OFF-DIAGONAL TERMS:',stox
431 WRITE(
lu,*)
'WHEN CALLING MV0404_2' 435 ELSEIF(ielm2.EQ.11)
THEN 436 CALL mv0403(op, x , da,typdia,
447 & ikle(1,1),ikle(1,2),ikle(1,3),ikle(1,4),
449 & w(1,1),w(1,2),w(1,3),w(1,4))
451 WRITE(
lu,101) ielm1,ielm2,s
456 ELSEIF(ielm1.EQ.41.OR.ielm1.EQ.13)
THEN 458 IF(ielm2.EQ.41.OR.ielm2.EQ.13)
THEN 461 CALL mv0606(op, x , da,typdia,xa,typext, y,c,
462 & ikle(1,1),ikle(1,2),ikle(1,3),
463 & ikle(1,4),ikle(1,5),ikle(1,6),
465 & w(1,1),w(1,2),w(1,3),w(1,4),w(1,5),w(1,6))
466 ELSEIF(stox.EQ.2)
THEN 467 IF(typext.EQ.
'Q')
THEN 469 ELSEIF(typext.EQ.
'S')
THEN 475 CALL mv0606_2(op, x , da,typdia,xa,typext, y,c,
476 & ikle(1,1),ikle(1,2),ikle(1,3),
477 & ikle(1,4),ikle(1,5),ikle(1,6),
479 & w(1,1),w(1,2),w(1,3),w(1,4),w(1,5),w(1,6),
482 WRITE(
lu,*)
'MATVCT, UNKNOWN STORAGE FOR' 483 WRITE(
lu,*)
'OFF-DIAGONAL TERMS:',stox
488 ELSEIF(ielm2.EQ.11)
THEN 492 CALL mv0603(op, x , da,typdia,
493 & xa(1,caq(1,2,s)),xa(1,caq(1,3,s)),
494 & xa(1,caq(2,1,s)),xa(1,caq(2,3,s)),
495 & xa(1,caq(3,1,s)),xa(1,caq(3,2,s)),
496 & xa(1,caq(4,1,s)),xa(1,caq(4,2,s)),
497 & xa(1,caq(4,3,s)),xa(1,caq(5,1,s)),
498 & xa(1,caq(5,2,s)),xa(1,caq(5,3,s)),
499 & xa(1,caq(6,1,s)),xa(1,caq(6,2,s)),
502 & ikle(1,1),ikle(1,2),ikle(1,3),
503 & ikle(1,4),ikle(1,5),ikle(1,6),
505 & w(1,1),w(1,2),w(1,3),
506 & w(1,4),w(1,5),w(1,6))
509 WRITE(
lu,101) ielm1,ielm2,s
518 WRITE(
lu,101) ielm1,ielm2,s
519 101
FORMAT(1x,
'MATVCT (BIEF) : ELEMENTS ',1i2,
' AND ',1i2,/,1x,
520 &
'AND STORAGE ',1i2,
' CASE NOT IMPLEMENTED')
532 CALL assvec(x,ikle,npt,nelem,nelmax,w,
533 & .false.,lv,.false.,z,ndp,errx=x_err)
534 ELSEIF (
modass .EQ. 1)
THEN 535 CALL assvec(x,ikle,npt,nelem,nelmax,w,
536 & .false.,lv,.false.,z,ndp)
540 ELSEIF(s.EQ.3.AND.p.EQ.2)
THEN 557 WRITE(
lu,101) ielm1,ielm2,s
562 ELSEIF(ielm1.EQ.11)
THEN 566 CALL mw0303(op, x , da,typdia,xa,typext, y,c,
567 & iklem1,dimikm,limvoi,mxptvs,npmax,npoin,w)
569 ELSEIF(ielm2.EQ.12)
THEN 580 WRITE(
lu,101) ielm1,ielm2,s
585 ELSEIF(ielm1.EQ.12)
THEN 606 WRITE(
lu,101) ielm1,ielm2,s
611 ELSEIF(ielm1.EQ.41)
THEN 621 WRITE(
lu,101) ielm1,ielm2,s
630 WRITE(
lu,101) ielm1,ielm2,s
638 ELSEIF(s.EQ.3.AND.p.EQ.1)
THEN 652 IF(ielm1.EQ.11.AND.ielm2.EQ.13)
THEN 654 ELSEIF(ielm1.EQ.13.AND.ielm2.EQ.11)
THEN 658 IF(typext(1:1).EQ.
'Q')
THEN 659 sym = min(nseg1,nseg2)
663 CALL mvseg (op, x , da,typdia,xa(1,1),xa(sym+1,1),
664 & typext,y,c,npt,nelem,nseg1,nseg2,
665 & gloseg(1,1),gloseg(1,2),ielm1,ielm2)
675 103
FORMAT(1x,
'MATVCT (BIEF) : ',1i2,
' AND ',1i2,/,1x,
676 &
'STORAGE AND MATRIX-VECTOR PRODUCT INCOMPATIBLE')
subroutine matvct(OP, X, DA, TYPDIA, XA, TYPEXT, Y, C, IKLE, NPT, NELEM, NELMAX, W, LEGO, IELM1, IELM2, IELMX, LV, S, P, IKLEM1, DIMIKM, LIMVOI, MXPTVS, NPMAX, NPOIN, GLOSEG, SIZGLO, SIZXA, NDP, MESH, STOX, X_ERR, Y_ERR, DA_ERR)
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)
subroutine mv0606(OP, X, DA, TYPDIA, XA, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NPOIN, NELEM, NELMAX, W1, W2, W3, W4, W5, W6)
integer function bief_nbpts(IELM, MESH)
subroutine mv0404_2(OP, X, DA, TYPDIA, XA, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, NPOIN, NELEM, W1, W2, W3, W4, DIM1XA)
subroutine mv0303(OP, X, DA, TYPDIA, XA12, XA13, XA21, XA23, XA31, XA32, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, NPOIN, NELEM, W1, W2, W3, X_ERR, Y_ERR, DA_ERR)
subroutine mw0303(OP, X, DA, TYPDIA, XAS, TYPEXT, Y, C, IKLEM1, DIMIKM, LIMVOI, MXPTVS, NPMAX, NPOIN, TRAV)
subroutine assvec(X, IKLE, NPOIN, NELEM, NELMAX, W, INIT, LV, MSK, MASKEL, NDP, ERRX)
subroutine mv0606_2(OP, X, DA, TYPDIA, XA, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NPOIN, NELEM, W1, W2, W3, W4, W5, W6, DIM1XA)
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)
subroutine mv0202(OP, X, DA, TYPDIA, XA12, XA21, TYPEXT, Y, C, IKLE1, IKLE2, NPOIN, NELEM, W1, W2)
subroutine mv0404(OP, X, DA, TYPDIA, XA12, XA13, XA14, XA21, XA23, XA24, XA31, XA32, XA34, XA41, XA42, XA43, TYPEXT, Y, C, IKLE1, IKLE2, IKLE3, IKLE4, NPOIN, NELEM, W1, W2, W3, W4)
integer function bief_nbseg(IELM, MESH)
subroutine mvseg(OP, X, DA, TYPDIA, XA1, XA2, TYPEXT, Y, C, NPOIN, NELEM, NSEG1, NSEG2, GLOSEG1, GLOSEG2, IELM1, IELM2)
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)
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)