48
49
50
54
55
56
57
58#include "implicit_f.inc"
59#include "comlock.inc"
60
61
62
63#include "units_c.inc"
64#include "warn_c.inc"
65
66
67
68 INTEGER NMN, NRTM, NSN, NOINT,NRTS, NIN, NRTSR,
69 . IGAP,IAUTO, I_MEM, ITASK
70 INTEGER IRECTS(2,*),IRECTM(2,*),ADDCM(*),CHAINE(2,*)
71 INTEGER (*),CAND_S(*),IFPEN(*),FLAGREMNODE,KREMNODE(*),REMNODE(*)
72 INTEGER ESHIFT,ILD,NB_N_B, NCONTACT, NCONT, ITAB(*),
73 . IFORM,II_STOK
74
76 . tzinf,maxbox,minbox,bminma(6),bgapsmx
78 . maxgap,gapmin,gap
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(*)
83
84
85
86 INTEGER I_ADD_MAX,ISZNSNR
87 parameter(i_add_max = 1001)
88
89 INTEGER I, I_ADD, MAXSIZ,
90 . ADD(2,I_ADD_MAX)
92 . xyzm(6,i_add_max-1), marge, aaa
93 INTEGER NBX,NBY,NBZ
94 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 maxsiz = 3*(
max(nrtm,nrts+nrtsr)+100)
115
116
117
118
119
120
121
122 add(1,1) = 0
123 add(2,1) = 0
124 add(1,2) = 0
125 add(2,2) = 0
126 i_add = 1
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)
133 i_mem = 0
134
135 IF (iform /= 2) THEN
136 isznsnr = 0
137 DO i=1,nrtm
138 addcm(i)=0
139 ENDDO
140 ELSE
141 isznsnr = nrtsr
142 ENDIF
143
144
145
146
147 marge = tzinf -
max(maxgap+dgapload,drad)
148
149 IF( nmn /= 0 ) THEN
150 aaa = sqrt(nmn /
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))))
154 ELSE
155 aaa = 0
156 ENDIF
157
158 aaa = 0.75*aaa
159
160 nbx = nint(aaa*(bminma(1)-bminma(4)))
161 nby = nint(aaa*(bminma(2)-bminma(5)))
162 nbz = nint(aaa*(bminma(3)-bminma(6)))
166
167 nbx8=nbx
168 nby8=nby
169 nbz8=nbz
170 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
172
173 IF(res8 > lvoxel8)THEN
175 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
176 aaa = aaa**(third)
177 nbx = int((nbx+2)*aaa)-2
178 nby = int((nby+2)*aaa)-2
179 nbz = int((nbz+2)*aaa)-2
183 nbx8 = nbx
184 nby8 = nby
185 nbz8 = nbz
186 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
187 END IF
188
189
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))
194 END IF
195
196 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
198 ENDDO
200
201
202
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,
212 9 remnode,dgapload )
213
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239 IF (i_mem == 2) RETURN
240
241 IF(i_mem==1)THEN
242 nb_n_b = nb_n_b + 1
243 IF ( nb_n_b >
max(nrtm,nrts))
THEN
244 CALL ancmsg(msgid=85,anmode=aninfo,
245 . i1=noint)
247 ENDIF
248 ild = 1
249 ELSEIF(i_mem==2) THEN
250 IF(debug(1)>=1) THEN
251 iwarn = iwarn+1
252#include "lockon.inc"
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"
259 ENDIF
260 tzinf = three_over_4*tzinf
261
262
263
264 IF( tzinf<=
max(maxgap+dgapload,drad) )
THEN
265 CALL ancmsg(msgid=98,anmode=aninfo,
266 . i1=noint,c1='(I11BUCE)')
268 ENDIF
269 ild = 1
270 ELSEIF(i_mem==3)THEN
271 nb_n_b = nb_n_b + 1
272 IF ( nb_n_b >
max(nrtm,nrts))
THEN
273 CALL ancmsg(msgid=99,anmode=aninfo,
274 . i1=noint,c1='(I11BUCE)')
276 ENDIF
277 ild = 1
278 ENDIF
279
280 RETURN
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)
integer, dimension(lvoxel) voxel1
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)