46
47
48
50 USE intbufdef_mod
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72#include "implicit_f.inc"
73
74
75
76#include "mvsiz_p.inc"
77
78
79
80#include "com04_c.inc"
81#include "com08_c.inc"
82#include "param_c.inc"
83#include "task_c.inc"
84#include "warn_c.inc"
85
86
87
88 INTEGER NIN,ITASK ,N_MUL_MX ,NKMAX ,
89 . NB_JLT,,NB_STOK_N,NEWFRONT
90 INTEGER IPARI(NPARI,NINTER), KINET(*),
91 . IADLL(*) ,LLL(*) ,JLL(*) ,SLL(*) ,ICONTACT(*),
92 . ITAB(*), INDEX2(*), ITAG(*), COMNTAG(*)
93
95 . x(3,*), v(3,*), a(3,*), ms(*),
96 . xll(*), xtag(*)
97
98 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
99
100
101
102 INTEGER I_STOK_GLOB,NSN,NME,NAD,EAD,
103 . NME_T,ESH_T,IGN,IGE,MULTIMP,NOINT,I,MX_CAND,NTY,IVIS2,
104 . IGAP,INACTI,IBAG,I_STOK, I_STOK_LOC, JLT_NEW,
105 . JLT, NFT,DEBUT,NBID,NB_LOC,JTASK, IGSTI,ICURV,IADM
106 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
107 . NSVG(MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
108 . CAND_N_N(MVSIZ),CAND_E_N(MVSIZ),KINI(MVSIZ),IBID
109
111 . startt, stopt,gap,gapmin,maxbox,minbox,bid,
112 . kmin, kmax, gapmax
114 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
115 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
116 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
117 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
118 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
119 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz),
120 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
121 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
122 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
123 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
124 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
125 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
126 . gapv(mvsiz),vxi(mvsiz),vyi
128 . nnx1(mvsiz), nnx2(mvsiz), nnx3(mvsiz), nnx4(mvsiz),
129 . nny1(mvsiz), nny2(mvsiz), nny3(mvsiz), nny4(mvsiz),
130 . nnz1(mvsiz), nnz2(mvsiz), nnz3(mvsiz), nnz4(mvsiz),
131 . cmaj(mvsiz)
133 . drad, drad2
134
135
136
137 IF(ipari(33,nin)==0)RETURN
138
140
141 DO i = itask+1,numnod,nthread
142 itag(i) = 0
143 xtag(i) = zero
144 ENDDO
145
147
148 jtask=itask+1
149
150 nbid=0
151 bid=zero
152 ibid = 0
153
154 nsn =ipari(5,nin)
155 nty =ipari(7,nin)
156 ivis2 =ipari(14,nin)
157 noint =ipari(15,nin)
158 igap =ipari(21,nin)
159 inacti=ipari(22,nin)
160 ibag =ipari(32,nin)
161 igsti=ipari(34,nin)
162 icurv =0
163 iadm =ipari(44,nin)
164 startt=intbuf_tab(nin)%VARIABLES(3)
165 stopt =intbuf_tab(nin)%VARIABLES(11)
166 IF(startt>tt) RETURN
167 IF(tt>stopt) RETURN
168 gap =intbuf_tab(nin)%VARIABLES(2)
169 gapmin=intbuf_tab(nin)%VARIABLES(13)
170
171
172
173 i_stok = intbuf_tab(nin)%I_STOK(1)
174 maxbox = intbuf_tab(nin)%VARIABLES(9)
175 minbox = intbuf_tab(nin)%VARIABLES(12)
176 gapmax=intbuf_tab(nin)%VARIABLES(16)
177 kmin =intbuf_tab(nin)%VARIABLES(17)
178 kmax =intbuf_tab(nin)%VARIABLES(18)
179 drad = zero
180 drad2 = zero
181 IF(nty==7)THEN
182 drad = intbuf_tab(nin)%VARIABLES(32)
183 drad2 = drad*drad
184 ENDIF
185
186
187 nb_loc = i_stok / nthread
188 IF (jtask==nthread) THEN
189 i_stok_loc = i_stok-nb_loc*(nthread-1)
190 ELSE
191 i_stok_loc = nb_loc
192 ENDIF
193 debut = (jtask-1)*nb_loc
194 i_stok = 0
195
196 IF (inacti==5.OR.inacti==6)THEN
197 DO i = debut+1, debut+i_stok_loc
198 IF(intbuf_tab(nin)%CAND_N(i)<0) THEN
199
200 IF(i_stok + 1>4*numnod) THEN
201 CALL ancmsg(msgid=97,anmode=aninfo)
203 ENDIF
204
205 i_stok = i_stok + 1
206 index2(i_stok) = i
207
208 intbuf_tab(nin)%CAND_N(i) = -intbuf_tab(nin)%CAND_N(i)
209 ELSE
210
211 intbuf_tab(nin)%CAND_P(i) = zero
212 ENDIF
213 ENDDO
214 ELSE
215 DO i = debut+1, debut+i_stok_loc
216 IF(intbuf_tab(nin)%CAND_N(i)<0) THEN
217
218 IF(i_stok + 1>4*numnod) THEN
219 CALL ancmsg(msgid=97,anmode=aninfo)
221 ENDIF
222
223 i_stok = i_stok + 1
224 index2(i_stok) = i
225
226 intbuf_tab(nin)%CAND_N(i) = -intbuf_tab(nin)%CAND_N(i)
227 ENDIF
228 ENDDO
229 ENDIF
230
231 IF (debug(3)>=1) THEN
232 nb_jlt = nb_jlt + i_stok_loc
233 nb_stok_n = nb_stok_n + i_stok
234 ENDIF
235
236 DO nft = 0 , i_stok - 1 , nvsiz
237 jlt =
min( nvsiz, i_stok - nft )
238
240 1 jlt,index2(nft+1),intbuf_tab(nin)%CAND_E,intbuf_tab(nin)%CAND_N,
241 2 cand_e_n,cand_n_n)
242
244 1 jlt ,x ,intbuf_tab(nin)%IRECTM,intbuf_tab(nin)%NSV,
245 . cand_e_n,
246 2 cand_n_n ,intbuf_tab(nin)%STFM,intbuf_tab(nin)%STFNS,x1 ,x2 ,
247 3 x3 ,x4 ,y1 ,y2 ,y3 ,
248 4 y4 ,z1 ,z2 ,z3 ,z4 ,
249 5 xi ,yi ,zi ,stif ,ix1 ,
250 6 ix2 ,ix3 ,ix4 ,nsvg ,igap ,
251 7 gap ,intbuf_tab(nin)%GAP_S,intbuf_tab(nin)%GAP_M,gapv,
252 9 ms ,vxi ,vyi ,
253 a vzi ,msi ,nsn ,v ,kinet ,
254 b kini ,nty ,nin ,igsti ,kmin ,
255 c kmax ,gapmax ,gapmin ,iadm ,bid ,
256 d bid ,bid ,bid ,ibid ,bid ,
257 e bid ,bid ,bid ,ibid ,bid ,
258 f ibid ,ibid ,ibid ,intbuf_tab(nin)%GAP_SL,
259 . intbuf_tab(nin)%GAP_ML,
260 g ibid ,ibid ,ibid ,ibid ,ibid ,
261 h ibid ,ibid ,bid ,ibid
262 jlt_new = 0
264 1 jlt ,cand_n_n,cand_e_n,cn_loc, ce_loc,
265 2 x1 ,x2 ,x3 ,x4 ,y1 ,
266 3 y2 ,y3 ,y4 ,z1 ,z2 ,
267 4 z3 ,z4 ,xi ,yi ,zi ,
268 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
269 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
270 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
271 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
272 9 p1 ,p2 ,p3 ,p4 ,ix1 ,
273 a ix2 ,ix3 ,ix4 ,nsvg ,stif ,
274 b jlt_new,gapv ,inacti ,intbuf_tab(nin)%CAND_P,
275 c index2(nft+1),vxi ,vyi ,
276 d vzi ,msi ,kini ,icurv ,intbuf_tab(nin)%IRECTM,
277 e nnx1 ,nnx2 ,nnx3 ,nnx4 ,nny1 ,
278 f nny2 ,nny3 ,nny4 ,nnz1 ,nnz2 ,
279 g nnz3 ,nnz4 ,bid ,iadm ,bid ,
280 h bid ,ibid ,bid ,bid ,bid ,
281 i ibid ,ibid ,cmaj ,drad2 ,
282 j ibid ,ibid ,
283 k ibid ,ibid ,ibid ,intbuf_tab(nin)%CAND_F,
284 l ibid ,ibid ,bid ,bid )
285
286
287 jlt = jlt_new
288 IF(jlt_new/=0) THEN
289 ipari(29,nin) = 1
290 IF (debug(3)>=1)
291 . nb_jlt_new = nb_jlt_new + jlt_new
292 CALL i7lagm(lll,jll,sll ,xll ,iadll ,
293 2 n_mul_mx,itask ,nin ,nkmax ,
294 3 jlt ,a ,v ,itag ,xtag ,
295 4 gap ,noint ,intbuf_tab(nin)%STFNS,itab ,cn_loc ,
296 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
297 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
298 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
299 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
300 9 p1 ,p2 ,p3 ,p4 ,
301 a ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
302 b gapv ,newfront,ibag ,icontact,stif ,
303 c comntag ,iadm )
304 ENDIF
305 ENDDO
306
307 RETURN
subroutine i7cdcor3(jlt, index, cand_e, cand_n, cand_e_n, cand_n_n)
subroutine i7lagm(lll, jll, sll, xll, iadll, n_mul_mx, itask, nint, nkmax, jlt, a, v, itag, xtag, gap, noint, stfn, itab, cn_loc, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, ix1, ix2, ix3, ix4, nsvg, gapv, newfront, ibag, icontact, stif, comntag, iadm)
subroutine i7cor3(x, irect, nsv, cand_e, cand_n, stf, stfn, gapv, igap, gap, gap_s, gap_m, istf, gapmin, gapmax, gap_s_l, gap_m_l, drad, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, dgapload, last)
subroutine i7dst3(ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, last)
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)