131
132
133
137 USE mat_elem_mod
138 USE matparam_def_mod
139 USE fail_param_mod
142 USE elbufdef_mod
144 use glob_therm_mod
145 USE timer_mod
146 USE fail_lemaitre_s_mod
147 USE fail_spalling_s_mod
148 USE fail_composite_s_mod
149
150
151
152#include "implicit_f.inc"
153
154
155
156#include "usrplas_c.inc"
157#include "param_c.inc"
158#include "com04_c.inc"
159#include "com08_c.inc"
160#include "com01_c.inc"
161#include "userlib.inc"
162#include "impl1_c.inc"
163#include "timeri_c.inc"
164#include "scr18_c.inc"
165
166
167
168 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
169 INTEGER, INTENT(IN) :: ITY
170 INTEGER, INTENT(IN) :: JTUR
171 INTEGER, INTENT(INOUT) :: IDEL7NOK
172 INTEGER LFT ,LLT ,NFT ,MTN, NUVAR,JCVT,ISORTH,NFAIL,NPG,
173 . J, JSPH, IPLA,ISMSTR,NELTST, ITYPTST, NUVARR,NG,ILAY,
174 . IX, JTHE, ISROT,ISTRAIN,IPTR, IPTS, IPTT,IHET,IEXPAN,NEL
175 INTEGER NPF(*),MAT(MVSIZ),NGL(MVSIZ),PID(MVSIZ),IPM(NPROPMI,*),
176 . IPARG1(*),IPARG(NPARG,*),IGEO(NPROPGI,*),ITASK,ISELECT
177 INTEGER, INTENT(IN) :: IDAMP_FREQ_RANGE
178 TARGET :: ipm
179
181 . dt2t, bufvois(*)
183 . pm(npropm,*), gama(*),pnew(nel),varnl(nel),
184 . off(*), sig(nel,6), sigl(nel,6), strain(nel,6), eint(*),
185 . rho(*),qold(*), vol(*), bufmat(*), tf(*),vk(*),
186 . offg(*),stifn(*),geo(npropg,*),epsd(*),
187 . wxx(*), wyy(*), wzz(*), mumax(*), ssp(*),
188 . aire(*) ,voln(*) ,vd2(*) ,deltax(*),vis(*) ,
189 . sold1(mvsiz) ,sold2(mvsiz) ,sold3(mvsiz) ,
190 . sold4(mvsiz) ,sold5(mvsiz) ,sold6(mvsiz),
191 . d1(*) ,d2(*),d3(*),d4(*),d5(*),d6(*) ,psh(nel),
192 . q(*),ssp_eq(*),dvol(*),
193 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz),
194 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
195 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) , v(*), w(*),
196 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,mfyz(*) ,
197 . mfzx(*) ,mfzy(*) ,mfzz(*), fqvis(*),fssp(*),
198 . sigv(nel,6), sigy(*),defp(nel),
199 . dxy(*) ,dyx(*) ,dyz(*) ,dzy(*) ,dzx(*) ,dxz(*), sigdd(nel,6),
200 . fr_wav(*),x(*),et(*), mssa(*), dmels(*),fvd2(*),fdeltax(*),
201 . al_imp(mvsiz),signor(mvsiz,6),vdx(*),vdy(*),vdz(*),
202 . svisc(nel,6),amu(mvsiz),amu2(mvsiz),dpdm(mvsiz),vol_avg(mvsiz),epsth(nel),epsth3(mvsiz),
203 . etotsh(nel,6),tstar(mvsiz),muold(nel),conde(*), rhoref(*), rhosp(*)
204 TARGET :: bufmat,deltax,varnl,defp
205 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
206 my_real,
DIMENSION(LLT) :: el_temp
207 my_real,
TARGET,
DIMENSION(NUVAR*LLT):: uvar
208 my_real,
TARGET,
DIMENSION(LLT):: scale1,initvarf
209 TYPE (BUF_FAIL_), TARGET :: FBUF
210 TYPE (BUF_VISC_) :: VBUF
211 TYPE (TTABLE), DIMENSION(NTABLE) :: TABLE
212 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
213 TYPE () :: NLOC_DMG
214 TYPE (MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
215 TYPE (DT_), INTENT(IN) :: DT
216 TYPE (GLOB_THERM_) ,INTENT(INOUT) :: GLOB_THERM
217 TYPE (BUF_DAMP_RANGE_) ,INTENT(IN):: DAMP_BUF
218
219
220
221 INTEGER NV46, NUMEL, INLOC, JSMS
222 INTEGER I,NPAR,IADBUF,NFUNC,NUMTABL,NTABL_FAIL,ISRATE,SIZNUL,MX,IPG,NPTR,NPTS,
223 . IBID,IBIDON1,IBIDON2,IBIDON3,IBIDON4 ,N48,NIX,ILAW_USER,IGTYP,
224 . NVARF,NVARVIS,IR,IRUPT,IMAT,ISVIS,IVISC,NUVARV,ISEQ,IADRUPBUF,IDEV,VISCTYPE
226 .e1,e2,e3,e4,e5,e6,bid1,bid3,q1,q2,q3,ss1,ss2,ss3,ss4,ss5,
227 .ss6,wxxf,wyyf,wzzf,p2,epsp,dav,asrate,c1(mvsiz),
228 . ep1(mvsiz),ep2(mvsiz),ep3(mvsiz),e7(mvsiz),
229 . ep4(2*mvsiz),ep5(2*mvsiz),ep6(2*mvsiz),einc,
230 . s1(mvsiz) ,s2(mvsiz) ,s3(mvsiz) ,
231 . s4(2*mvsiz) ,s5(2*mvsiz) ,s6(2*mvsiz),
232 . de1(mvsiz),de2(mvsiz),de3(mvsiz),
233 . de4(2*mvsiz),de5(2*mvsiz),de6(2*mvsiz),
234 . so1(mvsiz),so2(mvsiz),so3(mvsiz),
235 . so4(2*mvsiz),so5(2*mvsiz),so6(2*mvsiz),
236 .es1(mvsiz),es2(mvsiz),es3(mvsiz),es4(mvsiz),es5(mvsiz),es6(mvsiz),
237 .sv1(mvsiz),sv2(mvsiz),sv3(mvsiz),sv4(mvsiz),sv5(mvsiz),sv6(mvsiz),
238 .svo1(mvsiz),svo2(mvsiz),svo3(mvsiz),svo4(mvsiz),svo5(mvsiz),svo6(mvsiz),
239 .r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),r23(mvsiz),
240 .r31(mvsiz),r32(mvsiz),r33(mvsiz),epsp1(mvsiz),dpla(mvsiz),
241 .pair(mvsiz),es7(mvsiz),es8(mvsiz),es9(mvsiz),defp0(mvsiz)
243
244 my_real fpsxx(mvsiz),fpsyy(mvsiz),fpszz(mvsiz),fpsxy(mvsiz),
245 * fpsyz(mvsiz),fpszx(mvsiz),fpsyx(mvsiz),fpszy(mvsiz),
246 * fpsxz(mvsiz),bid_arr(mvsiz),
247 * upsxx(mvsiz),upsyy(mvsiz),upszz(mvsiz),upsxy(mvsiz),
248 * upsyz(mvsiz),upsxz(mvsiz)
252 my_real,
DIMENSION(NEL),
TARGET :: le_max
253
254 my_real,
DIMENSION(:),
POINTER :: uparam,uparamf,uvarf,dfmax,tdel,
255 . yldfac,dam,el_len,el_pla,damini
256 my_real,
DIMENSION(MVSIZ) :: el_bfrac,el_tb
257 INTEGER :: SIZBFRAC,SIZTB
258 TYPE(ULAWINTBUF) :: USERBUF
259 TYPE(L_BUFEL_) ,POINTER :: LBUF, LBUF1, LBUF2
260 TYPE(G_BUFEL_) ,POINTER :: GBUF
261 TYPE (FAIL_PARAM_), POINTER :: FAILPARAM
262 LOGICAL :: LOGICAL_USERL_AVAIL
264 INTEGER, DIMENSION(:) ,POINTER :: ITABL_FAIL,IPARAMF
265 INTEGER, DIMENSION(:) ,POINTER :: FLD_IDX,FOFF,IFUNC,ITABLE
266 INTEGER :: DMG_FLAG,LF_DAMMX,NIPAR
267 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: ismstr10_fp
268 my_real additional_flt_parameters(mvsiz)
269 INTEGER ADDITIONAL_INT_PARAMETERS(MVSIZ),LENGTH
270 CHARACTER*256
271
272 CHARACTER OPTION*256
273 INTEGER SIZE
274 CHARACTER(LEN=NCHARLINE100)::IUSER_KEY
275 my_real,
DIMENSION(NEL) :: off_old
276
277 gbuf => elbuf_tab(ng)%GBUF
278 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
279 logical_userl_avail=.false.
280 IF(userl_avail>0) logical_userl_avail=.true.
281 nptr = elbuf_tab(ng)%NPTR
282 npts = elbuf_tab(ng)%NPTS
283 ipg = iptr + ((ipts-1) + (iptt-1)*npts)*nptr
284 igtyp = iparg(38,ng)
285 IF ((igtyp == 20).OR.(igtyp == 21).OR.(igtyp == 22)) THEN
286 ipg = iptr + ((ipts-1) + (ilay-1)*npts)*nptr
287 ENDIF
288 iseq = elbuf_tab(ng)%BUFLY(ilay)%L_SEQ
289 inloc = iparg(78,ng)
290 dmg_flag = elbuf_tab(ng)%BUFLY(ilay)%L_DMGSCL
291 nvarvis = elbuf_tab(ng)%BUFLY(ilay)%NVAR_VISC
292
293 IF (inloc > 0) THEN
294 DO i = lft,llt
295 varnl(i) =
max(varnl(i),zero)
296 lbuf%PLANL(i) = lbuf%PLANL(i
297 lbuf%EPSDNL(i) = varnl(i)/
max(dt1,em20)
298 ENDDO
299 ENDIF
300
301 facq0 = one
302 mx = mat(1)
303 npar = ipm(9,mx)
304 iadbuf = ipm(7,mx)
305 nfunc = ipm(10,mx)
306 numtabl= ipm(226,mx)
307 uparam => bufmat(iadbuf:iadbuf+npar)
308 ifunc => ipm(10+1:10+nfunc,mx)
309 itable => ipm(226+1:226+numtabl,mx)
310
311
312
313
316 bidon3 = zero
317 bidon4 = zero
318 bidon5 = zero
319 bid1 = zero
320 bid3 = zero
321
322
323 ibid = 0
324 ibidon1 = 0
325 ibidon2 = 0
326 ibidon3 = 0
327 ibidon4 = 0
328 ilaw_user = ipm(217, mx)
329 imat = ipm(1, mx)
330 isvis = igeo(35,pid(1))
331 IF(impl_s >0.AND.idyna == 0) isvis = 0
332
333 dpla(lft:llt) = zero
334
335 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
336 defp0(lft:llt) = lbuf%PLA(lft:llt)
337 ELSE
338 defp0(lft:llt) = zero
339 ENDIF
340
341
342
343 off_old(1:nel) = off(1:nel)
344
345 IF (gbuf%G_BFRAC > 0) THEN
346 el_bfrac(1:nel) = elbuf_tab(ng)%GBUF%BFRAC(1:nel)
347 sizbfrac = nel
348 ELSE
349 el_bfrac(1:nel) = zero
350 sizbfrac = 0
351 ENDIF
352
353 IF (gbuf%G_TB > 0) THEN
354 el_tb(1:nel) = elbuf_tab(ng)%GBUF%TB(1:nel)
355 siztb = nel
356 ELSE
357 el_tb(1:nel) = zero
358 siztb = 0
359 ENDIF
360
361
362 scale1(lft:llt) = one
363 yldfac => scale1(lft:llt)
364 IF ( elbuf_tab(ng)%BUFLY(ilay)%L_FAC_YLD > 0) THEN
365 yldfac => lbuf%FAC_YLD(1:nel)
366 ENDIF
367
368 c1(1:mvsiz) = pm(32,mx)
369 rho0(1:mvsiz)= pm( 1,mx)
370 vis(1:mvsiz) = zero
371 ep1(1:mvsiz) = d1(1:mvsiz)*off(1:mvsiz)
372 ep2(1:mvsiz) = d2(1:mvsiz)*off(1:mvsiz)
373 ep3(1:mvsiz) = d3(1:mvsiz)*off(1:mvsiz)
374 ep4(1:mvsiz) = d4(1:mvsiz)*off(1:mvsiz)
375 ep5(1:mvsiz) = d5(1:mvsiz)*off(1:mvsiz)
376 ep6(1:mvsiz) = d6(1:mvsiz)*off(1:mvsiz)
377 sv1(1:mvsiz) = zero
378 sv2(1:mvsiz) = zero
379 sv3(1:mvsiz) = zero
380 sv4(1:mvsiz) = zero
381 sv5(1:mvsiz) = zero
382 sv6(1:mvsiz) = zero
383 e7(1:mvsiz) = zero
384 s1(1:mvsiz) = zero
385 s2(1:mvsiz) = zero
386 s3(1:mvsiz) = zero
387 s4(1:mvsiz) = zero
388 s5(1:mvsiz) = zero
389 s6(1:mvsiz) = zero
390 svo1(1:mvsiz) = zero
391 svo2(1:mvsiz) = zero
392 svo3(1:mvsiz) = zero
393 svo4(1:mvsiz) = zero
394 svo5(1:mvsiz) = zero
395 svo6(1:mvsiz) = zero
396
397 ssp(1:mvsiz)=zero
398
399 if (mat_elem%MAT_PARAM(mat(1))%IVISC == 3) then
400 DO i=1,nel
401 svo1(i) = svisc(i,1)
402 svo2(i) = svisc(i,2)
403 svo3(i) = svisc(i,3)
404 svo4(i) = svisc(i,4)
405 svo5(i) = svisc(i,5)
406 svo6(i) = svisc(i,6)
407 ENDDO
408 ENDIF
409
410 IF (jcvt > 0) THEN
411
412
413
414 DO i=lft,llt
415 de1(i) = ep1(i)*dt1
416 de2(i) = ep2(i)*dt1
417 de3(i) = ep3(i)*dt1
418 de4(i) = ep4(i)*dt1
419 de5(i) = ep5(i)*dt1
420 de6(i) = ep6(i)*dt1
421 so1(i) = sig(i,1)
422 so2(i) = sig(i,2)
423 so3(i) = sig(i,3)
424 so4(i) = sig(i,4)
425 so5(i) = sig(i,5)
426 so6(i) = sig(i,6)
427 wxx(i)=zero
428 wyy(i)=zero
429 wzz(i)=zero
430 ENDDO
431
432 ELSEIF (isorth /= 0) THEN
433
434
435
437 1 gama, r11, r12, r13,
438 2 r21, r22, r23, r31,
439 3 r32, r33, rx, ry,
440 4 rz, sx, sy, sz,
441 5 tx, ty, tz, nel,
442 6 jsph)
443 DO i=lft,llt
444 ep4(i) = half*ep4(i)
445 ep5(i) = half*ep5(i)
446 ep6(i) = half*ep6(i)
447 ENDDO
448 CALL mrotens(lft,llt,ep1,ep2,ep3,ep4,ep5,ep6,
449 . r11,r12,r13,
450 . r21,r22,r23,
451 . r31,r32,r33)
452#include "vectorize.inc"
453 DO i=lft,llt
454 ep4(i) = two*ep4(i)
455 ep5(i) = two*ep5(i)
456 ep6(i) = two*ep6(i)
457 de1(i)= ep1(i)*dt1
458 de2(i)= ep2(i)*dt1
459 de3(i)= ep3(i)*dt1
460 de4(i)= ep4(i)*dt1
461 de5(i)= ep5(i)*dt1
462 de6(i)= ep6(i)*dt1
463 so1(i) = sigl(i,1)
464 so2(i) = sigl(i,2)
465 so3(i) = sigl(i,3)
466 so4(i) = sigl(i,4)
467 so5(i) = sigl(i,5)
468 so6(i) = sigl(i,6)
469 wxx(i)=zero
470 wyy(i)=zero
471 wzz(i)=zero
472 ENDDO
473 IF (mat_elem%MAT_PARAM(mat(1))%IVISC == 3) THEN
474 CALL mrotens(lft,llt,svo1,svo2,svo3,svo4,svo5,svo6,
475 . r11,r12,r13,
476 . r21,r22,r23,
477 . r31,r32,r33)
478 ENDIF
479 ELSE
480
481
482
483#include "vectorize.inc"
484 DO i=lft,llt
485 de1(i) = ep1(i)*dt1
486 de2(i) = ep2(i)*dt1
487 de3(i) = ep3(i)*dt1
488 de4(i) = ep4(i)*dt1
489 de5(i) = ep5(i)*dt1
490 de6(i) = ep6(i)*dt1
491 so1(i) = sig(i,1)
492 so2(i) = sig(i,2)
493 so3(i) = sig(i,3)
494 so4(i) = sig(i,4)
495 so5(i) = sig(i,5)
496 so6(i) = sig(i,6)
497 ENDDO
498
499#include "vectorize.inc"
500 DO i=lft,llt
501 wxxf=wxx(i)*off(i)
502 wyyf=wyy(i)*off(i)
503 wzzf=wzz(i)*off(i)
504 q1=strain(i,4)*wzzf
505 q2=strain(i,6)*wyyf
506 q3=strain(i,5)*wxxf
507 ss1=strain(i,1)-q1+q2
508 ss2=strain(i,2)+q1-q3
509 ss3=strain(i,3)-q2+q3
510 ss4=strain(i,4)+2.*wzzf*(strain(i,1)-strain(i,2))+
511 . wyyf*strain(i,5)-wxxf*strain(i,6)
512 ss5=strain(i,5)+2.*wxxf*(strain(i,2)-strain(i,3))+
513 . wzzf*strain(i,6)-wyyf*strain(i,4)
514 ss6=strain(i,6)+2.*wyyf*(strain(i,3)-strain(i,1))+
515 . wxxf*strain(i,4)-wzzf*strain(i,5)
516 strain(i,1)= ss1
517 strain(i,2)= ss2
518 strain(i,3)= ss3
519 strain(i,4)= ss4
520 strain(i,5)= ss5
521 strain(i,6)= ss6
522 ENDDO
523 ENDIF
524
525 IF (istrain > 0) THEN
526 DO i=lft,llt
527 strain(i,1)= strain(i,1) + de1(i)
528 strain(i,2)= strain(i,2) + de2(i)
529 strain(i,3)= strain(i,3) + de3(i)
530 strain(i,4)= strain(i,4) + de4(i)
531 strain(i,5)= strain(i,5) + de5(i)
532 strain(i,6)= strain(i,6) + de6(i)
533 es1(i) = strain(i,1)
534 es2(i) = strain(i,2)
535 es3(i) = strain(i,3)
536 es4(i) = strain(i,4)
537 es5(i) = strain(i,5)
538 es6(i) = strain(i,6)
539 ENDDO
540 ELSE
541 DO i=lft,llt
542 es1(i) = zero
543 es2(i) = zero
544 es3(i) = zero
545 es4(i) = zero
546 es5(i) = zero
547 es6(i) = zero
548 ENDDO
549 ENDIF
550
551
552
553 IF (ismstr == 10.OR.ismstr == 12) THEN
554
555
556
557 IF (iselect > 0) THEN
558 DO i=lft,llt
559 es1(i)=etotsh(i,1)*off(i)
560 es2(i)=etotsh(i,2)*off(i)
561 es3(i)=etotsh(i,3)*off(i)
562 es4(i)=etotsh(i,4)*off(i)
563 es6(i)=etotsh(i,6)*off(i)
564 es5(i)=etotsh(i,5)*off(i)
565 END DO
566 ELSE
567 DO i=lft,llt
568 mfxx(i) = off(i)*mfxx(i)
569 mfyy(i) = off(i)*mfyy(i)
570 mfzz(i) = off(i)*mfzz(i)
571 mfxy(i) = off(i)*mfxy(i)
572 mfyx(i) = off(i)*mfyx(i)
573 mfzx(i) = off(i)*mfzx(i)
574 mfxz(i) = off(i)*mfxz(i)
575 mfyz(i) = off(i)*mfyz(i)
576 mfzy(i) = off(i)*mfzy(i)
577 ENDDO
578
579 DO i=lft,llt
580 es1(i)=mfxx(i)*(two+mfxx(i))+
581 . mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
582 es2(i)=mfyy(i)*(two+mfyy(i))+
583 . mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
584 es3(i)=mfzz(i)*(two+mfzz(i))+
585 . mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
586 es4(i)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+
587 . mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
588 es6(i)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+
589 . mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
590 es5(i)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+
591 . mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
592 ENDDO
593 END IF
594
595 IF(idtmin(1)==3.AND.ismstr == 12)THEN
596 DO i=lft,llt
597 IF (offg(i) <=one) cycle
598 es1(i)=mfxx(i)
599 es2(i)=mfyy(i)
600 es3(i)=mfzz(i)
601 es4(i)=half*(mfxy(i)+mfyx(i))
602 es6(i)=half*(mfxz(i)+mfzx(i))
603 es5(i)=half*(mfzy(i)+mfyz(i))
604 ENDDO
605 END IF
606
607
608
609 IF (jcvt <= 0 .AND. isorth /= 0) THEN
610
612 1 gama, r11, r12, r13,
613 2 r21, r22, r23, r31,
614 3 r32, r33, rx, ry,
615 4 rz, sx, sy, sz,
616 5 tx, ty, tz, nel,
617 6 jsph)
618 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
619 . r11,r12,r13,
620 . r21,r22,r23,
621 . r31,r32,r33)
622 ENDIF
623 DO i=lft,llt
624 es4(i) = two*es4(i)
625 es5(i) = two*es5(i)
626 es6(i) = two*es6(i)
627 ENDDO
628
629 ELSEIF (ismstr==11) THEN
630
631 DO i=lft,llt
632 es1(i)=mfxx(i)
633 es2(i)=mfyy(i)
634 es3(i)=mfzz(i)
635 es4(i)=mfxy(i)+mfyx(i)
636 es6(i)=mfxz(i)+mfzx(i)
637 es5(i)=mfzy(i)+mfyz(i)
638 ENDDO
639 IF (jcvt == 0 .AND. isorth /= 0) THEN
640
641
642
643 DO i=lft,llt
644 es4(i) = half*es4(i)
645 es5(i) = half*es5(i)
646 es6(i) = half*es6(i)
647 ENDDO
649 1 gama, r11, r12, r13,
650 2 r21, r22, r23, r31,
651 3 r32, r33, rx, ry,
652 4 rz, sx, sy, sz,
653 5 tx, ty, tz, nel,
654 6 jsph)
655 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
656 . r11,r12,r13,
657 . r21,r22,r23,
658 . r31,r32,r33)
659 DO i=lft,llt
660 es4(i) = two*es4(i)
661 es5(i) = two*es5(i)
662 es6(i) = two*es6(i)
663 ENDDO
664 ENDIF
665
666 DO i=lft,llt
667 strain(i,1)= es1(i)
668 strain(i,2)= es2(i)
669 strain(i,3)= es3(i)
670 strain(i,4)= es4(i)
671 strain(i,5)= es5(i)
672 strain(i,6)= es6(i)
673 ENDDO
674
675 IF (iexpan > 0) THEN
676 DO i=lft,llt
677 strain(i,1)= strain(i,1)-epsth(i)
678 strain(i,2)= strain(i,2)-epsth(i)
679 strain(i,3)= strain(i,3)-epsth(i)
680 ENDDO
681 ENDIF
682 ENDIF
683
684
685
686
687 israte = ipm(3,mx)
688 IF (israte > 0) THEN
689 asrate =
min(one, pm(9,mx)*dt1)
690 ENDIF
691
692
693
694
695
696
697
698
699 IF (dmg_flag == 1) THEN
700 DO i = 1,nel
701 so1(i) = so1(i)/
max(lbuf%DMGSCL(i),em20)
702 so2(i) = so2(i)/
max(lbuf%DMGSCL(i),em20)
703 so3(i) = so3(i)/
max(lbuf%DMGSCL(i),em20)
704 so4(i) = so4(i)/
max(lbuf%DMGSCL(i),em20)
705 so5(i) = so5(i)/
max(lbuf%DMGSCL(i),em20)
706 so6(i) = so6(i)/
max(lbuf%DMGSCL(i),em20)
707 ENDDO
708
709 ELSEIF (dmg_flag == 6) THEN
710 DO i = 1,nel
711 so1(i) = so1(i)/
max(lbuf%DMGSCL(i+nel*(1-1)),em20)
712 so2(i) = so2(i)/
max(lbuf%DMGSCL(i+nel*(2-1)),em20)
713 so3(i) = so3(i)/
max(lbuf%DMGSCL(i+nel*(3-1)),em20)
714 so4(i) = so4(i)/
max(lbuf%DMGSCL(i+nel*(4-1)),em20)
715 so5(i) = so5(i)/
max(lbuf%DMGSCL(i+nel*(5-1)),em20)
716 so6(i) = so6(i)/
max(lbuf%DMGSCL(i+nel*(6-1)),em20)
717 ENDDO
718 ENDIF
719
720
721
722
723 IF (mtn == 29) THEN
724 u_tagplas(1:nel) = 0
725 IF (logical_userl_avail)THEN
726 tt_local = tt
727 CALL eng_userlib_sigeps( mtn,
728 . llt ,npar,nuvar,nfunc,ifunc,
729 . npf ,tf ,tt_local,dt1,uparam,
730 . rho0,rho ,voln,eint,
731 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
732 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
733 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
734 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
735 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
736 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
737 . ssp ,vis ,uvar,off )
738
739 ELSE
740
741
742 option='/MAT/LAW29 - SOLID '
743 size=len_trim(option)
744 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
746
747
748 ENDIF
749 DO i=lft,llt
750 IF(u_tagplas(i)/=0)THEN
751 sigy(i)=u_yeld(i)
752 defp(i)=u_defp(i)
753 ELSE
754 sigy(i)=ep30
755 defp(i)=zero
756 END IF
757 END DO
758 ELSEIF(mtn == 30)THEN
759 u_tagplas(1:nel) = 0
760 IF (logical_userl_avail)THEN
761 tt_local = tt
762 CALL eng_userlib_sigeps( mtn,
763 . llt ,npar,nuvar,nfunc,ifunc,
764 . npf ,tf ,tt_local,dt1,uparam,
765 . rho0,rho ,voln,eint,
766 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
767 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
768 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
769 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
770 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
771 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
772 . ssp ,vis ,uvar,off )
773
774 ELSE
775
776
777 option='/MAT/LAW30 - SOLID '
778 size=len_trim(option)
779 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
781
782
783 ENDIF
784 DO i=lft,llt
785 IF(u_tagplas(i)/=0)THEN
786 sigy(i)=u_yeld(i)
787 defp(i)=u_defp(i)
788 ELSE
789 sigy(i)=ep30
790 defp(i)=zero
791 END IF
792 END DO
793 ELSEIF(mtn == 31)THEN
794 u_tagplas(1:nel) = 0
795 IF (logical_userl_avail)THEN
796 tt_local = tt
797 CALL eng_userlib_sigeps( mtn,
798 . llt ,npar,nuvar,nfunc,ifunc,
799 . npf ,tf ,tt_local,dt1,uparam,
800 . rho0,rho ,voln,eint,
801 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
802 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
803 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
804 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
805 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
806 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
807 . ssp ,vis ,uvar,off )
808
809 ELSE
810
811
812 option='/MAT/LAW31 - SOLID '
813 size=len_trim(option)
814 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
816
817 ENDIF
818
819 DO i=lft,llt
820 IF(u_tagplas(i)/=0)THEN
821 sigy(i)=u_yeld(i)
822 defp(i)=u_defp(i)
823 ELSE
824 sigy(i)=ep30
825 defp(i)=zero
826 END IF
827 END DO
828
829 ELSEIF(mtn == 99) THEN
830
831 IF(logical_userl_avail)THEN
832
833 IF (ismstr == 10) THEN
834 DO i=lft,llt
835 fpsxx(i) = one+mfxx(i)
836 fpsyy(i) = one+mfyy(i)
837 fpszz(i) = one+mfzz(i)
838 END DO
839 fpsxy = mfxy(1:mvsiz)
840 fpsyz = mfyz(1:mvsiz)
841 fpsxz = mfxz(1:mvsiz)
842 fpsyx = mfyx(1:mvsiz)
843 fpszy = mfzy(1:mvsiz)
844 fpszx = mfzx(1:mvsiz)
845
846
847
848 IF (isorth /= 0) THEN
850 1 gama, r11, r12, r13,
851 2 r21, r22, r23, r31,
852 3 r32, r33, rx, ry,
853 4 rz, sx, sy, sz,
854 5 tx, ty, tz, nel,
855 6 jsph)
857 . fpsxx,fpsxy,fpsxz,
858 . fpsyx,fpsyy,fpsyz,
859 . fpszx,fpszy,fpszz,
860 . r11,r12,r13,
861 . r21,r22,r23,
862 . r31,r32,r33)
863 END IF
864
866 1 llt ,fpsxx , fpsxy , fpsxz , fpsyx ,
867 2 fpsyy ,fpsyz , fpszx , fpszy , fpszz ,
868 3 upsxx ,upsyy , upszz , upsxy , upsyz ,
869 4 upsxz )
870
871 ELSE
872 fpsxx(1:mvsiz) = zero
873 fpsyy(1:mvsiz) = zero
874 fpszz(1:mvsiz) = zero
875 fpsxy(1:mvsiz) = zero
876 fpsyz(1:mvsiz) = zero
877 fpsxz(1:mvsiz) = zero
878 fpsyx(1:mvsiz) = zero
879 fpszy(1:mvsiz) = zero
880 fpszx(1:mvsiz) = zero
881 upsxx(1:mvsiz) = zero
882 upsyy(1:mvsiz) = zero
883 upszz(1:mvsiz) = zero
884 upsxy(1:mvsiz) = zero
885 upsyz(1:mvsiz) = zero
886 upsxz(1:mvsiz) = zero
887 END IF
888
889
890 CALL eng_userlib_get_law_var(
891 * ncycle, imat,iptr, ipts,iptt,
892 * r11, r12, r13, r21, r22, r23, r31,
893 * r32, r33, so1, so2, so3, so4, so5,
894 * so6, ep1, ep2, ep3, ep4, ep5, ep6,
895 * es1, es2, es3, es4, es5, es6, de1,
896 * de2, de3, de4, de5, de6, rho0, s1,
897 * s2, s3, s4, s5, s6, sv1, sv2,
898 * sv3, sv4, sv5, sv6 )
899
900 IF (dlibtkvers >= 1301501260)THEN
901 siznul=0
902 CALL eng_userlib_get_law_var_2(
903 * fpsxx ,mvsiz ,fpsyy ,mvsiz ,
904 * fpszz ,mvsiz ,fpsxy ,mvsiz ,fpsyz ,mvsiz ,fpszx ,mvsiz,
905 * fpsyx ,mvsiz ,fpszy ,mvsiz ,fpsxz ,mvsiz ,upsxx ,mvsiz,
906 * upsyy ,mvsiz ,upszz ,mvsiz ,upsxy ,mvsiz ,upsyz ,mvsiz,
907 * upsxz ,mvsiz ,el_temp,nel ,dvol ,mvsiz ,el_bfrac,sizbfrac,
908 * el_tb ,siztb ,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
909 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
910 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
911 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
912 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
913 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
914 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
915 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
916 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
917 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
918 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
919 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
920 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
921 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
922 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
923 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
924 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
925 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
926 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
927 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul)
928 ENDIF
929
930
931 tt_local = tt
932 CALL eng_userlib_sigeps99(
933 * llt ,npar ,nuvar ,ilaw_user ,nfunc,
934 * ifunc ,npf ,tf ,tt_local ,dt1,
935 * uparam ,rho ,voln ,eint ,ngl ,
936 * ssp ,vis ,uvar ,off ,sigy ,
937 * defp )
938
939
940 CALL eng_userlib_set_law_var(
941 * s1, s2, s3, s4, s5, s6,
942 * sv1, sv2, sv3,sv4, sv5, sv6,
943 * dpla )
944
945 IF(dlibtkvers >= 1301501260)THEN
946 siznul=0
947 CALL eng_userlib_set_law_var_2(el_temp,nel,el_bfrac,sizbfrac,
948 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
949 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
950 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
951 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
952 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
953 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
954 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
955 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
956 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
957 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
958 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
959 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
960 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
961 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
962 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
963 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
964 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
965 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
966 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
967 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
968 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
969 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
970 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
971 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul )
972
973 IF (sizbfrac > 0) THEN
974
975 elbuf_tab(ng)%GBUF%BFRAC(1:nel) = el_bfrac(1:nel)
976 ENDIF
977
978 ENDIF
979
980 ELSE
981
982
983
985 option='/MAT/'//iuser_key//' - SOLID'
986 size=len_trim(option)
987 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
989
990 ENDIF
991
992#ifdef DNC
993 ELSE IF (mtn == 200) THEN
994
995 IF(mds_avail == 1 )THEN
996 ALLOCATE(ismstr10_fp(15,nel))
997
999 1 rx, ry, rz, sx,
1000 2 sy, sz, tx, ty,
1001 3 tz, r11, r21, r31,
1002 4 r12, r22, r32, r13,
1003 5 r23, r33, llt)
1004
1005
1006 IF (ismstr == 10) THEN
1007 DO i=lft,llt
1008 fpsxx(i) = one+mfxx(i)
1009 fpsyy(i) = one+mfyy(i)
1010 fpszz(i) = one+mfzz(i)
1011 END DO
1012 fpsxy = mfxy(1:mvsiz)
1013 fpsyz = mfyz(1:mvsiz)
1014 fpsxz = mfxz(1:mvsiz)
1015 fpsyx = mfyx(1:mvsiz)
1016 fpszy = mfzy(1:mvsiz)
1017 fpszx = mfzx(1:mvsiz)
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038 IF (isorth /= 0) THEN
1040 1 gama, r11, r12, r13,
1041 2 r21, r22, r23, r31,
1042 3 r32, r33, rx, ry,
1043 4 rz, sx, sy, sz,
1044 5 tx, ty, tz, nel,
1045 6 jsph)
1047 . ismstr10_fp(1,1),ismstr10_fp(2,1),ismstr10_fp(3,1),
1048 . ismstr10_fp(4,1),ismstr10_fp(5,1),ismstr10_fp(6,1),
1049 . ismstr10_fp(7,1),ismstr10_fp(8,1),ismstr10_fp(9,1),
1050 . r11,r12,r13,
1051 . r21,r22,r23,
1052 . r31,r32,r33)
1053 END IF
1055 1 llt ,
1056 * ismstr10_fp( 1,1), ismstr10_fp( 4,1), ismstr10_fp( 6,1), ismstr10_fp( 7,1),
1057 * ismstr10_fp( 2,1), ismstr10_fp( 5,1), ismstr10_fp( 9,1), ismstr10_fp( 8,1),ismstr10_fp( 3,1),
1058 * ismstr10_fp(10,1), ismstr10_fp(11,1), ismstr10_fp(12,1), ismstr10_fp(13,1),ismstr10_fp(14,1),
1059 * ismstr10_fp(15,1) )
1060
1061 ELSE
1062 ismstr10_fp( 1,1) = zero
1063 ismstr10_fp( 2,1) = zero
1064 ismstr10_fp( 3,1) = zero
1065 ismstr10_fp( 4,1) = zero
1066 ismstr10_fp( 5,1) = zero
1067 ismstr10_fp( 6,1) = zero
1068 ismstr10_fp( 7,1) = zero
1069 ismstr10_fp( 8,1) = zero
1070 ismstr10_fp( 9,1) = zero
1071 ismstr10_fp(10,1) = zero
1072 ismstr10_fp(11,1) = zero
1073 ismstr10_fp(12,1) = zero
1074 ismstr10_fp(13,1) = zero
1075 ismstr10_fp(14,1) = zero
1076 ismstr10_fp(15,1) = zero
1077 END if! (ismstr == 10)
1078
1079
1080 CALL eng_mds_sigeps_s( ncycle ,imat, ngl,nel ,
1081 * iptr , ipts , iptt , npar ,nuvar ,nfunc ,ifunc ,
1082 * npf , tf , tt , dt1 , uparam , uvar ,
1083 * rho0 , rho , voln , eint , el_temp , amu ,
1084 * ep1 , ep2 , ep3 , ep4 , ep5 , ep6 ,
1085 * de1 , de2 , de3 , de4 , de5 , de6 ,
1086 * es1 , es2 , es3 , es4 , es5 , es6 ,
1087 * so1 , so2 , so3 , so4 , so5 , so6 ,
1088 * s1 , s2 , s3 , s4 , s5 , s6 ,
1089 * sv1 , sv2 , sv3 , sv4 , sv5 , sv6 ,
1090 * ssp , vis , off , r11 , r12 , r13 ,
1091 * r21 , r22 , r23 , r31 , r32 , r33 ,
1092 * ismstr , ismstr10_fp ,defp , dpla , sigy ,
1093 * additional_flt_parameters, additional_int_parameters )
1094
1095 ELSE
1096 CALL mds_userlib_name_get(mds_libname,length)
1097 CALL ancmsg(msgid=287,anmode=aninfo,
1098 . c1=mds_libname(1:length))
1100 ENDIF
1101#endif
1102 ENDIF
1103
1104
1105
1106 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,121)
1107 IF (nfail > 0) THEN
1108
1109
1110 IF (inloc > 0) THEN
1111
1112 le_max(1:nel) = nloc_dmg%LE_MAX(mat(1))
1113 el_len => le_max(1:nel)
1114 ELSE
1115
1116 el_len => deltax(1:nel)
1117 ENDIF
1118
1119 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1120
1121 IF (inloc > 0) THEN
1122 DO i=lft,llt
1123 dpla(i) =
max(varnl(i),zero)
1124 ENDDO
1125 el_pla => lbuf%PLANL(1:nel)
1126 ELSE
1127
1128 DO i=lft,llt
1129 dpla(i) = defp(i) - defp0(i)
1130 ENDDO
1131 el_pla => defp(1:nel)
1132 ENDIF
1133 ELSE
1134 DO i=lft,llt
1135 dpla(i) = zero
1136 ENDDO
1137 ENDIF
1138
1139 DO ir = 1,nfail
1140
1141 DO i=lft,llt
1142 dav = (ep1(i)+ep2(i)+ep3(i))*third
1143 e1 = ep1(i) - dav
1144 e2 = ep2(i) - dav
1145 e3 = ep3(i) - dav
1146 e4 = half*ep4(i)
1147 e5 = half*ep5(i)
1148 e6 = half*ep6(i)
1149 epsp1(i) =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
1150 epsp1(i) = sqrt(three*epsp1(i))*two_third
1151 ENDDO
1152
1153
1154
1155 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1156 IF (inloc > 0) THEN
1157 DO i = lft,llt
1158 epsp1(i) = lbuf%EPSDNL(i)
1159 ENDDO
1160 ENDIF
1161 ENDIF
1162
1163 uvarf => fbuf%FLOC(ir)%VAR
1164 irupt = fbuf%FLOC(ir)%ILAWF
1165 nvarf = fbuf%FLOC(ir)%NVAR
1166 dfmax => fbuf%FLOC(ir)%DAMMX
1167 damini => fbuf%FLOC(ir)%DAMINI
1168 tdel => fbuf%FLOC(ir)%TDEL
1169 fld_idx => fbuf%FLOC(ir)%INDX
1170 foff => fbuf%FLOC(ir)%OFF
1171 dam => fbuf%FLOC(ir)%DAM
1172 lf_dammx = fbuf%FLOC(ir)%LF_DAMMX
1173
1174 failparam => mat_elem%MAT_PARAM(mx)%FAIL(ir)
1175 npar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NUPARAM
1176 nipar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NIPARAM
1177 uparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%UPARAM(1:npar)
1178 iparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IPARAM(1:nipar)
1179 nfunc = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NFUNC
1180 ifunc => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IFUNC(1:nfunc)
1181 ntabl_fail = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NTABLE
1182 itabl_fail => mat_elem%MAT_PARAM(mx)%FAIL(ir)%TABLE(1:ntabl_fail)
1183
1184 IF (irupt == 1)THEN
1185
1187 2 tt ,dt1 ,uparamf,ngl ,
1188 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1189 5 dpla,epsp1,tstar,uvarf,off,
1190 6 dfmax,tdel )
1191 ELSEIF (irupt == 2) THEN
1192
1194 2 tt ,dt1 ,uparamf,ngl ,
1195 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1196 5 uvarf,off ,dfmax,tdel )
1197 ELSEIF (irupt == 3) THEN
1198
1200 2 tt ,dt1 ,uparamf,ngl ,
1201 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1202 5 dpla,uvarf,off,dfmax,tdel )
1203 ELSEIF (irupt == 4)THEN
1204
1205 IF (logical_userl_avail)THEN
1206 user_uelr(1:llt)=gbuf%UELR(1:llt)
1207
1208 tt_local = tt
1209 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1210 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1211 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1212 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1213 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1214 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1215 7 defp ,dpla,epsp1,uvarf,off ,
1216 8 deltax,voln,user_uelr,dfmax,bidon5)
1217 gbuf%UELR(1:llt) = user_uelr(1:llt)
1218 ELSE
1219! CALL f04law(llt ,npar,nuvarr,nfunc,ifunc,
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230 option='/FAIL/USER1 - SOLID '
1231 size=len_trim(option)
1232 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1234
1235
1236 ENDIF
1237 ELSEIF (irupt == 5)THEN
1238
1239 IF (logical_userl_avail)THEN
1240 tt_local = tt
1241 user_uelr(1:llt)=gbuf%UELR(1:llt)
1242 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1243 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1244 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1245 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1246 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1247 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1248 7 defp ,dpla,epsp1,uvarf,off ,
1249 8 deltax,voln,user_uelr,dfmax,bidon5)
1250 gbuf%UELR(1:llt) = user_uelr(1:llt)
1251 ELSE
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263 option='/FAIL/USER2 - SOLID '
1264 size=len_trim(option)
1265 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1267
1268
1269 ENDIF
1270 ELSEIF (irupt == 6)THEN
1271
1272 IF (logical_userl_avail)THEN
1273 tt_local = tt
1274 user_uelr(1:llt)=gbuf%UELR(1:llt)
1275 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1276 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1277 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1278 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1279 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1280 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1281 7 defp ,dpla,epsp1,uvarf,off ,
1282 8 deltax,voln,user_uelr,dfmax,bidon5)
1283 gbuf%UELR(1:llt) = user_uelr(1:llt)
1284 ELSE
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296 option='/FAIL/USER3 - SOLID '
1297 size=len_trim(option)
1298 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1300
1301
1302 ENDIF
1303 ELSEIF (irupt == 7)THEN
1304 ELSEIF (irupt == 8)THEN
1305
1306 CALL fail_spalling_s(llt ,npar,
1307 2 tt ,uparamf,ngl ,
1308 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1309 5 dpla,epsp1,tstar,off ,
1310 6 lf_dammx ,dfmax,tdel ,offg ,
1311 7 nipar ,iparamf,mvsiz)
1312 ELSEIF (irupt == 9)THEN
1313
1315 2 tt ,dt1 ,uparamf,ngl ,
1316 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1317 5 dpla,defp,uvarf,off ,dfmax,
1318 6 tdel )
1319 ELSEIF (irupt == 10)THEN
1320
1322 2 npf ,tf ,tt ,dt1 ,uparamf,
1323 3 ngl ,deltax ,tstar ,ismstr,
1324 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1325 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1326 6 epsp1,uvarf,off ,dfmax,tdel ,
1327 7 mfxx ,mfxy ,mfxz ,mfyx ,mfyy ,mfyz ,
1328 8 mfzx ,mfzy ,mfzz ,lbuf%DMGSCL)
1329 ELSEIF (irupt == 11)THEN
1330
1332 1 nel ,npar ,nvarf ,nfunc ,ifunc ,npf ,
1333 2 tf ,tt ,dt1 ,uparamf ,ngl ,epsp1 ,
1334 3 uvarf ,off ,dfmax ,tdel ,lbuf%DMGSCL,
1335 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1336 5 de1 ,de2 ,de3 ,de4 ,de5 ,de6 )
1337 ELSEIF (irupt == 13) THEN
1338
1340 1 nel ,npar ,nvarf ,uparamf ,uvarf ,
1341 2 tt ,ipg ,ilay ,npg ,ngl ,
1342 3 lbuf%DMGSCL,dfmax ,off ,lbuf%OFF ,gbuf%NOFF,
1343 4 s1 ,s2 ,s3 ,s4 ,s6 ,
1344 5 tdel ,lf_dammx )
1345 ELSEIF(irupt == 14)THEN
1346
1347 DO i=1,nel
1348 epsp1(i) =
max(abs(ep1(i)),abs(ep2(i)),abs(ep3(i)),em20)
1349 ENDDO
1351 1 nel ,nvarf ,ilay ,npg ,tt ,
1352 2 dt1 ,uparamf ,ngl ,off ,gbuf%NOFF,
1353 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1354 4 uvarf ,npar ,dfmax ,tdel ,epsp1 ,lf_dammx )
1355 ELSEIF(irupt == 16)THEN
1356
1358 1 nel ,nvarf ,ilay ,npg ,tt ,
1359 2 dt1 ,uparamf ,ngl ,off ,gbuf%NOFF,
1360 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1361 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel )
1362 ELSEIF (irupt == 23) THEN
1363
1365 1 llt ,nvarf ,npf ,tf ,tt ,
1366 2 uparamf ,ngl ,el_len ,
1367 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1368 4 dpla ,epsp1 ,tstar ,uvarf ,ntabl_fail,itabl_fail,
1369 5 off ,table ,dfmax ,tdel ,nfunc ,ifunc )
1370 ELSEIF (irupt == 24) THEN
1371
1373 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1374 2 npf ,tf ,tt ,dt1 ,uparamf ,ismstr ,
1375 3 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1376 4 es1 ,es2 ,es3
1377 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1378 6 uvarf ,off ,ipg ,ngl ,dfmax ,tdel ,
1379 7 gbuf%UELR,npg ,deltax ,lf_dammx )
1380 ELSEIF (irupt == 27) THEN
1381
1383 1 llt ,nvarf ,tt ,
1384 2 dt1 ,uparamf ,ngl ,
1385 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1386 4 defp ,dpla ,epsp1 ,uvarf ,
1387 5 off ,dfmax ,tdel )
1388 ELSEIF (irupt == 29) THEN
1389
1391 1 llt ,nfunc ,ifunc ,npf ,tf ,
1392 2 tt ,ngl ,uparamf ,
1393 3 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1394 4 off ,dfmax ,tdel ,deltax ,
1395 5 nvarf ,uvarf )
1396 ELSEIF (irupt == 30) THEN
1397
1399 1 llt ,npar ,nvarf ,nfunc ,ifunc ,el_len ,
1400 2 npf ,tf ,tt ,uparamf ,tdel ,
1401 3 ngl ,dpla ,uvarf ,off ,dfmax ,lbuf%DMGSCL,
1402 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 )
1403 ELSEIF (irupt == 33) THEN
1404
1406 1 llt ,npar ,nvarf ,
1407 2 tt ,dt1 ,uparamf ,ngl ,
1408 3 s1 ,s2 ,s3 ,s4 ,
1409 4 s5 ,s6 ,uvarf ,off ,
1410 5 dfmax ,lbuf%EPSA)
1411 ELSEIF (irupt == 34) THEN
1412
1414 1 tt ,dt1 ,uparamf ,ngl ,
1415 3 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1416 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1417 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1418 6 defp ,dpla ,epsp ,uvarf ,off ,
1419 7 dfmax ,tdel )
1420 ELSEIF (irupt == 36) THEN
1421
1423 . llt ,npar ,nvarf ,tt ,dt1 ,uparamf,
1424 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1425 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1426 . uvarf ,off ,ngl ,dfmax ,ismstr )
1427
1428 ELSEIF (irupt == 37) THEN
1429
1431 1 llt ,nvarf ,npf ,tf ,tt ,
1432 2 uparamf ,ngl ,el_len ,
1433 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1434 4 defp ,dpla ,epsp1 ,tstar ,uvarf ,
1435 5 off ,dfmax ,tdel ,
1436 6 nfunc ,ifunc )
1437
1438 ELSEIF (irupt == 38) THEN
1439
1441 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1442 2 npf ,tf ,tt ,dt1 ,uparamf ,
1443 3 ngl ,dpla ,epsp1 ,uvarf ,off ,
1444 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1445 5 dfmax ,tdel ,el_len )
1446
1447 ELSEIF (irupt == 39) THEN
1448
1450 1 llt ,npar ,nvarf ,nfunc ,ifunc
1451 2 npf ,tf ,tt ,dt1 ,uparamf ,ipg ,
1452 3 ngl ,gbuf%DT ,epsp1 ,uvarf ,off ,npg ,
1453 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1454 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1455 6 el_temp ,voln ,dfmax ,tdel ,deltax ,table ,
1456 7 ir ,elbuf_tab(ng),ilay ,ntabl_fail,itabl_fail,lf_dammx,
1457 8 nipar ,iparamf )
1458
1459 ELSEIF (irupt == 40) THEN
1460
1462 1 llt ,npar ,nvarf ,tt ,dt1 ,uparamf ,
1463 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1464 3 ngl ,dpla ,uvarf ,off ,dfmax ,tdel )
1465
1466 ELSEIF (irupt == 41) THEN
1467
1469 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1470 2 npf ,table ,tf ,tt ,uparamf ,
1471 3 ngl ,el_len ,dpla ,epsp1 ,uvarf ,
1472 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1473 6 el_temp ,off ,dfmax ,tdel ,lbuf%DMGSCL,
1474 7 gbuf%UELR,ipg ,npg ,lbuf%OFF ,ntabl_fail,itabl_fail,
1475 8 gbuf%NOFF,voln )
1476
1477 ELSEIF (irupt == 42) THEN
1478
1480 1 nel ,npar ,nvarf ,
1481 2 table ,ntabl_fail,itabl_fail,tt ,uparamf ,
1482 3 ngl ,el_len ,dpla ,epsp1 ,uvarf ,
1483 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1484 6 el_pla ,el_temp ,sigy ,off ,dfmax ,
1485 7 tdel ,lbuf%DMGSCL,gbuf%UELR,ipg ,npg ,
1486 8 lbuf%OFF ,damini ,gbuf%VOL ,inloc )
1487
1488 ELSEIF (irupt == 43) THEN
1489
1491 1 nel ,uparamf ,npar ,uvarf ,nvarf ,
1492 2 tt ,ngl ,ipg ,dpla ,tdel ,
1493 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1494 4 dfmax ,nfunc ,ifunc ,el_len ,off ,
1495 5 npf ,tf ,gbuf%UELR,npg ,lbuf%OFF)
1496 ELSEIF (irupt == 44) THEN
1497
1499 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1500 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1501 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1502 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1503
1504 ELSEIF (irupt == 45) THEN
1505
1507 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1508 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1509 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1510 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1511
1512 ELSEIF (irupt == 46) THEN
1513
1515 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1516 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1517 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1518 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1519
1520 ELSEIF (irupt == 47) THEN
1521
1523 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1524 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1525 3 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1526 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1527
1528 ELSEIF (irupt == 48) THEN
1529
1531 1 nel ,npar ,nvarf ,uparamf ,uvarf ,ngl ,
1532 2 npg ,ipg ,ilay ,off ,lbuf%OFF ,gbuf%NOFF,
1533 3 de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
1534 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1535 6 tt ,tdel ,dfmax ,deltax ,lbuf%DMGSCL)
1536
1537 ELSEIF (irupt == 50) THEN
1538
1539 CALL fail_lemaitre_s(
1540 1 nel ,npar ,uparamf ,tt,ngl,mat_elem%MAT_PARAM(mx),
1541 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1542 3 dpla ,el_pla ,lbuf%OFF ,off ,dfmax ,tdel ,
1543 4 nipar ,iparamf ,lbuf%DMGSCL,gbuf%NOFF,npg )
1544
1545 ELSEIF (irupt == 51) THEN
1546
1547 CALL fail_composite_s(
1548 1 nel ,failparam,nvarf ,uvarf ,tt ,ngl ,
1549 2 ipg ,ilay ,npg ,tdel ,off ,lbuf%OFF ,
1550 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1551 4 lbuf%DMGSCL,lf_dammx,dfmax ,gbuf%NOFF)
1552
1553 ENDIF
1554 ENDDO
1555 ENDIF
1556 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,121)
1557
1558
1559
1560 IF ((mat_elem%MAT_PARAM(mat(1))%IVISC > 0).OR.(idamp_freq_range > 0)) THEN
1561 CALL viscmain(mat_elem%MAT_PARAM(mat(1))%VISC ,nel ,
1562 . nvarvis ,vbuf%VAR,rho0 ,vis ,ssp ,dt1 ,
1563 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1564 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
1565 . svo1 ,svo2 ,svo3 ,svo4 ,svo5 ,svo6 ,
1566 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
1567 . mfxx ,mfxy ,mfxz ,mfyx ,mfyy ,mfyz ,
1568 . mfzx ,mfzy ,mfzz ,
1569 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1570 . damp_buf,idamp_freq_range,mvsiz,et,mat_elem%MAT_PARAM(imat)%YOUNG,
1571 . mat_elem%MAT_PARAM(imat)%SHEAR,mat_elem%MAT_PARAM(mat(1))%IVISC)
1572 ENDIF
1573
1574
1575
1576
1577 IF (isvis > 0) THEN
1578 CALL nsvisul(llt ,off ,rho ,geo ,
1579 2 pid ,ssp ,aire ,voln ,ep1 ,
1580 3 ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1581 4 sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,
1582 5 sv6 ,s3 ,es3 ,rho0 ,rhoref )
1583 ENDIF
1584
1585
1586
1587 DO i = 1,nel
1588 IF ((off_old(i) > zero) .AND. (off(i) == zero)) THEN
1589 idel7nok = 1
1590 ENDIF
1591 ENDDO
1592
1593
1594
1595
1596 IF (dmg_flag == 1) THEN
1597 DO i = 1,nel
1598 s1(i) = s1(i)*lbuf%DMGSCL(i)
1599 s2(i) = s2(i)*lbuf%DMGSCL(i)
1600 s3(i) = s3(i)*lbuf%DMGSCL(i)
1601 s4(i) = s4(i)*lbuf%DMGSCL(i)
1602 s5(i) = s5(i)*lbuf%DMGSCL(i)
1603 s6(i) = s6(i)*lbuf%DMGSCL(i)
1604 ENDDO
1605
1606 ELSEIF (dmg_flag == 6) THEN
1607 DO i = 1,nel
1608 s1(i) = s1(i)*lbuf%DMGSCL(i+nel*(1-1))
1609 s2(i) = s2(i)*lbuf%DMGSCL(i+nel*(2-1))
1610 s3(i) = s3(i)*lbuf%DMGSCL(i+nel*(3-1))
1611 s4(i) = s4(i)*lbuf%DMGSCL(i+nel*(4-1))
1612 s5(i) = s5(i)*lbuf%DMGSCL(i+nel*(5-1))
1613 s6(i) = s6(i)*lbuf%DMGSCL(i+nel*(6-1))
1614 ENDDO
1615 ENDIF
1616
1617 IF (isorth /= 0) THEN
1618 if (jcvt == 0) then
1619 DO i=1,nel
1620 sigl(i,1) = s1(i)*off(i)
1621 sigl(i,2) = s2(i)*off(i)
1622 sigl(i,3) = s3(i)*off(i)
1623 sigl(i,4) = s4(i)*off(i)
1624 sigl(i,5) = s5(i)*off(i)
1625 sigl(i,6) = s6(i)*off(i)
1626 sv1(i) = sv1(i)*off(i)
1627 sv2(i) = sv2(i)*off(i)
1628 sv3(i) = sv3(i)*off(i)
1629 sv4(i) = sv4(i)*off(i)
1630 sv5(i) = sv5(i)*off(i)
1631 sv6(i) = sv6(i)*off(i)
1632 ENDDO
1633
1635 & s1 ,s2 ,s3 , s4 ,s5 ,s6 ,
1636 & r11,r21,r31,
1637 & r12,r22,r32,
1638 & r13,r23,r33)
1640 & sv1 ,sv2 ,sv3 , sv4 ,sv5 ,sv6 ,
1641 & r11,r21,r31,
1642 & r12,r22,r32,
1643 & r13,r23,r33)
1644 else
1645 DO i=1,nel
1646 sv1(i) = sv1(i)*off(i)
1647 sv2(i) = sv2(i)*off(i)
1648 sv3(i) = sv3(i)*off(i)
1649 sv4(i) = sv4(i)*off(i)
1650 sv5(i) = sv5(i)*off(i)
1651 sv6(i) = sv6(i)*off(i)
1652 ENDDO
1653 end if
1654 END IF
1655
1656 DO i=1,nel
1657 sig(i,1) = s1(i)*off(i)
1658 sig(i,2) = s2(i)*off(i)
1659 sig(i,3) = s3(i)*off(i)
1660 sig(i,4) = s4(i)*off(i)
1661 sig(i,5) = s5(i)*off(i)
1662 sig(i,6) = s6(i)*off(i)
1663 svis(i,1) = sv1(i)*off(i)
1664 svis(i,2) = sv2(i)*off(i)
1665 svis(i,3) = sv3(i)*off(i)
1666 svis(i,4) = sv4(i)*off(i)
1667 svis(i,5) = sv5(i)*off(i)
1668 svis(i,6) = sv6(i)*off(i)
1669 ENDDO
1670
1671
1672
1673 visctype = mat_elem%MAT_PARAM(mat(1))%IVISC
1674 IF (isvis > 0 .OR. visctype == 1 .OR. visctype == 3) THEN
1675 DO i=1,nel
1676 sigv(i,1) = svis(i,1)
1677 sigv(i,2) = svis(i,2)
1678 sigv(i,3) = svis(i,3)
1679 sigv(i,4) = svis(i,4)
1680 sigv(i,5) = svis(i,5)
1681 sigv(i,6) = svis(i,6)
1682 ENDDO
1683 ENDIF
1684 IF (mat_elem%MAT_PARAM(mat(1))%IVISC > 0) THEN
1685 DO i=1,nel
1686 svisc(i,1) = svis(i,1)
1687 svisc(i,2) = svis(i,2)
1688 svisc(i,3) = svis(i,3)
1689 svisc(i,4) = svis(i,4)
1690 svisc(i,5) = svis(i,5)
1691 svisc(i,6) = svis(i,6)
1692 ENDDO
1693 ENDIF
1694
1695
1696
1697 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1698 IF (inloc > 0) THEN
1699 DO i=lft,llt
1700 IF (off(i) == one) THEN
1701 varnl(i) = defp(i)
1702 ELSE
1703 varnl(i) = zero
1704 ENDIF
1705 ENDDO
1706 ENDIF
1707 ENDIF
1708
1709
1710
1711
1712 DO i=lft,llt
1713 IF (ssp(i) == zero) ssp(i)=sqrt(c1(i)/rho0(i))
1714 ENDDO
1715
1716
1717
1718
1719 IF (jsph == 0)THEN
1720 jsms = iparg(52,ng)
1722 1 pm, off, rho, bid1,
1723 2 el_temp, ssp, bid3, stifn,
1724 3 dt2t, neltst, ityptst, aire,
1725 4 offg, geo, pid, voln,
1726 5 vd2, deltax, vis, d1,
1727 6 d2, d3, pnew, psh,
1728 7 mat, ngl, q, ssp_eq,
1729 8 vol, mssa, dmels, igeo,
1730 9 facq0, conde, gbuf%DT, gbuf%G_DT,
1731 a ipm, rhoref, rhosp, nel,
1732 b ity, ismstr, jtur, jthe,
1733 c jsms, npg , glob_therm)
1734
1735 ELSE
1737 1 pm, off, rho, bid1,
1738 2 el_temp, bid3, stifn, dt2t,
1739 3 neltst, ityptst, offg, geo,
1740 4 pid, mumax, ssp, voln,
1741 5 vd2, deltax, vis, d1,
1742 6 d2, d3, pnew, psh,
1743 7 mat, ngl, q, ssp_eq,
1744 8 gbuf%G_DT,gbuf%DT, nel, ity,
1745 9 jtur, jthe)
1746 ENDIF
1747
1748 DO i=lft,llt
1749 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
1750 e1 = d1(i)*(sold1(i)+sig(i,1) + p2+two*svis(i,1))
1751 e2 = d2(i)*(sold2(i)+sig(i,2) + p2+two*svis(i,2))
1752 e3 = d3(i)*(sold3(i)+sig(i,3) + p2+two*svis(i,3))
1753 e4 = d4(i)*(sold4(i)+sig(i,4) + two*svis(i,4))
1754 e5 = d5(i)*(sold5(i)+sig(i,5) + two*svis(i,5))
1755 e6 = d6(i)*(sold6(i)+sig(i,6) + two*svis(i,6))
1756 einc = vol_avg(i)*dt1 * (e1+e2+e3+e4+e5+e6+e7(i))
1757 . - dvol(i)*(q(i) + qold(i) + p2)
1758 eint(i) = eint(i) + off(i)*einc*half
1759 END DO
1760 qold(lft:llt) = q(lft:llt)
1761
1762
1763 RETURN
if(complex_arithmetic) id
subroutine fail_biquad_s(nel, nuparam, nuvar, mfunc, kfunc, aldt, npf, tf, time, uparam, tdele, ngl, dpla, uvar, off, dfmax, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx)
subroutine fail_changchang_s(nel, nuparam, nuvar, uparam, uvar, time, ip, ilay, npg, ngl, dmg_scale, dfmax, off, loff, noff, signxx, signyy, signzz, signxy, signzx, tdele, lf_dammx)
subroutine fail_cockroft_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, pla, dpla, epsp, uvar, off, dfmax, tdele)
subroutine fail_emc(nel, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, uvar, off, dfmax, tdele)
subroutine fail_energy_s(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ngl, epsp, uvar, off, dfmax, tdele, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx)
subroutine fail_gene1_s(nel, nuparam, nuvar, nfunc, ifunc, loff, npf, tf, time, timestep, uparam, ipg, ngl, dt, epsp, uvar, off, npg, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, temp, voln, dfmax, tdele, aldt, table, irupt, elbuf_tab, ilay1, ntablf, itablf, lf_dammx, niparam, iparam)
subroutine fail_hashin_s(nel, nuvar, ilay, npt0, time, timestep, uparam, ngl, off, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, tdele, epsp, lf_dammx)
subroutine fail_hoffman_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_inievo_s(nel, nuparam, nuvar, table, ntablf, itablf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signzz, signxy, signyz, signzx, pla, temp, sigy, off, dfmax, tdele, dmg_scale, uelr, ipg, npg, loff, damini, vol, inloc)
subroutine fail_johnson(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, off, dfmax, tdele)
subroutine fail_maxstrain_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, epsxx, epsyy, epszz, epsxy, epsyz, epszx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_mullins_or_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, dfmax, ww)
subroutine fail_orthbiquad_s(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, ngl, dpla, epsp, uvar, off, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, tdele, aldt)
subroutine fail_orthenerg_s(nel, nuparam, nuvar, uparam, uvar, ngl, npg, ipg, ilay, off, loff, noff, depsxx, depsyy, depszz, depsxy, depsyz, depszx, signxx, signyy, signzz, signxy, signyz, signzx, time, tdel, dfmax, aldt, dmg_scale)
subroutine fail_orthstrain(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ismstr, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, ipt, ngl, dfmax, tdel, uelr, npt, deltax, lf_dammx)
subroutine fail_puck_s(nel, nuvar, ilay, npt0, time, timestep, uparam, ngl, off, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele)
subroutine fail_rtcl_s(nel, nuparam, nuvar, time, timestep, uparam, signxx, signyy, signzz, signxy, signyz, signzx, ngl, dpla, uvar, off, dfmax, tdele)
subroutine fail_sahraei_s(nel, nfunc, ifunc, npf, tf, time, ngl, uparam, epsxx, epsyy, epszz, epsxy, epsyz, epszx, off, dfmax, tdele, deltax, nuvar, uvar)
subroutine fail_syazwan_s(nel, uparam, nuparam, uvar, nuvar, time, ngl, ipg, dpla, tdele, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, nfunc, ifunc, aldt, off, npf, tf, uelr, npg, loff)
subroutine fail_tab2_s(nel, nuparam, nuvar, nfunc, ifunc, npf, table, tf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signzz, signxy, signyz, signzx, temp, off, dfmax, tdele, dmg_scale, uelr, ipg, npg, loff, ntablf, itablf, noff, voln)
subroutine fail_tab_old_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, tstar, uvar, off, dfmax, tdele, nfunc, ifunc)
subroutine fail_tab_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, ntablf, itablf, off, table, dfmax, tdele, nfunc, ifunc)
subroutine fail_tbutcher_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, dfmax, tdele)
subroutine fail_tensstrain_s(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ngl, aldt, tstar, ismstr, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, epsp, uvar, off, dfmax, tdele, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, dmg_scale)
subroutine fail_tsaihill_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_tsaiwu_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_visual_s(nel, nuparam, nuvar, time, timestep, uparam, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, ngl, dfmax, ismstr)
subroutine fail_wierzbicki_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, pla, uvar, off, dfmax, tdele)
subroutine fail_wilkins_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, uvar, off, dfmax, tdele)
subroutine mdtsph(pm, off, rho, rk, t, re, sti, dt2t, neltst, ityptst, offg, geo, pid, mumax, ssp, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, g_dt, dtsph, nel, ity, jtur, jthe)
subroutine mqviscb(pm, off, rho, rk, temp, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, vol0, mssa, dmels, igeo, facq0, conde, dtel, g_dt, ipm, rhoref, rhosp, nel, ity, ismstr, jtur, jthe, jsms, npg, glob_therm)
subroutine mreploc(ang, r11, r12, r13, r21, r22, r23, r31, r32, r33, rx, ry, rz, sx, sy, sz, tx, ty, tz, nel, jsph)
subroutine mrotensns(lft, llt, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, r11, r12, r13, r21, r22, r23, r31, r32, r33)
subroutine mrotens(lft, llt, e1, e2, e3, e4, dyz, e6, r11, r12, r13, r21, r22, r23, r31, r32, r33)
integer, parameter ncharline100
subroutine nolib_usermat99(ilaw_user, iuser_key)
subroutine nsvisul(nel, off, rho, geo, pid, ssp, aire, vol, d1, d2, d3, d4, d5, d6, sv1, sv2, sv3, sv4, sv5, sv6, s3, e3, rho0, rhoref)
subroutine epsf2u(nel, fxx, fxy, fxz, fyx, fyy, fyz, fzx, fzy, fzz, uxx, uyy, uzz, uxy, uyz, uxz)
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
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)
subroutine startime(event, itask)
subroutine stoptime(event, itask)
subroutine viscmain(visc, nel, nvarvis, uvarvis, rho, viscmax, soundsp, timestep, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, svo1, svo2, svo3, svo4, svo5, svo6, sv1, sv2, sv3, sv4, sv5, sv6, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, s1, s2, s3, s4, s5, s6, damp_buf, idamp_freq_range, mvsiz, et, young, shear_modulus, ivisc)