40 1 X ,IRECT,NSV ,BUMULT,NSEG ,
41 2 NMN ,NRTM ,MWA ,NSN ,CAND_E ,
42 3 CAND_N,GAP ,XYZM ,NOINT ,I_STOK ,
43 4 DIST ,TZINF,MAXBOX ,MINBOX,MSR ,
44 5 STF ,STFN ,MULTIMP,ISTF ,IDDLEVEL,
45 6 ITAB ,GAP_S,GAP_M ,IGAP ,GAPMIN ,
46 7 GAPMAX,INACTI,GAP_S_L,GAP_M_L,I_MEM ,
47 8 MARGE ,ID ,TITR ,NBINFLG,MBINFLG,
48 9 ILEV ,MSEGTYP,GAP_N ,MVOISN,IXS ,
49 A IXS10 ,IXS16 ,IXS20 ,IPARTNS,IPEN0 ,
50 B PENMAX,IRTSE ,IS2SE ,IS2PT ,XFIC ,
51 C NRTSE ,NSNE ,PROV_N ,PROV_E,NSVG ,
52 1 IX1,IX2,IX3,IX4,X1 ,
53 2 X2 ,X3 ,X4 ,Y1 ,Y2 ,
54 3 Y3 ,Y4 ,Z1 ,Z2 ,Z3 ,
55 4 Z4 ,XI ,YI ,ZI ,X0 ,
56 5 Y0 ,Z0 ,STIF,PENE,NX1,
57 6 NY1,NZ1,NX2,NY2,NZ2,
58 7 NX3,NY3,NZ3,NX4,NY4,
59 8 NZ4,P1 ,P2 ,P3 ,P4 ,
60 9 LB1,LB2,LB3,LB4,LC1,
61 1 LC2,LC3,LC4,N11,N21,
62 2 N31,DGAPLOAD,S_KREMNODE,S_REMNODE,
63 3 KREMNODE,REMNODE,FLAG_REMOVED_NODE)
74#include "implicit_f.inc"
84#include "vect07_c.inc"
89 INTEGER , NRTM, , NOINT,I_STOK,MULTIMP,ISTF,IGAP,
90 . INACTI,MVOISN(4,*),IPARTNS(*),IPEN0,IRTSE(*),
91 . IS2SE(*) ,IS2PT(*),NRTSE ,NSNE
92 INTEGER IRECT(4,*),NSV(*),NSEG(*),MWA(*)
93 INTEGER CAND_E(*),CAND_N(*),MSR(*),MAXSIZ,IDDLEVEL
94 INTEGER ITAB(*),NBINFLG(*),MBINFLG(*),ILEV,MSEGTYP(*)
95 INTEGER IXS(*), IXS10(6,*), IXS16(8,*), IXS20(12,*)
97 my_real ,
INTENT(IN) ::
99 . STF(*),STFN(*),X(3,*),XYZM(6,*),GAP_S(*),GAP_M(*),
100 . DIST,BUMULT,,TZINF,MAXBOX,MINBOX,GAPMIN,GAPMAX,
101 . GAP_S_L(*),GAP_M_L(*),MARGE,(12,*),PENMAX,XFIC(3,*)
103 LOGICAL,
INTENT(in) :: FLAG_REMOVED_NODE
104 INTEGER,
INTENT(in) :: S_KREMNODE
105 INTEGER,
INTENT(in) :: S_REMNODE
106 INTEGER,
DIMENSION(S_KREMNODE),
INTENT(in) :: KREMNODE
107 INTEGER,
DIMENSION(S_REMNODE),
INTENT(in) ::
108 CHARACTER(LEN=NCHARTITLE) :: TITR
109 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) ::PROV_N,PROV_E
110 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) :: IX1,IX2,IX3,IX4,NSVG
111 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,
112 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
113 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
114 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xi,yi,zi,stif
115 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
116 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: n11,n21,n31,pene
117 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
118 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
119 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
120 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
121 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
122 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
123 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
127 INTEGER I, J, , N1, N2, N3, N4, I_AMAX,I_MEM,N_SOL
128 INTEGER I_ADD, ADESTK, NB_NC, NB_EC, ADNSTK, IBID
129 INTEGER IP1, IP2, IP21, IP22, IP31,J_STOK,I_BID,NB_N_B,
130 + npt_e,nsn0,lwork,numnodt
137 . dd1,dd2,dd3,dd4,dd,dd0,xmin,ymin,zmin,
138 . xmax,
ymax,zmax,tzinf0,minbox0,maxbox0,gapsmax,
139 . bid,tzinf_st,marge_st,gapv(mvsiz),dd_st,d_max,pensol,d_moy
141 .
DIMENSION(:),
ALLOCATABLE :: iwork
143 .
DIMENSION(:,:),
ALLOCATABLE :: xten
144 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG_REMOVED_NODE
146 ALLOCATE( tag_removed_node(numnod) )
147 tag_removed_node(1:numnod) = 0
154 ALLOCATE(xten(3,numnodt))
156 xten(1:3,1:numnod) = x(1:3,1:numnod)
158 CALL i24xfic_ini(nrtse ,irtse ,nsne ,is2se ,is2pt ,
159 + nsn ,nsv ,x ,xfic ,npt_e )
160 xten(1:3,numnod+1:numnodt) = xfic(1:3,1:nsne)
161 maxsiz =
max(numnodt,nrtm+100)
170 ALLOCATE(iwork(lwork))
190 dx1=(x(1,n1)-x(1,n2))
191 dy1=(x(2,n1)-x(2,n2))
192 dz1=(x(3,n1)-x(3,n2))
193 dd1=sqrt(dx1**2+dy1**2+dz1**2)
195 dx3=(x(1,n1)-x(1,n4))
196 dy3=(x(2,n1)-x(2,n4))
197 dz3=(x(3,n1)-x(3,n4))
198 dd2=sqrt(dx3**2+dy3**2+dz3**2)
200 dx4=(x(1,n3)-x(1,n2))
201 dy4=(x(2,n3)-x(2,n2))
202 dz4=(x(3,n3)-x(3,n2))
203 dd3=sqrt(dx4**2+dy4**2+dz4**2)
205 dx6=(x(1,n4)-x(1,n3))
206 dy6=(x(2,n4)-x(2,n3))
207 dz6=(x(3,n4)-x(3,n3))
208 dd4=sqrt(dx6**2+dy6**2+dz6**2)
209 dd=dd+ (dd1+dd2+dd3+dd4)
211 IF (msegtyp(l)==0.OR.msegtyp(l)>nrtm)
THEN
212 d_max=
max(dd1,dd2,dd3,dd4)
213 d_max=
min(d_max,gap_n(1,l))
216 dd_st=
max(dd_st,d_max)
218 d_moy = d_moy + d_max
231 tzinf = marge + gap + dgapload
235 IF (inacti /=0 )
THEN
237 IF (penmax /= zero)
THEN
238 marge_st =
max(marge_st,penmax)
240 IF (iddlevel == 1
WRITE
247 pensol =
min(half*dd_st,pensol)
248 marge_st =
max(marge_st,pensol)
250 pensol =
max(pensol,half*gap)
253 IF (iddlevel == 1 )
WRITE(iout,2500) penmax
258 penmax =
max(pensol,gap)
261 IF(iddlevel==0) marge_st = marge
262 tzinf_st = marge_st + gap + dgapload
264 IF (inacti/=7.AND.tzinf>bid)
THEN
265 ibid = nint(tzinf/dd0)
266 ibid =(2*ibid+4)*ibid*2
270 maxbox= half*(dd + 2*tzinf)
289 xmin=
min(xmin,x(1,j))
290 ymin=
min(ymin,x(2,j))
291 zmin=
min(zmin,x(3,j))
292 xmax=
max(xmax,x(1,j))
294 zmax=
max(zmax,x(3,j))
304 xmin=
min(xmin,x(1,j))
305 ymin=
min(ymin,x(2,j))
306 zmin=
min(zmin,x(3,j))
307 xmax=
max(xmax,x(1,j))
309 zmax=
max(zmax,x(3,j))
376 maxsiz =
max(numnod,nrtm+100)
428 1 iwork(ip1),iwork(ip2),iwork(ip21),iwork(ip22),
429 + iwork(ip31+2*(i_add-2)),
430 2 irect ,xten ,nb_nc ,nb_ec ,xyzm ,
431 3 i_add ,nsv ,i_amax ,xmax ,
ymax ,
432 4 zmax ,3*maxsiz,i_stok ,i_mem ,nb_n_b ,
433 5 cand_n ,cand_e ,nsn ,noint ,tzinf_st ,
434 6 maxbox ,minbox ,stf ,stfn ,j_stok ,
435 7 multimp ,istf , itab ,gap ,gap_s ,
436 8 gap_m ,igap ,gapmin ,gapmax ,marge_st ,
437 9 gap_s_l,gap_m_l ,
id ,titr ,ilev ,
438 a nbinflg,mbinflg ,mvoisn ,ixs ,ixs10 ,
439 b ixs16 ,ixs20 ,ipartns ,ipen0 ,inacti ,
440 c msegtyp,marge ,nrtm ,irtse ,is2se ,
441 d ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
442 e x1 ,x2 ,x3 ,x4 ,y1 ,
443 f y2 ,y3 ,y4 ,z1 ,z2 ,
444 g z3 ,z4 ,xi ,yi ,zi ,
445 h x0 ,y0 ,z0 ,stif ,nx1 ,
446 i ny1 ,nz1 ,nx2 ,ny2 ,nz2 ,
447 j nx3 ,ny3 ,nz3 ,nx4 ,ny4 ,
448 k nz4 ,p1 ,p2 ,p3 ,p4 ,
449 l lb1 ,lb2 ,lb3 ,lb4 ,lc1 ,
450 m lc2 ,lc3 ,lc4 ,pene ,prov_n ,
451 n prov_e ,n11 ,n21 ,n31 ,dgapload,
452 o s_kremnode,s_remnode,kremnode,remnode,
453 p tag_removed_node,flag_removed_node)
457 1 mwa(ip1),mwa(ip2),mwa(ip21),mwa(ip22),mwa(ip31+2*(i_add-2)),
458 2 irect ,x ,nb_nc ,nb_ec ,xyzm ,
459 3 i_add ,nsv ,i_amax ,xmax ,
ymax ,
460 4 zmax ,3*maxsiz,i_stok ,i_mem ,nb_n_b ,
461 5 cand_n ,cand_e ,nsn ,noint ,tzinf_st ,
462 6 maxbox ,minbox ,stf ,stfn ,j_stok ,
463 7 multimp ,istf , itab ,gap ,gap_s ,
464 8 gap_m ,igap ,gapmin ,gapmax ,marge_st ,
465 9 gap_s_l,gap_m_l ,
id ,titr ,ilev ,
466 a nbinflg,mbinflg ,mvoisn ,ixs ,ixs10 ,
467 b ixs16 ,ixs20 ,ipartns ,ipen0 ,inacti ,
468 c msegtyp,marge ,nrtm ,irtse ,is2se ,
469 d ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
470 e x1 ,x2 ,x3 ,x4 ,y1 ,
471 f y2 ,y3 ,y4 ,z1 ,z2 ,
472 g z3 ,z4 ,xi ,yi ,zi ,
473 h x0 ,y0 ,z0 ,stif ,nx1 ,
474 i ny1 ,nz1 ,nx2 ,ny2 ,nz2 ,
475 j nx3 ,ny3 ,nz3 ,nx4 ,ny4 ,
476 k nz4 ,p1 ,p2 ,p3 ,p4 ,
477 l lb1 ,lb2 ,lb3 ,lb4 ,lc1 ,
478 m lc2 ,lc3 ,lc4 ,pene ,prov_n ,
479 n prov_e ,n11 ,n21 ,n31 ,dgapload,
480 o s_kremnode,s_remnode,kremnode,remnode,
481 p tag_removed_node,flag_removed_node)
485 IF (nsne >0)
DEALLOCATE(xten,iwork)
495 IF(i_add/=0)
GO TO 200
502 CALL i7cor3(xten ,irect,nsv ,prov_e ,prov_n,
503 . stf ,stfn ,gapv ,igap ,gap ,
504 . gap_s,gap_m,istf ,gapmin ,gapmax,
505 . gap_s_l,gap_m_l ,zero ,ix1 ,ix2 ,
506 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
507 6 x3 ,x4 ,y1 ,y2 ,y3 ,
508 7 y4 ,z1 ,z2 ,z3 ,z4 ,
509 8 xi ,yi ,zi ,stif ,dgapload,
512 CALL i7cor3(x ,irect,nsv ,prov_e ,prov_n,
513 . stf ,stfn ,gapv ,igap ,gap ,
514 . gap_s,gap_m,istf ,gapmin ,gapmax,
515 . gap_s_l,gap_m_l ,zero ,ix1 ,ix2 ,
516 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
517 6 x3 ,x4 ,y1 ,y2 ,y3 ,
518 7 y4 ,z1 ,z2 ,z3 ,z4 ,
519 8 xi ,yi ,zi ,stif ,dgapload,
522 CALL i7dst3(ix3,ix4,x1 ,x2 ,x3 ,
523 1 x4 ,y1 ,y2 ,y3 ,y4 ,
524 2 z1 ,z2 ,z3 ,z4 ,xi ,
525 3 yi ,zi ,x0 ,y0 ,z0 ,
526 4 nx1,ny1,nz1,nx2,ny2,
527 5 nz2,nx3,ny3,nz3,nx4,
528 6 ny4,nz4,p1 ,p2 ,p3 ,
529 7 p4 ,lb1,lb2,lb3,lb4,
530 8 lc1,lc2,lc3,lc4,j_stok)
532 CALL i7pen3(marge_st,gapv,n11,n21,n31,
533 1 pene ,nx1 ,ny1,nz1,nx2,
534 2 ny2 ,nz2 ,nx3,ny3,nz3,
535 3 nx4 ,ny4 ,nz4,p1 ,p2 ,
538 IF (ilev==2)
CALL i24s1s2(prov_n,prov_e,nbinflg,mbinflg,pene)
539 IF(i_stok+j_stok<multimp*nsn)
THEN
540 CALL i7cmp3(i_stok,cand_e ,cand_n,1,pene,
544 CALL i7cmp3(i_bid,cand_e,cand_n,0,pene,
546 IF(i_stok+i_bid<multimp*nsn)
THEN
547 CALL i7cmp3(i_stok,cand_e,cand_n,1,pene,
551 IF (nsne >0)
DEALLOCATE(xten,iwork)
560 WRITE(iout,*)
' POSSIBLE IMPACT NUMBER, NSN:',i_stok,nsn
564 . msgtype=msgwarning,
565 . anmode=aninfo_blind_2,
579 2400
FORMAT(2x,/,
'USER-DEFINED(IPEN_MAX)SEARCHING DISTANCE FOR INITIAL PENETRATIONS ',
580 + 1pg20.13,
'IS USED',/)
581 2500
FORMAT(2x,/,
'COMPUTED SEARCHING DISTANCE FOR INITIAL PENETRATIONS ',1pg20.13,
586 IF (nsne >0)
DEALLOCATE(xten,iwork)
587 DEALLOCATE( tag_removed_node )
subroutine i24buc1(x, irect, nsv, bumult, nseg, nmn, nrtm, mwa, nsn, cand_e, cand_n, gap, xyzm, noint, i_stok, dist, tzinf, maxbox, minbox, msr, stf, stfn, multimp, istf, iddlevel, itab, gap_s, gap_m, igap, gapmin, gapmax, inacti, gap_s_l, gap_m_l, i_mem, marge, id, titr, nbinflg, mbinflg, ilev, msegtyp, gap_n, mvoisn, ixs, ixs10, ixs16, ixs20, ipartns, ipen0, penmax, irtse, is2se, is2pt, xfic, nrtse, nsne, prov_n, prov_e, nsvg, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, stif, pene, 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, dgapload, s_kremnode, s_remnode, kremnode, remnode, flag_removed_node)
subroutine i24tri(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, stf, stfn, j_stok, multimp, istf, itab, gap, gap_s, gap_m, igap, gapmin, gapmax, marge, gap_s_l, gap_m_l, id, titr, ilev, nbinflg, mbinflg, mvoisn, ixs, ixs10, ixs16, ixs20, ipartns, ipen0, inacti, msegtyp, marge_sh, nrtm, irtse, is2se, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, stif, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, pene, prov_n, prov_e, n11, n21, n31, dgapload, s_kremnode, s_remnode, kremnode, remnode, tag_removed_node, flag_removed_node)