50 1 NGROU,INNOD,FLAG,IPARTS,
51 2 IPARTQ,IPARTC,IPARTT,IPARTP,IPARTR,IPARTG,
52 3 IPARTSP,IXS10,IXS20,IXS16,KK,BUF_NOD,IXR_KJ,
53 4 INOM_OPT,IPART_L,IAD,NALE_R2R,FLG_R2R_ERR ,
54 5 PM_STACK ,IWORKSH ,IGRBRIC2,IGRQUAD2 ,IGRSH4N2,
55 6 IGRSH3N2 ,IGRTRUSS2,IGRBEAM2,IGRSPRING2,IGRNOD2 ,
56 7 IGRSURF2 ,IGRSLIN2,LSUBMODEL,ALE_EULER,IGEO_,
57 8 NLOC_DMG ,DETONATORS,SEATBELT_SHELL_TO_SPRING,
58 9 NB_SEATBELT_SHELLS,MAT_PARAM,NEBCS)
75 USE reader_old_mod ,
ONLY : kinter, nslash
76 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
80#include "implicit_f.inc"
84 INTEGER,
INTENT(IN) :: IGEO_(NPROPGI,NUMGEO)
100 . BUF_NOD(*),INNOD,FLAG,KK,
101 . IPARTS(*),IXS10(6,*),IXS20(12,*),
102 . IXS16(8,*),IPARTQ(*),IPARTSP(*),
103 . IPARTC(*),IPARTT(*),IPARTP(*),IPARTR(*),
104 . IPARTG(*),IXR_KJ(*),INOM_OPT(*),IPART_L(*),IAD,
105 . (*),FLG_R2R_ERR,IWORKSH(*),ALE_EULER
106 INTEGER ,
INTENT(IN) :: NB_SEATBELT_SHELLS
107 INTEGER ,
INTENT(IN) :: (NUMELC,2)
108 INTEGER ,
INTENT(INOUT) :: NEBCS
109 my_real :: PM_STACK(*)
110 TYPE (NLOCAL_STR_) ,
INTENT(IN) :: NLOC_DMG
111 TYPE (DETONATORS_STRUCT_),
TARGET,
INTENT(IN) :: DETONATORS
112 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
115 TYPE (GROUP_) ,
DIMENSION(NGROU) :: IGRNOD2
116 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC2
117 TYPE (GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD2
118 TYPE (GROUP_) ,
DIMENSION(NGRSHEL) :: IGRSH4N2
119 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N2
120 TYPE (GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS2
121 TYPE (GROUP_) ,
DIMENSION(NGRBEAM) :: IGRBEAM2
122 TYPE (GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING2
123 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF2
124 TYPE (SURF_) ,
DIMENSION(NSLIN) :: IGRSLIN2
128 INTEGER STAT,I,,IGR,IGRS,N,NUM,K,ADD,COMPT,IGS,IPID_L
129 INTEGER ID_TEMP(NB_PART_SUB),NSUBDOM_LOC,P,TMP_PART(NPART)
130 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IGROUP_TEMP2
131 INTEGER N_LNK_C,NI,GRM,GRS,MAIN,IGU,NUL,IAD_TMP,COMPT_T2
132 INTEGER MODIF,NINTER_PREC,FAC,IO_ERR,NUM_KJ,NSPCONDN,NSPHION,NN
133 INTEGER MEMTR(NUMNOD),FLG_SPH,COUNT,NEW_NSLASH_INT,NEW_HM_NINTER,NEW_NINTSUB,NEW_NINIVOL
135 CHARACTER(LEN=NCHARTITLE) :: TITR
137 INTEGER NGRNOD2,NGRBRIC2,NGRQUAD2,NGRSHEL2,NGRSH3N2,NGRTRUS2,NGRBEAM2,NGRSPRI2,LENGRN,ITITLE(LTITR)
138 CHARACTER(LEN=NCHARTITLE) :: NEW_TITLE(NGROU+10*NSUBDOM)
139 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IGROUP_TEMP2_BUF,TAG_NLOCAL
140 INTEGER :: LEN_TMP_NAME
141 CHARACTER(len=4096) :: TMP_NAME
150 ALLOCATE(igroup_temp2(10,ngrou+10*nsubdom))
154 count = count + igrnod2(i)%NENTITY
157 ALLOCATE(igroup_temp2_buf(count))
158 igroup_temp2_buf(:) = 0
163 igroup_temp2(1,i) = igrnod2(i)%ID
164 igroup_temp2(2,i) = igrnod2(i)%NENTITY
165 igroup_temp2(3,i) = igrnod2(i)%GRTYPE
166 igroup_temp2(4,i) = igrnod2(i)%SORTED
167 igroup_temp2(5,i) = igrnod2(i)%GRPGRP
168 igroup_temp2(6,i) = igrnod2(i)%LEVEL
169 new_title(i) = igrnod2(i)%TITLE
170 igroup_temp2(8,i) = igrnod2(i)%R2R_ALL
171 igroup_temp2(9,i) = igrnod2(i)%R2R_SHARE
172 igroup_temp2(7,i) = iad_tmp
173 DO j=1,igrnod2(i)%NENTITY
174 igroup_temp2_buf(iad_tmp) = igrnod2(i)%ENTITY(j)
175 iad_tmp = iad_tmp + 1
196 IF (num<=igrnod2(i)%ID) num=igrnod2(i)%ID+1
200 IF (ipid==0) nsubdom = 1
201 nsubdom_loc = nsubdom
205 IF (ipid==0) n = iddom
213 IF (flg_swale==1)
THEN
214 IF (ipid==0) ipid_l = 1
215 IF (ipid/=0) ipid_l = 0
218 CLOSE(unit=iout, status='delete
',IOSTAT=IO_ERR)
220 TMP_NAME=OUTFILE_NAME(1:OUTFILE_NAME_LEN)//R2R_FILNAM(1:LEN_TRIM(R2R_FILNAM))
221 LEN_TMP_NAME = OUTFILE_NAME_LEN+LEN_TRIM(R2R_FILNAM)
222 OPEN(UNIT=IOUT,FILE=TMP_NAME(1:LEN_TMP_NAME),
223 . ACCESS='sequential
',
224 . FORM='formatted
',STATUS='unknown
')
225 NAME = "SUBDOMAIN "//R2R_FILNAM(1:(LEN_TRIM(R2R_FILNAM)-9))
226 WRITE (IOUT,'(a)
') ''
227 CALL PRINTCENTER(" ",0,IOUT,1)
228 CALL PRINTCENTER(" ",0,IOUT,2)
229 CALL PRINTCENTER(NAME,LEN_TRIM(NAME),IOUT,2)
230 CALL PRINTCENTER(" ",0,IOUT,2)
231 CALL PRINTCENTER(" ",0,IOUT,1)
234 ALLOCATE(TAG_ELC(NUMELC+NPART),TAG_ELS(NUMELS+NPART))
235 ALLOCATE(TAG_ELG(NUMELTG+NPART),TAG_ELSP(NUMSPH+NPART))
236 ALLOCATE(TAG_ELR(NUMELR+NPART),TAG_ELT(NUMELT+NPART))
237 ALLOCATE(TAG_ELP(NUMELP+NPART),TAG_ELQ(NUMELQ+NPART))
250 IF(TMP_PART(K)==-1) TAGNO(K)=-1
255 IF(K == ISUBDOM_PART(I+ADD))THEN
266 ELSEIF(TAGNO(K)==0) THEN
284 CALL TAGNODS_R2R(IXS,IXS10,IXS20,IXS16,IPARTS,TAGNO,-1,N)
285 CALL TAGNOD_R2R(IXQ,NIXQ,2,5,NUMELQ,IPARTQ,TAGNO,NPART,-1,N)
286 CALL TAGNOD_R2R(IXC,NIXC,2,5,NUMELC,IPARTC,TAGNO,NPART,-1,N)
287 CALL TAGNOD_R2R(IXT,NIXT,2,3,NUMELT,IPARTT,TAGNO,NPART,-1,N)
288 CALL TAGNOD_R2R(IXP,NIXP,2,4,NUMELP,IPARTP,TAGNO,NPART,-1,N)
289 CALL TAGNOD_R2R(IXR,NIXR,2,3,NUMELR,IPARTR,TAGNO,NPART,-1,N)
290 CALL TAGNOD_R2R(IXTG,NIXTG,2,4,NUMELTG,IPARTG,TAGNO,NPART,-1,N)
291 CALL TAGNOD_R2R(KXSP,NISP,3,3,NUMSPH,IPARTSP,TAGNO,NPART,-1,N)
293 CALL TAGNODS_R2R(IXS,IXS10,IXS20,IXS16,IPARTS,TAGNO,0,N)
294 CALL TAGNOD_R2R(IXQ,NIXQ,2,5,NUMELQ,IPARTQ,TAGNO,NPART,0,N)
295 CALL TAGNOD_R2R(IXC,NIXC,2,5,NUMELC,IPARTC,TAGNO,NPART,0,N)
296 CALL TAGNOD_R2R(IXT,NIXT,2,3,NUMELT,IPARTT,TAGNO,NPART,0,N)
297 CALL TAGNOD_R2R(IXP,NIXP,2,3,NUMELP,IPARTP,TAGNO,NPART,0,N)
298 CALL TAGNOD_R2R(IXR,NIXR,2,3,NUMELR,IPARTR,TAGNO,NPART,0,N)
299 CALL TAGNOD_R2R(IXTG,NIXTG,2,4,NUMELTG,IPARTG,TAGNO,NPART,0,N)
300 CALL TAGNOD_R2R(KXSP,NISP,3,3,NUMSPH,IPARTSP,TAGNO,NPART,0,N)
302 CALL TAGNODS_R2R(IXS,IXS10,IXS20,IXS16,IPARTS,TAGNO,1,N)
303 CALL TAGNOD_R2R(IXQ,NIXQ,2,5,NUMELQ,IPARTQ,TAGNO,NPART,1,N)
304 CALL TAGNOD_R2R(IXC,NIXC,2,5,NUMELC,IPARTC,TAGNO,NPART,1,N)
305 CALL TAGNOD_R2R(IXT,NIXT,2,3,NUMELT,IPARTT,TAGNO,NPART,1,N)
306 CALL TAGNOD_R2R(IXP,NIXP,2,3,NUMELP,IPARTP,TAGNO,NPART,1,N)
307 CALL TAGNOD_R2R(IXR,NIXR,2,3,NUMELR,IPARTR,TAGNO,NPART,1,N)
308 CALL TAGNOD_R2R(IXTG,NIXTG,2,4,NUMELTG,IPARTG,TAGNO,NPART,1,N)
309 CALL TAGNOD_R2R(KXSP,NISP,3,3,NUMSPH,IPARTSP,TAGNO,NPART,1,N)
311 CALL TAGNOD_R2R(IXP,NIXP,4,4,NUMELP,IPARTP,TAGNO,NPART,3,N)
312 CALL TAGNOD_R2R(IXR,NIXR,4,4,NUMELR,IPARTR,TAGNO,NPART,3,N)
314 CALL TAGNOD_R2R(IXR_KJ,5,1,3,NUMELR,IPARTR,TAGNO,NPART,4,N)
316 IF (P==NSUBDOM_LOC) CALL TAGNOD_R2R_S(TAGNO)
319 TAGNO(NPART+NUMNOD+I) = TAGNO(NPART+I)
324.AND.
DO WHILE ((MODIF>0)(COMPT<80))
327 IF (P==NSUBDOM_LOC) THEN
328 CALL R2R_PRELEC(IPARTS,
329 2 IPARTC,IPARTG,IPARTT,IPARTP,IPARTR,IPARTSP,COMPT_T2,
330 3 MODIF,COMPT,INOM_OPT,NSPCONDN,NSPHION,IPART_L,MEMTR,
331 4 PM_STACK ,IWORKSH ,IGRNOD ,IGRSURF ,IGRSLIN ,
332 5 IGRBRIC ,IGRQUAD ,IGRSH4N ,IGRSH3N ,IGRTRUSS,
333 6 IGRBEAM ,IGRSPRING ,NEW_NSLASH_INT,LSUBMODEL,NEW_HM_NINTER,
334 7 NEW_NINTSUB,NEW_NINIVOL,IXS10,IXS20,IXS16,
335 8 DETONATORS,SEATBELT_SHELL_TO_SPRING,NB_SEATBELT_SHELLS,
340 CALL TAGNODS_R2R(IXS,IXS10,IXS20,IXS16,TAG_ELS,TAGNO,2,1)
341 CALL TAGNOD_R2R(IXC,NIXC,2,5,NUMELC,TAG_ELC,TAGNO,NPART,2,1)
342 CALL TAGNOD_R2R(IXTG,NIXTG,2,4,NUMELTG,TAG_ELG,TAGNO,NPART,2,1)
343 CALL TAGNOD_R2R(IXT,NIXT,2,3,NUMELT,TAG_ELT,TAGNO,NPART,2,1)
344 CALL TAGNOD_R2R(IXP,NIXP,2,4,NUMELP,TAG_ELP,TAGNO,NPART,2,1)
350 CALL ALE_CHECK_LAG(NALE_R2R,IXS,IXQ,IXC,IXT,IXTG,PM,ITAB,NALE_R2R,0,IGEO_)
353 IF (IALE+IEULER>0) THEN
354 CALL CHK_FLG_FSI(IXS,PM,IPARTS,ALE_EULER,IGEO_)
358 CALL ANCMSG(MSGID=972,
367 NRBYKIN = NEW_NRBYKIN
370 HM_NINTER = NEW_HM_NINTER
371 NINTER = NEW_HM_NINTER + NEW_NINTER - NEW_NINTSUB
372 NSLASH(KINTER) = NEW_NSLASH_INT
373 NINTSUB = NEW_NINTSUB
374 NUM_INIVOL = NEW_NINIVOL
379 NGJOINT = NEW_NGJOINT
387 IF (TAGNO(KXSP(NISP*(J-1)+3)+NPART)>1) FLG_SPH = 1
392 IF (TAGNO(J+NPART)>1) INNOD = INNOD+1
396 CALL ANCMSG(MSGID=839,
399 . C1="CONNECTIONS FOUND",
404.OR.
IF ((FLG_SPH==1)(FLG_FSI==1)) R2R_FLAG_ERR_OFF = 1
406 FAC = (100*INNOD) / NUMNOD
407.AND..OR..AND.
IF (((FAC>20)(FAC<50))((R2R_FLAG_ERR_OFF==1)(FAC>50))) THEN
408 CALL ANCMSG(MSGID=859,
409 . MSGTYPE=MSGWARNING,
410 . ANMODE=ANINFO_BLIND_1,
415 CALL ANCMSG(MSGID=1075,
417 . ANMODE=ANINFO_BLIND_1,
423 IF (TAGINT_WARN(1)>0) THEN
424 CALL ANCMSG(MSGID=842,
425 . MSGTYPE=MSGWARNING,
426 . ANMODE=ANINFO_BLIND_1)
428 WRITE(IOUT,1302) (TAGINT_WARN(1+J),J=1,TAGINT_WARN(1))
439 IF (NLOC_DMG%IMOD > 0) THEN
441 CALL MY_ALLOC(TAG_NLOCAL,NUMNOD)
442 TAG_NLOCAL(1:NUMNOD) = 0
443 CALL TAGNOD_R2R_NL(IXC,IXTG,IXS,IXS10,IXS20,
444 . IXS16,TAG_NLOCAL,MAT_PARAM)
453 IF (TAGNO(J+NPART)==(K+N)) THEN
463.AND.
IF ((TAG_NLOCAL(J)==1)(TAGNO(J+NPART+NUMNOD) == N+1)) THEN
471 INNOD = INNOD + COMPT
475 TITR="MULTIDOMAINS INTERFACE TYPE CONNECTION "
477 TITR="MULTIDOMAINS INTERFACE TYPE RBODY CONNECTION "
479 TITR="MULTIDOMAINS INTERFACE TYPE KINEMATIC CONDITION"
481 TITR="MULTIDOMAINS INTERFACE TYPE NON LOCAL"
483 TITR="MULTIDOMAINS INTERFACE TYPE CONTACT "
486 IGROUP_TEMP2(1,IGS)= NUM
487 IGROUP_TEMP2(2,IGS)= COMPT
488 IGROUP_TEMP2(3,IGS)= IAD_TMP
489 IGROUP_TEMP2(10,IGS)= -1 ! temporary tag new group
490 NEW_TITLE(IGS) = TITR
493 CALL NEW_LINK(NUM,N,K)
497 IF (COMPT>0) N_LNK_C = N_LNK_C+1
503 CALL ANCMSG(MSGID=839,
506 . C1="CONNECTIONS FOUND",
511 IF (NLOC_DMG%IMOD > 0) THEN
512 DEALLOCATE(TAG_NLOCAL)
523 DEALLOCATE(IGRNOD(I)%ENTITY)
526 ALLOCATE(IGRNOD(NGRNOD+N_LNK_C))
527 NGRNOD = NGRNOD+N_LNK_C
530 ALLOCATE(IGRNOD(I)%ENTITY(IGROUP_TEMP2(2,I)))
531 IGRNOD(I)%ENTITY(1:IGROUP_TEMP2(2,I)) = 0
533 IGRNOD(I)%ID = IGROUP_TEMP2(1,I) ! IGRN(1,*)
534 IGRNOD(I)%NENTITY = IGROUP_TEMP2(2,I) ! IGRN(2,*)
535 IGRNOD(I)%GRTYPE = IGROUP_TEMP2(3,I) ! IGRN(4,*)
536 IGRNOD(I)%SORTED = IGROUP_TEMP2(4,I) ! IGRN(5,*)
537 IGRNOD(I)%GRPGRP = IGROUP_TEMP2(5,I) ! IGRN(6,*)
538 IGRNOD(I)%LEVEL = IGROUP_TEMP2(6,I) ! IGRN(7,*)
539 IGRNOD(I)%TITLE = NEW_TITLE(I) ! IGRN(11,*)
540 IGRNOD(I)%R2R_ALL = IGROUP_TEMP2(8,I) ! IGRN(8,*)
541 IGRNOD(I)%R2R_SHARE = IGROUP_TEMP2(9,I) ! IGRN(9,*)
543 IF (IGROUP_TEMP2(10,I) == -1) THEN
544 IAD_TMP = IGROUP_TEMP2(3,I)
545 DO J=1,IGROUP_TEMP2(2,I)
546! "BUF_NOD" --> temporary array for shared boundary
547 IGRNOD(I)%ENTITY(J) = BUF_NOD(IAD_TMP+J-1)
550 IAD_TMP = IGROUP_TEMP2(7,I)
551 DO J=1,IGROUP_TEMP2(2,I)
552 IGRNOD(I)%ENTITY(J) = IGROUP_TEMP2_BUF(IAD_TMP+J-1)
556 END DO ! DO I=1,NGRNOD
557 ENDIF ! IF (FLAG == 1)
563 WRITE(ISTDO,'(a)
')' .. multidomains input file generation
'
564 CALL R2R_INPUT(IEXLNK)
570 IF (FLAG == 1) DEALLOCATE(IGROUP_TEMP2)
572 IF (ALLOCATED(IGROUP_TEMP2_BUF))DEALLOCATE(IGROUP_TEMP2_BUF)
5761301 FORMAT( 1X,'list of splitted contact interfaces :
')
subroutine r2r_group(ngrou, innod, flag, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartg, ipartsp, ixs10, ixs20, ixs16, kk, buf_nod, ixr_kj, inom_opt, ipart_l, iad, nale_r2r, flg_r2r_err, pm_stack, iworksh, igrbric2, igrquad2, igrsh4n2, igrsh3n2, igrtruss2, igrbeam2, igrspring2, igrnod2, igrsurf2, igrslin2, lsubmodel, ale_euler, igeo_, nloc_dmg, detonators, seatbelt_shell_to_spring, nb_seatbelt_shells, mat_param, nebcs)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)