51 SUBROUTINE lecint(IPARI ,LINTER ,IPM ,BUFMAT ,
52 . NMNT ,ITAB ,ITABM1 ,GEO ,
53 . PM ,X ,IGRNOD ,IGRSURF ,IGRSLIN ,
54 . NPC ,PROBINT ,LAG_NCF ,
55 . LAG_NKF ,LAG_NCL ,LAG_NKL ,LAG_NHF ,MAXRTM ,
56 . ISKN ,MAXRTMS ,IGEO ,
57 . XFILTR ,STFAC ,FRIC_P ,FRIGAP ,
58 . I2RUPT ,AREASL ,UNITAB ,IXS ,NOM_OPT ,
59 . ITAG ,IXC ,IXTG ,KNOD2ELC,KNOD2ELTG,
60 . NOD2ELC ,NOD2ELTG,KNOD2ELS,NOD2ELS,IXS10 ,
61 . IXS16 ,IXS20 ,DEF_INTER,MAXNSNE,
62 . NPC1 ,MULTI_FVM,NOM_OPTFRIC,INTBUF_FRIC_TAB,
63 . IGRBRIC,IGRSH3N ,IGRTRUSS ,MAXRTM_T2,NSN_MULTI_CONNEC,T2_NB_CONNEC,
64 . IDDLEVEL,NALE ,INTERFACES,SNPC1 ,FLAG_ELEM_INTER25,LIST_NIN25)
77 USE i2_surfi_dim_mod ,
ONLY : i2_surfi_dim
81#include "implicit_f.inc"
90#include "tabsiz_c.inc"
94 INTEGER,
INTENT(IN) :: SNPC1
95 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
96 INTEGER,
INTENT(IN)::IDDLEVEL
97 INTEGER NOM_OPT(LNOPT1,*),MAXNSNE
98 INTEGER LINTER,NMNT, LAG_NCF,LAG_NKF,
99 . LAG_NCL,LAG_NKL,LAG_NHF,MAXRTM,, NBRIC
100 INTEGER IPARI(NPARI,NINTER), ITAB(SITAB), ITABM1(SITABM1),
101 . NPC(SNPC),ISKN(SISKWN),
102 . IGEO(NPROPGI,),IXS(NIXS,NUMELS),ITAG(*),
103 . IXC(*),IXTG(*),KNOD2ELC(*),KNOD2ELTG(*),
104 . NOD2ELC(*),NOD2ELTG(*),KNOD2ELS(*),NOD2ELS(*),
105 . IXS10(6,*), IXS16(8,*), IXS20(12,*),(100),
106 . NPC1(SNPC1),NOM_OPTFRIC(LNOPT1,*),MAXRTM_T2,
107 . t2_nb_connec(*),nsn_multi_connec
108 INTEGER,
INTENT(IN) :: NALE(NUMNOD)
109 INTEGER,
INTENT(INOUT) :: LIST_NIN25(NINTER)
110 INTEGER,
INTENT(INOUT) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
112 . geo(npropg,numgeo), pm(*), xfiltr(*),stfac(*),
113 . fric_p(10,ninter),
i2rupt(6,ninter),frigap(nparir,ninter),areasl(*)
116 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
117 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
118 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
119 my_real,
INTENT(IN) :: BUFMAT(SBUFMAT)
121 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
122 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
123 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
124 TYPE (GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS
125 TYPE (SURF_) ,
DIMENSION(NSURF) ,
TARGET :: IGRSURF
126 TYPE (SURF_) ,
DIMENSION(NSLIN) ,
TARGET :: IGRSLIN
127 TYPE (INTERFACES_) ,
INTENT(INOUT):: INTERFACES
131 INTEGER I,K,L,IRS,IRM,NI,NSN,NMN,
132 . ntyp,is1,is2,noint,nrts,nrtm,ibuc,ilev,
133 . multimp,igap,inacti,nme,lag_nc16,lag_nk16,
134 . ilagm,ncf_i2,nuvar,
135 . nin,nisub,jsub,igr,isu,isu1,isu2,pid,stat,
136 . nrtms,nrtmm,iallo,nlinsa,nlinma,nsne
137 . nrts_new, nrtm_new,nrtm_fe,
138 . nrtm_ige,nrtmm_ige,
139 . nrts_ige,nrtms_ige,nrts_fe,
140 . nmn_ige,nmn_fe,nsn_ige
141 . iedge,nconte,multimpe,multimps,istiff,nin25
142 INTEGER KD(50),JD(50),IBID,NRTM_SH,ETYP,INTPLY
143 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IRECTS,IRECTM,NSV,MSR
144 INTEGER ID,ISL, GRBRIC_ID
145 CHARACTER(LEN=NCHARTITLE) :: TITR
146 my_real RBID,AUTO_RHO,AUTO_LENGTH, STIFF_STAT(3)
148 INTEGER,
DIMENSION(:),
ALLOCATABLE,
TARGET :: NTAG_TARGET
149 INTEGER,
DIMENSION(:),
POINTER :: NTAG
150 INTEGER,
DIMENSION(:,:),
POINTER :: SURF_NODES,SURF_NODES_IGE,LINE_NODES
151 LOGICAL IS_GAP_COMPUTED,TYPE18
152 INTEGER S_MSR,S_NSV,S_IRECTS,S_IRECTM
154 DATA MESS/'INTERFACE INPUT
'/
158 INTEGER,EXTERNAL :: NINTRI
256 ALLOCATE(NTAG_TARGET(2*NUMNOD+1), STAT=Stat)
257 NTAG(0:2*NUMNOD) => NTAG_TARGET(1:2*NUMNOD+1)
280 INACTI = IPARI(22,NI)
281 MULTIMP = IPARI(23,NI)
283 MULTIMPE= IPARI(87,NI)
284 MULTIMPS= IPARI(89,NI)
286 IS1 = IPARI(13,NI)/10
287 IS2 = MOD(IPARI(13,NI),10)
291 ISTIFF = IPARI(29,NI)
294.AND.
IF(NTYP==7 INACTI==7 )TYPE18=.TRUE.
296 IF(TYPE18)GRBRIC_ID = IPARI(83,NI)
311 NRTS_IGE=IGRSURF(ISU1)%NSEG_IGE
312 NRTS_FE =IGRSURF(ISU1)%NSEG
313 NRTS = NRTS_FE + NRTS_IGE
314 ELSEIF(IS1 == 2) THEN
315 NSN_FE=IGRNOD(ISU1)%NENTITY
318 NRTS_FE=IGRSLIN(ISU1)%NSEG
322 ELSEIF(IS1 == 5) THEN
323 NSN_FE=IGRBRIC(ISU1)%NENTITY
327 NRTM_IGE=IGRSURF(ISU2)%NSEG_IGE
328 NRTM_FE =IGRSURF(ISU2)%NSEG
329 NRTM = NRTM_FE + NRTM_IGE
331 NRTM_FE=IGRSLIN(ISU2)%NSEG
334 NRTM_IGE=IGRSURF(ISU2)%NSEG_IGE
335 NRTM_FE=IGRSURF(ISU2)%NSEG
336 NRTM = NRTM_FE + NRTM_IGE
348 IPARI(73,NI) = NRTM_IGE
349 IPARI(74,NI) = NRTM_FE
350 IPARI(75,NI) = NRTS_IGE
351 IPARI(76,NI) = NRTS_FE
352 IPARI(77,NI) = NSN_IGE
353 IPARI(78,NI) = NSN_FE
354 IPARI(79,NI) = NMN_IGE
355 IPARI(80,NI) = NMN_FE
357.AND..AND.
IF (NTYP == 2 IS1==-1 IS2==-1) THEN
358 CALL I2_SURFI_DIM( NPARI ,IPARI(1,NI),NSURF ,IGRSURF ,
359 1 NSN ,NRTM ,NMN ,FRIGAP(4,NI) ,
366 ELSEIF (NTYP == 14) THEN
367 NMNT = MAX(NMNT,4*NUMNOD)
368 ELSEIF (NTYP == 15) THEN
369 NMNT = MAX(NMNT,9*NUMNOD+12*NUMELS+2*NUMELC+2*NUMELTG)
370 ELSEIF(NTYP == 16)THEN
371 NSN =IGRNOD(ISU1)%NENTITY
372 NME =IGRBRIC(ISU2)%NENTITY
379 NMNT = MAX(NMNT,4*(NME+100)+ 2*NSN )
380 ELSEIF(NTYP == 17)THEN
381 NSN =IGRBRIC(ISU1)%NENTITY
382 NME =IGRBRIC(ISU2)%NENTITY
387 NMNT = MAX(NMNT, 4*(NME+100)+ 4*(NSN+100))
388 IF(IPARI(33,NI)==0)THEN
389 IMAXIMP = IMAXIMP + (MULTIMP*NSN*16)/5 + 1
404 ELSEIF(NTYP == 20)THEN
405 IALLO = 1 ! memory estimation
406 CALL I20SURFI(IALLO ,IPARI(1,NI),IGRNOD ,IGRSURF ,
407 2 IGRSLIN ,IBID ,FRIGAP(1,NI),
408 3 IBID ,IBID ,IBID ,IBID ,
409 4 IBID ,IBID ,IBID ,IBID ,
410 5 IBID ,IBID ,X ,IBID ,
418 ELSEIF(NTYP == 24)THEN
419 IALLO = 1 ! memory estimation
421 1 IALLO ,IPARI(1,NI) ,IGRNOD ,IGRSURF ,
422 2 IBID ,FRIGAP(1,NI) ,
423 3 IBID ,IBID ,ITAB ,X ,
424 4 IBID ,IBID ,IBID ,IBID ,
425 5 IBID ,ITAG ,INTPLY ,IXC ,
426 6 IXTG ,KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,
427 7 NOD2ELTG ,KNOD2ELS ,NOD2ELS ,IXS ,
428 8 IXS10 ,IXS16 ,IXS20 ,IBID ,
429 9 IBID ,IBID ,IBID ,IPARI(86,NI) )
431 IF(INTPLY > 0) INTPLYXFEM = 1
442 ELSEIF(NTYP == 25)THEN
443 IALLO = 1 ! memory evaluation
446 LIST_NIN25(NI) = NIN25
448 1 IALLO ,IPARI(1,NI) ,IGRNOD ,IGRSURF ,
449 2 IBID ,FRIGAP(1,NI) ,
450 3 IBID ,IBID ,ITAB ,X ,
451 4 IBID ,IBID ,IBID ,IBID ,
452 5 IBID ,ITAG ,INTPLY ,IXC ,
453 6 IXTG ,KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,
454 7 NOD2ELTG ,KNOD2ELS ,NOD2ELS ,IXS ,
455 8 IXS10 ,IXS16 ,IXS20 ,IBID ,
456 9 IBID ,IBID ,IBID ,INTERFACES%PARAMETERS,
457 A NIN25 ,FLAG_ELEM_INTER25)
458 IPARI(66,NI) = INTPLY
459 IF(INTPLY > 0) INTPLYXFEM = 1
481.AND.
IF(NOM_OPT(2,NINTER+JSUB) == NOINT NOM_OPT(5,NINTER+JSUB) == 1)THEN
483 IGR =NOM_OPT(4,NINTER+JSUB)
484 ISU1 =NOM_OPT(3,NINTER+JSUB)
485 ISU2 =NOM_OPT(6,NINTER+JSUB)
486 IF(IGR/=0)IPARI(37,NI)=IPARI(37,NI)+IGRNOD(IGR)%NENTITY
488 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
489 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU2)%NSEG
491 IPARI(90,NI)=IPARI(90,NI)+4*IGRSURF(ISU2)%NSEG
495 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU1)%NSEG
496 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU1)%NSEG
498 IPARI(90,NI)=IPARI(90,NI)+4*IGRSURF(ISU1)%NSEG
505.AND.
IF(NOM_OPT(2,NINTER+JSUB) == 0 NOM_OPT(5,NINTER+JSUB) == 1) THEN
507 ISU1 =NOM_OPT(3,NINTER+JSUB)
508 ISU2 =NOM_OPT(6,NINTER+JSUB)
510 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU2)%NSEG
511 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
513 IPARI(90,NI)=IPARI(90,NI)+4*IGRSURF(ISU2)%NSEG
517 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU1)%NSEG
518 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU1)%NSEG
520 IPARI(90,NI)=IPARI(90,NI)+4*IGRSURF(ISU1)%NSEG
532.AND.
IF(NOM_OPT(2,NINTER+JSUB) == NOINT NOM_OPT(5,NINTER+JSUB) == 1)THEN
534 IGR =NOM_OPT(4,NINTER+JSUB)
535 ISU1 =NOM_OPT(3,NINTER+JSUB)
536 ISU2 =NOM_OPT(6,NINTER+JSUB)
537 IF(IGR/=0)IPARI(37,NI)=IPARI(37,NI)+IGRNOD(IGR)%NENTITY
539 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
540 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU2)%NSEG
541 IF(IPARI(55,NI)/=0)THEN
542 IPARI(37,NI)=IPARI(37,NI)+4*3*IGRSURF(ISU2)%NSEG
546 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU1)%NSEG
547 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU1)%NSEG
548 IF(IPARI(55,NI)/=0)THEN
549 IPARI(37,NI)=IPARI(37,NI)+4*3*IGRSURF(ISU1)%NSEG
556.AND.
IF(NOM_OPT(2,NINTER+JSUB) == 0 NOM_OPT(5,NINTER+JSUB) == 1) THEN
558 ISU1 =NOM_OPT(3,NINTER+JSUB)
559 ISU2 =NOM_OPT(6,NINTER+JSUB)
561 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU2)%NSEG
562 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
563 IF(IPARI(55,NI)/=0)THEN
564 IPARI(37,NI)=IPARI(37,NI)+4*3*IGRSURF(ISU2)%NSEG
568 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU1)%NSEG
569 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU1)%NSEG
570 IF(IPARI(55,NI)/=0)THEN
571 IPARI(37,NI)=IPARI(37,NI)+4*3*IGRSURF(ISU1)%NSEG
578.OR..OR.
ELSEIF(NTYP==7NTYP==10NTYP==20
585.AND.
IF(NOM_OPT(2,NINTER+JSUB) == NOINT NOM_OPT(5,NINTER+JSUB) == 1)THEN
587 IF (IPARI(71,NI) == 0) THEN
588 IGR =NOM_OPT(4,NINTER+JSUB)
589 IPARI(37,NI)=IPARI(37,NI)+IGRNOD(IGR)%NENTITY
590 ISU =NOM_OPT(3,NINTER+JSUB)
591 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU)%NSEG
592 ELSEIF (IPARI(71,NI) == -1) THEN
594 ISU1 =NOM_OPT(4,NINTER+JSUB)
595 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU1)%NSEG
596 ISU2 =NOM_OPT(3,NINTER+JSUB)
597 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
600 ISU1 =NOM_OPT(3,NINTER+JSUB)
601 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU1)%NSEG
602 ISU2 =NOM_OPT(4,NINTER+JSUB)
603 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
609.AND.
IF(NOM_OPT(2,NINTER+JSUB) == 0 NOM_OPT(5,NINTER+JSUB) == 1) THEN
611 ISU1 =NOM_OPT(3,NINTER+JSUB)
612 ISU2 =NOM_OPT(6,NINTER+JSUB)
614 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU2)%NSEG
615 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU2)%NSEG
618 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU1)%NSEG
619 IPARI(38,NI)=IPARI(38,NI)+IGRSURF(ISU1)%NSEG
626 ELSEIF (NTYP == 11) THEN
629.AND.
IF(NOM_OPT(2,NINTER+JSUB) == NOINT NOM_OPT(5,NINTER+JSUB) == 1)THEN
631 IF (IPARI(71,NI) == 0) THEN
632 ISU1 =NOM_OPT(4,NINTER+JSUB)
633 IPARI(37,NI)=IPARI(37,NI)+IGRSLIN(ISU1)%NSEG
634 ISU2 =NOM_OPT(3,NINTER+JSUB)
635 IPARI(38,NI)=IPARI(38,NI)+IGRSLIN(ISU2)%NSEG
638 ISU1 =NOM_OPT(4,NINTER+JSUB)
639 IPARI(37,NI)=IPARI(37,NI)+4*IGRSURF(ISU1)%NSEG
640 ISU2 =NOM_OPT(3,NINTER+JSUB)
641 IPARI(38,NI)=IPARI(38,NI)+4*IGRSURF(ISU2)%NSEG
647.AND.
IF(NOM_OPT(2,NINTER+JSUB) == 0 NOM_OPT(5,NINTER+JSUB) == 1) THEN
649 ISU1 =NOM_OPT(3,NINTER+JSUB)
650 ISU2 =NOM_OPT(6,NINTER+JSUB)
652 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU2)%NSEG
653 IPARI(38,NI) = IPARI(38,NI) + 4* IGRSURF(ISU2)%NSEG
656 IPARI(38,NI)=IPARI(38,NI)+4*IGRSURF(ISU1)%NSEG
657 IPARI(37,NI) = IPARI(37,NI) + 4* IGRSURF(ISU1)%NSEG
666 NRTMS = MAX(NRTMS,NRTS_FE+NRTS_IGE)
667 NRTMM = MAX(NRTMM,NRTM_FE+NRTM_IGE)
668 NRTMS_IGE = MAX(NRTMS_IGE,NRTS_IGE)
669 NRTMM_IGE = MAX(NRTMM_IGE,NRTM_IGE)
671 NRTMS = MAX(NRTMS,2*NRTS)
672 NRTMM = MAX(NRTMM,2*NRTM)
679 ALLOCATE (IRECTS(S_IRECTS) ,STAT=stat)
680 ALLOCATE (IRECTM(S_IRECTM) ,STAT=stat)
681 S_NSV=MAX(NUMNOD,NRTMS_IGE*16)
682 ALLOCATE (NSV(S_NSV) ,STAT=stat)
683 S_MSR=MAX(NUMNOD,NRTMM_IGE*16)
684 ALLOCATE (MSR(S_MSR) ,STAT=stat)
685 IF (STAT /= 0) CALL ANCMSG(MSGID=268, ANMODE=ANINFO, MSGTYPE=MSGERROR, C1='IRECTS
')
704 IS1 = IPARI(13,NI)/10
706 INACTI = IPARI(22,NI)
708 IS2 = MOD(IPARI(13,NI),10)
715.AND.
IF(NTYP==7 INACTI==7 )TYPE18=.TRUE.
717 IF(TYPE18)GRBRIC_ID = IPARI(83,NI)
722 NRTM_IGE = IPARI(73,NI)
723 NRTM_FE = IPARI(74,NI)
724 NRTS_IGE = IPARI(75,NI)
725 NRTS_FE = IPARI(76,NI)
726 NSN_IGE = IPARI(77,NI)
727 NSN_FE = IPARI(78,NI)
728 NMN_IGE = IPARI(79,NI)
729 NMN_FE = IPARI(80,NI)
742 CALL FRETITL2(TITR,NOM_OPT(LNOPT1-LTITR+1,NI),LTITR)
748 IF(GRBRIC_ID > 0)THEN
749 NBRIC = IGRBRIC(GRBRIC_ID)%NENTITY
750 IF (MULTI_FVM%IS_USED)THEN
755 NBRIC=IGRBRIC(ISU1)%NENTITY
756 CALL INGRBRIC_NODES(NSN_FE ,IGRBRIC(GRBRIC_ID)%ENTITY ,ITAB ,NSV ,
757 . IXS , NBRIC, NALE ,IPM, BUFMAT,S_NSV)
765 IPARI(78,NI) = NSN_FE
767 IF(GRBRIC_ID > 0)THEN
768 IS_GAP_COMPUTED = .FALSE.
769 CALL INGRBRIC_DX(NBRIC , IGRBRIC(GRBRIC_ID)%ENTITY, FRIGAP(2,NI) , IXS , X ,
770 . NOINT , TITR , IS_GAP_COMPUTED, PM , IPM ,
771 . IDDLEVEL, ISTIFF , AUTO_RHO , AUTO_LENGTH,
773 IF(IS_GAP_COMPUTED)THEN
774 WRITE(IOUT,1000)NOINT
775 WRITE(IOUT,3020)FRIGAP(2,NI)
781.and..and..and..and.
ELSEIF ( NTYP/=15NTYP/=17NTYP/=20NTYP/=22
782.and..and.
. NTYP/=23NTYP/=24NTYP/=25) THEN
785.AND..AND..AND..AND.
IF(NRTS_FE == 0NRTS_IGE == 0IS1 /= 2IS1 /= 5 IS1 /=-1) THEN
786 CALL ANCMSG(MSGID=118, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
789.OR.
IF (NTYP == 3 NTYP == 6) IRS = IPARI(25,NI)
790 SURF_NODES => IGRSURF(ISU1)%NODES(1:NRTS_FE,1:4)
791 CALL INSURF(NRTS_FE,NSN_FE,IRS,IRECTS,
792 . SURF_NODES,ITAB,NSV,ID,TITR,
793 . NTAG,S_NSV,S_IRECTS,TYPE18)
794 IF (IGRSURF(ISU1)%NSEG_IGE >= 1) THEN
795 SURF_NODES_IGE => IGRSURF(ISU1)%NODES_IGE(1:NRTS_IGE,1:4)
796 IAD_IGE = IGRSURF(ISU1)%IAD_IGE
797 CALL INSURFIGEO(NRTS_IGE,NRTS_FE,NSN_IGE,0,IAD_IGE,IRM,IRECTS,NOINT,
798 . SURF_NODES_IGE,ITAB,NSV,ID,TITR,
799 . IBID,RBID,RBID,RBID,IBID,RBID,RBID,RBID)
802 CALL INPOINT(NSN_FE,NOINT,IGRNOD(ISU1)%ENTITY,ITAB,NSV)
804 LINE_NODES => IGRSLIN(ISU1)%NODES(1:NRTS,1:2)
805 CALL INSLIN(NRTS,NSN_FE,IRECTS,NOINT,
806 . LINE_NODES,ITAB,NSV,
810 NBRIC = IGRBRIC(ISU1)%NENTITY
811 CALL INGRBRIC(NSN, IGRBRIC(ISU1)%ENTITY, NSV,
812 . IXS, NBRIC, PM,S_NSV, IGEO)
817 IPARI(77,NI) = NSN_IGE
818 IPARI(78,NI) = NSN_FE
822 ELSEIF(NTYP==22) THEN
824 NBRIC=IGRBRIC(ISU1)%NENTITY
825 CALL INGRBRIC(NSN , IGRBRIC(ISU1)%ENTITY ,NSV ,
826 . IXS , NBRIC ,PM, S_NSV, IGEO)
832 IPARI(32,NI) = NBRIC !IBAG type7
833 IPARI(30,NI) = ISU1 !IBAG type7
835 ELSEIF(NTYP==23) THEN
837.AND.
IF(NRTS == 0IS1 /= 2) THEN
838 CALL ANCMSG(MSGID=118, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
841 SURF_NODES => IGRSURF(ISU1)%NODES(1:NRTS,1:4)
842 CALL INSURF23(NRTS,NSN,IRS,IRECTS,NOINT,
843 . SURF_NODES,ITAB,NSV,NRTS_NEW,X,
859 CALL ANCMSG(MSGID=119, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
863 ELSEIF ( NTYP == 15) THEN
867 CALL ANCMSG(MSGID=118, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
869 SURF_NODES => IGRSURF(ISU1)%NODES(1:NRTS,1:4)
870 CALL INSURF(NRTS,NSN,IRS,IRECTS,
871 . SURF_NODES,ITAB,NSV,ID,TITR,
872 . NTAG,S_NSV,S_IRECTS,TYPE18)
876 CALL ANCMSG(MSGID=119, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
880 ELSEIF ( NTYP == 20) THEN
883 ELSEIF ( NTYP == 22) THEN
885 SURF_NODES => IGRSURF(ISU2)%NODES(1:NRTM,1:4)
886 CALL INSURF(NRTM,NMN,IRM,IRECTM,
887 . SURF_NODES,ITAB,MSR,ID,TITR,
888 . NTAG,S_MSR,S_IRECTM,TYPE18)
889 IPARI(6,NI) = NMN !nombre de main node.
890 IPARI(33,NI) = IGRSURF(ISU2)%NSEG ! nombre de facette main
891 IPARI(4,NI) = IGRSURF(ISU2)%NSEG
893 ELSEIF( NTYP == 23) THEN
896 CALL ANCMSG(MSGID=119, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
899 SURF_NODES => IGRSURF(ISU2)%NODES(1:NRTM,1:4)
900 CALL INSURF23(NRTM,NMN,IRM,IRECTM,NOINT,
901 . SURF_NODES,ITAB,MSR,NRTM_NEW,X,
908 ELSEIF ( NTYP == 24) THEN
911 ELSEIF ( NTYP == 25) THEN
915.OR..OR.
IF (NTYP == 3 NTYP == 5
916.OR.
. NTYP == 6 NTYP == 8) IRM = IPARI(24,NI)
918.AND.
IF(NRTM_FE == 0 NRTM_IGE == 0) THEN
919 CALL ANCMSG(MSGID=119, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=ID, C1=TITR)
921.AND.
IF(NTYP == 2 IS2 == -1)THEN
924 SURF_NODES => IGRSURF(ISU2)%NODES(1:NRTM_FE,1:4)
925 CALL INSURF(NRTM_FE,NMN_FE,IRM,IRECTM,
926 . SURF_NODES,ITAB,MSR,ID,TITR,
927 . NTAG,S_MSR,S_IRECTM,TYPE18)
929 CALL INTER1_CHECK_ALE_LAG_SIDES(N2D, IGRSURF(ISU1)%ID, IGRSURF(ISU2)%ID, ID, TITR,
930 . NUMNOD, ITAB, NRTS_FE, NRTM_FE, IRECTS, IRECTM,NALE, IDDLEVEL)
931 IGRSURF(ISU1)%NSEG = NRTS_FE
932 IGRSURF(ISU2)%NSEG = NRTM_FE
933 IPARI(74,NI) = NRTM_FE
934 IPARI(76,NI) = NRTS_FE
936 IF (IGRSURF(ISU2)%NSEG_IGE >= 1) THEN
937 SURF_NODES_IGE => IGRSURF(ISU2)%NODES_IGE(1:NRTM_IGE,1:4)
938 IAD_IGE = IGRSURF(ISU2)%IAD_IGE
939 CALL INSURFIGEO(NRTM_IGE,NRTM_FE,NMN_IGE,NSN_IGE,IAD_IGE,IRM,IRECTM,NOINT,
940 . SURF_NODES_IGE,ITAB,MSR,ID,TITR,
941 . IBID,RBID,RBID,RBID,IBID,RBID,RBID,RBID)
944 LINE_NODES => IGRSLIN(ISU2)%NODES(1:NRTM,1:2)
945 CALL INSLIN(NRTM,NMN_FE,IRECTM,NOINT,
946 . LINE_NODES,ITAB,MSR,
948 ELSEIF(IS2 == 4) THEN
949 SURF_NODES => IGRSURF(ISU2)%NODES(1:NRTM_FE,1:4)
950 CALL INSURF(NRTM_FE,NMN_FE,IRM,IRECTM,
951 . SURF_NODES,ITAB,MSR,ID,TITR,
952 . NTAG,S_MSR,S_IRECTM,TYPE18)
953 IF (IGRSURF(ISU2)%NSEG_IGE >= 1) THEN
954 SURF_NODES_IGE => IGRSURF(ISU2)%NODES_IGE(1:NRTM_IGE,1:4)
955 IAD_IGE = IGRSURF(ISU2)%IAD_IGE
956 CALL INSURFIGEO(NRTM_IGE,NRTM_FE,NMN_IGE,0,IAD_IGE,IRM,IRECTM,NOINT,
957 . SURF_NODES_IGE,ITAB,MSR,ID,TITR,
958 . IBID,RBID,RBID,RBID,IBID,RBID,RBID,RBID)
963 IPARI(79,NI) = NMN_IGE
964 IPARI(80,NI) = NMN_FE
968.AND.
IF(ISTIFF == 2 ISU2 > 0)THEN
969 STIFF_STAT(1) = -STFAC(NI) !-STFAC*VREF*VREF
970 STIFF_STAT(2) = AUTO_RHO ! (RHO0_MAX : also computed for multimaterials)
971 STIFF_STAT(3) = FRIGAP(2,NI) !gap
972 SURF_NODES => IGRSURF(ISU2)%NODES(1:NRTM,1:4)
973 CALL INSURF_DX(NRTM,NMN,IRM,IRECTM,NOINT,
974 . SURF_NODES,ITAB,MSR,ID,TITR,
975 . NTAG,S_MSR,S_IRECTM,X, STIFF_STAT)
976 STFAC(NI)=STIFF_STAT(1)
985 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
986 NMNT=MAX0(NMNT,6*NMN)
988 ELSEIF (NTYP == 2) THEN
991.OR..OR.
IF (ILEV == 10 ILEV == 11 ILEV == 12) THEN
992 PID = NINTRI(IPARI(43,NI),IGEO,NPROPGI,NUMGEO,1)
1001 ELSEIF (ILEV == 27 . OR . ILEV == 28) THEN
1004 NSN_MULTI_CONNEC = NSN_MULTI_CONNEC + NSN
1006 DO I=1,IGRNOD(ISU1)%NENTITY
1007 ISL = IGRNOD(ISU1)%ENTITY(I)
1008 T2_NB_CONNEC(ISL) = T2_NB_CONNEC(ISL) + 1
1009 IF (T2_NB_CONNEC(ISL) == 2) NSN_MULTI_CONNEC = NSN_MULTI_CONNEC + 1
1016 LAG_NHF = LAG_NHF + NCF_I2*(NCF_I2-1)/2
1017 LAG_NCF = LAG_NCF + NCF_I2
1018 LAG_NKF = LAG_NKF + NCF_I2*13
1020 MAXRTM_T2=MAX(MAXRTM_T2,NRTM)
1022 ELSEIF (NTYP == 3 ) THEN
1024 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1025 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1027 IMAXIMP = IMAXIMP + 2*NINT(NMN/PROBINT)
1029 ELSEIF (NTYP == 4) THEN
1031 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1032 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1035 IF(IBUC /= 0)NMNT =MAX0(NMNT,14*NSN)
1036 IMAXIMP = IMAXIMP + 2*NINT(NMN/PROBINT)
1038 ELSEIF (NTYP == 5) THEN
1040 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1041 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1042 IMAXIMP = IMAXIMP + 2*(NINT(NMN/PROBINT) + NINT(NSN/PROBINT))
1044 ELSEIF (NTYP == 6) THEN
1046 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1047 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1048 IMAXIMP = IMAXIMP + 2*NINT(NSN/PROBINT)
1050 ELSEIF (NTYP == 7) THEN
1052 IPARI(18,NI) = NSN_FE+NSN_IGE+NMN_FE+NMN_IGE
1053 IPARI(24,NI) = NSN_FE+NSN_IGE
1054 IPARI(25,NI) = NSN_FE+NSN_IGE+NMN_FE+NMN_IGE
1055 IMAXIMP = IMAXIMP + MULTIMP*(NSN_FE+NSN_IGE)
1056 NMNT =MAX0(NMNT,NSN_FE+NSN_IGE + 3)
1059 LAG_NK16 = NUMNOD*15
1060 NMNT = MAX(NMNT, 4*(NMN+100)+ 2*(NSN_FE+NSN_IGE) + LAG_NC16 + 4*LAG_NK16)
1062 MAXRTM=MAX(MAXRTM,NRTM)
1064 ELSEIF (NTYP == 8) THEN
1066 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1068 IMAXIMP = IMAXIMP + 2*NINT(NSN/PROBINT)
1070 ELSEIF (NTYP == 9) THEN
1072 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1073 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1075 NMNT=MAX0(NMNT,8*NMN)
1076 IMAXIMP = IMAXIMP + 2*NINT(NMN/PROBINT)
1078 ELSEIF (NTYP == 10) THEN
1080 IPARI(18,NI) = NSN+NMN
1082 IPARI(25,NI) = NSN+NMN
1083 NMNT =MAX0(NMNT,NSN + 3)
1084 IMAXIMP = IMAXIMP + MULTIMP*NSN
1085 MAXRTM=MAX(MAXRTM,NRTM)
1087 ELSEIF (NTYP == 11) THEN
1089 IPARI(18,NI) = NSN+NMN
1091 IPARI(25,NI) = NSN+NMN
1092 MAXRTMS=MAX(MAXRTMS,NRTM)
1093 MAXRTMS=MAX(MAXRTMS,NRTS)
1094 IMAXIMP = IMAXIMP + MULTIMP*NSN
1096 ELSEIF (NTYP == 12) THEN
1098 CALL PRESEGMT(IRECTS,NSV,NRTS,NSN,IPARI(8,NI))
1099 CALL PRESEGMT(IRECTM,MSR,NRTM,NMN,IPARI(9,NI))
1100 NMNT=MAX0(NMNT,2*ALE%GLOBAL%NVCONV*NSN+NRTM+NMN*(ALE%GLOBAL%NVCONV+1),3*(NSN+NMN))
1101 IF(IPARI(20,NI) == 1) NMNT=MAX0(NMNT,6*NMN)
1103 ELSEIF (NTYP == 14) THEN
1105 IMAXIMP = IMAXIMP + 2*NINT(NSN/PROBINT/5)
1107 ELSEIF (NTYP == 15) THEN
1109 IMAXIMP = IMAXIMP + 2*NINT(NRTS*4/PROBINT/5)
1111 ELSEIF (NTYP == 18) THEN
1114 IPARI(18,NI) = NSN+NMN
1116 IPARI(25,NI) = NSN+NMN
1117 IMAXIMP = IMAXIMP + MULTIMP*NSN
1118 NMNT =MAX0(NMNT,NSN + 3)
1119 MAXRTM=MAX(MAXRTM,NRTM)
1121 ELSEIF (NTYP == 20) THEN
1123 IPARI(18,NI) = NSN+NMN
1125 IPARI(25,NI) = NSN+NMN
1126 IMAXIMP = IMAXIMP + MULTIMP*NSN
1127 NMNT =MAX0(NMNT,NSN + 3)
1128 MAXRTM=MAX(MAXRTM,NRTM)
1130 NLINSA = IPARI(53,NI)
1131 NLINMA = IPARI(54,NI)
1133 NMNT =MAX0(NMNT,NSNE + 3)
1134 MAXRTM=MAX(MAXRTM,NLINMA)
1135 MAXRTMS=MAX(MAXRTMS,NLINMA)
1136 MAXRTMS=MAX(MAXRTMS,NLINSA)
1138 ELSEIF (NTYP == 21) THEN
1142 IPARI(18,NI) = NSN+NMN
1144 IPARI(25,NI) = NSN+NMN
1145 IMAXIMP = IMAXIMP + MULTIMP*NSN
1146 NMNT =MAX0(NMNT,NSN + 3)
1147 MAXRTM=MAX(MAXRTM,NRTM)
1149 ELSEIF (NTYP == 22) THEN
1151 IPARI(18,NI) = NSN+NMN
1153 IPARI(25,NI) = NSN+NMN
1154 IMAXIMP = IMAXIMP + MULTIMP*NSN
1155 NMNT =MAX0(NMNT,NSN + 3)
1158 LAG_NK16 = NUMNOD*15
1159 NMNT = MAX(NMNT, 4*(NMN+100)+ 2*NSN + LAG_NC16 + 4*LAG_NK16)
1161 MAXRTM=MAX(MAXRTM,NRTM)
1163 ELSEIF (NTYP == 23) THEN
1165 IPARI(18,NI) = NSN+NMN
1167 IPARI(25,NI) = NSN+NMN
1168 NMNT =MAX0(NMNT,NSN + 3)
1169 IMAXIMP = IMAXIMP + MULTIMP*NSN
1170 MAXRTM=MAX(MAXRTM,NRTM)
1172 ELSEIF (NTYP == 24) THEN
1174 NRTM = NRTM+IPARI(42,NI)
1176 IPARI(18,NI) = NSN+NMN
1178 IPARI(25,NI) = NSN+NMN
1179 IMAXIMP = IMAXIMP + MULTIMP*NSN
1180 NMNT =MAX0(NMNT,NSN + 3)
1183 LAG_NK16 = NUMNOD*15
1184 NMNT = MAX(NMNT, 4*(NMN+100)+ 2*NSN + LAG_NC16 + 4*LAG_NK16)
1186 MAXRTM=MAX(MAXRTM,NRTM)
1187 MAXNSNE=MAX(MAXNSNE,IPARI(55,NI))
1189 ELSEIF (NTYP == 25) THEN
1191 NRTM = NRTM+IPARI(42,NI)
1193 IPARI(18,NI) = NSN+NMN
1195 IPARI(25,NI) = NSN+NMN
1203 NCONTE=4*NRTM ! cf NCONTE=NEDGE
1209 IMAXIMP = IMAXIMP + MULTIMP*NSN + MULTIMPE*NCONTE + MULTIMPS*NCONTE
1210 NMNT =MAX0(NMNT,NSN + 3)
1213 LAG_NK16 = NUMNOD*15
1214 NMNT = MAX(NMNT, 4*(NMN+100)+ 2*NSN + LAG_NC16 + 4*LAG_NK16)
1216 MAXRTM=MAX(MAXRTM,NRTM)
1217 MAXNSNE=MAX(MAXNSNE,IPARI(55,NI))
1227 LAG_NCL = LAG_NCL + LAG_NC16
1228 LAG_NKL = LAG_NKL + LAG_NK16
1238 DEALLOCATE(NTAG_TARGET)
1240! inter18 : automatic gap if not defined in input file
12411000 FORMAT(/1X,' INTERFACE NUMBER :
',I10,1X,A)
12423020 FORMAT(' COMPUTED GAP VALUE. . . . . . . . . . . . .
',1PG20.13)
subroutine i2rupt(x, v, a, ms, in, stifn, fsav, weight, irect, nsv, msr, irtl, irupt, crst, mmass, miner, smass, siner, area, uvar, xsm0, dsm, fsm, prop, ipari, nsn, nmn, nuvar, igtyp, pid, npf, tf, itab, fncont, pdama2, isym, inorm, h3d_data, fncontp, ftcontp)
subroutine lecint(ipari, linter, ipm, bufmat, nmnt, itab, itabm1, geo, pm, x, igrnod, igrsurf, igrslin, npc, probint, lag_ncf, lag_nkf, lag_ncl, lag_nkl, lag_nhf, maxrtm, iskn, maxrtms, igeo, xfiltr, stfac, fric_p, frigap, i2rupt, areasl, unitab, ixs, nom_opt, itag, ixc, ixtg, knod2elc, knod2eltg, nod2elc, nod2eltg, knod2els, nod2els, ixs10, ixs16, ixs20, def_inter, maxnsne, npc1, multi_fvm, nom_optfric, intbuf_fric_tab, igrbric, igrsh3n, igrtruss, maxrtm_t2, nsn_multi_connec, t2_nb_connec, iddlevel, nale, interfaces, snpc1, flag_elem_inter25, list_nin25)