46
47
48
51
52
53
54#include "implicit_f.inc"
55#include "comlock.inc"
56
57
58
59#include "com01_c.inc"
60#include "units_c.inc"
61#include "warn_c.inc"
62
63
64
65 INTEGER NRTM, NSN, NOINT, INACTI, NIN, NSNR, NSNROLD, NMN, ITASK
66 INTEGER IRECT(4,*), NSV(*), NUM_IMP, IRECTG(4,*)
67 INTEGER CAND_E(*),CAND_N(*),MSR(*),MWAG(*),RENUM(*),IFPEN(*)
68 INTEGER NCONTACT,ESHIFT,ILD,NB_N_B, I_MEM,IGAP,ICURV,NCONT,
69 . WEIGHT(*),II_STOK
70 INTEGER, INTENT(IN) :: INTHEAT
71 INTEGER, INTENT(IN) :: IDT_THERM
72 INTEGER, INTENT(IN) :: NODADT_THERM
73
75 . gap,tzinf,maxbox,minbox,
76 . gapmin, gapmax, bminma(6),curv_max(nrtm), bgapsmx
78 . x(3,*), stfn(*), stf(*), gap_s(*), gap_m(*),
79 . cand_p(*)
80
81
82
83 INTEGER I_ADD_MAX
84 parameter(i_add_max = 1001)
85
86 INTEGER I, I_ADD, IP0, IP1, MAXSIZ,
87 . ADD(2,I_ADD_MAX), ISZNSNR
88
90 . xyzm(6,i_add_max-1), marge, aaa
91
92
93
94
95
96
97
98 INTEGER NBX,NBY,NBZ
99 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 maxsiz = 3*(nrtm+100)
118
119 ip0 = 1
120 ip1 = ip0 + nsn + nsnrold + 3
121
122
123
124
125
126
127
128 add(1,1) = 0
129 add(2,1) = 0
130 add(1,2) = 0
131 add(2,2) = 0
132 i_add = 1
133
134
135
136 xyzm(1,i_add) = bminma(4)
137 xyzm(2,i_add) = bminma(5)
138 xyzm(3,i_add) = bminma(6)
139 xyzm(4,i_add) = bminma(1)
140 xyzm(5,i_add) = bminma(2)
141 xyzm(6,i_add) = bminma(3)
142 i_mem = 0
143
144 isznsnr = nsnr
145
146
147
148
149
150 marge = tzinf - sqrt(three)*gap
151
152
153
154
155
156
157
158
159
160
161
162
163 aaa = sqrt(nmn /
164 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
165 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
166 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
167
168 aaa = 0.75*aaa
169
170 nbx = nint(aaa*(bminma(1)-bminma(4)))
171 nby = nint(aaa*(bminma(2)-bminma(5)))
172 nbz = nint(aaa*(bminma(3)-bminma(6)))
176
177 nbx8=nbx
178 nby8=nby
179 nbz8=nbz
180 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
182
183 IF(res8 > lvoxel8) THEN
185 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
186 aaa = aaa**(third)
187 nbx = int((nbx+2)*aaa)-2
188 nby = int((nby+2)*aaa)-2
189 nbz = int((nbz+2)*aaa)-2
193 ENDIF
194
195 nbx8=nbx
196 nby8=nby
197 nbz8=nbz
198 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
199
200 IF(res8 > lvoxel8) THEN
201 nbx =
min(100,
max(nbx8,1))
202 nby =
min(100,
max(nby8,1))
203 nbz =
min(100,
max(nbz8,1))
204 ENDIF
205
206
207
208 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
210 ENDDO
212
214 1 nsn ,renum ,nsnr ,isznsnr ,i_mem ,
215 2 irect ,x ,stf ,stfn ,xyzm ,
216 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
217 4 ncontact,noint ,tzinf ,msr ,
219 6 inacti ,mwag(ip0),cand_p ,ifpen ,
220 7 nrtm ,nsnrold ,igap ,gap ,gap_s ,
221 8 gap_m ,gapmin ,gapmax ,marge ,curv_max,
222 9 nin ,itask ,bgapsmx ,intheat,idt_therm,nodadt_therm)
223
224
225
226
227
228 IF (i_mem ==2) RETURN
229 IF(i_mem==1)THEN
230 nb_n_b = nb_n_b + 1
231 IF ( nb_n_b > nsn) THEN
232 IF (istamping == 1)THEN
233 CALL ancmsg(msgid=101,anmode=aninfo,
234 . i1=noint,i2=noint)
235 ELSE
236 CALL ancmsg(msgid=85,anmode=aninfo,
237 . i1=noint)
238 ENDIF
240 ENDIF
241 ild = 1
242 ELSEIF(i_mem==2) THEN
243 IF(debug(1)>=1) THEN
244 iwarn = iwarn+1
245#include "lockon.inc"
246 WRITE(istdo,*)' **WARNING INTERFACE/MEMORY'
247 WRITE(iout,*)' **WARNING INTERFACE NB:',noint
248 WRITE(iout,*)' TOO MANY POSSIBLE IMPACTS'
249 WRITE(iout,*)' SIZE OF INFLUENCE ZONE IS'
250 WRITE(iout,*)' MULTIPLIED BY 0.75'
251#include "lockoff.inc"
252 ENDIF
253 RETURN
254 tzinf = three_over_4*tzinf
255
256
257
258 IF( tzinf<=gap ) THEN
259 CALL ancmsg(msgid=98,anmode=aninfo,
260 . i1=noint,c1='(I23BUCE)')
262 ENDIF
263 ild = 1
264 ELSEIF(i_mem==3)THEN
265 nb_n_b = nb_n_b + 1
266 IF ( nb_n_b > ncont) THEN
267 CALL ancmsg(msgid=100,anmode=aninfo,
268 . i1=noint)
270 ENDIF
271 ild = 1
272 ENDIF
273
274 RETURN
subroutine i23trivox(nsn, renum, nsnr, isznsnr, i_mem, irect, x, stf, stfn, xyzm, nsv, ii_stok, cand_n, eshift, cand_e, mulnsn, noint, tzinf, msr, voxel, nbx, nby, nbz, inacti, cand_a, cand_p, ifpen, nrtm, nsnrold, igap, gap, gap_s, gap_m, gapmin, gapmax, marge, curv_max, nin, itask, bgapsmx, intheat, idt_therm, nodadt_therm)
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)