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, , NSN, NOINT,NRTS, NIN, NRTSR,
69 . ,IAUTO, I_MEM, ITASK
70 INTEGER IRECTS(2,*),IRECTM(2,*),ADDCM(*),CHAINE(2,*)
71 INTEGER CAND_M(*),(*),IFPEN(*),FLAGREMNODE,KREMNODE(*),REMNODE(*)
72 INTEGER ESHIFT,ILD,NB_N_B, NCONTACT, NCONT, ITAB(*),
76 . TZINF,MAXBOX,MINBOX,BMINMA(
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(*)
86 INTEGER I_ADD_MAX,ISZNSNR
87 parameter(i_add_max = 1001)
89 INTEGER I, I_ADD, MAXSIZ,
92 . xyzm(6,i_add_max-1), marge, aaa
94 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
114 maxsiz = 3*(
max(nrtm,nrts+nrtsr)+100)
127 xyzm(1,i_add) = bminma(4)
128 xyzm(2,i_add) = bminma(5)
129 xyzm(3,i_add) = bminma(6)
130 xyzm(4,i_add) = bminma(1)
131 xyzm(5,i_add) = bminma(2)
132 xyzm(6,i_add) = bminma(3)
147 marge = tzinf -
max(maxgap+dgapload,drad)
151 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
152 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
153 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
160 nbx = nint(aaa*(bminma(1)-bminma(4)))
161 nby = nint(aaa*(bminma(2)-bminma(5)))
162 nbz = nint(aaa*(bminma(3)-bminma(6)))
170 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
173 IF(res8 > lvoxel8)
THEN
175 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
177 nbx = int((nbx+2)*aaa)-2
178 nby = int((nby+2)*aaa)-2
179 nbz = int((nbz+2)*aaa)-2
186 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
190 IF(res8 > lvoxel8)
THEN
191 nbx =
min(100,
max(nbx8,1))
192 nby =
min(100,
max(nby8,1))
193 nbz =
min(100,
max(nbz8,1))
196 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
204 1 irects ,irectm ,x ,nrtm ,nrtsr ,
205 2 xyzm ,ii_stok ,cand_s ,cand_m ,ncontact,
206 3 noint ,tzinf ,i_mem ,eshift ,addcm ,
207 4 chaine ,nrts ,itab ,stifs ,stifm ,
208 5 iauto ,
voxel1 ,nbx ,nby ,nbz ,
209 6 itask ,ifpen ,iform ,gapmin ,drad ,
210 7 marge ,gap_s ,gap_m ,gap_s_l, gap_m_l,
211 8 bgapsmx, igap ,gap ,flagremnode,kremnode,
239 IF (i_mem == 2)
RETURN
243 IF ( nb_n_b >
max(nrtm,nrts))
THEN
244 CALL ancmsg(msgid=85,anmode=aninfo,
249 ELSEIF(i_mem==2)
THEN
253 WRITE(istdo,*)
' **WARNING INTERFACE/MEMORY'
254 WRITE(iout,*)
' **WARNING INTERFACE NB:',noint
255 WRITE(iout,*)
' TOO MANY POSSIBLE IMPACTS'
256 WRITE(iout,*)
' SIZE OF INFLUENCE ZONE IS'
257 WRITE(iout,*)
' MULTIPLIED BY 0.75'
258#include "lockoff.inc"
260 tzinf = three_over_4*tzinf
264 IF( tzinf<=
max(maxgap+dgapload,drad) )
THEN
265 CALL ancmsg(msgid=98,anmode=aninfo,
266 . i1=noint,c1=
'(I11BUCE)')
272 IF ( nb_n_b >
max(nrtm,nrts))
THEN
273 CALL ancmsg(msgid=99,anmode=aninfo,
274 . 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)