115
116
117
118 USE timer_mod
119 USE output_mod, only : output_
120 USE mmain_mod
122 USE mat_elem_mod
125 USE sensor_mod
127 USE elbufdef_mod
128 USE sdistor_ini_mod, ONLY : sdistor_ini
129 use glob_therm_mod
130 USE s10get_x0_mod, ONLY : s10get_x0
131 use element_mod , only : nixs
132
133
134
135#include "implicit_f.inc"
136
137
138
139#include "mvsiz_p.inc"
140
141
142
143#include "com01_c.inc"
144#include "com04_c.inc"
145#include "com08_c.inc"
146#include "scr03_c.inc"
147#include "vect01_c.inc"
148#include "parit_c.inc"
149#include "param_c.inc"
150#include "timeri_c.inc"
151#include "scr18_c.inc"
152#include "scr05_c.inc"
153
154
155
156 INTEGER NPE
157 parameter(npe=10)
158
159
160
161 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
162 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
163 INTEGER, INTENT(IN) :: S_SFEM_NODVAR
164 INTEGER, INTENT(INOUT) :: IDEL7NOK
165 INTEGER, INTENT(IN) :: SNPC
166 INTEGER, INTENT(IN) :: STF
167 INTEGER, INTENT(IN) :: SBUFMAT
168 INTEGER, INTENT(IN) :: NSVOIS
169 INTEGER, INTENT(IN) :: IDTMINS
170 INTEGER ,INTENT(IN) :: IDEL7NG
171 INTEGER ,INTENT(IN) :: MAXFUNC
172 INTEGER, INTENT(IN) :: IMPL_S
173 INTEGER, INTENT(IN) :: IDYNA
174 INTEGER, INTENT(IN) :: USERL_AVAIL
175 INTEGER IXS(NIXS,*),IPARG(NPARG,NGROUP),NPF(*),IADS(8,*),
176 . IPARTS(*),IXS10(6,*),IADS10(6,*),(*),ITASK,GRTH(*),
177 . IGRTH(*),IGEO(NPROPGI,*),IOUTPRT,H3D_STRAIN
178 INTEGER NELTST,ITYPTST,OFFSET,NEL,NG,ISTRAIN,ISOLNOD,IEXPAN,ITAGDN(*)
179 DOUBLE PRECISION XDP(3,*)
180
182 my_real pm(npropm,*), geo(npropg,*), x(*), a(*), v(3,*), ms(*), w(*),
183 . flux(6,*),flu1(*), veul(*), fv(*), tf(*),
184 . bufmat(*),partsav(*),stifn(*), fsky(*),eani(*),
185 . ar(*),vr(*) ,dr(*) ,stifr(*),d(*), mssa(*) ,dmels(*)
186 my_real fx(mvsiz,10),fy(mvsiz,10),fz(mvsiz,10),
187 . temp(*), fthe(*), fthesky(*),gresav(*),voln(mvsiz),condn(*),
188 . condnsky(*),sfem_nodvar(s_sfem_nodvar)
189 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
190 TYPE(TTABLE) TABLE(*)
191 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
192 TYPE (NLOCAL_STR_) , TARGET :: NLOC_DMG
193 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
194 TYPE (MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
195 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
196 TYPE(DT_) ,INTENT(INOUT) :: DT
197 type (glob_therm_) ,intent(inout) :: glob_therm
198
199
200
201 INTEGER I,J,IP,NF1,NF2,IFLAG,IOFFS,IPTR,IPTS,IPTT,ILAY,IMAT
202 INTEGER IBID,IBIDON(1),ITET,ISM12_11
203
204 INTEGER MXT(MVSIZ),NGL(MVSIZ),NGEO(MVSIZ)
206 . vd2(mvsiz) , dvol(mvsiz),deltax(mvsiz),
207 . vis(mvsiz) , qvis(mvsiz), cxx(mvsiz) ,deltax2(mvsiz),
208 . s1(mvsiz) , s2(mvsiz) , s3(mvsiz) ,
209 . s4(mvsiz) , s5(mvsiz) , s6(mvsiz) ,
210 . dxx(mvsiz) , dyy(mvsiz) , dzz(mvsiz) ,
211 . d4(mvsiz) , d5(mvsiz) , d6(mvsiz) ,
212 . rx(mvsiz) , ry(mvsiz) , rz(mvsiz) ,
213 . sx(mvsiz) , sy(mvsiz) , sz(mvsiz) ,
214 . vdx(mvsiz), vdy(mvsiz), vdz(mvsiz),ssp_eq(mvsiz),aire(mvsiz),
215 . conde(mvsiz),condeg(mvsiz), volg(mvsiz), jacgm(mvsiz)
216
217
219 . sti(mvsiz),
220 . wxx(mvsiz) , wyy(mvsiz) , wzz(mvsiz),
221 . wxxg(mvsiz) , wyyg(mvsiz) , wzzg(mvsiz)
222
224 . muvoid(mvsiz)
225
226
228 . sigy(mvsiz),et(mvsiz),gama(mvsiz,6),
229 . r1_free(mvsiz),r3_free(mvsiz)
230
231 INTEGER NC(MVSIZ,10),ICP,MX,IPLAW1
232
233 double precision
234 . xx(mvsiz,10), yy(mvsiz,10), zz(mvsiz,10),
235 .
236 . xx0(mvsiz,10), yy0(mvsiz,10), zz0(mvsiz,10),voldp(mvsiz,5)
237
239 . tx(mvsiz),ty(mvsiz),tz(mvsiz),off(mvsiz),volp(mvsiz,5),
240 . rhoo(mvsiz),offs(mvsiz),them(mvsiz,10),tempel(mvsiz),
241 . vx(mvsiz,10),vy(mvsiz,10),vz(mvsiz,10),
242 . px(mvsiz,10,5),py(mvsiz,10,5),pz(mvsiz,10,5),
243 . nx(mvsiz,10,5),vdxx(mvsiz,10),vdyy(mvsiz,10),vdzz(mvsiz,10),
244 . dxy(mvsiz),dyx(mvsiz),dyz(mvsiz),dzy(mvsiz),
245 . dzx(mvsiz),dxz(mvsiz),
246 . stig(mvsiz), wip(5,5), alph(5,5), beta(5,5),bid(mvsiz),
247 . die(mvsiz),offg0(mvsiz
250 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z
251
253 . vx0(mvsiz,10),vy0(mvsiz,10),vz0(mvsiz,10),
254 . mfxx(mvsiz,5),mfxy(mvsiz,5),mfyx(mvsiz,5),
255 . mfyy(mvsiz,5),mfyz(mvsiz,5),mfzy(mvsiz,5),
256 . mfzz(mvsiz,5),mfzx(mvsiz,5),mfxz(mvsiz,5),divde(mvsiz),
257 . nu(mvsiz),facp(mvsiz),e0(mvsiz),c1,dvm(mvsiz),
258 . visp(mvsiz),facdb,rbid(mvsiz),sigp(nel,6),
259 . fld(mvsiz),sti_c(mvsiz),ll(mvsiz),offg(mvsiz),fqmax
260
261 my_real varnl(nel),deltax4(mvsiz)
262
263 INTEGER IBOLTP,NBPRELD,ISCTL,ISTAB(MVSIZ)
264 INTEGER SZ_IX
266 . DIMENSION(:), POINTER :: bpreld
267 my_real,
dimension(mvsiz) :: fheat
268
269 TYPE(G_BUFEL_) ,POINTER :: GBUF
270 TYPE(L_BUFEL_) ,POINTER :: LBUF
271
272 DATA wip / 1. ,0. ,0. ,0. ,0. ,
273 2 0. ,0. ,0. ,0. ,0. ,
274 3 0. ,0. ,0. ,0. ,0. ,
275 4 0.25,0.25,0.25,0.25,0. ,
276 5 0.45,0.45,0.45,0.45,-0.8/
277
278
279
280 gbuf => elbuf_tab(ng)%GBUF
281 iboltp = iparg(72,ng)
282 nbpreld = gbuf%G_BPRELD
283 bpreld =>gbuf%BPRELD(1:nbpreld*nel)
284 ism12_11 = elbuf_tab(ng)%BUFLY(1)%L_SIGL
285
286 sz_ix=numelq+numels+nsvois
287 nf1=nft+1
288 nf2=nf1-numels8
289 ibid = 0
290 ibidon = 0
291 ioffs=0
292 ipts = 1
293 iptt = 1
294 ilay = 1
295 IF(isrot == 1) THEN
296 iisrot=1
297 nf2=1
298 END IF
299 icp = iparg(10,ng)
300 DO i=lft,llt
301 offs(i)=ep20
302 END DO
303
304 DO ip=1,3
305 DO j=1,5
306 alph(j,ip)=zero
307 beta(j,ip)=zero
308 END DO
309 END DO
310
311 alph(1,4)=zep5854102
312 alph(2,4)=zep5854102
313 alph(3,4)=zep5854102
314 alph(4,4)=zep5854102
315 alph(5,4)=zero
316 alph(1,5)=half
317 alph(2,5)=half
318 alph(3,5)=half
319 alph(4,5)=half
320 alph(5,5)=fourth
321 beta(1,4)=zep1381966
322 beta(2,4)=zep1381966
323 beta(3,4)=zep1381966
324 beta(4,4)=zep1381966
325 beta(5,4)=zero
326 beta(1,5)=one_over_6
327 beta(2,5)=one_over_6
328 beta(3,5)=one_over_6
329 beta(4,5)=one_over_6
330 beta(5,5)=fourth
331
332 tempel(:) = zero
333 fheat(:) = zero
334 IF (jthe < 0) them(lft:llt,1:10) = zero
335
336 IF (icp==1) THEN
337 mx = ixs(1,nf1)
338 nu(lft:llt)=
min(half,pm(21,mx))
339 facp(lft:llt)=one
340 ELSEIF (icp==2) THEN
341 mx = ixs(1,nf1)
342 nu(lft:llt)=
min(half,pm(21,mx))
343 c1 =pm(32,mx)
344 e0(lft:llt) =three*(one-two*nu(lft:llt))*c1
345 sigp=zero
346 IF (gbuf%G_PLA>0) THEN
347 CALL s8e_sigp(elbuf_tab(ng),sigp, nel)
348 END IF
349 CALL s10sigp3(sigp,e0 ,gbuf%PLA,facp ,gbuf%G_PLA,nel )
350 END IF
351
353 1 x, ixs(1,nf1), ixs10(1,nf2),v,
354 2 w, xx, yy, zz,
355 3 vx, vy, vz, vdxx,
356 4 vdyy, vdzz, vdx, vdy,
357 5 vdz, vd2, vis, gbuf%OFF,
358 6 off, gbuf%SMSTR, nc, ngl,
359 7 mxt, ngeo, fx, fy,
360 8 fz, stig, gbuf%SIG, gbuf%EINT,
361 9 gbuf%RHO, gbuf%QVIS, gbuf%PLA, gbuf%EPSD,
362 a vr, dr, d, wxxg,
363 b wyyg, wzzg, gbuf%G_PLA, xdp,
364 c nel, condeg, gbuf%G_EPSD, jale,
365 d ismstr, jeul, jlag, israt,
366 e isrot)
367
368 iplaw1 = 0
369 cns2 = zero
370 IF (ism12_11>0 .AND.idtmin(1)==3) THEN
371 mx = ixs(1,nf1)
372 rho0_1 =pm( 1,mx)
373 IF (pm(21,mx)>0.49) iplaw1=1
374 IF (iplaw1==1) THEN
375 facdb = one- zep02
376 facdb =
min(facdb,two*pm(21,mx))
377 facp(lft:llt)=facdb
378 visp(lft:llt)=two
379 cns2 = zep02
380 IF (igeo(35,ngeo(1))>0) cns2=cns2-abs(geo(17,ngeo(1)))
381 END IF
382 ELSEIF (ismstr==10.AND.mtn==1) THEN
383 mx = ixs(1,nf1)
384 rho0_1 =pm( 1,mx)
385 IF (pm(21,mx)>0.49) THEN
386 visp(lft:llt)=two
387 cns2 = zep02
388 IF (igeo(35,ngeo(1))>0) cns2=cns2-abs(geo(17,ngeo(1)))
389 END IF
390 END IF
391 isctl = igeo(97,ngeo(1))
392 IF (isrot == 1) isctl = 0
393
395 1 nx, nel, npt)
396 IF(jthe < 0 .AND. isolnod == 4)
CALL s10nxt4(nxt4,nel)
397
398
399
400 IF (ismstr >= 10.AND.ismstr <= 12) THEN
401
403 1 xx, yy, zz, x,
404 2 xdp, xx0, yy0, zz0,
405 3 vx0, vy0, vz0, gbuf%SMSTR,
406 4 nc, d, gbuf%OFF, offg0,
407 5 nel, mtn, ismstr)
408
409 IF (ismstr == 11) THEN
411 1 volp, deltax, deltax2, xx0,
412 2 yy0, zz0, px, py,
413 3 pz, nx, rx, ry,
414 4 rz, sx, sy, sz,
415 5 tx, ty, tz, wip(1,npt),
416 6 alph(1,npt),beta(1,npt),voln, volg,
417 7 voldp, nel, gbuf%OFF, npt)
419 1 volp, ngl, deltax, deltax2,
420 2 px, py, pz, volg,
421 3 gbuf%VOL, rx, ry, rz,
422 4 sx, sy, sz, tx,
423 5 ty, tz, nc, nel,
424 6 mxt, pm, gbuf%ISMS, gbuf%DT_PITER,
425 7 npt, iint, isrot, iformdt)
426 ELSE
427
428 IF (ismstr == 12.AND.ism12_11==0.AND.idtmin(1)==3) THEN
430 1 gbuf%OFF,x, xdp, nc,
431 2 e1x, e2x, e3x, e1y,
432 3 e2y, e3y, e1z, e2z,
433 4 e3z, nel)
434 END IF
435 ibid = 1
436 DO ip=1,npt
437 lbuf => elbuf_tab(ng)%BUFLY(ibid)%LBUF(ip,ibid,ibid)
438 CALL s10pijto3(px(1,1,ip),py(1,1,ip),pz(1,1,ip),lbuf%PIJ,llt)
439
440 ENDDO
441 END IF
442 DO ip=1,npt
443
445 1 px(1,1,ip),py(1,1,ip),pz(1,1,ip),vx0,
446 2 vy0, vz0, mfxx(1,ip),mfxy(1,ip),
447 3 mfxz(1,ip),mfyx(1,ip),mfyy(1,ip),mfyz(1,ip),
448 4 mfzx(1,ip),mfzy(1,ip),mfzz(1,ip),nel)
449 END DO
450 IF (ismstr == 12.AND.ism12_11==0.AND.idtmin(1)==3) THEN
451 DO ip=1,npt
452 CALL sordeft12(lft,llt,mfxx(1,ip), mfxy(1,ip), mfxz(1,ip),
453 . mfyx(1,ip), mfyy(1,ip), mfyz(1,ip),
454 . mfzx(1,ip), mfzy(1,ip), mfzz(1,ip),
455 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z,gbuf%OFF)
456 END DO
457 ENDIF
458 ENDIF
459
460 IF (ismstr /= 11) THEN
462 1 off, volp, ngl, deltax,
463 2 deltax2, xx, yy, zz,
464 3 px, py, pz, nx,
465 4 rx, ry, rz, sx,
466 5 sy, sz, tx, ty,
467 6 tz, wip(1,npt), alph(1,npt),beta(1,npt),
468 7 voln, volg, voldp, nc,
469 8 gbuf%SMSTR, gbuf%OFF, nel, npt,
470 9 ismstr, jlag)
471
473 1 volp, ngl, deltax, deltax2,
474 2 px, py, pz, volg,
475 3 gbuf%VOL, rx, ry, rz,
476 4 sx, sy, sz, tx,
477 5 ty, tz, nc, nel,
478 6 mxt, pm, gbuf%ISMS, gbuf%DT_PITER,
479 7 npt, iint, isrot, iformdt)
480
481 IF (iplaw1>0) THEN
483 . px, py, pz, vx, vy, vz,
484 . dvm ,gbuf%OFF, npt ,nel)
485 END IF
486
487 IF (ismstr == 2 .OR.ismstr ==12) THEN
488 DO ip=1,npt
489 iptr = ip
490 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
491 DO i=lft,llt
492 IF (gbuf%OFF(i)==two) lbuf%OFF(i)=gbuf%OFF(i)
493 ENDDO
494 ENDDO
495 END IF
496 END IF
497
498
499
500 IF (ismstr <= 3.OR.(ismstr==4.AND.jlag>0)) THEN
502 1 gbuf%OFF, gbuf%SMSTR,nc, xx,
503 2 yy, zz, nel)
504 END IF
505
506 IF (isorth == 0) THEN
507 DO i=lft,llt
508 gama(i,1) = one
509 gama(i,2) = zero
510 gama(i,3) = zero
511 gama(i,4) = zero
512 gama(i,5) = one
513 gama(i,6) = zero
514 ENDDO
515 ELSE
517 1 rx, ry, rz, sx,
518 2 sy, sz, tx, ty,
519 3 tz, e1x, e2x, e3x,
520 4 e1y, e2y, e3y, e1z,
521 5 e2z, e3z, llt)
523 1 rx, ry, rz, sx,
524 2 sy, sz, tx, ty,
525 3 tz, e1x, e2x, e3x,
526 4 e1y, e2y, e3y, e1z,
527 5 e2z, e3z, gbuf%GAMA,gama,
528 6 nel, irep)
529 ENDIF
530 IF(icp >0 .AND. ismstr/=10) THEN
531 DO i=lft,llt
532 IF(gbuf%OFF(i) == zero) cycle
533 sum=sfem_nodvar(nc(i,1))+sfem_nodvar(nc(i,2))+sfem_nodvar(nc(i,3))+sfem_nodvar(nc(i,4))
534 jacgm(i)=fourth*sum
535 ENDDO
536 ENDIF
537
538
539
540 DO ip=1,npt
541 iptr = ip
542 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
543 IF (ioffs == 1)THEN
544 DO i=lft,llt
545 IF (offs(i)<=two) lbuf%OFF(i)=offs(i)
546 ENDDO
547 END IF
548
550 1 px(1,1,ip),py(1,1,ip),pz(1,1,ip),vx,
551 2 vy, vz, dxx, dxy,
552 3 dxz, dyx, dyy, dyz,
553 4 dzx, dzy, dzz, d4,
554 5 d5, d6, wxx, wyy,
555 6 wzz, volp(1,ip),voln, lbuf%RHO,
556 7 rhoo, nel, jhbe, isrot)
557
558 IF (ismstr == 12.AND.ism12_11==0.AND.idtmin(1)==3) THEN
559 CALL sordef12(lft,llt,dxx, dyy, dzz,
560 . d4, d5, d6,
561 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z,offg0)
562 ENDIF
563 IF (icp>0) THEN
564 IF (ismstr==10) THEN
565 DO i=lft,llt
566 IF(gbuf%OFF(i) == zero) cycle
567 jacgm(i)=sfem_nodvar(nc(i,ip))
568 ENDDO
569 END IF
571 1 gbuf%OFF, jacgm, facp, nu,
572 2 mfxx(1,ip), mfxy(1,ip), mfxz(1,ip), mfyx(1,ip),
573 3 mfyy(1,ip), mfyz(1,ip), mfzx(1,ip), mfzy(1,ip),
574 4 mfzz(1,ip), lbuf%VOL, voln, lbuf%VOL0DP,
575 5 voldp(1,ip),nel, ismstr)
576 ENDIF
577
578 divde(1:nel) = dt1*(dxx(1:nel)+ dyy(1:nel)+ dzz(1:nel))
579 IF (iplaw1>0)
CALL s10divde12(dvm ,divde ,facp,gbuf%OFF,nel)
581 1 pm, lbuf%VOL, lbuf%RHO, lbuf%EINT,
582 2 divde, flux(1,nf1),flu1(nf1), voln,
583 3 dvol, ngl, mxt, off,
584 4 0, gbuf%TAG22, voldp(1,ip),lbuf%VOL0DP,
585 5 amu, gbuf%OFF, nel, mtn,
586 6 jale, ismstr, jeul, jlag)
587
588 IF (ismstr == 12.AND.ism12_11==0.AND.idtmin(1)==3) THEN
590 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z,offg0)
591
592
593
594
595 ENDIF
597 1 lbuf%SIG,s1, s2, s3,
598 2 s4, s5, s6, wxx,
599 3 wyy, wzz, nel, mtn,
600 4 ismstr)
601
602
603
605 1 gbuf%OFF, off, wxx, wyy,
606 2 wzz, wxxg, wyyg, wzzg,
607 3 wip(ip,npt),nel, ismstr, jlag)
608
609 IF(jthe < 0 ) THEN
610 DO i=lft,llt
611 tempel(i)= zero
612 ENDDO
613 IF(isolnod == 10) THEN
614 DO j = 1,10
615 DO i=lft,llt
616 tempel(i)= tempel(i) + nx(i,j,ip)*temp(nc(i,j))
617 ENDDO
618 ENDDO
619 ELSEIF(isolnod == 4) THEN
620 DO j = 1,4
621 DO i=lft,llt
622 tempel(i)= tempel(i) + nxt4(i,j,ip)*temp(nc(i,j))
623 ENDDO
624 ENDDO
625 ENDIF
626 ENDIF
627
628
629
630 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
631
632 IF(iboltp /= 0)
CALL boltst(
633 . ip, bpreld, lbuf%SIG,tt,
634 . nel ,npt ,sensors%NSENSOR,sensors%SENSOR_TAB,
635 . iparg(67,ng),iparg(68,ng))
636
637 CALL mmain(timers, output,
638 1 elbuf_tab, ng, pm, geo,
639 2 ale_connect, ixs, iparg,
640 3 v, tf, npf, bufmat,
641 4 sti, x, dt2t, neltst,
642 5 ityptst, offset, nel, w,
643 6 off, ngeo, mxt, ngl,
644 7 voln, vd2, dvol, deltax,
645 8 vis, qvis, cxx, s1,
646 9 s2, s3, s4, s5,
647 a s6, dxx, dyy, dzz,
648 b d4, d5, d6, wxx,
649 c wyy, wzz, rx, ry,
650 d rz, sx, sy, sz,
651 e vdx, vdy, vdz, muvoid,
652 f ssp_eq, aire, sigy, et,
653 g r1_free, lbuf%PLA, r3_free, amu,
654 h mfxx(1,ip), mfxy(1,ip), mfxz(1,ip), mfyx(1,ip),
655 i mfyy(1,ip), mfyz(1,ip), mfzx(1,ip), mfzy(1,ip),
656 j mfzz(1,ip), ipm, gama, bid,
657 k bid, bid, bid, bid,
658 l bid, bid, istrain, tempel,
659 m die, iexpan, ilay, mssa,
660 n dmels, iptr, ipts, iptt,
661 o table, bid, bid, bid,
662 p bid, iparg(1,ng), igeo, conde,
663 q itask, nloc_dmg, varnl, mat_elem,
664 r h3d_strain, jplasol, jsph, mvsiz,
665 * snpc, stf, sbufmat, glob_therm,
666 s svis, sz_ix, iresp,
667 t n2d, th_strain, ngroup, tt,
668 . dt1, ntable, numelq, nummat,
669 . numgeo, numnod, numels,
670 . idel7nok, idtmin, maxfunc,
671 . imon_mat, userl_avail, impl_s,
672 . idyna, dt, fheat ,sensors)
673
674 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
675
676 IF (ismstr == 12.AND.ism12_11==0.AND.idtmin(1)==3) THEN
678 . e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,offg0)
679!
680
681
682
683 IF (istrain == 1) THEN
684 CALL sordef12(lft,llt,dxx, dxy, dxz,
685 . d4, d5, d6,
686 . e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,offg0)
687 ENDIF
688 ENDIF
689 IF (istrain == 1)
CALL sstra3(
690 1 dxx, dyy, dzz, d4,
691 2 d5, d6, lbuf%STRA,wxx,
692 3 wyy, wzz, off, nel,
693 4 jcvt)
694
695 iflag=mod(ncycle,ncpri)
696 IF(ioutprt>0)THEN
697 CALL s10bilan(partsav,lbuf%EINT,lbuf%RHO,lbuf%RK,lbuf%VOL,
698 . vx, vy, vz,nx(1,1,ip),voln,iparts,
699 . gresav,grth,igrth,iexpan,lbuf%EINTTH,
700 . gbuf%FILL,xx,yy,zz,itask,iparg(1,ng),gbuf%OFF,sensors,
701 . nel, elbuf_tab(ng)%BUFLY(ilay)%L_WPLA, lbuf%WPLA)
702 ENDIF
703
704 IF (cns2>zero)
706 . dyy ,dzz ,d4 ,d5 ,d6 ,
707 . lbuf%VOL,rho0_1,sti ,nel ,svis )
708
709
710
712 1 lbuf%SIG, px(1,1,ip), py(1,1,ip), pz(1,1,ip),
713 2 fx, fy, fz, voln,
714 3 qvis, sti, stig, lbuf%EINT,
715 4 lbuf%RHO, lbuf%QVIS, lbuf%PLA, lbuf%EPSD,
716 5 gbuf%EPSD, gbuf%SIG, gbuf%EINT, gbuf%RHO,
717 6 gbuf%QVIS, gbuf%PLA, wip(ip,npt),gbuf%G_PLA,
718 7 nel, conde, condeg, gbuf%G_EPSD,
719 8 israt, svis ,glob_therm%NODADT_THERM)
720
721 DO i=lft,llt
722 IF (lbuf%OFF(i) > one .AND. gbuf%OFF(i) == one) THEN
723
724 offs(i)=
min(lbuf%OFF(i),offs(i))
725 ioffs =1
726 END IF
727 ENDDO
728
729 IF (jthe < 0 .AND. isolnod == 10) THEN
730 imat = mxt(1)
731 IF (mat_elem%MAT_PARAM(imat)%HEAT_FLAG == 1) THEN
733 1 pm, imat, nc, voln,
734 2 px(1,1,ip),py(1,1,ip),pz(1,1,ip),nx(1,1,ip),
735 3 dt1, temp, tempel, fheat,
736 4 them, gbuf%OFF, lbuf%OFF, nel,
737 5 glob_therm%THEACCFACT)
738 ELSE
740 1 pm, imat, nc, voln,
741 2 px(1,1,ip),py(1,1,ip),pz(1,1,ip),nx(1,1,ip),
742 3 dt1, temp, tempel, die,
743 4 them, gbuf%OFF, lbuf%OFF, nel,
744 5 glob_therm%THEACCFACT)
745 END IF
746 ENDIF
747
748 ENDDO
749
750 IF (jthe < 0 .AND. isolnod == 4) THEN
751 imat = mxt(1)
752 IF (mat_elem%MAT_PARAM(imat)%HEAT_FLAG == 1) THEN
754 . xx ,yy ,zz ,dt1 ,fheat ,
755 . temp ,them ,gbuf%OFF ,lbuf%OFF,
756 . glob_therm%THEACCFACT)
757 ELSE
759 . xx ,yy ,zz ,dt1 ,die ,
760 . temp ,them ,gbuf%OFF ,lbuf%OFF,
761 . glob_therm%THEACCFACT)
762 END IF
763 ENDIF
764
765 IF (jlag+jale+jeul /= 0) THEN
766
767
768
770 1 gbuf%SMSTR,gbuf%OFF, wxxg, wyyg,
771 2 wzzg, nel, ismstr, jlag)
772 IF (ioffs == 1)THEN
773 DO i=lft,llt
774
775 IF (offs(i)<=two) gbuf%OFF(i) = offs(i)
776 END DO
777
778 ipts = 1
779 iptt = 1
780 ilay = 1
781 DO ip=1,npt
782 iptr = ip
783 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
784 DO i=lft,llt
785 IF (gbuf%OFF(i) > one) lbuf%OFF(i)=gbuf%OFF(i)
786 END DO
787 END DO
788 END IF
789
790 itet=1
791 CALL s10mallgeo3(ngl,gbuf%OFF ,volg ,deltax, gbuf%VOL ,
792 . rx , ry , rz ,
793 . sx , sy , sz ,
794 . tx , ty , tz ,deltax4,geo(1,ngeo(1)),
795 . nel,npt,ismstr,isrot,dt)
796 rbid(lft:llt)=zero
797 CALL sgeodel3(ngl,gbuf%OFF,volg,deltax4,gbuf%VOL,geo(1,ngeo(1)),rbid,dt,nel,idel7nok)
798 CALL smallb3(gbuf%OFF,off,nel,ismstr)
799 CALL smallgeo3(ngl, gbuf%OFF ,volg ,deltax4, gbuf%VOL ,itet, nel, ismstr,dt)
800
801 IF (ismstr == 12.AND.idtmin(1)==3) THEN
802 ioffs =0
803 DO i=lft,llt
804 IF(gbuf%OFF(i)/=offg0(i).AND.abs(gbuf%OFF(i)) > one ) ioffs=1
805 ENDDO
806 IF (ioffs == 1) THEN
808 1 gbuf%OFF, offg0, gbuf%SMSTR,nc,
809 2 xx, yy, zz, nel)
810 IF (ism12_11>0 .AND. isorth == 0) THEN
812 1 elbuf_tab(ng),gbuf%OFF, offg0, nc,
813 2 xx, yy, zz, nel,
814 3 npt)
815 END IF
816 ipts = 1
817 iptt = 1
818 ilay = 1
819 DO ip=1,npt
820 iptr = ip
821 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
822 DO i=lft,llt
823 IF (abs(gbuf%OFF(i)) > one) lbuf%OFF(i)=gbuf%OFF(i)
824 END DO
825 END DO
826 END IF
827 END IF
828
829
830
831 IF (isctl > 0) THEN
832 offg(1:nel) =
min(off(1:nel),abs(gbuf%OFF(1:nel)))
833 CALL sdistor_ini(
834 1 nel ,sti_c ,npropm ,nummat ,
835 2 ismstr ,mxt ,istab ,pm ,
836 3 gbuf%SIG ,gbuf%RHO ,cxx ,offg ,
837 4 gbuf%OFF ,ll ,voln ,fld ,
838 5 cns2 ,fqmax )
839 IF (ismstr>=11)
841 1 x, xdp, dr, numnod,
842 2 xx, yy, zz, nc,
843 3 isrot, iresp, nel )
844 IF (ismstr<10)
845 * CALL s10get_x0(
846 1 nel, numnod, x, xdp,
847 2 d, xx0, yy0, zz0,
848 3 nc)
850 . stig, fld , sti_c,
851 . xx , yy , zz ,
852 . vx , vy , vz ,
853 . fx , fy , fz ,
854 . xx0, yy0, zz0,
855 . cns2, istab, ll ,
856 . fqmax, nel ,gbuf%EINT_DISTOR,
857 . dt1)
858 ENDIF
859
861 1 npe, gbuf%FILL,stig, fx,
862 2 fy, fz, nel)
863
864 IF (iparit == 0) THEN
866 1 gbuf%OFF, a, nc, stifn,
867 2 stig, fx, fy, fz,
868 3 deltax2, them, fthe, ar,
869 4 x, stifr, gbuf%SMSTR,condn,
870 5 condeg, itagdn, nel, ismstr,
871 6 jthe, isrot ,glob_therm%NODADT_THERM)
872 ELSE
874 1 gbuf%OFF, stig, fsky, fsky,
875 2 iads, fx, fy, fz,
876 3 deltax2, iads10, nc, them,
877 4 fthesky, ar, x, gbuf%SMSTR,
878 5 condnsky, condeg, itagdn, nel,
879 6 nft, ismstr, jthe, isrot,glob_therm%NODADT_THERM)
880 ENDIF
881
882 ENDIF
883
884 RETURN
subroutine boltst(ip, bpreld, sig, tt, nel, npt, nsensor, sensor_tab, fun_id, sens_id)
subroutine mmain(pm, elbuf_str, ix, nix, x, geo, iparg, nel, skew, bufmat, ipart, ipartel, nummat, matparam, imat, ipm, ngl, pid, npf, tf, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, rx, ry, rz, sx, sy, sz, gama, voln, dvol, s1, s2, s3, s4, s5, s6, dxx, dyy, dzz, d4, d5, d6, wxx, wyy, wzz)
subroutine nsvis_sm12(offg, mu, ssp, vol, d1, d2, d3, d4, d5, d6, vol0, rho0, sti, nel, svis)
subroutine s10_icp(offg, jacg, facp, nu, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, vol0, voln, vol0dp, voldp, nel, ismstr)
subroutine s10bilan(partsav, eint, rho, rk, vol, vx, vy, vz, nx, vnew, iparts, gresav, grth, igrth, iexpan, eintth, fill, x, y, z, itask, iparg, offg, sensors, nel, l_wpla, wpla)
subroutine s10cumu3(offg, a, nc, stifn, sti, fx, fy, fz, deltax2, them, fthe, ar, x, stifr, sav, condn, conde, itagdn, nel, ismstr, jthe, isrot, nodadt_therm)
subroutine s10cumu3p(offg, sti, fsky, fskyv, iads, fx, fy, fz, deltax2, iads10, nc, them, fthesky, ar, x, sav, condnsky, conde, itagdn, nel, nft, ismstr, jthe, isrot, nodadt_therm)
subroutine s10defo3(px, py, pz, vx, vy, vz, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, d4, d5, d6, wxx, wyy, wzz, volp, voln, rho, rhoo, nel, jhbe, isrot)
subroutine s10defot3(px, py, pz, vx, vy, vz, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, nel)
subroutine s10derit3(vol, deltax, deltax2, xx, yy, zz, px, py, pz, nx, rx, ry, rz, sx, sy, sz, tx, ty, tz, wip, alph, beta, voln, volg, voldp, nel, offg, npt)
subroutine s10divde12(dvm, divde, facp, offg, nel)
subroutine s10dvm12(px, py, pz, vx, vy, vz, dvm, offg, npt, nel)
subroutine s10fint3(sig, px, py, pz, fx, fy, fz, vol, qvis, sti, stig, eint, rho, q, eplas, epsd, epsdg, sigg, eintg, rhog, qg, eplasg, wip, g_pla, nel, conde, condeg, g_epsd, israt, svis, nodadt_therm)
subroutine s10for_distor(sti, fld, sti_c, xx, yy, zz, vx, vy, vz, fx, fy, fz, xx0, yy0, zz0, mu, istab, ll, fqmax, nel, e_distor, dt1)
subroutine s10get_x3(x, xdp, dr, numnod, xx, yy, zz, nc, isrot, iresp, nel)
subroutine s10malla3(offg, off, wxx, wyy, wzz, wxxg, wyyg, wzzg, wip, nel, ismstr, jlag)
subroutine s10mallb3(sav, offg, wxx, wyy, wzz, nel, ismstr, jlag)
subroutine s10mallgeo3(ngl, offg, volg, deltax, volg0, rx, ry, rz, sx, sy, sz, tx, ty, tz, lc, geo, nel, npt, ismstr, isrot, dt)
subroutine s10nx3(nx, nel, npt)
subroutine s10nxt4(nx, nel)
subroutine s10pijto3(px, py, pz, pij, nel)
subroutine s10rcoor12(off, x, xdp, nc, r11, r12, r13, r21, r22, r23, r31, r32, r33, nel)
subroutine s10sav12(offg, offg0, sav, nc, xx, yy, zz, nel)
subroutine s10sav3(offg, sav, nc, xx, yy, zz, nel)
subroutine s10sigp3(sig, e0, defp, fac, g_pla, nel)
subroutine s10therm(pm, imat, nc, vol, px, py, pz, ni, dt1, tempnc, tel, heat, fphi, offg, off, nel, theaccfact)
subroutine s10upd11t12(elbuf_tab, offg, offg0, nc, xx, yy, zz, nel, npt)
subroutine s4therm_itet1(pm, imat, nc, nel, xx, yy, zz, dt1, heat, temp, fphi, offg, off, theaccfact)
subroutine s8e_sigp(elbuf_tab, sigp, nel)
subroutine sgcoor10(xx, yy, zz, x, xdp, x0, y0, z0, vx0, vy0, vz0, sav, nc, d, off, off0, nel, mtn, ismstr)
subroutine sgeodel3(ngl, offg, volg, deltax, volg0, geo, l_max, dt, nel, idel7nok)
subroutine smallb3(offg, off, nel, ismstr)
subroutine smallgeo3(ngl, offg, volg, deltax, volg0, itet, nel, ismstr, dt)
subroutine sordef12(jft, jlt, dxx, dyy, dzz, d4, d5, d6, g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z, off)
subroutine sordeft12(jft, jlt, mxx, mxy, mxz, myx, myy, myz, mzx, mzy, mzz, g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z, off)
subroutine sorthdir3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, gama0, gama, nel, irep)
subroutine srota3(sig, s1, s2, s3, s4, s5, s6, wxx, wyy, wzz, nel, mtn, ismstr)
subroutine sroto12_sig(jft, jlt, sig, nel, g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z, off)
subroutine sstra3(dxx, dyy, dzz, d4, d5, d6, strain, wxx, wyy, wzz, off, nel, jcvt)
subroutine s10coor3(x, v, ixs, ixs10, xx, yy, zz, vx, vy, vz, nc, ngl, mxt, ngeo, mass, dtelem, sti, sigg, eintg, rhog, qg, temp0, temp, sav, nel, nintemp)
subroutine s10deri3(vol, ngl, xx, yy, zz, px, py, pz, nx, rx, ry, rz, sx, sy, sz, tx, ty, tz, volu, voln, elbuf_str, volg)
subroutine s10len3(vol, ngl, deltax, deltax2, px, py, pz, volu, voln, volg, rx, ry, rz, sx, sy, sz, tx, ty, tz, nel, mxt, pm, v_piter, iint)
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine srho3(pm, volo, rhon, eint, dxx, dyy, dzz, voln, dvol, mat)
subroutine startime(event, itask)
subroutine stoptime(event, itask)
subroutine sxfillopt(npe, fill, sti, fx, fy, fz, nel)