36 1 X ,IRECT,NSV ,BUMULT,
37 2 NMN ,NRTM ,NSN ,INTBUF_TAB ,
39 4 DIST ,TZINF,MAXBOX ,MINBOX,MSR ,
40 5 STF ,STFN ,IDDLEVEL,
41 6 GAP_S,GAP_M ,IGAP ,GAPMIN ,
42 7 GAPMAX,INACTI,GAP_S_L,GAP_M_L,
43 8 MARGE ,ID ,TITR ,NBINFLG,MBINFLG,
44 9 ILEV ,MSEGTYP,GAP_N,BGAPSMX,
45 A IPARTS,KNOD2ELS,NOD2ELS,
47 C IXS, IXS10, IXS16, IXS20,ICODE,ISKEW ,
48 D DRAD ,DGAPLOAD,NRTMT,FLAG_REMOVED_NODE,
49 E IELEM_M,nin,npari,ipari )
60#include "implicit_f.inc"
70 INTEGER NMN, NRTM, NSN, I_STOK,IGAP,
72 . IPARTS(*), KNOD2ELS(*), NOD2ELS(*)
73 INTEGER IRECT(4,*),NSV(*),ICODE(*),ISKEW(*)
74 INTEGER MSR(*),IDDLEVEL
75 INTEGER NBINFLG(*),MBINFLG(*),ILEV,MSEGTYP(*)
76 INTEGER KREMNODE(*),REMNODE(*)
77 INTEGER IXS(*), IXS10(*), IXS16(*), IXS20(*)
79 INTEGER ,
INTENT(IN) :: IELEM_M(2,NRTM)
80 integer,
intent(in) :: nin
81 integer,
intent(in) :: npari
82 integer,
dimension(npari),
intent(inout) :: ipari
85 . stf(*),stfn(*),x(3,*),gap_s(*),gap_m(*),
86 . dist,bumult,gap,tzinf,maxbox,minbox,gapmin,gapmax,
87 . gap_s_l(*),gap_m_l(*),marge,gap_n(4,*)
90 my_real ,
INTENT(IN) :: drad, dgapload
92 CHARACTER(LEN=NCHARTITLE) :: TITR
94 INTEGER ,
INTENT(IN) :: NRTMT
95 type(intbuf_struct_),
intent(inout) :: intbuf_tab
99 INTEGER I, J, L, N1, N2, N3, N4,N_SOL, ESHIFT
101 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IIX,IIY,IIZ
108 . dd1,dd2,dd3,dd4,dd,dd0,xmin,ymin,zmin,
109 . xmax,
ymax,zmax,tzinf0,minbox0,maxbox0,
110 . bid,tzinf_st,marge_st,dd_st,d_max,pensol,d_moy,
111 . xyzm(6),bminma(6),aaa,ledgmax
113 .
DIMENSION(:),
ALLOCATABLE :: edge_l2,edge_l2_tmp
114 INTEGER TAGP(NPART),IAD,N,IE,IL,IP
115 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPARTNS,IELEM,LPARTNS
117 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IS_LARGE_NODE,LARGE_NODE, TAGNOD,LOCAL_NEXT_NOD
118 INTEGER :: NB_LARGE_NODES
119 INTEGER (KIND=8) :: NBX8,,NBZ8,RES8,LVOXEL8
120 INTEGER (KIND=8) :: IONE,IHUNDRED
146 dx1=(x(1,n1)-x(1,n2))
147 dy1=(x(2,n1)-x(2,n2))
148 dz1=(x(3,n1)-x(3,n2))
149 dd1=sqrt(dx1**2+dy1**2+dz1**2)
151 dx3=(x(1,n1)-x(1,n4))
152 dy3=(x(2,n1)-x(2,n4))
153 dz3=(x(3,n1)-x(3,n4))
154 dd2=sqrt(dx3**2+dy3**2+dz3**2)
156 dx4=(x(1,n3)-x(1,n2))
157 dy4=(x(2,n3)-x(2,n2))
158 dz4=(x(3,n3)-x(3,n2))
159 dd3=sqrt(dx4**2+dy4**2+dz4**2)
161 dx6=(x(1,n4)-x(1,n3))
162 dy6=(x(2,n4)-x(2,n3))
163 dz6=(x(3,n4)-x(3,n3))
164 dd4=sqrt(dx6**2+dy6**2+dz6**2)
165 dd=dd+ (dd1+dd2+dd3+dd4)
167 IF (msegtyp(l)==0.OR.msegtyp(l)>nrtmt)
THEN
168 d_max=
max(dd1,dd2,dd3,dd4)
169 d_max=
min(d_max,gap_n(1,l))
172 dd_st=
max(dd_st,d_max)
174 d_moy = d_moy + d_max
185 tzinf = marge +
max(gap+dgapload,drad)
190 IF(iddlevel==0) marge_st = marge
191 tzinf_st = marge_st +
max(gap+dgapload,drad)
193 IF (inacti/=7.AND.tzinf>bid)
THEN
194 ibid = nint(tzinf/dd0)
195 ibid =(2*ibid+4)*ibid*2
199 maxbox= half*(dd + 2*tzinf)
226 xmin=
min(xmin,x(1,j))
227 ymin=
min(ymin,x(2,j))
228 zmin=
min(zmin,x(3,j))
229 xmax=
max(xmax,x(1,j))
231 zmax=
max(zmax,x(3,j))
243 xmin=
min(xmin,x(1,j))
244 ymin=
min(ymin,x(2,j))
245 zmin=
min(zmin,x(3,j))
246 xmax=
max(xmax,x(1,j))
248 zmax=
max(zmax,x(3,j))
251 bminma(1) =
max(bminma(1),xmax)
252 bminma(2) =
max(bminma(2),
ymax)
253 bminma(3) =
max(bminma(3),zmax)
254 bminma(4) =
min(bminma(4),xmin)
255 bminma(5) =
min(bminma(5),ymin)
256 bminma(6) =
min(bminma(6),zmin)
266 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
267 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
268 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
272 nbx = nint(aaa*(bminma(1)-bminma(4)))
273 nby = nint(aaa*(bminma(2)-bminma(5)))
274 nbz = nint(aaa*(bminma(3)-bminma(6)))
282 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
285 IF(res8 > lvoxel8)
THEN
287 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
289 nbx = int((nbx+2)*aaa)-2
290 nby = int((nby+2)*aaa)-2
291 nbz = int((nbz+2)*aaa)-2
302 IF(res8 > lvoxel8)
THEN
303 nbx =
min(ihundred,
max(nbx8,ione))
304 nby =
min(ihundred,
max(nby8,ione))
305 nbz =
min(ihundred,
max(nbz8,ione))
311 ALLOCATE(npartns(nsn+1),ielem(nrtm),edge_l2(nsn))
315 edge_l2(1:nsn) = zero
322 ALLOCATE(large_node(nsn))
323 ALLOCATE(is_large_node(nsn))
324 ALLOCATE(tagnod(numnod))
325 is_large_node(1:nsn) = 0
326 large_node(1:nsn) = 0
335 IF(ielem_m(1,ie)<=numels)
THEN
336 ielem(ie)= ielem_m(1,ie)
338 CALL insol25(irect ,ixs ,ixs10,ixs16,ixs20,
339 . knod2els ,nod2els ,nels ,ie )
344 IF(inacti==5.OR.inacti==-1)
THEN
346 ALLOCATE(edge_l2_tmp(numnod))
347 edge_l2_tmp(1:numnod)=zero
350 IF(stf(ie)> zero)
THEN
353 n2=irect(mod(il,4)+1,ie)
355 aaa = (x(1,n2)-x(1,n1))*(x(1,n2)-x(1,n1))
356 . + (x(2,n2)-x(2,n1))*(x(2,n2)-x(2,n1))
357 . + (x(3,n2)-x(3,n1))*(x(3,n2)-x(3,n1))
358 edge_l2_tmp(n1) =
max(edge_l2_tmp(n1), aaa )
359 edge_l2_tmp(n2) =
max(edge_l2_tmp(n2), aaa )
360 IF (msegtyp(ie)==0.OR.msegtyp(ie)>nrtmt)
THEN
361 IF(tagnod(n1)==0)
THEN
365 IF(tagnod(n2)==0)
THEN
378 IF(stfn(i)/=zero)
THEN
379 edge_l2(i) = half*sqrt(edge_l2_tmp(n))
380 IF(tagnod(n)==1) ledgmax=ledgmax+edge_l2(i)
384 IF(n_sol > 0) ledgmax=half*ledgmax/n_sol
387 DEALLOCATE(edge_l2_tmp)
396 DO iad=knod2els(n)+1,knod2els(n+1)
400 npartns(i)=npartns(i)+1
404 DO iad=knod2els(n)+1,knod2els(n+1)
412 npartns(i+1) = npartns(i+1) + npartns(i)
415 npartns(i+1) = npartns(i)
423 DO iad=knod2els(n)+1,knod2els(n+1)
427 npartns(i)=npartns(i)+1
428 lpartns(npartns(i))=ip
432 DO iad=knod2els(n)+1,knod2els(n+1)
440 npartns(i+1) = npartns(i)
453 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
462 ALLOCATE(local_next_nod(nsn))
470 2 stfn ,xyzm ,nsv ,i_stok ,
472 4
voxel1 ,nbx ,nby ,nbz ,nrtm ,
473 5 gap_s ,gap_m ,marge_st,
474 6 nbinflg ,mbinflg ,ilev ,msegtyp ,
475 7 igap ,gap_s_l ,gap_m_l ,edge_l2 ,ledgmax ,
477 9 iparts ,npartns ,lpartns ,ielem ,icode ,
478 a iskew ,drad, is_large_node, large_node, nb_large_nodes,
479 b dgapload,nrtmt,flag_removed_node,
480 c ielem_m,local_next_nod,iix,iiy,iiz,
481 d intbuf_tab,ipari,nin)
483 DEALLOCATE(local_next_nod)
488 DEALLOCATE(edge_l2,npartns,ielem,lpartns)
489 DEALLOCATE(is_large_node,large_node,tagnod)
492 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER, NSN:',i_stok,nsn
496 . msgtype=msgwarning,
497 . anmode=aninfo_blind_2,
subroutine i25buc_vox1(x, irect, nsv, bumult, nmn, nrtm, nsn, intbuf_tab, gap, i_stok, dist, tzinf, maxbox, minbox, msr, stf, stfn, iddlevel, gap_s, gap_m, igap, gapmin, gapmax, inacti, gap_s_l, gap_m_l, marge, id, titr, nbinflg, mbinflg, ilev, msegtyp, gap_n, bgapsmx, iparts, knod2els, nod2els, kremnode, remnode, ixs, ixs10, ixs16, ixs20, icode, iskew, drad, dgapload, nrtmt, flag_removed_node, ielem_m, nin, npari, ipari)
subroutine i25trivox1(nsn, irect, x, stfn, xyzm, nsv, ii_stok, eshift, bgapsmx, voxel, nbx, nby, nbz, nrtm, gap_s, gap_m, marge, nbinflg, mbinflg, ilev, msegtyp, igap, gap_s_l, gap_m_l, edge_l2, ledgmax, kremnode, remnode, iparts, npartns, lpartns, ielem, icode, iskew, drad, is_large_node, large_node, nb_large_nodes, dgapload, nrtmt, flag_removed_node, ielem_m, local_next_nod, iix, iiy, iiz, intbuf_tab, ipari, nin)
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)