184
185
186
189
190
191
192#include "implicit_f.inc"
193#include "comlock.inc"
194
195
196
197#include "com01_c.inc"
198#include "com04_c.inc"
199#include "com08_c.inc"
200#include "task_c.inc"
201
202
203
204 INTEGER NME, NMES, NOINT,IDT,ITASK,MX_CAND,
205 . ESH_T, I_STOK_GLOB, NIN, NMESR
206 INTEGER CAND_E(*),CAND_N(*),IXS(NIXS,*),IXS16(8,*),
207 . LWAT,NELEM(*),NELES(*),IXS20(12,*),
208 . ISENDTO(*), IRCVFROM(*), WEIGHT(*)
209
211 . tzinf,minbox
213 . x(3,*),eminxm(6,*),eminxs(6,*),xsav(3,*),v(3,*) ,a(3,*),
214 . frots(7,*), ks(2,*), vcom(3,*)
215
216
217
218
219 INTEGER I_ADD_MAX
220 parameter(i_add_max = 1001)
221 INTEGER I, J, K, L, CONT,NB_N_B,I_STOK ,
222 . IP0, IP1, IP2, IP21, IP22, IP31, MAXSIZ,
223 . NMES_F,NMES_L, MAXSIZS, I_ADD
224 INTEGER IERR1,IERR2
226 . xmin,ymin,zmin,xmax,
ymax,zmax,
227 . xyzm(6,i_add_max-1)
228
229
230
231
232
233
234
235
236
237
238
239
240
241 nmes_f = 1 + itask*nmes / nthread
242 nmes_l = (itask+1)*nmes / nthread
243 DO k=1,8
244 DO i=1+esh_t,nme+esh_t
245 j=ixs(k+1,nelem(i))
246 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
247 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
248 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
249 j=ixs16(k,nelem(i)-numels8-numels10-numels20)
250 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
251 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
252 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
253 ENDDO
254 DO i=nmes_f,nmes_l
255 j=ixs(k+1,neles(i))
256 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
257 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
258 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
259 j=ixs16(k,neles(i)-numels8-numels10-numels20)
260 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
261 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
262 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
263 ENDDO
264 ENDDO
265
267
268
269 nb_n_b = 1
270
271
272
273
274
275
276
277
278 cont = 1
279
280
281
282 DO WHILE (cont/=0)
283
284
285
286
287 xmin = ep30
288 ymin = ep30
289 zmin = ep30
290 xmax = -ep30
292 zmax = -ep30
293
294 DO l=1,nme
295 i = l + esh_t
296 xmin =
min( xmin , eminxm(1,i) )
297 ymin =
min( ymin , eminxm(2,i) )
298 zmin =
min( zmin , eminxm(3,i) )
299 xmax =
max( xmax , eminxm(4,i) )
301 zmax =
max( zmax , eminxm(6,i) )
302 ENDDO
303
304 IF(abs(zmax-zmin)>2*ep30.OR.
305 + abs(
ymax-ymin)>2*ep30.OR.
306 + abs(xmax-xmin)>2*ep30)THEN
307 CALL ancmsg(msgid=87,anmode=aninfo,
308 . i1=noint)
310 END IF
311
312 xmin = xmin - tzinf
313 ymin = ymin - tzinf
314 zmin = zmin - tzinf
315 xmax = xmax + tzinf
317 zmax = zmax + tzinf
318 i_add = 1
319 xyzm(1,i_add) = xmin
320 xyzm(2,i_add) = ymin
321 xyzm(3,i_add) = zmin
322 xyzm(4,i_add) = xmax
324 xyzm(6,i_add) = zmax
325 nmesr = 0
326 IF(nspmd>1)THEN
327
328
329
331 2 ks ,xyzm ,weight ,nin ,isendto,
332 3 ircvfrom,nmesr ,ixs ,ixs16,eminxs )
333 END IF
334
335
336
337
338
339
340
341 maxsiz = 3*(nme+100)
342 maxsizs = 3*(nmes+nmesr+100)
343
344
345
346
347
348
349
350
351
352 IF(itask == 0)THEN
353 ALLOCATE (
adchaine(nmes+nmesr),stat=ierr1)
354 ALLOCATE (
chaine(2,mx_cand),stat=ierr2)
355 IF(ierr1+ierr2 /= 0)THEN
357 ENDIF
358 ENDIF
359
361
366
368
370 2 tzinf ,ixs ,ixs16 ,ixs20 ,nelem ,
371 3 neles ,maxsiz ,cand_n ,cand_e ,minbox ,
372 5 cont ,nb_n_b ,eminxm ,i_stok_glob,nme ,
373 6 itask ,noint ,x ,v ,a ,
374 7 mx_cand ,eminxs ,esh_t ,maxsizs ,i_add_max,
375 8 xyzm ,nmes ,nmesr ,nin)
376
378 IF(itask == 0)THEN
381 ENDIF
382
383 ENDDO
384
385 RETURN
subroutine i17tri(tzinf, ixs, ixs16, ixs20, nelem, neles, maxsiz, cand_n, cand_e, minbox, cont, nb_n_b, eminx, i_stok_glob, nme, itask, noint, x, v, a, mx_cand, eminxs, esh_t, maxsizs, i_add_max, xyzm, nmes, nmesr, nin)
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
subroutine spmd_tri17box(nelems, nmes, x, v, frots, ks, bminmal, weight, nin, isendto, ircvfrom, nmesr, ixs, ixs16, eminxs)
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)