36 1 X ,IRECT,NSV ,BUMULT,NSEG ,
37 2 NMN ,NRTM ,MWA ,NSN ,
38 3 GAP ,XYZM ,NOINT ,I_STOK ,
40 5 STF ,STFN ,MULTIMP,ISTF ,IDDLEVEL,
41 6 ITAB ,GAP_S,GAP_M ,IGAP ,GAPMIN ,
42 7 GAPMAX,INACTI,GAP_S_L,GAP_M_L,I_MEM ,
43 8 NCONT ,ICURV ,BGAPSMX,ID, TITR,
45 1 IREMNODE,FLAGREMNODE,KREMNODE,REMNODE,
46 2 DGAPLOAD,npari,ipari,intbuf_tab,IS_USED_WITH_LAW151)
58#include "implicit_f.inc"
69#include "vect07_c.inc"
74 INTEGER NMN, NRTM, NSN, NOINT,I_STOK,MULTIMP,ISTF
76INTEGER IRECT(4,*),NSV(*),NSEG(*),MWA(*)
77 INTEGER MSR(*),IDDLEVEL
78 INTEGER ITAB(*),NCONT,ICURV,KREMNODE(*),REMNODE(*)
80 . STF(*),STFN(*),X(3,*),XYZM(6,2),GAP_S(*),GAP_M(*),
81 . DIST,BUMULT,GAP,TZINF,GAPMIN,GAPMAX,
82 . GAP_S_L(*),GAP_M_L(*),BGAPSMX, DRAD
83 my_real ,
INTENT(IN) :: DGAPLOAD
85 CHARACTER(LEN=NCHARTITLE) :: TITR
86 TYPE(INTERSURFP) :: INTERCEP(3,NINTER)
87 integer,
intent(in) :: npari
88 integer,
dimension(npari),
intent(inout) :: ipari
89 type(intbuf_struct_),
intent(inout) :: intbuf_tab
90 LOGICAL,
INTENT(IN) :: IS_USED_WITH_LAW151
95 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
97 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
98 INTEGER I, J, , I_ADD, L, LOC_PROC, N, ISZNSNR,
99 . n1, n2, n3, n4, ncontact,i_bid,i_stok_old,
100 . ix1,iy1,iz1,ix2,iy2,iz2,ix,iy,iz
102 . marge, aaa,tzinf_st,marge_st
108 . dd1,dd2,dd3,dd4,dd,dd0,xmin,ymin,zmin,
109 . xmax_m,ymax_m,zmax_m,xmin_m,ymin_m,zmin_m,
110 . xmax_s,ymax_s,zmax_s,xmin_s,ymin_s,zmin_s,
111 . xmax,
ymax,zmax,xxx,yyy,zzz,
112 . xminb, yminb, zminb, xmaxb, ymaxb, zmaxb,
113 . mean_x, mean_y, mean_z, dev_x, dev_y, dev_z,
116 . xmine,ymine,zmine,xmaxe,ymaxe,zmaxe,
117 . xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4,zz1,zz2,zz3,zz4
118 my_real,
DIMENSION(:),
ALLOCATABLE :: curv_max
119 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IIX,IIY,IIZ,LOCAL_NEXT_NOD
122 INTEGER (KIND=8) :: IONE,IHUNDRED
129 ALLOCATE( index(nrtm) )
130 ALLOCATE( curv_max(nrtm) )
131 ALLOCATE(local_next_nod(nsn))
136 IF(inacti==7)type18=.true.
138 mwa(1:numnod+numfakenodigeo) = 0
139 ncontact = multimp * ncont
143 xxx=
max(x(1,irect(1,i)),x(1,irect(2,i)),
144 . x(1,irect(3,i)),x(1,irect(4,i)))
145 . -
min(x(1,irect(1,i)),x(1,irect(2,i)),
146 . x(1,irect(3,i)),x(1,irect(4,i)))
147 yyy=
max(x(2,irect(1,i)),x(2,irect(2,i)),
148 . x(2,irect(3,i)),x(2,irect(4,i)))
149 . -
min(x(2,irect(1,i)),x(2,irect(2,i)),
150 . x(2,irect(3,i)),x(2,irect(4,i)))
151 zzz=
max(x(3,irect(1,i)),x(3,irect(2,i)),
152 . x(3,irect(3,i)),x(3,irect(4,i)))
153 . -
min(x(3,irect(1,i)),x(3,irect(2,i)),
154 . x(3,irect(3,i)),x(3,irect(4,i)))
155 curv_max(i) = half *
max(xxx,yyy,zzz)
156 c_max =
max(c_max,curv_max(i))
172 dx1=(x(1,n1)-x(1,n2))
173 dy1=(x(2,n1)-x(2,n2))
174 dz1=(x(3,n1)-x(3,n2))
175 dd1=sqrt(dx1**2+dy1**2+dz1**2)
177 dx3=(x(1,n1)-x(1,n4))
178 dy3=(x(2,n1)-x(2,n4))
179 dz3=(x(3,n1)-x(3,n4))
180 dd2=sqrt(dx3**2+dy3**2+dz3**2)
182 dx4=(x(1,n3)-x(1,n2))
183 dy4=(x(2,n3)-x(2,n2))
184 dz4=(x(3,n3)-x(3,n2))
185 dd3=sqrt(dx4**2+dy4**2+dz4**2)
187 dx6=(x(1,n4)-x(1,n3))
188 dy6=(x(2,n4)-x(2,n3))
189 dz6=(x(3,n4)-x(3,n3))
190 dd4=sqrt(dx6**2+dy6**2+dz6**2)
191 dd=dd+ (dd1+dd2+dd3+dd4)
202 tzinf = marge +
max(gap+dgapload,drad)
207 IF(iddlevel==0) marge_st = marge
208 tzinf_st = marge_st +
max(gap+dgapload,drad)
227 IF(intercep(1,nin)%P(i)==loc_proc)
THEN
242 xmax_m=
max(xmax_m,x(1,j))
243 ymax_m=
max(ymax_m,x(2,j))
244 zmax_m=
max(zmax_m,x(3,j))
245 xmin_m=
min(xmin_m,x(1,j))
246 ymin_m=
min(ymin_m,x(2,j))
247 zmin_m=
min(zmin_m,x(3,j))
252 xmax_m=
max(xmax_m,x(1,j))
253 ymax_m=
max(ymax_m,x(2,j))
254 zmax_m=
max(zmax_m,x(3,j)
256 ymin_m=
min(ymin_m,x(2,j))
257 zmin_m=
min(zmin_m,x(3,j))
262 xmax_m=
max(xmax_m,x(1,j))
263 ymax_m=
max(ymax_m,x(2,j))
264 zmax_m=
max(zmax_m,x(3,j))
265 xmin_m=
min(xmin_m,x(1,j))
266 ymin_m=
min(ymin_m,x(2,j))
267 zmin_m=
min(zmin_m,x(3,j))
272 xmax_m=
max(xmax_m,x(1,j))
273 ymax_m=
max(ymax_m,x(2,j))
274 zmax_m=
max(zmax_m,x(3,j))
275 xmin_m=
min(xmin_m,x(1,j))
276 ymin_m=
min(ymin_m,x(2,j))
277 zmin_m=
min(zmin_m,x(3,j))
293 mean_x=mean_x/
max((4*nrtm_l),1)
294 mean_y=mean_y/
max((4*nrtm_l),1)
295 mean_z=mean_z/
max((4*nrtm_l),1)
314 xmaxe=
max(xx1,xx2,xx3,xx4)
315 xmine=
min(xx1,xx2,xx3,xx4)
316 dev_x=dev_x+(xx1-mean_x)**2+(xx2-mean_x)**2
317 . +(xx3-mean_x)**2+(xx4-mean_x)**2
322 ymaxe=
max(yy1,yy2,yy3,yy4)
323 ymine=
min(yy1,yy2,yy3,yy4)
324 dev_y=dev_y+(yy1-mean_y)**2+(yy2-mean_y)**2
325 . +(yy3-mean_y)**2+(yy4-mean_y)**2
330 zmaxe=
max(zz1,zz2,zz3,zz4)
331 zmine=
min(zz1,zz2,zz3,zz4)
332 dev_z=dev_z+(zz1-mean_z)**2+(zz2-mean_z)**2
333 . +(zz3-mean_z)**2+(zz4-mean_z)**2
337 ix1=int(nbx*(xmine-tzinf_st-xmin)/(xmax-xmin))
338 iy1=int(nby*(ymine-tzinf_st
339 iz1=int(nbz*(zmine-tzinf_st-zmin)/(zmax-zmin))
343 ix2=int(nbx*(xmaxe+tzinf_st-xmin)/(xmax-xmin))
344 iy2=int(nby*(ymaxe+tzinf_st-ymin)/(
ymax-ymin))
345 iz2=int(nbz*(zmaxe+tzinf_st-zmin)/(zmax-zmin))
359 dev_x=sqrt(dev_x/
max(4*nrtm_l,1))
360 dev_y=sqrt(dev_y/
max(4*nrtm_l,1))
361 dev_z=sqrt(dev_z/
max(4*nrtm_l,1))
363 xminb=
max(mean_x-2*dev_x,xmin)
364 yminb=
max(mean_y-2*dev_y,ymin)
365 zminb=
max(mean_z-2*dev_z,zmin)
366 xmaxb=
min(mean_x+2*dev_x,xmax)
368 zmaxb=
min(mean_z+2*dev_z,zmax)
370 IF(abs(xminb-xmaxb) < em10)
THEN
374 IF(abs(yminb-ymaxb) < em10)
THEN
378 IF(abs(zminb-zmaxb) < em10)
THEN
397 . ((xmaxb-xminb)*(ymaxb-yminb)
398 . +(ymaxb-yminb)*(zmaxb-zminb)
399 . +(zmaxb-zminb)*(xmaxb-xminb)))
402 nbx = nint(aaa*(xmaxb-xminb))
403 nby = nint(aaa*(ymaxb-yminb))
404 nbz = nint(aaa*(zmaxb-zminb))
412 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
415 IF(res8 > lvoxel8)
THEN
417 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
419 nbx = int((nbx+2)*aaa)-2
420 nby = int((nby+2)*aaa)-2
421 nbz = int((nbz+2)*aaa)-2
430 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
432 IF(res8 > lvoxel8)
THEN
433 nbx =
min(ihundred,
max(nbx8,ione))
434 nby =
min(ihundred,
max(nby8,ione))
435 nbz =
min(ihundred,
max(nbz8,ione))
439 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
448 1 nsn ,i_mem ,irect ,x ,stf ,
450 3 ncontact ,noint ,tzinf_st ,gap_s_l ,gap_m_l ,
451 4
voxel1 ,nbx ,nby ,nbz ,nrtm_l ,
452 5 igap ,gap ,gap_s ,gap_m ,gapmin ,
453 6 gapmax ,marge_st,curv_max ,bgapsmx ,istf ,
455 8 id ,titr ,drad ,index ,
456 9 iremnode,flagremnode,kremnode,remnode,
457 1 dgapload,ipari,intbuf_tab,
458 2 iix,iiy,iiz,local_next_nod,nrtm,is_used_with_law151 )
470 ELSE IF(i_mem==2)
THEN
471 marge_st = three_over_4*marge_st
472 tzinf_st = marge_st +
max(gap,drad)
474 IF(marge_st<em03)
THEN
488 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER:',i_stok,
' (<=',
489 . 1+(i_stok-1)/nsn,
'*NSN)'
494 . msgtype=msgwarning,
495 . anmode=aninfo_blind_2,
502 DEALLOCATE( curv_max )
503 DEALLOCATE(local_next_nod)
subroutine i7buc_vox1(x, irect, nsv, bumult, nseg, nmn, nrtm, mwa, nsn, gap, xyzm, noint, i_stok, dist, tzinf, msr, stf, stfn, multimp, istf, iddlevel, itab, gap_s, gap_m, igap, gapmin, gapmax, inacti, gap_s_l, gap_m_l, i_mem, ncont, icurv, bgapsmx, id, titr, drad, intercep, nin, iremnode, flagremnode, kremnode, remnode, dgapload, npari, ipari, intbuf_tab, is_used_with_law151)
subroutine i7trivox1(nsn, i_mem, irect, x, stf, stfn, xyzm, nsv, mulnsn, noint, tzinf, gap_s_l, gap_m_l, voxel, nbx, nby, nbz, nrtm_l, igap, gap, gap_s, gap_m, gapmin, gapmax, marge, curv_max, bgapsmx, istf, i_stok, nin, id, titr, drad, index, iremnode, flagremnode, kremnode, remnode, dgapload, ipari, intbuf_tab, iix, iiy, iiz, local_next_nod, nrtm, is_used_with_law151)
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)