38 1 X ,IRECTS ,IRECTM ,NRTS ,NMN ,
39 2 NRTM ,NSN ,CAND_M ,CAND_S ,MAXGAP ,
40 3 NOINT ,II_STOK ,TZINF ,MAXBOX ,MINBOX ,
41 4 NB_N_B ,ESHIFT ,ILD ,BMINMA ,NCONTACT,
42 6 ADDCM ,CHAINE ,NIN ,ITAB ,NRTSR ,
43 7 NCONT ,GAP_S , STIFS ,PENIS ,IGAP ,
44 8 STIFM ,IAUTO , I_MEM ,ITASK ,IFORM ,
45 9 IFPEN ,DRAD , GAP_M , GAP_S_L,
46 1 GAP_M_L ,GAPMIN, BGAPSMX, GAP,
47 2 FLAGREMNODE,KREMNODE,REMNODE,DGAPLOAD)
58#include "implicit_f.inc"
68 INTEGER NMN, NRTM, NSN, NOINT,IDT,NRTS, NIN, NRTSR,
69 . IGAP,IAUTO, I_MEM, ITASK
70 INTEGER IRECTS(2,*),IRECTM(2,*),ADDCM(*),CHAINE(2,*)
71 INTEGER CAND_M(*),CAND_S(*),IFPEN(*),FLAGREMNODE,KREMNODE(*),REMNODE(*)
72 INTEGER ESHIFT,ILD,NB_N_B, NCONTACT, NCONT, ITAB(*),
76 . TZINF,MAXBOX,MINBOX,BMINMA(6),BGAPSMX
79 my_real ,
INTENT(IN) :: dgapload,drad
81 . x(3,*),stifs(*),penis(2,*),stifm(*),
82 . gap_s(*),gap_m(*),gap_s_l(*),gap_m_l(*)
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
94 . dd,dd1,marge_st,dx1,dy1,dz1
96 INTEGER NB_OLD(2,I_ADD_MAX+1)
98 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
118 maxsiz = 3*(
max(nrtm,nrts+nrtsr)+100)
131 xyzm(1,i_add) = bminma(4)
132 xyzm(2,i_add) = bminma(5)
133 xyzm(3,i_add) = bminma(6)
134 xyzm(4,i_add) = bminma(1)
135 xyzm(5,i_add) = bminma(2)
136 xyzm(6,i_add) = bminma(3)
151 marge = tzinf -
max(maxgap+dgapload,drad)
155 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
156 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
157 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
164 nbx = nint(aaa*(bminma(1)-bminma(4)))
165 nby = nint(aaa*(bminma(2)-bminma(5)))
166 nbz = nint(aaa*(bminma(3)-bminma(6)))
174 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
177 IF(res8 > lvoxel8)
THEN
179 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
181 nbx = int((nbx+2)*aaa)-2
182 nby = int((nby+2)*aaa)-2
183 nbz = int((nbz+2)*aaa)-2
190 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
194 IF(res8 > lvoxel8)
THEN
195 nbx =
min(100,
max(nbx8,1))
196 nby =
min(100,
max(nby8,1))
197 nbz =
min(100,
max(nbz8,1))
200 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
208 1 irects ,irectm ,x ,nrtm ,nrtsr ,
209 2 xyzm ,ii_stok ,cand_s ,cand_m ,ncontact,
210 3 noint ,tzinf ,i_mem ,eshift ,addcm ,
211 4 chaine ,nrts ,itab ,stifs ,stifm ,
212 5 iauto ,
voxel1 ,nbx ,nby ,nbz ,
213 6 itask ,ifpen ,iform ,gapmin ,drad ,
214 7 marge ,gap_s ,gap_m ,gap_s_l, gap_m_l,
215 8 bgapsmx, igap ,gap ,flagremnode,kremnode,
245 IF (i_mem == 2)
RETURN
249 IF ( nb_n_b >
max(nrtm,nrts))
THEN
250 CALL ancmsg(msgid=85,anmode=aninfo,
255 ELSEIF(i_mem==2)
THEN
259 WRITE(istdo,*)
' **WARNING INTERFACE/MEMORY'
260 WRITE(iout,*)
' **WARNING INTERFACE NB:',noint
261 WRITE(iout,*)
' TOO MANY POSSIBLE IMPACTS'
262 WRITE(iout,*)
' SIZE OF INFLUENCE ZONE IS'
263 WRITE(iout,*)
' MULTIPLIED BY 0.75'
264#include "lockoff.inc"
266 tzinf = three_over_4*tzinf
270 IF( tzinf<=
max(maxgap+dgapload,drad) )
THEN
271 CALL ancmsg(msgid=98,anmode=aninfo,
272 . i1=noint,c1=
'(I11BUCE)')
278 IF ( nb_n_b >
max(nrtm,nrts))
THEN
279 CALL ancmsg(msgid=99,anmode=aninfo,
280 . i1=noint,c1=
'(I11BUCE)')
subroutine i11buce_vox(x, irects, irectm, nrts, nmn, nrtm, nsn, cand_m, cand_s, maxgap, noint, ii_stok, tzinf, maxbox, minbox, nb_n_b, eshift, ild, bminma, ncontact, addcm, chaine, nin, itab, nrtsr, ncont, gap_s, stifs, penis, igap, stifm, iauto, i_mem, itask, iform, ifpen, drad, gap_m, gap_s_l, gap_m_l, gapmin, bgapsmx, gap, flagremnode, kremnode, remnode, dgapload)
subroutine i11trivox(irects, irectm, x, nrtm, nrtsr, xyzm, ii_stok, cand_s, cand_m, nsn4, noint, tzinf, i_mem, eshift, addcm, chaine, nrts, itab, stfs, stfm, iauto, voxel, nbx, nby, nbz, itask, ifpen, iform, gapmin, drad, marge, gap_s, gap_m, gap_s_l, gap_m_l, bgapsmx, igap, gap, flagremnode, kremnode, remnode, dgapload)
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)