46 . X,FUNC_ID,NOM_OPT,ALEA,IGRNOD,
62#include "implicit_f.inc"
70#include "random_c.inc"
71#include "tabsiz_c.inc"
75 INTEGER,
INTENT(IN) :: ITABM1(NUMNOD),IXR(NIXR,NUMELR),IXC(NIXC,NUMELC),ITAB(NUMNOD),FUNC_ID(NFUNCT),IPM(NPROPMI,NUMMAT)
76 INTEGER,
INTENT(INOUT) :: NOM_OPT(LNOPT1,SNOM_OPT1)
77 my_real,
INTENT(IN) :: alea(nrand)
78 my_real,
INTENT(INOUT) :: x(3,numnod)
79 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
80 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
81 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
82 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRSHEL) :: IGRSH4N
86 INTEGER ,
DIMENSION(NSLIPRING) :: SLIP_ID
87 INTEGER :: I,J,K,L,ID, UID, NODE_ID, EL1, EL2, IERR1, NODE_ID2
88 INTEGER :: NODE1,NODE2,NODE3,NODE4,EL1_LOC,EL2_LOC,BID,ISENS,FLOW_FLAG
89 INTEGER :: IFUNC(4),IFUNC_LOC(4),NFRAM,ISHELL,GR_NOD,GR_SHEL1,GR_SHEL2,GRN_LOC,GRS1_LOC,GRS2_LOC
90 INTEGER :: N_FIRST,N_LAST,NJ,NODE,IPOS,IERROR,NJ_NEXT,MID,MTYP
91 INTEGER ,
DIMENSION(:),
ALLOCATABLE:: TAGNO,ELEM1_NOD,ELEM2_NOD,CORES1,,IPOS1_NOD,IPOS2_NOD,JPERM
92 INTEGER :: SIZE_COM_NOD,CPT_COM_NOD
93 INTEGER ,
DIMENSION(:),
ALLOCATABLE:: COM_NOD
94 my_real :: distn,dist1,dist2,dist3,a,ed_factor,fricd,xscale1,yscale2,xscale2,frics,xscale3,yscale4,xscale4
95 my_real :: xscale1_unit,xscale2_unit,nn(3),
norm,n1(3),n2(3),n3(3),scal,alea_max,tole_2,normj
96 my_real :: dist_min,vect(3),vectj(3)
97 my_real ,
DIMENSION(:),
ALLOCATABLE:: dist
98 CHARACTER(LEN=NCHARTITLE) :: TITR
99 CHARACTER(LEN=NCHARKEY) :: KEY
101INTEGER,
DIMENSION(:),
POINTER :: INGR2USR
103 LOGICAL :: IS_AVAILABLE
107 INTEGER USR2SYS,NINTRI,NGR2USR
109 DATA mess
'SLIPRING DEFINITION '
115 IF(nslipring > 0 )
THEN
141 CALL hm_option_read_key(lsubmodel,option_titr=titr,option_id=id,unit_id=uid,keyword2=key)
144 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
146 CALL hm_get_intv(
'Sens_ID', isens, is_available, lsubmodel)
147 CALL hm_get_intv('flow_flag
', FLOW_FLAG, IS_AVAILABLE, LSUBMODEL)
148 CALL HM_GET_FLOATV('a
',A,IS_AVAILABLE,LSUBMODEL,UNITAB)
149 CALL HM_GET_FLOATV('ed_factor
',ED_FACTOR,IS_AVAILABLE,LSUBMODEL,UNITAB)
151 CALL HM_GET_INTV('fct_id1
', IFUNC(1), IS_AVAILABLE, LSUBMODEL)
152 CALL HM_GET_INTV('fct_id2
', IFUNC(2), IS_AVAILABLE, LSUBMODEL)
153 CALL HM_GET_FLOATV('fricd
',FRICD,IS_AVAILABLE,LSUBMODEL,UNITAB)
154 CALL HM_GET_FLOATV('xscale1
',XSCALE1,IS_AVAILABLE,LSUBMODEL,UNITAB)
155 CALL HM_GET_FLOATV('yscale2
',YSCALE2,IS_AVAILABLE,LSUBMODEL,UNITAB)
156 CALL HM_GET_FLOATV('xscale2
',XSCALE2,IS_AVAILABLE,LSUBMODEL,UNITAB)
158 CALL HM_GET_INTV('fct_id3
', IFUNC(3), IS_AVAILABLE, LSUBMODEL)
159 CALL HM_GET_INTV('fct_id4
', IFUNC(4), IS_AVAILABLE, LSUBMODEL)
160 CALL HM_GET_FLOATV('frics
',FRICS,IS_AVAILABLE,LSUBMODEL,UNITAB)
161 CALL HM_GET_FLOATV('xscale3
',XSCALE3,IS_AVAILABLE,LSUBMODEL,UNITAB)
162 CALL HM_GET_FLOATV('yscale4
',YSCALE4,IS_AVAILABLE,LSUBMODEL,UNITAB)
163 CALL HM_GET_FLOATV('xscale4
',XSCALE4,IS_AVAILABLE,LSUBMODEL,UNITAB)
165 CALL HM_GET_FLOATV_DIM('xscale1
',XSCALE1_UNIT,IS_AVAILABLE,LSUBMODEL,UNITAB)
166 CALL HM_GET_FLOATV_DIM('xscale2
',XSCALE2_UNIT,IS_AVAILABLE,LSUBMODEL,UNITAB)
170 IF (IFUNC(1) > 0) THEN
171 IF (FRICD== ZERO) FRICD = ONE
172 IF (XSCALE1== ZERO) XSCALE1 = ONE*XSCALE1_UNIT
175 IF (IFUNC(2) > 0) THEN
176 IF (YSCALE2== ZERO) YSCALE2 = ONE
177 IF (XSCALE2== ZERO) XSCALE2 = ONE*XSCALE2_UNIT
180 IF (IFUNC(3) > 0) THEN
181 IF (FRICS== ZERO) FRICS = ONE
182 IF (XSCALE3== ZERO) XSCALE3 = ONE*XSCALE1_UNIT
185 IF (IFUNC(4) > 0) THEN
186 IF (YSCALE4== ZERO) YSCALE4 = ONE
187 IF (XSCALE4== ZERO) XSCALE4 = ONE*XSCALE2_UNIT
197 IF (IFUNC(J) > 0) THEN
199 IF (FUNC_ID(K) == IFUNC(J)) IFUNC_LOC(J) = K
201 IF(IFUNC_LOC(J) == 0) CALL ANCMSG(MSGID=2002,
203 . ANMODE=ANINFO_BLIND_1,
210 SLIPRING(I)%SENSID = ISENS
211 SLIPRING(I)%FL_FLAG = FLOW_FLAG
213 SLIPRING(I)%IFUNC(1) = IFUNC_LOC(1)
214 SLIPRING(I)%IFUNC(2) = IFUNC_LOC(2)
215 SLIPRING(I)%IFUNC(3) = IFUNC_LOC(3)
216 SLIPRING(I)%IFUNC(4) = IFUNC_LOC(4)
218 SLIPRING(I)%DC = ED_FACTOR
221 SLIPRING(I)%FRIC = FRICD
222 SLIPRING(I)%FAC_D(1) = XSCALE1
223 SLIPRING(I)%FAC_D(2) = XSCALE2
224 SLIPRING(I)%FAC_D(3) = YSCALE2
225 SLIPRING(I)%FRICS = FRICS
226 SLIPRING(I)%FAC_S(1) = XSCALE3
227 SLIPRING(I)%FAC_S(2) = XSCALE4
228 SLIPRING(I)%FAC_S(3) = YSCALE4
230 IF (KEY(1:6)=='spring
') THEN
234 CALL HM_GET_INTV('el_id1
', EL1, IS_AVAILABLE, LSUBMODEL)
235 CALL HM_GET_INTV('el_id2
', EL2, IS_AVAILABLE, LSUBMODEL)
236 CALL HM_GET_INTV('node_id
', NODE_ID, IS_AVAILABLE, LSUBMODEL)
237 CALL HM_GET_INTV('node_id2
', NODE_ID2, IS_AVAILABLE, LSUBMODEL)
239 WRITE(IOUT,1100) ID,TRIM(TITR),EL1,EL2,NODE_ID,NODE_ID2,ISENS,FLOW_FLAG,A,ED_FACTOR,
240 . IFUNC(1),IFUNC(2),FRICD,XSCALE1,YSCALE2,XSCALE2,
241 . IFUNC(3),IFUNC(4),FRICS,XSCALE3,YSCALE4,XSCALE4
244 EL1_LOC=NINTRI(EL1,IXR,NIXR,NUMELR,NIXR)
245 EL2_LOC=NINTRI(EL2,IXR,NIXR,NUMELR,NIXR)
247 IF(EL1_LOC == 0) THEN
248 CALL ANCMSG(MSGID=2002,
250 . ANMODE=ANINFO_BLIND_1,
251 . C1='spring element
',I1=ID,I2=EL1)
255 IF (MID > 0) MTYP = IPM(2,MID)
256 IF (MTYP /= 114) CALL ANCMSG(MSGID=2032,
262 IF(EL2_LOC == 0) THEN
263 CALL ANCMSG(MSGID=2002,
265 . ANMODE=ANINFO_BLIND_1,
266 . C1='spring element
',I1=ID,I2=EL2)
270 IF (MID > 0) MTYP = IPM(2,MID)
271 IF (MTYP /= 114) CALL ANCMSG(MSGID=2032,
280 SLIPRING(I)%NFRAM = 1
281 ALLOCATE(SLIPRING(I)%FRAM(NFRAM))
284 SLIPRING(I)%FRAM(J)%UPDATE = 0
285 SLIPRING(I)%FRAM(J)%ANCHOR_NODE = 0
286 SLIPRING(I)%FRAM(J)%ORIENTATION_NODE = 0
287 SLIPRING(I)%FRAM(J)%NODE = 0
288 SLIPRING(I)%FRAM(J)%NODE_NEXT = 0
289 SLIPRING(I)%FRAM(J)%NODE2_PREV = 0
290 SLIPRING(I)%FRAM(J)%N_REMOTE_PROC = 0
291 SLIPRING(I)%FRAM(J)%STRAND_DIRECTION = 1
292 SLIPRING(I)%FRAM(J)%LOCKED = 0
293 SLIPRING(I)%FRAM(J)%VECTOR = ZERO
294 SLIPRING(I)%FRAM(J)%ORIENTATION_ANGLE = ZERO
295 SLIPRING(I)%FRAM(J)%MATERIAL_FLOW = ZERO
296 SLIPRING(I)%FRAM(J)%MATERIAL_FLOW_OLD = ZERO
297 SLIPRING(I)%FRAM(J)%DFS = ZERO
298 SLIPRING(I)%FRAM(J)%RESIDUAL_LENGTH = ZERO
299 SLIPRING(I)%FRAM(J)%CURRENT_LENGTH = ZERO
300 SLIPRING(I)%FRAM(J)%RINGSLIP = ZERO
301 SLIPRING(I)%FRAM(J)%BETA = ZERO
302 SLIPRING(I)%FRAM(J)%GAMMA = ZERO
303 SLIPRING(I)%FRAM(J)%SLIP_FORCE = ZERO
304 SLIPRING(I)%FRAM(J)%PREV_REF_LENGTH = ZERO
305 SLIPRING(I)%FRAM(J)%INTVAR_STR1 = ZERO
306 SLIPRING(I)%FRAM(J)%INTVAR_STR2 = ZERO
311 NODE_ID = USR2SYS(NODE_ID,ITABM1,MESS,SLIPRING(I)%ID)
312 IF (NODE_ID2 > 0) NODE_ID2 = USR2SYS(NODE_ID2,ITABM1,MESS,SLIPRING(I)%ID)
316 SLIPRING(I)%FRAM(1)%ANCHOR_NODE = NODE_ID
317 SLIPRING(I)%FRAM(1)%ORIENTATION_NODE = NODE_ID2
319 NODE1 = IXR(2,EL1_LOC)
320 NODE2 = IXR(3,EL1_LOC)
321 NODE3 = IXR(2,EL2_LOC)
322 NODE4 = IXR(3,EL2_LOC)
324 IF (NODE2 == NODE3) THEN
325 SLIPRING(I)%FRAM(1)%NODE(1) = NODE1
326 SLIPRING(I)%FRAM(1)%NODE(2) = NODE2
327 SLIPRING(I)%FRAM(1)%NODE(3) = NODE4
328 ELSEIF (NODE1 == NODE3) THEN
329 SLIPRING(I)%FRAM(1)%NODE(1) = NODE2
330 SLIPRING(I)%FRAM(1)%NODE(2) = NODE1
331 SLIPRING(I)%FRAM(1)%NODE(3) = NODE4
332 ELSEIF (NODE1 == NODE4) THEN
333 SLIPRING(I)%FRAM(1)%NODE(1) = NODE2
334 SLIPRING(I)%FRAM(1)%NODE(2) = NODE1
335 SLIPRING(I)%FRAM(1)%NODE(3) = NODE3
336 ELSEIF (NODE2 == NODE4) THEN
337 SLIPRING(I)%FRAM(1)%NODE(1) = NODE1
338 SLIPRING(I)%FRAM(1)%NODE(2) = NODE2
339 SLIPRING(I)%FRAM(1)%NODE(3) = NODE3
342 IF(SLIPRING(I)%FRAM(1)%NODE(2) == 0) THEN
343.AND.
IF ((EL1_LOC > 0)(EL2_LOC > 0)) THEN
344 CALL ANCMSG(MSGID=2003,
346 . ANMODE=ANINFO_BLIND_1,
347 . I1=ID,I2=EL1,I3=EL2)
349 ELSEIF (SLIPRING(I)%FRAM(1)%NODE(2) == SLIPRING(I)%FRAM(1)%ANCHOR_NODE) THEN
350 CALL ANCMSG(MSGID=2029,
352 . ANMODE=ANINFO_BLIND_1,
353 . I1=ID,I2=ITAB(SLIPRING(I)%FRAM(1)%ANCHOR_NODE))
356 NODE1 = SLIPRING(I)%FRAM(1)%NODE(1)
357 NODE2 = SLIPRING(I)%FRAM(1)%NODE(2)
358 NODE3 = SLIPRING(I)%FRAM(1)%NODE(3)
359 DIST1 = (X(1,NODE1)-X(1,NODE_ID))**2+(X(2,NODE1)-X(2,NODE_ID))**2+(X(3,NODE1)-X(3,NODE_ID))**2
360 DIST2 = (X(1,NODE2)-X(1,NODE_ID))**2+(X(2,NODE2)-X(2,NODE_ID))**2+(X(3,NODE2)-X(3,NODE_ID))**2
361 DIST3 = (X(1,NODE3)-X(1,NODE_ID))**2+(X(2,NODE3)-X(2,NODE_ID))**2+(X(3,NODE3)-X(3,NODE_ID))**2
364 TOLE_2 = EM10*(MAX(DIST1,DIST3))**2
369 ALEA_MAX = MAX(ALEA_MAX,ALEA(J))
371 TOLE_2 = MAX(TOLE_2,TEN*ALEA_MAX*ALEA_MAX)
375 IF (DIST2 <= TEN*TOLE_2) THEN
376 X(1,NODE2) = X(1,NODE_ID)
377 X(2,NODE2) = X(2,NODE_ID)
378 X(3,NODE2) = X(3,NODE_ID)
382.AND.
IF ((EL1_LOC > 0)(EL2_LOC > 0)) THEN
383 IF(DIST2 > EM30) CALL ANCMSG(MSGID=2004,
385 . ANMODE=ANINFO_BLIND_1,
389 IF (NODE_ID2 > 0) THEN
391 NN(1) = X(1,NODE_ID2) - X(1,NODE_ID)
392 NN(2) = X(2,NODE_ID2) - X(2,NODE_ID)
393 NN(3) = X(3,NODE_ID2) - X(3,NODE_ID)
394 NORM = SQRT(MAX(EM30,NN(1)*NN(1)+NN(2)*NN(2)+NN(3)*NN(3)))
399 IF(NORM < EM20) CALL ANCMSG(MSGID=2018,
401 . ANMODE=ANINFO_BLIND_1,
404 N1(1) = X(1,SLIPRING(I)%FRAM(1)%NODE(1)) - X(1,SLIPRING(I)%FRAM(1)%NODE(2))
405 N1(2) = X(2,SLIPRING(I)%FRAM(1)%NODE(1)) - X(2,SLIPRING(I)%FRAM(1)%NODE(2))
406 N1(3) = X(3,SLIPRING(I)%FRAM(1)%NODE(1)) - X(3,SLIPRING(I)%FRAM(1)%NODE(2))
407 NORM = SQRT(MAX(EM30,N1(1)*N1(1)+N1(2)*N1(2)+N1(3)*N1(3)))
412 N2(1) = X(1,SLIPRING(I)%FRAM(1)%NODE(3)) - X(1,SLIPRING(I)%FRAM(1)%NODE(2))
413 N2(2) = X(2,SLIPRING(I)%FRAM(1)%NODE(3)) - X(2,SLIPRING(I)%FRAM(1)%NODE(2))
414 N2(3) = X(3,SLIPRING(I)%FRAM(1)%NODE(3)) - X(3,SLIPRING(I)%FRAM(1)%NODE(2))
415 NORM = SQRT(MAX(EM30,N2(1)*N2(1)+N2(2)*N2(2)+N2(3)*N2(3)))
420 N3(1) = N1(2)*N2(3)-N1(3)*N2(2)
421 N3(2) = N1(3)*N2(1)-N1(1)*N2(3)
422 N3(3) = N1(1)*N2(2)-N1(2)*N2(1)
423 NORM = SQRT(MAX(EM30,N3(1)*N3(1)+N3(2)*N3(2)+N3(3)*N3(3)))
428 SCAL = ABS(N3(1)*NN(1)+N3(2)*NN(2)+N3(3)*NN(3))
429 SLIPRING(I)%FRAM(1)%ORIENTATION_ANGLE = ACOS(SCAL)
431 WRITE(IOUT,1200) SLIPRING(I)%FRAM(1)%ORIENTATION_ANGLE
435 ELSEIF (KEY(1:5)=='shell
') THEN
439 CALL HM_GET_INTV('el_set1
', GR_SHEL1, IS_AVAILABLE, LSUBMODEL)
440 CALL HM_GET_INTV('el_set2
', GR_SHEL2, IS_AVAILABLE, LSUBMODEL)
441 CALL HM_GET_INTV('node_set
',GR_NOD, IS_AVAILABLE, LSUBMODEL)
443 WRITE(IOUT,1300) ID,TRIM(TITR),GR_SHEL1,GR_SHEL2,GR_NOD,ISENS,FLOW_FLAG,A,ED_FACTOR,
444 . IFUNC(1),IFUNC(2),FRICD,XSCALE1,YSCALE2,XSCALE2,
445 . IFUNC(3),IFUNC(4),FRICS,XSCALE3,YSCALE4,XSCALE4
447 INGR2USR => IGRNOD(1:NGRNOD)%ID
448 GRN_LOC=NGR2USR(GR_NOD,INGR2USR,NGRNOD)
449 NFRAM = IGRNOD(GRN_LOC)%NENTITY
451 INGR2USR => IGRSH4N(1:NGRSHEL)%ID
452 GRS1_LOC = NGR2USR(GR_SHEL1,INGR2USR,NGRSHEL)
453 GRS2_LOC = NGR2USR(GR_SHEL2,INGR2USR,NGRSHEL)
457 SLIPRING(I)%NFRAM = NFRAM
458 ALLOCATE(SLIPRING(I)%FRAM(NFRAM))
460 SLIPRING(I)%FRAM(J)%UPDATE = 0
461 SLIPRING(I)%FRAM(J)%ANCHOR_NODE = 0
462 SLIPRING(I)%FRAM(J)%ORIENTATION_NODE = 0
463 SLIPRING(I)%FRAM(J)%NODE = 0
464 SLIPRING(I)%FRAM(J)%NODE_NEXT = 0
465 SLIPRING(I)%FRAM(J)%NODE2_PREV = 0
466 SLIPRING(I)%FRAM(J)%N_REMOTE_PROC = 0
467 SLIPRING(I)%FRAM(J)%STRAND_DIRECTION = 1
468 SLIPRING(I)%FRAM(J)%LOCKED = 0
469 SLIPRING(I)%FRAM(J)%VECTOR = ZERO
470 SLIPRING(I)%FRAM(J)%ORIENTATION_ANGLE = ZERO
471 SLIPRING(I)%FRAM(J)%MATERIAL_FLOW = ZERO
472 SLIPRING(I)%FRAM(J)%MATERIAL_FLOW_OLD = ZERO
473 SLIPRING(I)%FRAM(J)%DFS = ZERO
474 SLIPRING(I)%FRAM(J)%RESIDUAL_LENGTH = ZERO
475 SLIPRING(I)%FRAM(J)%CURRENT_LENGTH = ZERO
476 SLIPRING(I)%FRAM(J)%RINGSLIP = ZERO
477 SLIPRING(I)%FRAM(J)%BETA = ZERO
478 SLIPRING(I)%FRAM(J)%GAMMA = ZERO
479 SLIPRING(I)%FRAM(J)%SLIP_FORCE = ZERO
480 SLIPRING(I)%FRAM(J)%PREV_REF_LENGTH = ZERO
481 SLIPRING(I)%FRAM(J)%INTVAR_STR1 = ZERO
482 SLIPRING(I)%FRAM(J)%INTVAR_STR2 = ZERO
486 CALL MY_ALLOC(DIST,NFRAM)
487 CALL MY_ALLOC(JPERM,NFRAM)
489 N_FIRST = IGRNOD(GRN_LOC)%ENTITY(1)
490 N_LAST = IGRNOD(GRN_LOC)%ENTITY(IGRNOD(GRN_LOC)%NENTITY)
492 DIST(NFRAM) = (X(1,N_FIRST)-X(1,N_LAST))**2+(X(2,N_FIRST)-X(2,N_LAST))**2+(X(3,N_FIRST)-X(3,N_LAST))**2
493 NORM = SQRT(MAX(EM20,DIST(NFRAM)))
494 VECT(1) = (X(1,N_FIRST)-X(1,N_LAST))/NORM
495 VECT(2) = (X(2,N_FIRST)-X(2,N_LAST))/NORM
496 VECT(3) = (X(3,N_FIRST)-X(3,N_LAST))/NORM
498 NJ = IGRNOD(GRN_LOC)%ENTITY(J)
499 DIST(J) = (X(1,N_FIRST)-X(1,NJ))**2+(X(2,N_FIRST)-X(2,NJ))**2+(X(3,N_FIRST)-X(3,NJ))**2
500 NORMJ = SQRT(MAX(EM20,DIST(J)))
501 VECTJ(1) = (X(1,N_FIRST)-X(1,NJ))/NORMJ
502 VECTJ(2) = (X(2,N_FIRST)-X(2,NJ))/NORMJ
503 VECTJ(3) = (X(3,N_FIRST)-X(3,NJ))/NORMJ
504 SCAL = ONE - ABS(VECT(1)*VECTJ(1)+VECT(2)*VECTJ(2)+VECT(3)*VECTJ(3))
505 IF (ABS(SCAL) > EM07) THEN
506 CALL ANCMSG(MSGID=2051,
508 . ANMODE=ANINFO_BLIND_1,
514 CALL MYQSORT(NFRAM,DIST,JPERM,IERROR)
516 IF (DIST(J)==DIST(J+1)) THEN
517 NJ = IGRNOD(GRN_LOC)%ENTITY(JPERM(J))
518 NJ_NEXT = IGRNOD(GRN_LOC)%ENTITY(JPERM(J+1))
519 CALL ANCMSG(MSGID=2052,
521 . ANMODE=ANINFO_BLIND_1,
522 . I1=ID,I2=ITAB(NJ),I3=ITAB(NJ_NEXT))
525 DEALLOCATE(DIST,JPERM)
529 SIZE_COM_NOD = 4*(IGRSH4N(GRS1_LOC)%NENTITY
530 . +IGRSH4N(GRS2_LOC)%NENTITY)
531 CALL MY_ALLOC(ELEM1_NOD,NFRAM)
532 CALL MY_ALLOC(ELEM2_NOD,NFRAM)
533 CALL MY_ALLOC(IPOS1_NOD,NFRAM)
534 CALL MY_ALLOC(IPOS2_NOD,NFRAM)
535 CALL MY_ALLOC(CORES1,NFRAM)
536 CALL MY_ALLOC(CORES2,NFRAM)
537 CALL MY_ALLOC(TAGNO,NUMNOD)
538 CALL MY_ALLOC(COM_NOD,SIZE_COM_NOD)
541 IPOS1_NOD(1:NFRAM) = 0
542 ELEM1_NOD(1:NFRAM) = 0
543 IPOS2_NOD(1:NFRAM) = 0
544 ELEM2_NOD(1:NFRAM) = 0
546 COM_NOD(1:SIZE_COM_NOD) = 0
549 DO K=1,IGRSH4N(GRS1_LOC)%NENTITY
550 ISHELL = IGRSH4N(GRS1_LOC)%ENTITY(K)
552 NODE = IXC(1+L,ISHELL)
557 DO K=1,IGRSH4N(GRS2_LOC)%NENTITY
558 ISHELL = IGRSH4N(GRS2_LOC)%ENTITY(K)
560 NODE = IXC(1+L,ISHELL)
561 IF (TAGNO(NODE)==1) THEN
562 CPT_COM_NOD = CPT_COM_NOD+1
563 COM_NOD(CPT_COM_NOD) = NODE
572 NJ = IGRNOD(GRN_LOC)%ENTITY(J)
575 DO K=1,IGRSH4N(GRS1_LOC)%NENTITY
576 ISHELL = IGRSH4N(GRS1_LOC)%ENTITY(K)
578 NODE = IXC(1+L,ISHELL)
579 DISTN = (X(1,NODE)-X(1,NJ))**2+(X(2,NODE)-X(2,NJ))**2+(X(3,NODE)-X(3,NJ))**2
580 IF (DISTN < DIST_MIN) THEN
583 ELEM1_NOD(J) = ISHELL
588 IF (IPM(2,MID)/=119) THEN
589 CALL ANCMSG(MSGID=2074,
591 . ANMODE=ANINFO_BLIND_1,
592 . I1=IXC(NIXC,ISHELL),
596 IF (CORES1(J) > 0) TAGNO(CORES1(J)) = 1
599 DO K=1,IGRSH4N(GRS2_LOC)%NENTITY
600 ISHELL = IGRSH4N(GRS2_LOC)%ENTITY(K)
602 NODE = IXC(1+L,ISHELL)
603 DISTN = (X(1,NODE)-X(1,NJ))**2+(X(2,NODE)-X(2,NJ))**2+(X(3,NODE)-X(3,NJ))**2
604 IF (DISTN < DIST_MIN) THEN
607 ELEM2_NOD(J) = ISHELL
612 IF (IPM(2,MID)/=119) THEN
613 CALL ANCMSG(MSGID=2074,
615 . ANMODE=ANINFO_BLIND_1,
616 . I1=IXC(NIXC,ISHELL),
620 IF (CORES2(J) > 0) TAGNO(CORES2(J)) = 1
622 IF (CORES1(J) /= CORES2(J)) THEN
623 CALL ANCMSG(MSGID=2053,
625 . ANMODE=ANINFO_BLIND_1,
626 . I1=ID,I2=GR_SHEL1,I3=GR_SHEL2,I4=ITAB(NJ))
631 CALL ANCMSG(MSGID=2074,
633 . ANMODE=ANINFO_BLIND_1,
640 IF (TAGNO(COM_NOD(J))==0) THEN
641 CALL ANCMSG(MSGID=3041,
643 . ANMODE=ANINFO_BLIND_1,
644 . I1=ITAB(COM_NOD(J)),
649 CALL ANCMSG(MSGID=3041,
651 . ANMODE=ANINFO_BLIND_1,
662 NODE_ID = IGRNOD(GRN_LOC)%ENTITY(J)
663 SLIPRING(I)%FRAM(J)%ANCHOR_NODE = NODE_ID
664 SLIPRING(I)%FRAM(J)%ORIENTATION_NODE = 0
667 SLIPRING(I)%FRAM(J)%NODE(2) = NODE2
669 ISHELL = ELEM1_NOD(J)
672.AND..AND.
IF ((K/=IPOS+2)(K/=IPOS-2)(TAGNO(IXC(K+1,ISHELL)) == 0)) NODE1 = IXC(K+1,ISHELL)
674 SLIPRING(I)%FRAM(J)%NODE(1) = NODE1
676 ISHELL = ELEM2_NOD(J)
679.AND..AND.
IF ((K/=IPOS+2)(K/=IPOS-2)(TAGNO(IXC(K+1,ISHELL)) == 0)) NODE3 = IXC(K+1,ISHELL)
681 SLIPRING(I)%FRAM(J)%NODE(3) = NODE3
683 DIST1 = (X(1,NODE1)-X(1,NODE_ID))**2+(X(2,NODE1)-X(2,NODE_ID))**2+(X(3,NODE1)-X(3,NODE_ID))**2
684 DIST2 = (X(1,NODE2)-X(1,NODE_ID))**2+(X(2,NODE2)-X(2,NODE_ID))**2+(X(3,NODE2)-X(3,NODE_ID))**2
685 DIST3 = (X(1,NODE3)-X(1,NODE_ID))**2+(X(2,NODE3)-X(2,NODE_ID))**2+(X(3,NODE3)-X(3,NODE_ID))**2
688 TOLE_2 = EM10*(MAX(DIST1,DIST3))**2
693 ALEA_MAX = MAX(ALEA_MAX,ALEA(K))
695 TOLE_2 = MAX(TOLE_2,TEN*ALEA_MAX*ALEA_MAX)
699 IF (DIST2 <= TEN*TOLE_2) THEN
700 X(1,NODE2) = X(1,NODE_ID)
701 X(2,NODE2) = X(2,NODE_ID)
702 X(3,NODE2) = X(3,NODE_ID)
706.AND.
IF ((DIST2 > EM30)(CORES1(J) == CORES2(J))) THEN
707 CALL ANCMSG(MSGID=2054,
709 . ANMODE=ANINFO_BLIND_1,
710 . I1=ID,I2=ITAB(NODE_ID))
715 DEALLOCATE(ELEM1_NOD,IPOS1_NOD,ELEM2_NOD,IPOS2_NOD,CORES1,CORES2,
725 WRITE(IOUT,*)' ** error in memory allocation
'
726 WRITE(ISTDO,*)' ** error in memory allocation
'
733 CALL UDOUBLE(SLIP_ID,1,NSLIPRING,MESS,0,BID)
738 . ' ----------------------
')
7391100 FORMAT(/5X,'slipring spring id
',I10,1X,A
740 . /5X,'first spring element . . . . . . . . . . .
',I10
741 . /5X,'second spring element . . . . . . . . . .
',I10
742 . /5X,'anchorage node . . . . . . . . . . . . . .
',I10
743 . /5X,'orientation node . . . . . . . . . . . . .
',I10
744 . /5X,'sensor id . . . . . . . . . . . . . . . .
',I10
745 . /5X,'flow flag . . . . . . . . . . . . . . . .
',I10
746 . /5X,'a. . . . . . . . . . . . . . . . . . . . .
',1PG20.4
747 . /5X,'exponential decay factor . . . . . . . . .
',1PG20.4
748 . /5X,'func1 - dynamic fric func vs time . . . .
',I10
749 . /5X,'func2 - dynamic fric func vs
',I10
750 . /5X,'dynamic fric coefficient . . . . . . . . .',1pg20.4
751 . /5x,
'FUNC1 ABCISSA SCALE FACTOR . . . . . . . .',1pg20.4
752 . /5x,
'FUNC2 ORDINATE SCALE FACTOR . . . . . . .',1pg20.4
753 . /5x,
'FUNC2 ABCISSA SCALE FACTOR . . . . . . . .',1pg20.4
754 . /5x,
'FUNC3 - STATIC FRIC FUNC VS TIME . . . . .',i10
755 . /5x,
'FUNC4 - STATIC FRIC FUNC VS NORMAL FORCE .',i10
756 . /5x,
'STATIC FRIC COEFFICIENT . . . . . . . . .',1pg20.4
757 . /5x,
'FUNC3 ABCISSA SCALE FACTOR . . . . . . . .',1pg20.4
758 . /5x,
'FUNC4 ORDINATE SCALE FACTOR . . . . . . .',1pg20.4
759 . /5x,
'FUNC4 ABCISSA SCALE FACTOR . . . . . . . .',1pg20.4)
7611200
FORMAT( 5x,'initial orientation angle(rad) . . . . .
',1PG20.4)
7631300 FORMAT(/5X,'slipring shell id
',I10,1X,A
764 . /5X,'first element group . . . . . . . . . . .
',I10
765 . /5X,'second element group . . . . . . . . . . .
',I10
766 . /5X,'anchorage node group . . . . . . . . . . .
',I10
767 . /5X,'sensor id . . . . . . . . . . . . . . . .
',I10
768 . /5X,'flow flag . . . . . . . . . . . . . . . .
',I10
769 . /5X,'a. . . . . . . . . . . . . . . . . . . . .
',1PG20.4
770 . /5X,'exponential decay factor . . . . . . . . .
',1PG20.4
771 . /5X,'func1 - dynamic fric func vs time . . . .
',I10
772 . /5X,'func2 - dynamic fric func vs normal force
',I10
773 . /5X,'dynamic fric coefficient . . .
',1PG20.4
774 . /5X,'func1 abcissa scale factor . . . . . . . .
',1PG20.4
775 . /5X,'func2 ordinate scale factor . . . . . . .
',1PG20.4
776 . /5X,'func2 abcissa scale factor . . . . . . . .
',1PG20.4
777 . /5X,'func3 -
static fric func vs time . . . . .
',I10
778 . /5X,'func4 -
static fric func vs normal force .
',I10
779 . /5X,'static fric coefficient . . . . . . . . .
',1PG20.4
780 . /5X,'func3 abcissa scale factor . . . . . . . .
',1PG20.4
781 . /5X,'func4 ordinate scale factor . . . . . . .
',1PG20.4
782 . /5X,'func4 abcissa scale factor . . . . . . . .
',1PG20.4)
subroutine lectur(multi_fvm, lsubmodel, is_dyna, detonators, ebcs_tab, seatbelt_converted_elements, nb_seatbelt_shells, nb_dyna_include, user_windows, output, mat_elem, names_and_titles, defaults, glob_therm, pblast, sensor_user_struct)