187
188
189
192 use element_mod , only : nixs
193
194
195
196#include "implicit_f.inc"
197#include "comlock.inc"
198
199
200
201#include "com01_c.inc"
202#include "com04_c.inc"
203#include "com08_c.inc"
204#include "task_c.inc"
205
206
207
208 INTEGER NME, NMES, NOINT,ITASK,MX_CAND,
209 . ESH_T, I_STOK_GLOB, NIN, NMESR
210 INTEGER CAND_E(*),CAND_N(*),IXS(NIXS,*),(8,*),
211 . LWAT,NELEM(*),NELES(*),IXS20(12,*),
212 . ISENDTO(*), IRCVFROM(*), WEIGHT(*)
213
215 . tzinf,minbox
217 . x(3,*),eminxm(6,*),eminxs(6,*),xsav(3,*),v(3,*) ,a(3,*),
218 . frots(7,*), ks(2,*), vcom(3,*)
219
220
221
222
223 INTEGER I_ADD_MAX
224 parameter(i_add_max = 1001)
225 INTEGER I, J, K, L, CONT,NB_N_B ,
226 . MAXSIZ,
227 . NMES_F,NMES_L, MAXSIZS, I_ADD
228 INTEGER IERR1,IERR2
230 . xmin,ymin,zmin,xmax,
ymax,zmax,
231 . xyzm(6,i_add_max-1)
232
233
234
235
236
237
238
239
240
241
242
243
244
245 nmes_f = 1 + itask*nmes / nthread
246 nmes_l = (itask+1)*nmes / nthread
247 DO k=1,8
248 DO i=1+esh_t,nme+esh_t
249 j=ixs(k+1,nelem(i))
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 j=ixs16(k,nelem(i)-numels8-numels10-numels20)
254 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
255 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
256 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
257 ENDDO
258 DO i=nmes_f,nmes_l
259 j=ixs(k+1,neles(i))
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 j=ixs16(k,neles(i)-numels8-numels10-numels20)
264 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
265 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
266 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
267 ENDDO
268 ENDDO
269
271
272
273 nb_n_b = 1
274
275
276
277
278
279
280
281
282 cont = 1
283
284
285
286 DO WHILE (cont/=0)
287
288
289
290
291 xmin = ep30
292 ymin = ep30
293 zmin = ep30
294 xmax = -ep30
296 zmax = -ep30
297
298 DO l=1,nme
299 i = l + esh_t
300 xmin =
min( xmin , eminxm(1,i) )
301 ymin =
min( ymin , eminxm(2,i) )
302 zmin =
min( zmin , eminxm(3,i) )
303 xmax =
max( xmax , eminxm(4,i) )
305 zmax =
max( zmax , eminxm(6,i) )
306 ENDDO
307
308 IF(abs(zmax-zmin)>2*ep30.OR.
309 + abs(
ymax-ymin)>2*ep30.OR.
310 + abs(xmax-xmin)>2*ep30)THEN
311 CALL ancmsg(msgid=87,anmode=aninfo,
312 . i1=noint)
314 END IF
315
316 xmin = xmin - tzinf
317 ymin = ymin - tzinf
318 zmin = zmin - tzinf
319 xmax = xmax + tzinf
321 zmax = zmax + tzinf
322 i_add = 1
323 xyzm(1,i_add) = xmin
324 xyzm(2,i_add) = ymin
325 xyzm(3,i_add) = zmin
326 xyzm(4,i_add) = xmax
328 xyzm(6,i_add) = zmax
329 nmesr = 0
330 IF(nspmd>1)THEN
331
332
333
335 2 ks ,xyzm ,weight ,nin ,isendto,
336 3 ircvfrom,nmesr ,ixs ,ixs16,eminxs )
337 END IF
338
339
340
341
342
343
344
345 maxsiz = 3*(nme+100)
346 maxsizs = 3*(nmes+nmesr+100)
347
348
349
350
351
352
353
354
355
356 IF(itask == 0)THEN
357 ALLOCATE (
adchaine(nmes+nmesr),stat=ierr1)
358 ALLOCATE (
chaine(2,mx_cand),stat=ierr2)
359 IF(ierr1+ierr2 /= 0)THEN
361 ENDIF
362 ENDIF
363
365
370
372
374 2 tzinf ,ixs ,ixs16 ,ixs20 ,nelem ,
375 3 neles ,maxsiz ,cand_n ,cand_e ,minbox ,
376 5 cont ,nb_n_b ,eminxm ,i_stok_glob,nme ,
377 6 itask ,noint ,x ,v ,a ,
378 7 mx_cand ,eminxs ,esh_t ,maxsizs ,i_add_max,
379 8 xyzm ,nmes ,nmesr ,nin)
380
382 IF(itask == 0)THEN
385 ENDIF
386
387 ENDDO
388
389 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)