38 1 X ,IRECT ,NSV ,BUMULT,NSEG ,
39 2 NMN ,NRTM ,MWA ,NSN ,CAND_E ,
40 3 CAND_N,GAP ,XYZM ,NOINT ,I_STOK ,
41 4 DIST ,TZINF,MAXBOX ,MINBOX,MSR ,
42 5 STF ,MULTIMP,ITAB ,GAP_S ,IGAP ,
43 6 GAPMIN ,GAPMAX,INACTI,NRTS ,IRECTS,
44 7 I_MEM ,IDDLEVEL ,ID,TITR ,GAP_M ,
45 8 PROV_N,PROV_E ,IX1,IX2,
46 9 IX3 ,IX4 ,NSVG ,X1 ,X2 ,
47 1 X3 ,X4 ,Y1 ,Y2 ,Y3 ,
48 2 Y4 ,Z1 ,Z2 ,Z3 ,Z4 ,
49 3 XI ,YI ,ZI ,X0 ,Y0 ,
50 4 Z0 ,NX1 ,NY1 ,NZ1,NX2,
51 5 NY2 ,NZ2 ,NX3 ,NY3,NZ3,
52 6 NX4 ,NY4 ,NZ4 ,P1 ,P2 ,
53 7 P3 ,P4 ,LB1 ,LB2,LB3,
54 8 LB4 ,LC1 ,LC2 ,LC3,LC4,
55 9 N11 ,N21 ,N31 ,PENE )
61#include "implicit_f.inc"
73#include "vect07_c.inc"
77 INTEGER NMN, NRTM, NSN, NOINT,I_STOK,MULTIMP,IGAP,INACTI,
78 . NRTS,I_MEM, IDDLEVEL
79 INTEGER IRECT(4,*),IRECTS(4,*),NSV(*),MSR(*),NSEG(*),MWA(*)
80 INTEGER CAND_E(*),CAND_N(*),MAXSIZ
84 . STF(*),X(3,*),XYZM(6,*),GAP_S(*),
85 . DIST,BUMULT,GAP,,MAXBOX,MINBOX,GAPMIN,GAPMAX,
88 CHARACTER(LEN=NCHARTITLE) :: TITR
89 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) :: PROV_N,PROV_E
90 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) :: IX1,IX2,IX3,IX4,NSVG
91 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
92 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
93 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Z1,Z2,Z3,Z4
94 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: XI,,ZI
95 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
96 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n11,n21,n31,pene
97 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
98 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
99 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
100 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
101 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
102 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3
103 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
107 INTEGER I, J, L, N1, N2, N3, N4, I_AMAX
108 INTEGER I_ADD, ADESTK, NB_NC, NB_EC, ADNSTK, IBID
109 INTEGER IP1, IP2, IP21, , IP31,J_STOK,I_BID,NB_N_B
116 . dd1,dd2,dd3,dd4,dd,dd0,xmin,ymin,zmin,tb,
117 . xmax,
ymax,zmax,minbox_st,maxbox_st,gapsmax,
118 . bid,tzinf_st,marge,marge_st
119 . xmax_m,ymax_m,zmax_m,xmin_m,ymin_m,zmin_m,
120 . xmax_s,ymax_s,zmax_s,xmin_s,ymin_s,zmin_s
135 dx1=(x(1,n1)-x(1,n2))
136 dy1=(x(2,n1)-x(2,n2))
137 dz1=(x(3,n1)-x(3,n2))
138 dd1=sqrt(dx1**2+dy1**2+dz1**2)
140 dx3=(x(1,n1)-x(1,n4))
141 dy3=(x(2,n1)-x(2,n4))
142 dz3=(x(3,n1)-x(3,n4))
143 dd2=sqrt(dx3**2+dy3**2+dz3**2)
145 dx4=(x(1,n3)-x(1,n2))
146 dy4=(x(2,n3)-x(2,n2))
147 dz4=(x(3,n3)-x(3,n2))
148 dd3=sqrt(dx4**2+dy4**2+dz4**2)
150 dx6=(x(1,n4)-x(1,n3))
151 dy6=(x(2,n4)-x(2,n3))
152 dz6=(x(3,n4)-x(3,n3))
153 dd4=sqrt(dx6**2+dy6**2+dz6**2)
154 dd=dd+ (dd1+dd2+dd3+dd4)
159 dd =
max(dd0,onep251*gap)
161 marge = sqrt(three)*bumult*dd
163 tzinf = marge + sqrt(three)*gap
165 marge_st = bmul0*sqrt(three)*dd
167 IF(iddlevel==0) marge_st = marge
168 tzinf_st = marge_st + sqrt(three)*gap
172 maxbox= half*(dd + 2*tzinf)
174 maxbox_st= half*(dd + 2*tzinf_st)
175 minbox_st= half*maxbox_st
191 xmin_m=
min(xmin_m,x(1,j))
192 ymin_m=
min(ymin_m,x(2,j))
193 zmin_m=
min(zmin_m,x(3,j))
194 xmax_m=
max(xmax_m,x(1,j))
195 ymax_m=
max(ymax_m,x(2,j))
196 zmax_m=
max(zmax_m,x(3,j))
208 xmin_s=
min(xmin_s,x(1,j))
209 ymin_s=
min(ymin_s,x(2,j))
210 zmin_s=
min(zmin_s,x(3,j))
211 xmax_s=
max(xmax_s,x(1,j))
212 ymax_s=
max(ymax_s,x(2,j))
213 zmax_s=
max(zmax_s,x(3,j))
216 xmin=
min(xmin_m-tzinf_st,xmin_s)
217 ymin=
min(ymin_m-tzinf_st,ymin_s)
218 zmin=
min(zmin_m-tzinf_st,zmin_s)
219 xmax=
max(xmax_m+tzinf_st,xmax_s)
220 ymax=
max(ymax_m+tzinf_st,ymax_s)
221 zmax=
max(zmax_m+tzinf_st,zmax_s)
251 maxsiz =
max(numnod,nrtm+100)
302 1 mwa(ip1),mwa(ip2),mwa(ip21),mwa(ip22),mwa(ip31+2*(i_add-2)),
303 2 irect ,x ,nb_nc ,nb_ec ,xyzm,
304 3 i_add ,nsv ,i_amax ,xmax ,
ymax,
305 4 zmax ,3*maxsiz,i_stok ,i_mem ,nb_n_b,
306 5 cand_n ,cand_e ,nsn ,noint ,tzinf_st ,
307 6 maxbox_st,minbox_st,j_stok ,msr ,
308 7 multimp ,itab ,gap ,gap_s ,igap ,
309 8 gapmin ,gapmax ,marge_st,id ,titr ,
310 9 gap_m ,prov_n,prov_e ,ix1,ix2,
311 1 ix3 ,ix4 ,nsvg ,x1 ,x2 ,
312 2 x3 ,x4 ,y1 ,y2 ,y3 ,
313 3 y4 ,z1 ,z2 ,z3 ,z4 ,
314 4 xi ,yi ,zi ,x0 ,y0 ,
315 5 z0 ,nx1 ,ny1 ,nz1,nx2,
316 6 ny2 ,nz2 ,nx3 ,ny3,nz3,
317 7 nx4 ,ny4 ,nz4 ,p1 ,p2 ,
318 8 p3 ,p4 ,lb1 ,lb2,lb3,
319 9 lb4 ,lc1 ,lc2 ,lc3,lc4,
320 1 n11 ,n21 ,n31 ,pene)
332 ELSE IF(i_mem==2)
THEN
333 marge_st = three_over_4*marge_st
334 tzinf_st = marge_st + sqrt(three)*gap
336 IF(marge_st<em03)
THEN
340 IF (istamping == 1)
THEN
356 IF(i_add/=0)
GO TO 200
363 CALL i23cor3t(x ,irect ,nsv ,prov_e ,prov_n,
364 2 gapv ,igap ,gap ,gap_s ,gapmin ,
365 3 gapmax,msr ,gap_m,ix1 ,ix2 ,
366 4 ix3 ,ix4 ,nsvg ,x1 ,x2 ,
367 5 x3 ,x4 ,y1 ,y2 ,y3 ,
368 6 y4 ,z1 ,z2 ,z3 ,z4 ,
371 CALL i7dst3(ix3,ix4,x1 ,x2 ,x3 ,
372 1 x4 ,y1 ,y2 ,y3 ,y4 ,
373 2 z1 ,z2 ,z3 ,z4 ,xi ,
374 3 yi ,zi ,x0 ,y0 ,z0 ,
375 4 nx1,ny1,nz1,nx2,ny2,
376 5 nz2,nx3,ny3,nz3,nx4,
377 6 ny4,nz4,p1 ,p2 ,p3 ,
378 7 p4 ,lb1,lb2,lb3,lb4,
379 8 lc1,lc2,lc3,lc4,llt)
381 CALL i7pen3(marge_st,gapv,n11,n21,n31,
382 1 pene ,nx1 ,ny1,nz1,nx2,
383 2 ny2 ,nz2 ,nx3,ny3,nz3,
387 IF(i_stok+j_stok<multimp*nsn)
THEN
388 CALL i7cmp3(i_stok,cand_e ,cand_n,1,pene,
392 CALL i7cmp3(i_bid,cand_e,cand_n,0,pene,
394 IF(i_stok+i_bid<multimp*nsn)
THEN
395 CALL i7cmp3(i_stok,cand_e,cand_n,1,pene,
400 marge_st = three_over_4*marge_st
401 tzinf_st = marge_st + gap
406 IF(marge_st<em03)
THEN
410 IF (istamping == 1)
THEN
430 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER:',i_stok,
' (<=',
431 . 1+(i_stok-1)/nsn,
'*NSN)'
435 . msgtype=msgwarning,
436 . anmode=aninfo_blind_2,
subroutine i23buc1(x, irect, nsv, bumult, nseg, nmn, nrtm, mwa, nsn, cand_e, cand_n, gap, xyzm, noint, i_stok, dist, tzinf, maxbox, minbox, msr, stf, multimp, itab, gap_s, igap, gapmin, gapmax, inacti, nrts, irects, i_mem, iddlevel, id, titr, gap_m, prov_n, prov_e, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, n11, n21, n31, pene)
subroutine i23tri(bpe, pe, bpn, pn, add, irect, x, nb_nc, nb_ec, xyzm, i_add, nsv, i_amax, xmax, ymax, zmax, maxsiz, i_stok, i_mem, nb_n_b, cand_n, cand_e, nsn, noint, tzinf, maxbox, minbox, j_stok, msr, multimp, itab, gap, gap_s, igap, gapmin, gapmax, marge, id, titr, gap_m, prov_n, prov_e, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, n11, n21, n31, pene)
subroutine i7dst3(ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, last)
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)