36 . X,ITAB,IPM,ALEA,KNOD2ELC,
48#include "implicit_f.inc"
55#include "random_c.inc"
56#include "tabsiz_c.inc"
60 INTEGER IPARG(NPARG,NGROUP),KNOD2EL1D(*),NOD2EL1D(*),IXR(NIXR,*),ITAB(*),IPM(NPROPMI
63 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
72 INTEGER I,J,K,L,M,N,NG,NEL,ITY,IAD,LFT,LLT,NFT,MTN,NODE,NODE_NEXT,
73 . ELEM_NEXT,N1,N2,NTOOL,KK,NOT_USED,FLAG,ELEM_CUR,NN,ID,NNOD,
74 . mid,mtyp,p,nb_shell,nfram,n3,n4,ms,nodes,iseatbelt,nsl,idrb,
75 . nod,nfound_rby,nfound_bcs,bcs_x,bcs_y,bcs_z,ic,ic1,ic2,n1sp,
78 my_real dist1,dist2,alea_max,tole_2
80 INTEGER ,
DIMENSION(:),
ALLOCATABLE:: TAG_RETRACTOR,TAGN_RETRACTOR,TAG_RES
82 TYPE(g_bufel_),
POINTER :: GBUF
88 CALL my_alloc(tag_res,numelr)
103 IF ((nlocal(n2,p)==1).AND.(nlocal(
slipring(i)%FRAM(j)%ANCHOR_NODE,p)==0))
THEN
106 IF (
slipring(i)%FRAM(j)%ORIENTATION_NODE > 0)
116 IF ((nlocal(n2,p)==1).AND.(nlocal(
retractor(i
THEN
127 CALL my_alloc(tag_retractor,numelr)
128 CALL my_alloc(tagn_retractor,numnod)
129 tag_retractor(1:numelr) = 0
130 tagn_retractor(1:numnod) = 0
145 DO k=knod2el1d(n1)+1,knod2el1d(n1+1)
146 IF (nod2el1d(k) > numelt+numelp)
THEN
147 elem_cur = nod2el1d(k)-numelt-numelp
148 mid = ixr(5,elem_cur)
151 IF (((ixr(2,elem_cur)==n2).OR.(ixr(3,elem_cur)==n2)).AND.(mtyp == 114))
THEN
154 . elem_cur,tag_retractor,tagn_retractor,i,flag
155 . not_used,ipm,not_used,not_used,not_used,
173 iseatbelt = iparg(91,ng)
177 IF ((ity==6).AND.(mtn==114))
THEN
181 gbuf => elbuf_tab(ng)%GBUF
196 IF (((n1==
slipring(k)%FRAM(l)%NODE(1)).AND.(n2==
slipring(k)%FRAM(l)%NODE(2))).OR.
197 . ((n1==
slipring(k)%FRAM(l)%NODE(2)).AND.(n2==
slipring(k)%FRAM(l)%NODE(1))))
THEN
200 gbuf%SLIPRING_ID(i) = k
201 gbuf%SLIPRING_FRAM_ID(i) = l
202 gbuf%SLIPRING_STRAND(i) = 1
205 IF (n1==
slipring(k)%FRAM(l)%NODE(1))
THEN
206 slipring(k)%FRAM(l)%STRAND_DIRECTION(1) = 1
208 slipring(k)%FRAM(l)%STRAND_DIRECTION(1) = -1
211 ELSEIF (((n1==
slipring(k)%FRAM(l)%NODE(2)).AND.(n2==
slipring(k)%FRAM(l)%NODE(3))).OR.
212 . ((n1==
slipring(k)%FRAM(l)%NODE(3)).AND.(n2==
slipring(k)%FRAM(l)%NODE(2))))
THEN
215 gbuf%SLIPRING_ID(i) = k
216 gbuf%SLIPRING_FRAM_ID(i) = l
217 gbuf%SLIPRING_STRAND(i) = 2
220 IF (n1==
slipring(k)%FRAM(l)%NODE(2))
THEN
221 slipring(k)%FRAM(l)%STRAND_DIRECTION(2) = 1
223 slipring(k)%FRAM(l)%STRAND_DIRECTION
239 gbuf%RETRACTOR_ID(i) = k
240 gbuf%SLIPRING_STRAND(i) = -1
244 IF (tag_retractor(j) > 0)
THEN
247 gbuf%RETRACTOR_ID(i) = -k
251 dist1 = (x(1,nn)-x(1,n1))**2+(x(2,nn)-x(2,n1))**2+(x(3,nn)-x(3,n1))**2
252 dist2 = (x(1,nn)-x(1,n2))**2+(x(2,nn)-x(2,n2))**2+(x(3,nn)-x(3,n2))**2
260 alea_max =
max(alea_max,alea(j))
262 tole_2 =
max(tole_2,ten*alea_max*alea_max)
266 IF (dist1 <= tole_2)
THEN
272 IF (dist2 <= tole_2)
THEN
279 IF(dist2 + dist1 > em30)
CALL ancmsg(msgid=2011,
282 . i1=id,i2=ixr(nixr,j),i3=id)
284 IF (tagn_retractor(n1) > 0)
THEN
287 tagn_retractor(n1) = 0
290 IF (tagn_retractor(n2) > 0)
THEN
293 tagn_retractor(n2) = 0
300 IF(ntool > 1)
CALL ancmsg(msgid=2006,
308 DO k=knod2el1d(node)+1,knod2el1d(node+1)
309 IF ((nod2el1d(k) /= j + numelt+numelp).AND.(nod2el1d(k) > numelt
THEN
310 elem_next = nod2el1d(k)-numelt-numelp
311 mid = ixr(5,elem_next)
314 IF (mtyp == 114)
THEN
315 IF (ixr(2,elem_next) == node)
THEN
316 node_next = ixr(3,elem_next)
318 node_next = ixr(2,elem_next)
324 gbuf%ADD_NODE(i) = node_next
329 DO k=knod2el1d(node)+1,knod2el1d(node+1)
330 IF ((nod2el1d(k) /= j + numelt+numelp).AND.(nod2el1d(k) > numelt+numelp))
THEN
331 elem_next = nod2el1d(k)-numelt-numelp
332 mid = ixr(5,elem_next)
335 IF (mtyp == 114)
THEN
336 IF (ixr(2,elem_next) == node)
THEN
337 node_next = ixr(3,elem_next)
339 node_next = ixr(2,elem_next)
345 gbuf%ADD_NODE(nel+i) = node_next
350 IF (gbuf%ADD_NODE(i) > 0)
THEN
355 DO k=knod2elc(node)+1,knod2elc(node+1)
356 elem_cur = nod2elc(k)
357 mid = ixc(1,elem_cur)
359 IF (mtyp == 119) nb_shell = nb_shell + 1
363 IF ((nfram > 1).AND.(nb_shell==4))
THEN
365 gbuf%FRAM_FACTOR(i) = one/(nfram-1)
366 ELSEIF ((nfram > 1).AND.(nb_shell==2))
THEN
368 gbuf%FRAM_FACTOR(i) = half/(nfram-1)
371 gbuf%FRAM_FACTOR(i) = one
374 gbuf%MASS(i) = gbuf%MASS(i)*gbuf%FRAM_FACTOR(i)
375 gbuf%INTVAR(i) = gbuf%INTVAR(i)*gbuf%FRAM_FACTOR(i)
379 ELSEIF ((ity==3).AND.(iseatbelt==1))
THEN
383 gbuf => elbuf_tab(ng)%GBUF
398 dist1 = (x(1,n2)-x(1,n1))**2+(x(2,n2)-x(2,n1))**2+(x(3,n2)-x(3,n1))**2
399 dist2 = (x(1,n3)-x(1,n4))**2+(x(2,n3)-x(2,n4))**2+(x(3,n3)-x(3,n4))**2
400 gbuf%INTVAR(i+2*nel) = sqrt(dist1)
401 gbuf%INTVAR(i+3*nel) = sqrt(dist2)
404 gbuf%ADD_NODE(i) = n2
405 DO k=knod2el1d(n1)+1,knod2el1d(n1+1)
406 IF (nod2el1d(k) > numelt+numelp)
THEN
407 elem = nod2el1d(k)-numelt-numelp
411 IF ((mtyp==114).AND.((ixr(2,elem)==n1).AND.(ixr(3,elem
412 . .OR.((ixr(3,elem)==n1).AND.(ixr(2,elem) == n4)))
THEN
413 gbuf%ADD_NODE(i) = n4
423 DO k=knod2el1d(node)+1,knod2el1d(node+1)
424 IF (nod2el1d(k) > numelt+numelp)
THEN
425 elem_next = nod2el1d(k)-numelt-numelp
426 mid = ixr(5,elem_next)
430 n1sp=ixr(2,elem_next)
431 n2sp=ixr(3,elem_next)
432 IF ((n1sp==node).AND.(n2sp/=n1).AND.(n2sp/=n2).AND.(n2sp/=n3).AND.(n2sp/=n4))
THEN
434 ELSEIF ((n2sp==node).AND.(n1sp/=n1).AND.(n1sp/=n2).AND.(n1sp/=n3).AND.(n1sp/=n4))
THEN
441 gbuf%ADD_NODE((m-1)*nel+i) = node_next
451 DEALLOCATE(tag_res,tag_retractor,tagn_retractor)
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)