37 1 X ,IRECTS ,IRECTM ,NRTS ,NMN ,
38 2 NRTM ,NSN ,CAND_M ,CAND_S ,MAXGAP ,
39 3 NOINT ,II_STOK ,TZINF ,MAXBOX ,MINBOX ,
40 4 NCONTACT, MULTIMP, MSR,
41 5 ADDCM ,CHAINE ,ITAB, NSV ,
42 6 IAUTO , I_MEM ,ID,TITR,IDDLEVEL,BUMULT ,
43 7 DRAD,INTERCEP ,IGAP ,GAP_S , GAP_M ,
44 8 GAP_S_L,GAP_M_L ,GAPMIN ,FLAGREMNODE,KREMNODE,
57#include "implicit_f.inc"
67 INTEGER NMN, NRTM, NSN, NOINT,IDT,NRTS,IDDLEVEL,
69 INTEGER IRECTS(2,*),IRECTM(2,*),ADDCM(*),CHAINE(2,*)
70 INTEGER CAND_M(*),CAND_S(*)
71 INTEGER NCONTACT, ITAB(*),MSR(*),NSV(*),
72 . II_STOK,MULTIMP,FLAGREMNODE,KREMNODE(*),REMNODE(*)
75 . BUMULT,MAXGAP,GAPMIN,TZINF,MAXBOX,MINBOX,DRAD
76 my_real ,
INTENT(IN) :: dgapload
79 . gap_s(*), gap_m(*), gap_s_l(*), gap_m_l(*)
81 CHARACTER(LEN=NCHARTITLE) :: TITR
82 TYPE(INTERSURFP) :: INTERCEP(3,NINTER)
87 PARAMETER (I_ADD_MAX = 1001)
89 INTEGER I, J, N1, N2, I_ADD, MAXSIZ,JJ,
92 . xyzm(6,i_add_max-1), marge, aaa
93 INTEGER NB_OLD(2,I_ADD_MAX+1)
95 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,
96 INTEGER (KIND=8) :: IONE,IHUNDRED
99 my_real :: XMAX,YMAX,ZMAX
100 my_real :: xmin,ymin,zmin,xtmp
102 my_real :: dd,dx1,dy1,dz1,dd1,marge_st,tzinf_st
125 maxsiz = 3*(
max(nrtm,nrts)+100)
175 dx1=(x(1,n1)-x(1,n2))
176 dy1=(x(2,n1)-x(2,n2))
177 dz1=(x(3,n1)-x(3,n2))
178 dd1=sqrt(dx1**2+dy1**2+dz1**2)
186 dx1=(x(1,n1)-x(1,n2))
187 dy1=(x(2,n1)-x(2,n2))
188 dz1=(x(3,n1)-x(3,n2))
189 dd1=sqrt(dx1**2+dy1**2+dz1**2)
198 tzinf = marge +
max(maxgap+dgapload,drad)
204 IF(iddlevel==0) marge_st = marge
205 tzinf_st = marge_st +
max(maxgap+dgapload,drad)
217 xmin=
min(xmin,x(1,j))
218 ymin=
min(ymin,x(2,j))
219 zmin=
min(zmin,x(3,j))
220 xmax=
max(xmax,x(1,j))
221 ymax=
max(ymax,x(2,j))
222 zmax=
max(zmax,x(3,j))
248 bminma(1) =
max(bminma(1),xmax)
249 bminma(2) =
max(bminma(2),ymax)
250 bminma(3) =
max(bminma(3),zmax)
251 bminma(4) =
min(bminma(4),xmin)
252 bminma(5) =
min(bminma(5),ymin)
253 bminma(6) =
min(bminma(6),zmin)
260 xyzm(1,i_add) = bminma(4)
261 xyzm(2,i_add) = bminma(5)
262 xyzm(3,i_add) = bminma(6)
263 xyzm(4,i_add) = bminma(1)
264 xyzm(5,i_add) = bminma(2)
265 xyzm(6,i_add) = bminma(3)
270 aaa = sqrt(1.0d0* nmn /
271 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
272 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
273 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
277 nbx = nint(aaa*(bminma(1)-bminma(4)))
278 nby = nint(aaa*(bminma(2)-bminma(5)))
279 nbz = nint(aaa*(bminma(3)-bminma(6)))
287 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
290 IF(res8 > lvoxel8)
THEN
292 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
294 nbx = int((nbx+2)*aaa)-2
295 nby = int((nby+2)*aaa)-2
296 nbz = int((nbz+2)*aaa)-2
303 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
306 IF(res8 > lvoxel8)
THEN
307 nbx =
min(ihundred,
max(nbx8,ione))
308 nby =
min(ihundred,
max(nby8,ione))
309 nbz =
min(ihundred,
max(nbz8,ione))
320 1 irects ,irectm ,x ,nrtm ,
321 2 xyzm ,ii_stok ,cand_s ,cand_m , nsn,
322 3 noint ,tzinf_st,i_mem ,addcm
323 4 chaine ,nrts ,itab ,multimp,
324 5 iauto ,
voxel1 ,nbx ,nby ,nbz ,
325 7 gapmin ,drad ,marge_st,gap_s ,gap_m ,
326 8 gap_s_l ,gap_m_l ,igap ,flagremnode,kremnode,
333 IF (i_mem == 2)
RETURN
334 IF(i_mem ==1 .OR. i_mem == 3)
THEN
336 IF ( nb_n_b >
max(nrtm,nrts))
THEN
347 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER:',ii_stok,
' (<=',
348 . 1+(ii_stok-1)/nsn,
'*NSN)'
351 . msgtype=msgwarning,
352 . anmode=aninfo_blind_2,
383 1 X ,IRECTM,IRECTS,BUMULT,NRTS,
384 2 NMN ,NRTM ,MWA ,NSN ,CAND_M,
385 3 CAND_S,GAP ,XYZM ,NOINT ,I_STOK,
386 4 DIST ,TZINF,MAXBOX,MINBOX,MSR ,
387 5 NSV ,MULTIMP,ADDCM,CHAINE,I_MEM,
388 6 ID,TITR,IDDLEVEL,DRAD,IT19)
404#include "implicit_f.inc"
408#include "mvsiz_p.inc"
412#include "units_c.inc"
413#include "scr06_c.inc"
417 INTEGER NMN, NRTM, NSN, NOINT,I_STOK,NRTS,MULTIMP,MAXSIZ,I_MEM
418 INTEGER IRECTS(2,*),IRECTM(2,*),MWA(*)
419 INTEGER CAND_M(*),CAND_S(*),MSR(*),NSV(*),ADDCM(*),CHAINE(2,*),
420 * II_STOK, IDDLEVEL, IT19
422 . X(3,*),XYZM(6,*),DIST,
423 . BUMULT,GAP,TZINF,MAXBOX,MINBOX,DRAD
425 CHARACTER(LEN=NCHARTITLE) :: TITR
430 PARAMETER (I_ADD_MAX = 1001)
432 INTEGER PROV_S(2*MVSIZ),PROV_M(2*MVSIZ)
433 INTEGER I, J, L, N1, N2, N3, N4, I_AMAX,IADFIN
434 INTEGER I_ADD, ADESTK, NB_NC, NB_EC, ADNSTK,ISTOP, IBID
435 INTEGER , IP2, IP21, IP22, IP31,J_STOK,I_BID,NB_N_B,
443 . dd1,dd2,dd3,dd4,dd,xmin,ymin,zmin,
444 . xmax,
ymax,zmax,tzinf0,minbox0,maxbox0,
445 . bid,marge,tzinf_st,marge_st
457 dx1=(x(1,n1)-x(1,n2))
458 dy1=(x(2,n1)-x(2,n2))
459 dz1=(x(3,n1)-x(3,n2))
460 dd1=sqrt(dx1**2+dy1**2+dz1**2)
468 dx1=(x(1,n1)-x(1,n2))
469 dy1=(x(2,n1)-x(2,n2))
470 dz1=(x(3,n1)-x(3,n2))
471 dd1=sqrt(dx1**2+dy1**2+dz1**2)
480 tzinf = marge +
max(gap,drad)
492 IF(iddlevel==0) marge_st = marge
493 tzinf_st = marge_st +
max(gap,drad)
514 xmin=
min(xmin,x(1,j))
515 ymin=
min(ymin,x(2,j))
516 zmin=
min(zmin,x(3,j))
517 xmax=
max(xmax,x(1,j))
519 zmax=
max(zmax,x(3,j))
564 maxsiz = 3*(
max(nrtm,nrts)+100)
617 1 mwa(ip1),mwa(ip2),mwa(ip21),mwa(ip22),add,
618 2 irects ,x ,nb_nc ,nb_ec ,xyzm,
619 3 i_add ,irectm ,i_amax ,istop ,
620 4 maxsiz ,i_stok ,i_mem ,nb_n_b ,iadfin,
621 5 cand_s ,cand_m ,nsn ,noint ,tzinf_st,
622 6 maxbox ,minbox ,j_stok ,addcm ,chaine,
623 7 prov_s ,prov_m ,ii_stok ,multimp,id,titr)
625 IF (i_mem == 2)
RETURN
633 IF(i_add/=0)
GO TO 200
641 1 j_stok,irects,irectm,x ,ii_stok,
642 2 cand_s,cand_m,nsn ,noint ,tzinf_st,
643 3 i_mem ,prov_s,prov_m,multimp,addcm,
645 IF (i_mem == 2)
RETURN
648 IF ((nsn/=0).AND.(it19==0))
THEN
649 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER:',i_stok,
' (<=',
650 . 1+(i_stok-1)/nsn,
'*NSN)'
658 . msgtype=msgwarning,
659 . anmode=aninfo_blind_2,
subroutine i11buc1(x, irectm, irects, bumult, nrts, nmn, nrtm, mwa, nsn, cand_m, cand_s, gap, xyzm, noint, i_stok, dist, tzinf, maxbox, minbox, msr, nsv, multimp, addcm, chaine, i_mem, id, titr, iddlevel, drad, it19)
subroutine i11buc_vox1(x, irects, irectm, nrts, nmn, nrtm, nsn, cand_m, cand_s, maxgap, noint, ii_stok, tzinf, maxbox, minbox, ncontact, multimp, msr, addcm, chaine, itab, nsv, iauto, i_mem, id, titr, iddlevel, bumult, drad, intercep, igap, gap_s, gap_m, gap_s_l, gap_m_l, gapmin, flagremnode, kremnode, remnode, dgapload)
subroutine i11trivox1(irects, irectm, x, nrtm, xyzm, ii_stok, cand_s, cand_m, nsn, noint, tzinf, i_mem, addcm, iadfin, chaine, nrts, itab, multimp, iauto, voxel, nbx, nby, nbz, gapmin, drad, marge, gap_s, gap_m, gap_s_l, gap_m_l, igap, flagremnode, kremnode, remnode, dgapload)
subroutine i11tri(bpe, pe, bpn, pn, add, irects, x, nb_sc, nb_mc, xyzm, i_add, irectm, i_amax, istop, maxsiz, i_stok, i_mem, nb_n_b, iadfin, cand_s, cand_m, nsn, noint, tzinf, maxbox, minbox, j_stok, addcm, chaine, prov_s, prov_m, ii_stok, multimp, id, titr)
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)