5 &( op , m , n , d , c , mesh )
92 CHARACTER(LEN=8),
INTENT(IN) :: OP
93 TYPE(bief_obj) ,
INTENT(INOUT),
TARGET,
OPTIONAL :: M
94 TYPE(bief_obj) ,
INTENT(IN),
TARGET,
OPTIONAL :: N
95 TYPE(bief_obj) ,
INTENT(IN),
TARGET,
OPTIONAL :: D
96 DOUBLE PRECISION,
INTENT(IN),
OPTIONAL :: C
97 TYPE(bief_mesh) ,
INTENT(IN),
OPTIONAL :: MESH
101 INTEGER IELM1,IELM2,IELN1,IELN2,NELEM,NELMAX
102 INTEGER NDIAGM,NDIAGN,NDIAGX,MSEG1,MSEG2,NSEG1,NSEG2
103 INTEGER STOM,STON,NPTFR,MDIAGX
104 INTEGER SIZXN,SZMXN,NETAGE
107 TYPE(bief_obj),
POINTER :: NN
108 TYPE(bief_obj),
POINTER :: DD
111 CHARACTER(LEN=1) TYPDIM,TYPEXM,TYPDIN,TYPEXN
113 INTEGER,
DIMENSION(:),
POINTER :: IKLE
118 IF(
inclus(op,
'N')) yan=.true.
120 IF(
inclus(op,
'C')) yac=.true.
126 WRITE(
lu,*)
"---------------------------------" 128 2
FORMAT(1x,
'OM (BIEF) : N MISSING AND OPERATION ',a8,
' ASKED')
140 WRITE(
lu,*)
"---------------------------------" 142 4
FORMAT(1x,
'OM (BIEF) : D MISSING AND OPERATION ',a8,
' ASKED')
154 WRITE(
lu,*)
"---------------------------------" 156 6
FORMAT(1x,
'OM (BIEF) : C MISSING AND OPERATION ',a8,
' ASKED')
166 IF(op(3:8).EQ.
'N '.OR.op(3:8).EQ.
'CN ')
THEN 168 ELSEIF(op(3:8).EQ.
'TN ')
THEN 169 CALL cpstmt(n,m,trans=.true.)
182 IF(op(3:8).EQ.
'X(M) ')
THEN 183 IF(m%ELMLIN.NE.m%ELMCOL)
THEN 185 901
FORMAT(1x,
'OM (BIEF) : M (REAL NAME: ',a6,
') NOT SQUARE')
187 701
FORMAT(1x,
' IS ALREADY NON SYMMETRICAL')
191 IF(m%X%MAXDIM2*m%X%MAXDIM1.LT.
196 801
FORMAT(1x,
' TO BECOME NON SYMMETRICAL')
211 ndiagx = nn%D%MAXDIM1
220 netage = ndiagm/ndiagn - 1
227 IF(ndiagn.GT.mdiagx)
THEN 229 401
FORMAT(1x,
'OM (BIEF) : M (REAL NAME: ',a6,
') TOO SMALL')
244 IF(
dimens(ielm1).EQ.mesh%DIM1)
THEN 261 IF(stom.EQ.1.AND.ston.EQ.1)
THEN 263 IF(ielm1.EQ.1.AND.ielm2.EQ.1)
THEN 267 CALL om0101(op,m%D%R,typdim,m%X%R,typexm,
268 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
269 & ikle,nelem,nelmax,ndiagm)
274 ELSEIF( (ielm1.EQ.2 .AND.ielm2.EQ.2 ) .OR.
275 & (ielm1.EQ.11.AND.ielm2.EQ.11) .OR.
276 & (ielm1.EQ.61.AND.ielm2.EQ.61) .OR.
277 & (ielm1.EQ.81.AND.ielm2.EQ.81) )
THEN 279 IF( (ieln1.EQ.2 .AND.ieln2.EQ.2 ) .OR.
280 & (ieln1.EQ.11.AND.ieln2.EQ.11) .OR.
281 & (ieln1.EQ.61.AND.ieln2.EQ.61) .OR.
282 & (ieln1.EQ.81.AND.ieln2.EQ.81) )
THEN 285 CALL om1111(op , m%D%R,typdim,m%X%R,typexm ,
286 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
287 & ikle,nelem,nelmax,ndiagm,
288 & dm_err=m%D%E, dn_err=nn%D%E,
291 CALL om1111(op , m%D%R,typdim,m%X%R,typexm ,
292 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
293 & ikle,nelem,nelmax,ndiagm)
296 ELSEIF(ieln1.EQ.1.AND.ieln2.EQ.1)
THEN 298 CALL om1101(op , m%D%R,typdim,m%X%R,typexm,
299 & nn%D%R,typdin,nn%X%R,typexn,cc,
300 & mesh%NULONE%I,mesh%NELBOR%I,
302 & nelmax,ndiagm,ndiagn,mesh%NELEBX,
307 WRITE(
lu,201) ielm1,ielm2
308 WRITE(
lu,151) nn%NAME
309 WRITE(
lu,251) ieln1,ieln2
317 ELSEIF( (ielm1.EQ.21.AND.ielm2.EQ.21) .OR.
318 & (ielm1.EQ.71.AND.ielm2.EQ.71) .OR.
319 & (ielm1.EQ.31.AND.ielm2.EQ.31) .OR.
320 & (ielm1.EQ.51.AND.ielm2.EQ.51) .OR.
321 & (ielm1.EQ.12.AND.ielm2.EQ.12) )
THEN 323 IF( (ieln1.EQ.21.AND.ieln2.EQ.21) .OR.
324 & (ieln1.EQ.71.AND.ieln2.EQ.71) .OR.
325 & (ieln1.EQ.31.AND.ieln2.EQ.31) .OR.
326 & (ieln1.EQ.51.AND.ieln2.EQ.51) .OR.
327 & (ieln1.EQ.12.AND.ieln2.EQ.12) )
THEN 329 CALL om2121(op , m%D%R,typdim,m%X%R,typexm ,
330 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
331 & ikle,nelem,nelmax,ndiagm)
332 ELSEIF( (ielm1.EQ.12.AND.ielm2.EQ.12) .AND.
333 & (ieln1.EQ.1 .AND.ieln2.EQ.1 ) )
THEN 335 CALL om1201(op , m%D%R,typdim,m%X%R,typexm,
336 & nn%D%R,typdin,nn%X%R,typexn,cc,
337 & mesh%NULONE%I,mesh%NELBOR%I,
339 & nelmax,ndiagm,ndiagn,mesh%NELEBX,
341 ELSEIF(( (ielm1.EQ.51.AND.ielm2.EQ.51) .AND.
342 & (ieln1.EQ.61.AND.ieln2.EQ.61)) )
THEN 345 CALL om5161(op,m%D%R,typdim,m%X%R,typexm,
346 & nn%D%R,typdin,nn%X%R,typexn,cc,
347 & mesh%NULONE%I,mesh%NELBOR%I,mesh%NBOR%I,
348 & nelmax,ndiagn,sizxn,szmxn)
350 ELSEIF(( (ielm1.EQ.31.AND.ielm2.EQ.31) .AND.
351 & (ieln1.EQ.81.AND.ieln2.EQ.81)) )
THEN 354 CALL om3181(op,m%D%R,typdim,m%X%R,typexm,
355 & nn%D%R,typdin,nn%X%R,typexn,cc,
356 & mesh%NULONE%I,mesh%NELBOR%I,mesh%NBOR%I,
357 & nelmax,ndiagn,mesh%NELEB)
359 ELSEIF( (ielm1.EQ.51.AND.ielm2.EQ.51) .AND.
360 & (ieln1.EQ.11.AND.ieln2.EQ.11) )
THEN 364 CALL om5111(op , m%D%R,typdim,m%X%R,typexm,
365 & nn%D%R,typdin,nn%X%R,typexn,
366 & ndiagn,ndiagx,sizxn,netage,nelmax)
370 WRITE(
lu,201) ielm1,ielm2
371 WRITE(
lu,151) nn%NAME
372 WRITE(
lu,251) ieln1,ieln2
380 ELSEIF(ielm1.EQ.11.AND.ielm2.EQ.12)
THEN 382 IF((ieln1.EQ.11.AND.ieln2.EQ.12).OR.
383 & (ieln1.EQ.12.AND.ieln2.EQ.11.AND.op(1:4).EQ.
'M=TN'))
THEN 384 CALL om1112(op , m%D%R,typdim,m%X%R,typexm ,
385 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
386 & ikle,nelem,nelmax,ndiagm)
389 WRITE(
lu,201) ielm1,ielm2
390 WRITE(
lu,151) nn%NAME
391 WRITE(
lu,251) ieln1,ieln2
399 ELSEIF(ielm1.EQ.12.AND.ielm2.EQ.11)
THEN 401 IF((ieln1.EQ.12.AND.ieln2.EQ.11).OR.
402 & (ieln1.EQ.11.AND.ieln2.EQ.12.AND.op(1:4).EQ.
'M=TN'))
THEN 403 CALL om1211(op , m%D%R,typdim,m%X%R,typexm ,
404 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
405 & ikle,nelem,nelmax,ndiagm)
408 WRITE(
lu,201) ielm1,ielm2
409 WRITE(
lu,151) nn%NAME
410 WRITE(
lu,251) ieln1,ieln2
418 ELSEIF( (ielm1.EQ.41.AND.ielm2.EQ.41).OR.
419 & (ielm1.EQ.13.AND.ielm2.EQ.13) )
THEN 421 IF( (ieln1.EQ.41.AND.ieln2.EQ.41).OR.
422 & (ieln1.EQ.13.AND.ieln2.EQ.13) )
THEN 424 CALL om4141(op,m%D%R,typdim,m%X%R,typexm,
425 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
426 & ikle,nelem,nelmax,ndiagm,m%STOX)
428 ELSEIF(ieln1.EQ.71.AND.ieln2.EQ.71)
THEN 430 CALL om4121(op,m%D%R,typdim,m%X%R,typexm,
431 & nn%D%R,typdin,nn%X%R,typexn,cc,
432 & mesh%NULONE%I,mesh%NELBOR%I,mesh%NBOR%I,
433 & nelmax,ndiagn,sizxn,szmxn)
435 ELSEIF(ieln1.EQ.11.AND.ieln2.EQ.11)
THEN 437 CALL om4111(op , m%D%R,typdim,m%X%R,typexm,
438 & nn%D%R,typdin,nn%X%R,typexn,
439 & ndiagn,ndiagx,sizxn,netage,nelmax)
441 ELSEIF( (ielm1.EQ.13.AND.ielm2.EQ.13) .AND.
442 & (ieln1.EQ.2 .AND.ieln2.EQ.2 ) )
THEN 444 CALL om1302(op , m%D%R,typdim,m%X%R,typexm,
445 & nn%D%R,typdin,nn%X%R,typexn,cc,
446 & mesh%NULONE%I,mesh%NELBOR%I,
448 & nelmax,ndiagm,nptfr,mesh%NELEBX,
453 WRITE(
lu,201) ielm1,ielm2
454 WRITE(
lu,151) nn%NAME
455 WRITE(
lu,251) ieln1,ieln2
463 ELSEIF(ielm1.EQ.11.AND.ielm2.EQ.13)
THEN 465 IF((ieln1.EQ.11.AND.ieln2.EQ.13).OR.
466 & (ieln1.EQ.13.AND.ieln2.EQ.11.AND.op(1:4).EQ.
'M=TN'))
THEN 467 CALL om1113(op , m%D%R,typdim,m%X%R,typexm ,
468 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
469 & ikle,nelem,nelmax,ndiagm)
472 WRITE(
lu,201) ielm1,ielm2
473 WRITE(
lu,151) nn%NAME
474 WRITE(
lu,251) ieln1,ieln2
482 ELSEIF(ielm1.EQ.13.AND.ielm2.EQ.11)
THEN 484 IF((ieln1.EQ.13.AND.ieln2.EQ.11).OR.
485 & (ieln1.EQ.11.AND.ieln2.EQ.13.AND.op(1:4).EQ.
'M=TN'))
THEN 486 CALL om1311(op , m%D%R,typdim,m%X%R,typexm ,
487 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
488 & ikle,nelem,nelmax,ndiagm)
491 WRITE(
lu,201) ielm1,ielm2
492 WRITE(
lu,151) nn%NAME
493 WRITE(
lu,251) ieln1,ieln2
503 WRITE(
lu,201) ielm1,ielm2
504 WRITE(
lu,411) stom,ston
510 ELSEIF(stom.EQ.3.AND.ston.EQ.3)
THEN 514 IF(m%ELMCOL.NE.nn%ELMCOL.OR.m%ELMLIN.NE.nn%ELMLIN)
THEN 529 CALL omborseg(op,m%D%R,m%X%R,typexm,
530 & nn%D%R,nn%X%R,typexn,cc,
531 & ndiagn,mseg1,mseg2,nseg1,nseg2,
542 IF(ielm1.EQ.11.AND.ielm2.EQ.13)
THEN 544 ELSEIF(ielm1.EQ.13.AND.ielm2.EQ.11)
THEN 551 CALL omseg(op , m%D%R,typdim,m%X%R,typexm,
552 & nn%D%R,typdin,nn%X%R,typexn,dd%R,cc,
553 & ndiagm,nseg1,nseg2,mesh%GLOSEG%I,
554 & mesh%GLOSEG%MAXDIM1)
558 ELSEIF(stom.EQ.3.AND.ston.EQ.1)
THEN 563 IF( ( m%ELMLIN.EQ.11.AND. m%ELMCOL.EQ.11.AND.
564 & nn%ELMLIN.EQ.1 .AND.nn%ELMCOL.EQ.1) .OR.
565 & ( m%ELMLIN.EQ.12.AND. m%ELMCOL.EQ.12.AND.
566 & nn%ELMLIN.EQ.1 .AND.nn%ELMCOL.EQ.1) .OR.
567 & ( m%ELMLIN.EQ.13.AND. m%ELMCOL.EQ.13.AND.
568 & nn%ELMLIN.EQ.1 .AND.nn%ELMCOL.EQ.1) .OR.
569 & ( m%ELMLIN.EQ.13.AND. m%ELMCOL.EQ.13.AND.
570 & nn%ELMLIN.EQ.2 .AND.nn%ELMCOL.EQ.2) )
THEN 575 CALL omsegbor(op,m%D%R,typdim,m%X%R,typexm,
576 & nn%D%R,typdin,nn%X%R,typexn,cc,
577 & ndiagm,nseg1,mesh%NBOR%I,
578 & nptfr,m%ELMLIN,nn%ELMLIN,
580 & mesh%IKLBOR%I,mesh%NELEBX,mesh%NELEB)
583 WRITE(
lu,*)
'OM : UNEXPECTED CASE IN SEGMENT STORAGE' 584 WRITE(
lu,*)
' M%ELMLIN=',m%ELMLIN
585 WRITE(
lu,*)
' M%ELMCOL=',m%ELMCOL
586 WRITE(
lu,*)
' M%NAME=',m%NAME
587 WRITE(
lu,*)
' NN%ELMLIN=',nn%ELMLIN
588 WRITE(
lu,*)
' NN%ELMCOL=',nn%ELMCOL
589 WRITE(
lu,*)
' NN%NAME=',nn%NAME
590 WRITE(
lu,*)
' IMPLEMENTATION MISSING' 611 WRITE(
lu,411) stom,ston
624 IF(op(3:8).EQ.
'X(M) ')
THEN 631 101
FORMAT(1x,
'OM (BIEF) : MATRIX M (REAL NAME:',a6,
')')
632 151
FORMAT(1x,
'OM (BIEF) : MATRIX N (REAL NAME:',a6,
')')
633 201
FORMAT(1x,
' IELM1 = ',1i6,
' IELM2 = ',1i6)
634 251
FORMAT(1x,
' IELN1 = ',1i6,
' IELN2 = ',1i6)
635 301
FORMAT(1x,
' THIS CASE IS NOT IMPLEMENTED')
636 411
FORMAT(1x,
'AND STORAGES M : ',1i6,
' STON : ',1i6)
subroutine omseg(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, NDIAG, NSEG1, NSEG2, GLOSEG, SIZGLO)
subroutine cpstmt(X, Y, TRANS)
integer function dimens(IELM)
subroutine om1111(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG, DM_ERR, DN_ERR, D_ERR)
subroutine om1201(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, NDIAG, NPTFR, NELEBX, NELEB)
integer function bief_dim1_ext(IELM1, IELM2, STO, TYPEXT, MESH)
subroutine om0101(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
subroutine om2121(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
subroutine om4121(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, SIZDN, SIZXN, SZMXN)
subroutine omsegbor(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NDIAG, NSEG1, NBOR, NPTFR, IELM1, IELN1, NSEG11, IKLBOR, NELEBX, NELEB)
subroutine om(OP, M, N, D, C, MESH)
integer function bief_dim2_ext(IELM1, IELM2, STO, TYPEXT, MESH)
subroutine om1311(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
subroutine omborseg(OP, DM, XM, TYPEXM, DN, XN, TYPEXN, C, NDIAG, MSEG1, MSEG2, NSEG1, NSEG2, NBOR)
subroutine om4111(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, SIZDN, SZMDN, SIZXN, NETAGE, NELMAX3D)
subroutine om5111(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, SIZDN, SZMDN, SIZXN, NETAGE, NELMAX3D)
subroutine om1113(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
subroutine om1211(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
logical function inclus(C1, C2)
subroutine om1302(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, NDIAG, NPTFR, NELEBX, NELEB)
subroutine om4141(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG, STOX)
subroutine om1112(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)
subroutine om5161(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, SIZDN, SIZXN, SZMXN)
subroutine om3181(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, SIZDN, NELEB)
integer function bief_nbseg(IELM, MESH)
subroutine om1101(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, NDIAG, NPTFR, NELEBX, NELEB)