OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r2r_group.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "units_c.inc"
#include "scr17_c.inc"
#include "param_c.inc"
#include "sphcom.inc"
#include "r2r_c.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ r2r_group()

subroutine r2r_group ( integer ngrou,
integer innod,
integer flag,
integer, dimension(*) iparts,
integer, dimension(*) ipartq,
integer, dimension(*) ipartc,
integer, dimension(*) ipartt,
integer, dimension(*) ipartp,
integer, dimension(*) ipartr,
integer, dimension(*) ipartg,
integer, dimension(*) ipartsp,
integer, dimension(6,*) ixs10,
integer, dimension(12,*) ixs20,
integer, dimension(8,*) ixs16,
integer kk,
integer, dimension(*) buf_nod,
integer, dimension(*) ixr_kj,
integer, dimension(*) inom_opt,
integer, dimension(*) ipart_l,
integer iad,
integer, dimension(*) nale_r2r,
integer flg_r2r_err,
pm_stack,
integer, dimension(*) iworksh,
type (group_), dimension(ngrbric) igrbric2,
type (group_), dimension(ngrquad) igrquad2,
type (group_), dimension(ngrshel) igrsh4n2,
type (group_), dimension(ngrsh3n) igrsh3n2,
type (group_), dimension(ngrtrus) igrtruss2,
type (group_), dimension(ngrbeam) igrbeam2,
type (group_), dimension(ngrspri) igrspring2,
type (group_), dimension(ngrou) igrnod2,
type (surf_), dimension(nsurf) igrsurf2,
type (surf_), dimension(nslin) igrslin2,
type(submodel_data), dimension(nsubmod) lsubmodel,
integer ale_euler,
integer, dimension(npropgi,numgeo), intent(in) igeo_,
type (nlocal_str_), intent(in) nloc_dmg,
type (detonators_struct_), intent(in), target detonators,
integer, dimension(numelc,2), intent(in) seatbelt_shell_to_spring,
integer, intent(in) nb_seatbelt_shells,
type (matparam_struct_), dimension(nummat), intent(in) mat_param,
integer, intent(inout) nebcs )

Definition at line 49 of file r2r_group.F.

59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE my_alloc_mod
63 USE restmod
64 USE r2r_mod
65 USE message_mod
66 USE groupdef_mod
67 USE group_mod
69 USE submodel_mod
70 USE inivol_def_mod , ONLY : num_inivol
73 USE matparam_def_mod
75 USE reader_old_mod , ONLY : kinter, nslash
76 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
77C-----------------------------------------------
78C I m p l i c i t T y p e s
79C-----------------------------------------------
80#include "implicit_f.inc"
81C-----------------------------------------------
82C A r g u m e n t s
83C-----------------------------------------------
84 INTEGER,INTENT(IN) :: IGEO_(NPROPGI,NUMGEO)
85C-----------------------------------------------
86C C o m m o n B l o c k s
87C-----------------------------------------------
88#include "com01_c.inc"
89#include "com04_c.inc"
90#include "units_c.inc"
91#include "scr17_c.inc"
92#include "param_c.inc"
93#include "sphcom.inc"
94#include "r2r_c.inc"
95C-----------------------------------------------
96C D u m m y A r g u m e n t s
97C-----------------------------------------------
98 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
99 INTEGER NGROU,
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 . NALE_R2R(*),FLG_R2R_ERR,IWORKSH(*),ALE_EULER
106 INTEGER ,INTENT(IN) :: NB_SEATBELT_SHELLS
107 INTEGER ,INTENT(IN) :: SEATBELT_SHELL_TO_SPRING(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
113C-----------------------------------------------
114! TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD2
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
125C-----------------------------------------------
126C L o c a l V a r i a b l e s
127C-----------------------------------------------
128 INTEGER STAT,I,J,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
134 INTEGER NEW_NEBCS
135 CHARACTER(LEN=NCHARTITLE) :: TITR
136 CHARACTER NAME*100
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
142C-----------------------------------------------
143 n_lnk_c = 0
144 tmp_part(:)= 0
145 modif = 1
146 innod = 0
147C----- Storage of IGRN in IGRN Temp------------------------------C
148 lengrn = 9
149 IF (flag == 1) THEN
150 ALLOCATE(igroup_temp2(10,ngrou+10*nsubdom))
151 igroup_temp2 = 0
152 count = 0
153 DO i=1,ngrou
154 count = count + igrnod2(i)%NENTITY
155 ENDDO
156 IF (count > 0) THEN
157 ALLOCATE(igroup_temp2_buf(count))
158 igroup_temp2_buf(:) = 0
159 ENDIF
160 iad_tmp = 1
161!
162 DO i=1,ngrou
163 igroup_temp2(1,i) = igrnod2(i)%ID ! IGRN(1,*)
164 igroup_temp2(2,i) = igrnod2(i)%NENTITY ! IGRN(2,*)
165 igroup_temp2(3,i) = igrnod2(i)%GRTYPE ! IGRN(4,*)
166 igroup_temp2(4,i) = igrnod2(i)%SORTED ! IGRN(5,*)
167 igroup_temp2(5,i) = igrnod2(i)%GRPGRP ! IGRN(6,*)
168 igroup_temp2(6,i) = igrnod2(i)%LEVEL ! IGRN(7,*)
169 new_title(i) = igrnod2(i)%TITLE ! IGRN(11,*)
170 igroup_temp2(8,i) = igrnod2(i)%R2R_ALL ! IGRN(8,*)
171 igroup_temp2(9,i) = igrnod2(i)%R2R_SHARE ! IGRN(9,*)
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
176 ENDDO
177 ENDDO
178 ENDIF
179C--------------------------------------------------------------------C
180C------Creation of groups of nodes of multidomains interface---------C
181C--------------------------------------------------------------------C
182!
183 ngrnod2 = ngrnod
184 ngrbric2 = ngrbric
185 ngrquad2 = ngrquad
186 ngrshel2 = ngrshel
187 ngrsh3n2 = ngrsh3n
188 ngrtrus2 = ngrtrus
189 ngrbeam2 = ngrbeam
190 ngrspri2 = ngrspri
191!
192 IF (flag == 1) THEN
193 num = 1
194 igs = ngrou+1
195 DO i=1,ngrou
196 IF (num<=igrnod2(i)%ID) num=igrnod2(i)%ID+1
197 END DO
198 ENDIF
199C--------------------------------------------------------------------C
200 IF (ipid==0) nsubdom = 1
201 nsubdom_loc = nsubdom
202 DO p=1,nsubdom_loc
203C----- 2 Pass: Pass 1-Nodes / Pass 2-Nodes Connection
204 n = p
205 IF (ipid==0) n = iddom
206 compt = 0
207C--------------------------------------------------------------------C
208C---------------FLAG = 0 --> tag of nodes and counting --------------C
209C--------------------------------------------------------------------C
210 IF (flag==0) THEN
211C---------------Reset of out file + printout of new heading ---------C
212 ipid_l = ipid
213 IF (flg_swale==1) THEN
214 IF (ipid==0) ipid_l = 1
215 IF (ipid/=0) ipid_l = 0
216 ENDIF
217 IF (ipid_l==0) THEN
218 CLOSE(unit=iout, status='DELETE',iostat=io_err)
219
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)
232 ENDIF
233C---------------Allocation of arrays for tag of elements--------------C
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))
238 tag_els(:)=0
239 tag_elc(:)=0
240 tag_elg(:)=0
241 tag_elt(:)=0
242 tag_elp(:)=0
243 tag_elr(:)=0
244 tag_elq(:)=0
245 tag_elsp(:)=0
246C---------------Tag of Parts-------------------------------------------C
247 DO k=1,npart
248 tagno(k)=0
249C ---> TAGNO(K)=-1 => PART K belongs to an already treated subdomain---
250 IF(tmp_part(k)==-1) tagno(k)=-1
251 ENDDO
252 add = isubdom(3,n)
253 DO k=1,npart
254 DO i=1,isubdom(1,n)
255 IF(k == isubdom_part(i+add))THEN
256 tagno(k)=1
257 tmp_part(k)=-1
258 ENDIF
259 ENDDO
260 END DO
261C----------------Full domain - inversion of part selection-------------C
262 IF (iddom == 0) THEN
263 DO k=1,npart
264 IF(tagno(k)==1) THEN
265 tagno(k)=0
266 ELSEIF(tagno(k)==0) THEN
267 tagno(k)=1
268 ENDIF
269 ENDDO
270 ENDIF
271C---------------> TAG OF PARTS : ----------------------------------
272C---------------> TAGNO(K) = -1 -> Part of already treated subdmain
273C---------------> TAGNO(K) = 0 -> Internal part of subdomain
274C---------------> TAGNO(K) = 1 -> External part of subdomain
275
276C---------------> TAG OF NODES : ----------------------------------
277C---------------> TAGNO(K) = -1 -> external node
278C---------------> TAGNO(K) = 0 -> free node (not attached to any domain)
279C---------------> TAGNO(K) = 1 -> internal node
280C---------------> TAGNO(K) = 2 -> coupled node
281C---------------> TAGNO(K) = 3 -> coupled node -> main node of RBODY
282C---------------> TAGNO(K) = 4 -> coupled node for contacts
283C---------------Detag of already treated nodes----------------------C
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)
292C---------------Tag of nodes -> pass 1------------------------------C
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)
301C---------------Tag of nodes -> pass 2-------------------------------C
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)
310C---------------Tag of 3rd nodes of beams/springs -> pass 3----------C
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)
313C---------------Tag of additional nodes for kjoints-- --------------C
314 CALL tagnod_r2r(ixr_kj,5,1,3,numelr,ipartr,tagno,npart,4,n)
315C---------------Tag of specific nodes -> Skew,Frames-----------------C
316 IF (p==nsubdom_loc) CALL tagnod_r2r_s(tagno)
317C---------------Storage of initial tag of nodes----------------------C
318 DO i=1,numnod
319 tagno(npart+numnod+i) = tagno(npart+i)
320 END DO
321C--------------------------------------------------------------------C
322C////////////////////////////////////////////////////////////////////C
323C--------------------------------------------------------------------C
324 DO WHILE ((modif>0).AND.(compt<80))
325 modif = 0
326C---------------Prereading of options for tag of nodes---------------C
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 ,
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,
336 9 nebcs,new_nebcs)
337 ENDIF
338C---------------Tag of nodes of pretaged elements ( for TYPE2)-------C
339 IF (compt_t2>0) THEN
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)
345 ENDIF
346 compt = compt+1
347 END DO ! DO WHILE
348C---------------Tag of nodes ALE/lagrange ---------------------------C
349 IF (iale>0) THEN
350 CALL ale_check_lag(nale_r2r,ixs,ixq,ixc,ixt,ixtg,pm,itab,nale_r2r,0,igeo_)
351 ENDIF
352C---------------Check of FLG_FSI ------------------------------------C
353 IF (iale+ieuler>0) THEN
354 CALL chk_flg_fsi(ixs,pm,iparts,ale_euler,igeo_)
355 ENDIF
356C---------------Error message infinite loop -------------------------C
357 IF (compt>=80) THEN
358 CALL ancmsg(msgid=972,
359 . msgtype=msgerror,
360 . anmode=aninfo)
361 END IF
362C--------------------------------------------------------------------C
363C////////////////////////////////////////////////////////////////////C
364C--------------------------------------------------------------------C
365C---------------Update of number of remaining options----------------C
366 nrbody = new_nrby
367 nrbykin = new_nrbykin
368 njoint = new_njoint
369 ninter_prec = ninter
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
375C
376 nlink = new_nlink
377 nrbe3 = new_nrbe3
378 nrbe2 = new_nrbe2
379 ngjoint = new_ngjoint
380 nummpc = new_nummpc
381 nspcond = nspcondn
382 nsphio = nsphion
383 nebcs = new_nebcs
384C---------------Determination of flag for coupled sph particles------C
385 flg_sph = 0
386 DO j=1,numsph
387 IF (tagno(kxsp(nisp*(j-1)+3)+npart)>1) flg_sph = 1
388 END DO
389C---------------Counting of remaining nodes--------------------------C
390 compt = 0
391 DO j=1,numnod
392 IF (tagno(j+npart)>1) innod = innod+1
393 ENDDO
394C---------------Warnings for size of interfaces ---------------------C
395 IF (innod==0) THEN
396 CALL ancmsg(msgid=839,
397 . msgtype=msgerror,
398 . anmode=aninfo,
399 . c1="CONNECTIONS FOUND",
400 . c2="FOR DOMAIN",
401 . i1=isubdom(1,p))
402 ELSE
403C-- For SPH big multidomains interfaces are alloxed -> no error message only a warning
404 IF ((flg_sph==1).OR.(flg_fsi==1)) r2r_flag_err_off = 1
405C
406 fac = (100*innod) / numnod
407 IF (((fac>20).AND.(fac<50)).OR.((r2r_flag_err_off==1).AND.(fac>50))) THEN
408 CALL ancmsg(msgid=859,
409 . msgtype=msgwarning,
410 . anmode=aninfo_blind_1,
411 . i1=innod,
412 . i2=fac)
413 ELSEIF (fac>50) THEN
414 flg_r2r_err = 1
415 CALL ancmsg(msgid=1075,
416 . msgtype=msgerror,
417 . anmode=aninfo_blind_1,
418 . i1=innod,
419 . i2=fac)
420 ENDIF
421 ENDIF
422C---------------Warnings for splitted contact interfaces ------------C
423 IF (tagint_warn(1)>0) THEN
424 CALL ancmsg(msgid=842,
425 . msgtype=msgwarning,
426 . anmode=aninfo_blind_1)
427 WRITE(iout,1301)
428 WRITE(iout,1302) (tagint_warn(1+j),j=1,tagint_warn(1))
429 ENDIF
430C--------------------------------------------------------------------C
431 ELSE
432C--------------------------------------------------------------------C
433C---------------FLAG = 1 --> Creation of groups and links------------C
434C--------------------------------------------------------------------C
435 innod = 0
436 nn = 4
437C
438C---------------Tag of nodes with nlocal dof-------------------------C
439 IF (nloc_dmg%IMOD > 0) THEN
440 nn = 5
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)
445 ENDIF
446C
447 DO k=1,nn
448 compt = 0
449 iad_tmp = iad
450C-----------Storage inside buffer------------------------------------C
451 IF (k < 5) THEN
452 DO j=1,numnod
453 IF (tagno(j+npart)==(k+n)) THEN
454 buf_nod(iad)=j
455 iad=iad+1
456 compt = compt+1
457 ENDIF
458 ENDDO
459 ELSE
460C-----------Nodes in link type 4 + nlocal dof -> additional link-----C
461C-----------Node coupled only if nl material on both sides ----------C
462 DO j=1,numnod
463 IF ((tag_nlocal(j)==1).AND.(tagno(j+npart+numnod) == n+1)) THEN
464 buf_nod(iad)=j
465 iad=iad+1
466 compt = compt+1
467 ENDIF
468 ENDDO
469 ENDIF
470C
471 innod = innod + compt
472 IF (compt>0) THEN
473C---------------Creation of new GRNOD + LINK ------------------------C
474 IF (k == 1) THEN
475 titr="MULTIDOMAINS INTERFACE TYPE CONNECTION "
476 ELSEIF (k == 2) THEN
477 titr="MULTIDOMAINS INTERFACE TYPE RBODY CONNECTION "
478 ELSEIF (k == 4) THEN
479 titr="MULTIDOMAINS INTERFACE TYPE KINEMATIC CONDITION"
480 ELSEIF (k == 5) THEN
481 titr="MULTIDOMAINS INTERFACE TYPE NON LOCAL"
482 ELSE
483 titr="MULTIDOMAINS INTERFACE TYPE CONTACT "
484 ENDIF
485!---
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
491!---
492C---------------Creation of new LINK---------------------------------C
493 CALL new_link(num,n,k)
494C---------------Incrementation of Variables for future GRNOD---------C
495 num = num+1
496 igs = igs+1
497 IF (compt>0) n_lnk_c = n_lnk_c+1
498 ENDIF
499 END DO
500 IF (innod==0) THEN
501 IF (ipid/=0) THEN
502 ENDIF
503 CALL ancmsg(msgid=839,
504 . msgtype=msgerror,
505 . anmode=aninfo,
506 . c1="CONNECTIONS FOUND",
507 . c2="FOR DOMAIN",
508 . i1=isubdom(1,p))
509 ENDIF
510c
511 IF (nloc_dmg%IMOD > 0) THEN
512 DEALLOCATE(tag_nlocal)
513 ENDIF
514 ENDIF
515 END DO
516C--------------------------------------------------------------------C
517C----- Recopy of other groups in IGROUP_TEMP-------------------------C
518C--------------------------------------------------------------------C
519C----- Transfer of Igroup_temp in IGRN-------------------------------C
520C--------------------------------------------------------------------C
521 IF (flag == 1) THEN
522 DO i=1,ngrnod
523 DEALLOCATE(igrnod(i)%ENTITY)
524 ENDDO
525 DEALLOCATE(igrnod)
526 ALLOCATE(igrnod(ngrnod+n_lnk_c))
527 ngrnod = ngrnod+n_lnk_c
528!
529 DO i=1,ngrnod
530 ALLOCATE(igrnod(i)%ENTITY(igroup_temp2(2,i)))
531 igrnod(i)%ENTITY(1:igroup_temp2(2,i)) = 0
532!
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,*)
542!
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)
548 ENDDO
549 ELSE
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)
553 ENDDO
554 ENDIF
555!
556 END DO ! DO I=1,NGRNOD
557 ENDIF ! IF (FLAG == 1)
558C--------------------------------------------------------------------C
559C----- Creation of file "_0000.r2r"----------------------------------C
560C--------------------------------------------------------------------C
561 IF (flag == 1) THEN
562 IF (ipid/=0) THEN
563 WRITE(istdo,'(A)')' .. MULTIDOMAINS INPUT FILE GENERATION'
564 CALL r2r_input(iexlnk)
565 ENDIF
566 ENDIF
567C--------------------------------------------------------------------C
568C--------------------------------------------------------------------C
569C--------------------------------------------------------------------C
570 IF (flag == 1) DEALLOCATE(igroup_temp2)
571 IF (flag == 1) THEN
572 IF (ALLOCATED(igroup_temp2_buf))DEALLOCATE(igroup_temp2_buf)
573 ENDIF
574 RETURN
575C--------------------------------------------------------------------C
5761301 FORMAT( 1x,'LIST OF SPLITTED CONTACT INTERFACES : ')
5771302 FORMAT( 1x,10i9)
578
subroutine ale_check_lag(nale, ixs, ixq, ixc, ixt, ixtg, pm, itab, nale_r2r, flag_r2r, igeo)
#define my_real
Definition cppsort.cpp:32
type(group_), dimension(:), allocatable, target igrsh4n
Definition group_mod.F:38
type(group_), dimension(:), allocatable, target igrquad
Definition group_mod.F:37
type(group_), dimension(:), allocatable, target igrbeam
Definition group_mod.F:41
type(surf_), dimension(:), allocatable, target igrsurf
Definition group_mod.F:46
type(group_), dimension(:), allocatable, target igrtruss
Definition group_mod.F:40
type(group_), dimension(:), allocatable, target igrsh3n
Definition group_mod.F:39
type(group_), dimension(:), allocatable, target igrspring
Definition group_mod.F:42
type(group_), dimension(:), allocatable, target igrbric
Definition group_mod.F:36
type(surf_), dimension(:), allocatable, target igrslin
Definition group_mod.F:47
type(group_), dimension(:), allocatable, target igrnod
Definition group_mod.F:35
integer num_inivol
Definition inivol_mod.F:85
character(len=outfile_char_len) outfile_name
integer outfile_name_len
integer, parameter nchartitle
integer, dimension(:), allocatable tag_els
Definition r2r_mod.F:133
integer, dimension(:), allocatable tag_elg
Definition r2r_mod.F:135
integer, dimension(:), allocatable tagno
Definition r2r_mod.F:132
integer, dimension(:), allocatable tag_elq
Definition r2r_mod.F:135
integer, dimension(:), allocatable tag_elc
Definition r2r_mod.F:133
integer, dimension(:), allocatable tag_elr
Definition r2r_mod.F:134
integer, dimension(:), allocatable tag_elt
Definition r2r_mod.F:134
integer, dimension(:), allocatable isubdom_part
Definition r2r_mod.F:131
integer, dimension(:), allocatable tagint_warn
Definition r2r_mod.F:137
integer, dimension(:), allocatable tag_elp
Definition r2r_mod.F:133
integer, dimension(:,:), allocatable isubdom
Definition r2r_mod.F:144
integer, dimension(:), allocatable tag_elsp
Definition r2r_mod.F:142
integer, dimension(:), allocatable, target ixs
Definition restart_mod.F:60
integer, dimension(:), allocatable ixt
Definition restart_mod.F:60
integer, dimension(:), allocatable ixr
Definition restart_mod.F:60
integer, dimension(:), allocatable iexlnk
Definition restart_mod.F:60
integer, dimension(:), allocatable, target ixtg
Definition restart_mod.F:60
integer, dimension(:), allocatable kxsp
Definition restart_mod.F:60
integer, dimension(:), allocatable itab
Definition restart_mod.F:60
integer, dimension(:), allocatable ixp
Definition restart_mod.F:60
integer, dimension(:), allocatable ixq
Definition restart_mod.F:60
type(nlocal_str_) nloc_dmg
integer, dimension(:), allocatable ixc
Definition restart_mod.F:60
subroutine r2r_input(iexter)
Definition r2r_input.F:33
subroutine r2r_prelec(iparts, ipartc, ipartg, ipartt, ipartp, ipartr, ipartsp, compt_t2, modif, passe, inom_opt, nspcondn, nsphion, ipart_l, memtr, pm_stack, iworksh, igrnod, igrsurf, igrslin, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, new_nslash_int, lsubmodel, new_hm_ninter, new_nintsub, new_ninivol, ixs10, ixs20, ixs16, detonators, seatbelt_shell_to_spring, nb_seatbelt_shells, nebcs, new_nebcs)
Definition r2r_prelec.F:63
subroutine chk_flg_fsi(ixs, pm, iparts, ale_euler, igeo)
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)
Definition message.F:895
subroutine printcenter(array, arrlen, linout, flag)
subroutine tagnod_r2r(ix, nix, nix1, nix2, numel, iparte, tagbuf, npart, flag, idom)
Definition tagnod_r2r.F:34
subroutine tagnod_r2r_s(tagbuf)
Definition tagnod_r2r.F:201
subroutine tagnods_r2r(ixs, ixs10, ixs20, ixs16, iparts, tagbuf, flag, idom)
Definition tagnod_r2r.F:265
subroutine tagnod_r2r_nl(ixc, ixtg, ixs, ixs10, ixs20, ixs16, tag_nlocal, mat_param)