39 . MLAW_TAG ,PROP_TAG ,FAIL_TAG ,
40 . IGEO ,IPM ,IPARG ,IPART ,
41 . IPARTSP ,IXS ,IXQ ,IXC ,IXTG ,
42 . FLAG_XFEM ,IPARTIG3D,STACK ,IGEO_STACK,
43 . IXT ,IXP ,IXR ,KXX ,GEO ,
44 . EOS_TAG ,ISTR_24 ,PRINT_FLAG,DEFAULTS)
54 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
58#include "implicit_f.inc"
66#include "com_xfem1.inc"
70#include "tablen_c.inc"
72#include "boltpr_c.inc"
76 INTEGER ,
INTENT(IN) :: ISTR_24
77 INTEGER IPARG(NPARG,NGROUP),IPART(LIPART1,*),
78 . IPARTSP(*),IPM(NPROPMI,NUMMAT),IGEO(NPROPGI,NUMGEO),
79 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),
80 . FLAG_XFEM,IPARTIG3D(*),IGEO_STACK(NPROPGI,*),
81 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),KXX(NIXX,*)
83 INTEGER,
INTENT(IN) :: PRINT_FLAG
84 TYPE(ELBUF_STRUCT_),
TARGET ,
DIMENSION(NGROUP) :: ELBUF_TAB
85 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
86 TYPE(MLAW_TAG_) ,
TARGET ,
DIMENSION(NUMMAT) :: MLAW_TAG
87 TYPE(EOS_TAG_) ,
TARGET ,
DIMENSION(0:MAXEOS) :: EOS_TAG
88 TYPE(
prop_tag_) ,
TARGET ,
DIMENSION(0:MAXPROP) :: PROP_TAG
89 TYPE(
fail_tag_) ,
TARGET ,
DIMENSION(0:MAXFAIL ) :: FAIL_TAG
90 TYPE (STACK_PLY) :: STACK
91 TYPE(defaults_),
INTENT(INOUT) :: DEFAULTS
95 INTEGER :: I,J,IL,IR,IS,IT,NG,BUFLEN,IRUPT,IPID,IMID,IPRT,IAD,
96 . nel,npt,npg,mlw,mx,isorth,israte,isrot,irep,isvis,nlay,
97 . istra,ifail,nfail,ieos,ixfem,nptr,npts,nptt,ishplyxfem,
98 . nft,nft0,kfts,ity,jale,off,ismstr,icpre,nsg,icnod,isnod,jeul,
99 . jtur,jthe,jlag,irs,ire,icstr
100 . mmat1,mmat2,jhbe,jivf,jpor,ipla,proc,jclos,codconv,
101 . iint,jcvt,icsen,ilev,iexpan,igre,jsms,maxflay,ivisc,
102 . nuvar,nuvarm,nvartmp,nvartmp_eos,nuvarv,igtyp,tshell,tsh_ort,
103 . npar_lay,npar_tab,npar_lbuf,nip_lay,nintlay,limat,
104 . lifail,lglob,llay,lloc,lfail,gfail,lvisc,lmat,lporo,leos,nctrl,
105 . isubstack,ippid,ipidl,npt_lay,len_plapt,len_sigpt,
106 . ipmat,ipmat_iply,npttot,nuvarn,nx,iboltp,crkdir,inloc,lnloc,
107 . nonl, debug_print,ipinch,nvar_eos,ieos_type,idrape,lloc_slice,
108 . ipnpt_lay,idfail,lnlocts,icontrol,idamp_freq_range,
109 . ldamp_freq_range,nvar_damp_freq_range,npt0,l_eps ,l_sig ,ly_eint, ly_count
110 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: TFAIL,FAILID
111 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: IMAT,ILAW
112 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
113 TYPE(BUF_INTLAY_) ,
POINTER :: INTLAY
114 TYPE(G_BUFEL_) ,
POINTER :: GBUF
115 TYPE(FAIL_LOC_) ,
POINTER :: FLOC
116 TYPE(buf_nloc_) ,
POINTER :: BUFNL
117 TYPE(buf_nlocts_) ,
POINTER :: BUFNLTS
118 TYPE(buf_intloc_) ,
POINTER :: ILBUF
127 IF(print_flag>6)
WRITE(iout, 1001)
165 codconv = iparg(34,ng)
171 israte = iparg(40,ng)
173 IF (isnod == 10) isrot = iparg(74,ng)
174 isorth = iparg(42,ng)
179 iexpan = iparg(49,ng)
180 ishplyxfem = iparg(50,ng)
195 isubstack = iparg(71,ng)
196 iboltp = iparg(72,ng)
197 ipinch = iparg(90,ng)
198 idrape = iparg(92,ng)
199 idamp_freq_range = iparg(93,ng)
200 ldamp_freq_range = 6*
min(1,idamp_freq_range)
202 nvar_damp_freq_range = (28+16)*
min(1,idamp_freq_range)
204 nvar_damp_freq_range = 21*
min(1,idamp_freq_range)
219 IF (debug_print == 1)
THEN
220 print*,
'**** GROUP,ITY,IGTYP,MLW=',ng,ity,igtyp,mlw
221 print*,
' NPAR_TAB,NPAR_LAY,NPAR_LBUF=',npar_tab,npar_lay,npar_lbuf
238 IF (ixfem == 0 .AND. flag_xfem == 1
242 IF (ity == 1 .OR. ity == 2 .OR. ity == 51 .OR. ity == 101)
THEN
250 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22 .or.
251 . isnod == 16) tshell = 1
252 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
257 ELSEIF (npt == 1)
THEN
270 ELSEIF (tshell == 1)
THEN
272 nptt = mod(npt/10,10)
279 ELSEIF (jhbe == 14)
THEN
289 ELSEIF (icstr == 100)
THEN
302 ELSEIF (jhbe==16)
THEN
304 npts = mod(npt/10,10)
315 ELSE ! solid property
317 IF (jhbe == 16 .AND. isnod == 20)
THEN
319 npts = mod(npt/10,10)
321 ELSEIF (jhbe == 14)
THEN
323 nptt = mod(abs(npt)/10,10)
324 nptr = mod(abs(npt),10)
325 ELSEIF (jhbe == 12)
THEN
330 ELSEIF (jhbe == 17)
THEN
339 IF (n2d>0 .AND.(jhbe==17.OR.jhbe==22))
THEN
352 npt = nptr*npts*nptt*nlay
356 CALL my_alloc(tfail,nlay,maxflay)
357 CALL my_alloc(failid,nlay,maxflay)
358 CALL my_alloc(imat,nlay)
359 CALL my_alloc(ilaw,nlay)
367 ELSEIF (ity == 2)
THEN
370 ELSEIF (ity == 51)
THEN
371 iprt = ipartsp(nft+1)
374 ELSEIF (ity == 101)
THEN
375 iprt = ipartig3d(nft+1)
382 ALLOCATE(elbuf_tab(ng)%INTLAY(nintlay))
383 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
385 bufly => elbuf_tab(ng)%BUFLY(il)
387 ALLOCATE(bufly%LBUF(nptr,npts,nptt))
388 ALLOCATE(bufly%MAT (nptr,npts,nptt))
389 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
390 ALLOCATE(bufly%PROP(nptr,npts,nptt))
391 ALLOCATE(bufly%EOS (nptr,npts,nptt))
392 ALLOCATE(bufly%VISC(nptr,npts,nptt))
393 ALLOCATE(bufly%PORO(nptr,npts,nptt))
396 elbuf_tab(ng)%IGTYP = igtyp
397 elbuf_tab(ng)%NEL = nel
398 elbuf_tab(ng)%NLAY = nlay
399 elbuf_tab(ng)%NINTLAY= nintlay
400 elbuf_tab(ng)%NPTR = nptr
401 elbuf_tab(ng)%NPTS = npts
402 elbuf_tab(ng)%NPTT = nptt
403 elbuf_tab(ng)%IXFEM = ixfem
404 elbuf_tab(ng)%NXEL = nxel
405 elbuf_tab(ng)%IDRAPE = idrape
412 ALLOCATE(elbuf_tab(ng)%NLOCTS(0,0))
421 IF (igtyp == 22)
THEN
423 imat(il) = igeo(100+il,ipid)
424 ilaw(il) = ipm(2,imat(il))
425 nuvar = mlaw_tag(imat(il))%NUVAR
428 ieos_type = ipm(4,imat(il))
429 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
430 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
431 nvartmp = mlaw_tag(imat(il))%NVARTMP
432 nfail = mat_param(imat(il))%NFAIL
433 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
434 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
435 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
436 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imat(il
437 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
438 elbuf_tab(ng)%BUFLY(il)%NFAIL= nfail
439 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = nuvar
440 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
441 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
442 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
443 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imat(il))%VISC%NUVAR + nvar_damp_freq_range
445 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
446 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
448 failid(il,j) = idfail
450 IF (mlaw_tag(imat(il))%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
455 ELSEIF (igtyp > 28 .and. igtyp < 32)
THEN
456 nuvar = mlaw_tag(imid)%NUVAR
457 nvartmp = mlaw_tag(imid)%NVARTMP
460 ieos_type = ipm(4,imid)
461 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
462 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
463 elbuf_tab(ng)%BUFLY(1)%ILAW = mlw
464 elbuf_tab(ng)%BUFLY(1)%IMAT = imid
465 elbuf_tab(ng)%BUFLY(1)%IEOS = 0
466 elbuf_tab(ng)%BUFLY(1)%IVISC= 0
467 elbuf_tab(ng)%BUFLY(1)%IPORO= 0
468 elbuf_tab(ng)%BUFLY(1)%NFAIL = 0
469 elbuf_tab(ng)%BUFLY(1)%NVAR_MAT= nuvar
470 elbuf_tab(ng)%BUFLY(1)%NVAR_EOS= nvar_eos
471 elbuf_tab(ng)%BUFLY(1)%NVARTMP = nvartmp
472 elbuf_tab(ng)%BUFLY(1)%NVARTMP_EOS = nvartmp_eos
473 IF (mlaw_tag(imid)%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
477 ELSEIF (mlw == 20)
THEN
479 ilaw(il) = iparg(24+il,ng)
480 mx = mat_param(imid)%MULTIMAT%MID(il)
481 nfail = mat_param(mx)%NFAIL
482 ieos_type = ipm(4, mx)
483 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
484 elbuf_tab(ng)%BUFLY(il)%IMAT = mx
485 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
486 elbuf_tab(ng)%BUFLY(il)%IVISC= 0
487 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
488 elbuf_tab(ng)%BUFLY(il)%NFAIL= 0
489 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT= 0
490 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS= 0
491 elbuf_tab(ng)%BUFLY(il)%NVARTMP = 0
492 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
493 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC=0
495 irupt = mat_param(mx)%FAIL(j)%IRUPT
496 idfail = mat_param(mx)%FAIL(j)%FAIL_ID
498 failid(il,j) = idfail
502 ELSEIF (mlw == 151)
THEN
504 imat(il) = mat_param(imid)%MULTIMAT%MID(il)
505 ilaw(il) = ipm(2,imat(il))
506 nuvar = mlaw_tag(imid)%NUVAR
507 nvartmp = mlaw_tag(imid)%NVARTMP
510 ieos_type = mat_param(imat(il))%IEOS
511 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
512 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
513 nfail = mat_param(imat(il))%NFAIL
514 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
515 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
516 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos_type
517 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imat(il))%VISC%ILAW
518 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = nuvar
519 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
520 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
521 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
522 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imat(il))%VISC%NUVAR + nvar_damp_freq_range
523 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
524 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
526 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
527 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
529 failid(il,j) = idfail
531 IF (mlaw_tag(imat(il))%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
536 ELSEIF (nlay > 1)
THEN
540 nuvar = mlaw_tag(imid)%NUVAR
541 nvartmp = mlaw_tag(imid)%NVARTMP
542 nfail = mat_param(imat(il))%NFAIL
543 elbuf_tab(ng)%BUFLY(il)%ILAW = mlw
544 elbuf_tab(ng)%BUFLY(il)%IMAT = imid
545 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
546 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imid)%VISC%ILAW
547 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT= nuvar
548 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
549 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS= 0
550 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
551 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC=mat_param(imid)%VISC%NUVAR + nvar_damp_freq_range
552 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
553 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
555 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
556 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
558 failid(il,j) = idfail
560 IF (mlaw_tag(imat(il))%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
568 ALLOCATE(elbuf_tab(ng)%NLOCTS(nptr,npts))
572 DO ir = 1,elbuf_tab(ng)%NPTR
573 DO is = 1,elbuf_tab(ng)%NPTS
575 bufnlts => elbuf_tab(ng)%NLOCTS(ir,is)
577 CALL my_alloc(bufnlts%MASSTH
578 bufnlts%MASSTH = zero
579 lnlocts = lnlocts + nel*nonl
581 CALL my_alloc(bufnlts%UNLTH,nel,nonl)
583 lnlocts = lnlocts + nel*nonl
585 CALL my_alloc(bufnlts%VNLTH,nel,nonl)
587 lnlocts = lnlocts + nel*nonl
589 CALL my_alloc(bufnlts%FNLTH,nel,nonl)
591 lnlocts = lnlocts + nel*nonl
597 nuvar = mlaw_tag(imid)%NUVAR
598 nvartmp = mlaw_tag(imid)%NVARTMP
601 ieos_type = ipm(4,imid)
602 IF (ieos_type > 0) nvar_eos = eos_tag(ieos_type)%NVAR
603 IF (ieos_type > 0) nvartmp_eos = eos_tag(ieos_type)%NVAR
604 nfail = mat_param(imid)%NFAIL
605 elbuf_tab(ng)%BUFLY(1)%ILAW = mlw
606 elbuf_tab(ng)%BUFLY(1)%IMAT = imid
607 elbuf_tab(ng)%BUFLY(1)%IEOS = ieos
608 elbuf_tab(ng)%BUFLY(1)%NVAR_MAT= nuvar
609 elbuf_tab(ng)%BUFLY(1)%NVAR_EOS= nvar_eos
610 elbuf_tab(ng)%BUFLY(1)%NVARTMP = nvartmp
611 elbuf_tab(ng)%BUFLY(1)%NVARTMP_EOS = nvartmp_eos
612 elbuf_tab(ng)%BUFLY(1)%IVISC = mat_param(imid)%VISC%ILAW
613 elbuf_tab(ng)%BUFLY(1)%NVAR_VISC = mat_param(imid)%VISC%NUVAR + nvar_damp_freq_range
614 elbuf_tab(ng)%BUFLY(1)%IPORO= 0
615 elbuf_tab(ng)%BUFLY(1)%NFAIL = nfail
617 irupt = mat_param(imid)%FAIL(j)%IRUPT
618 idfail = mat_param(imid)%FAIL(j)%FAIL_ID
626 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
627 nuvarv = mat_param(mx)%VISC%NUVAR + nvar_damp_freq_range
628 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = nuvarv
629 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
630 nvartmp = elbuf_tab(ng)%BUFLY(il)%NVARTMP
631 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
632 nvar_eos= elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
633 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
637 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
638 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = mx
639 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
640 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
641 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR,nuvarv*nel)
642 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it
643 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos*nel)
645 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(1:nuvarm*nel) = zero
646 elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR(1:nuvarv*nel) = zero
647 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR(1:nvar_eos*nel) = zero
648 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP(1:nvartmp*nel) = 0
649 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP(1:nvartmp_eos*nel) = 0
651 lmat = lmat + nuvarm*nel
652 lvisc = lvisc + nuvarv*nel
653 leos = leos + nvar_eos*nel
655 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail))
656 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
659 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
661 irupt = mat_param(mx)%FAIL(j)%IRUPT
665 floc%IDFAIL = mat_param(mx)%FAIL(j)%FAIL_ID
668 floc%NVAR = mat_param(mx)%FAIL(j)%NUVAR
669 CALL my_alloc(floc%VAR,floc%NVAR*nel)
671 lfail = lfail + floc%NVAR*nel + 1
673 floc%LF_DAM = fail_tag(irupt)%LF_DAM
674 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
676 lfail = lfail + floc%LF_DAM*nel + 1
678 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
679 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
681 lfail = lfail + floc%LF_DAMMX*nel + 1
683 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
684 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI*nel)
686 lfail = lfail + floc%LF_DAMINI*nel + 1
688 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
689 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
691 lfail = lfail + floc%LF_TDEL*nel + 1
693 floc%LF_INDX = fail_tag(irupt)%LF_INDX
694 CALL my_alloc(floc%INDX,floc%LF_INDX*nel)
696 lfail = lfail + floc%LF_INDX*nel + 1
698 floc%LF_OFF = fail_tag(irupt)%LF_OFF
699 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
701 lfail = lfail + floc%LF_OFF*nel + 1
709 gbuf => elbuf_tab(ng)%GBUF
710 IF (igtyp == 43)
THEN
711 elbuf_tab(ng)%BUFLY(1)%L_EPSA = 3
712 elbuf_tab(ng)%BUFLY(1)%L_EPE = 3
714 IF (ismstr /= 4 .OR. jlag >0)
THEN
715 IF (igtyp == 43)
THEN
716 elbuf_tab(ng)%BUFLY(1)%L_VOL = 1
717 ELSEIF (ity == 1)
THEN
718 IF (isnod == 10 .OR. isnod == 16 .OR. isnod == 20 )
THEN
719 gbuf%G_SMSTR = 3*isnod
721 ELSEIF (isnod == 4 .AND.isrot == 1)
THEN
722 gbuf%G_SMSTR = 3*(isnod+6)
724 gbuf%G_SMSTR = 3*(isnod-1)
728 IF (ity == 1.AND.(igtyp == 20.OR.igtyp == 21.OR.igtyp == 22)) gbuf%G_IDT_TSH=1
731 IF (ity == 1 .AND. isnod == 4 .AND. isrot == 3 )
THEN
736 icontrol = -huge(icontrol)
738 icontrol = igeo(97,ipid)
739 IF (icontrol==1) gbuf%G_EINT_DISTOR = 1
742 IF ((ismstr == 10.OR.ismstr == 12).AND.ity == 1)
THEN
743 IF (isnod == 10.OR.(isnod==4 .AND. isrot==1))
THEN
745 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=0
746 elbuf_tab(ng)%BUFLY(1)%L_PIJ=3*10
747 ELSEIF (isnod == 8.AND.jhbe == 17 )
THEN
749 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=0
750 elbuf_tab(ng)%BUFLY(1)%L_PIJ=3*isnod
751 IF (iint == 2.AND.icpre == 0 ) elbuf_tab(ng)%BUFLY(1)%L_PIJ=9*isnod
752 IF (iint == 2) gbuf%G_ETOTSH = 6
755 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=gbuf%G_JAC_I
759 IF (ismstr == 12 .AND. mlw==1 ) elbuf_tab(ng)%BUFLY(1)%L_SIGL=6
761 IF (jthe /= 0) gbuf%G_TEMP = 1
762 IF (jthe /= 0 .AND. npg > 1) gbuf%G_TEMPG = npg
763 IF (jeul+jale /= 0 .AND. isnod >= 4) gbuf%G_MOM = 3
764 IF (jhbe == 15 .OR. jhbe == 24) gbuf%G_HOURG = 12
765 IF (isnod == 6 .AND. jhbe /= 15) gbuf%G_HOURG = 12
766 IF (jhbe == 15 .AND. isnod == 6)
THEN
768 IF (icontrol==1) gbuf%G_HOURG = 12
770 IF (jhbe == 1 .AND. iint == 3) gbuf%G_HOURG = 12
772 IF (jhbe == 24) gbuf%G_STRHG = 3*6
778 IF (mlw /= 115) gbuf%G_RHO = 1
780 IF (isms_selec >= 1) gbuf%G_ISMS = 1
781 IF (jcvt>0.AND.ity == 1) gbuf%G_GAMA_R = 6
785 bufly => elbuf_tab(ng)%BUFLY(il)
786 IF (mlw /= 115) bufly%L_RHO = 1
788 IF (isorth == 1 .AND. isrot > 0) bufly%L_SIGD = 6
789 IF ((istra > 0 .AND. mlw /= 0) .OR. ity == 101)
791 IF (gbuf%G_GAMA > 0 .AND. nlay > 1) bufly%L_GAMA = gbuf%G_GAMA
792 IF (jthe /= 0) bufly%L_TEMP = 1
793 IF (isvis > 0 ..OR. bufly%IVISC == 1 .OR. bufly%IVISC == 3 ) bufly%L_SIGV = 6
794 IF ((ivisc > 0).OR.(idamp_freq_range > 0)) bufly%L_VISC = 6
800 IF(iufacyld == 1.AND.(mlw==36.OR.mlw==87))bufly%L_FAC_YLD = 1
802 IF(ity == 1) bufly%L_VOL0DP = 1
803 IF ((isorth == 1).AND.(igtyp == 34))
THEN
809 IF ((isorth == 1).AND.(igtyp == 34))
THEN
814 gbuf%G_BPRELD = nbpreld*iboltp
817 IF (ity==1 .AND. jhbe==17 .AND. iint==3)
THEN
827 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
828 . imid ,mlw ,igtyp ,jmult ,ifail ,
829 . ieos ,eos_tag ,isnod )
837 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat
840 lglob = lglob + gbuf%G_NOFF
841 lglob = lglob + gbuf%G_IERR
842 lglob = lglob + gbuf%G_GAMA
846 lglob = lglob + gbuf%G_HOURG
847 lglob = lglob + gbuf%G_TAG22
848 lglob = lglob + gbuf%G_STRA
849 lglob = lglob + gbuf%G_SIGI
850 lglob = lglob + gbuf%G_DMG
851 lglob = lglob + gbuf%G_DAMDL
852 lglob = lglob + gbuf%G_FOR
853 lglob = lglob + gbuf%G_MOM
854 lglob = lglob + gbuf%G_THK
855 lglob = lglob + gbuf%G_STRW
856 lglob = lglob + gbuf%G_THK_I
857 lglob = lglob + gbuf%G_JAC_I
858 lglob = lglob + gbuf%G_DT
859 lglob = lglob + gbuf%G_ISMS
860 lglob = lglob + gbuf%G_BPRELD
861 lglob = lglob + gbuf%G_COR_NF
862 lglob = lglob + gbuf%G_COR_FR
863 lglob = lglob + gbuf%G_COR_XR
864 lglob = lglob + gbuf%G_MAXFRAC
865 lglob = lglob + gbuf%G_MAXEPS
866 lglob = lglob + gbuf%G_AMU
867 lglob = lglob + gbuf%G_EINT_DISTOR
868 lglob = lglob + gbuf%G_WPLA
871 lglob = lglob + gbuf%G_FORPG
872 lglob = lglob + gbuf%G_MOMPG
874 lglob = lglob + gbuf%G_FORPGPINCH
875 lglob = lglob + gbuf%G_MOMPGPINCH
876 lglob = lglob + gbuf%G_EPGPINCHXZ
877 lglob = lglob + gbuf%G_EPGPINCHYZ
878 lglob = lglob + gbuf%G_EPGPINCHZZ
880 lglob = lglob + gbuf%G_STRPG
881 lglob = lglob + gbuf%G_STRWPG
882 lglob = lglob + gbuf%G_TEMPG
886 lglob = lglob + gbuf%G_BFRAC
887 lglob = lglob + gbuf%G_OFF
888 lglob = lglob + gbuf%G_EINT
889 lglob = lglob + gbuf%G_EINS
890 lglob = lglob + gbuf%G_RHO
891 lglob = lglob + gbuf%G_QVIS
892 lglob = lglob + gbuf%G_DELTAX
893 lglob = lglob + gbuf%G_VOL
894 lglob = lglob + gbuf%G_EPSD
895 lglob = lglob + gbuf%G_EPSQ
896 lglob = lglob + gbuf%G_PLA
897 lglob = lglob + gbuf%G_TEMP
898 lglob = lglob + gbuf%G_TB
899 lglob = lglob + gbuf%G_RK
900 lglob = lglob + gbuf%G_RE
901 lglob = lglob + gbuf%G_SIG
903 lglob = lglob + gbuf%G_FORTH
904 lglob = lglob + gbuf%G_EINTTH
905 lglob = lglob + gbuf%G_SEQ
906 lglob = lglob + gbuf%G_ABURN
907 lglob = lglob + gbuf%G_MU
912 lglob = lglob + gbuf%G_UELR
913 lglob = lglob + gbuf%G_UELR1
916 lglob = lglob + gbuf%G_AREA
917 lglob = lglob + gbuf%G_SKEW
918 lglob = lglob + gbuf%G_LENGTH
919 lglob = lglob + gbuf%G_TOTDEPL
920 lglob = lglob + gbuf%G_TOTROT
921 lglob = lglob + gbuf%G_FOREP
922 lglob = lglob + gbuf%G_MOMEP
923 lglob = lglob + gbuf%G_DEP_IN_TENS
924 lglob = lglob + gbuf%G_DEP_IN_COMP
925 lglob = lglob + gbuf%G_ROT_IN_TENS
926 lglob = lglob + gbuf%G_ROT_IN_COMP
927 lglob = lglob + gbuf%G_POSX
928 lglob = lglob + gbuf%G_POSY
929 lglob = lglob + gbuf%G_POSZ
930 lglob = lglob + gbuf%G_POSXX
931 lglob = lglob + gbuf%G_POSYY
932 lglob = lglob + gbuf%G_POSZZ
933 lglob = lglob + gbuf%G_YIELD
934 lglob = lglob + gbuf%G_LENGTH_ERR
935 lglob = lglob + gbuf%G_DV
936 lglob = lglob + gbuf%G_DFS
937 lglob = lglob + gbuf%G_SKEW_ERR
938 lglob = lglob + gbuf%G_E6
939 lglob = lglob + gbuf%G_RUPTCRIT
940 lglob = lglob + gbuf%G_MASS
941 lglob = lglob + gbuf%G_V_REPCVT
942 lglob = lglob + gbuf%G_VR_REPCVT
943 lglob = lglob + gbuf%G_NUVAR
944 lglob = lglob + gbuf%G_DEFINI
945 lglob = lglob + gbuf%G_FORINI
946 lglob = lglob + gbuf%G_INIFRIC
947 lglob = lglob + gbuf%G_STRHG
948 lglob = lglob + gbuf%G_DT_PITER
949 lglob = lglob + gbuf%G_IDT_TSH
951 lglob = lglob + gbuf%G_FILL
953 lglob = lglob + gbuf%G_TM_YIELD
954 lglob = lglob + gbuf%G_TM_SEQ
955 lglob = lglob + gbuf%G_TM_EINT
956 lglob = lglob + gbuf%G_TM_DMG
957 lglob = lglob + 2*gbuf%G_TM_SIG
958 lglob = lglob + 2*gbuf%G_TM_STRA
961 buflen = buflen + gbuf%NVAR_GLOB + 1 + lglob*nel
966 bufly => elbuf_tab(ng)%BUFLY(i)
968 llay = llay + npar_lay + bufly%NVAR_LAY + bufly%NVAR_LOC
969 llay = llay + nel*bufly%LY_DMG
970 llay = llay + nel*bufly%LY_GAMA
971 IF(idrape == 0 .OR. (idrape > 0 .and . igtyp == 17))
THEN
972 llay = llay + nel*bufly%LY_DIRA
973 llay = llay + nel*bufly%LY_DIRB
977 len_plapt = nel*bufly%LY_PLAPT
978 len_sigpt = nel*bufly%LY_SIGPT
980 IF (igtyp /= 51 .AND. igtyp /= 52)
THEN
981 len_plapt = nel*bufly%LY_PLAPT*npt
982 len_sigpt = nel*bufly%LY_SIGPT*npt
984 len_plapt = nel*bufly%LY_PLAPT*bufly%NPTT
985 len_sigpt = nel*bufly%LY_SIGPT*bufly%NPTT
990 llay = llay + len_plapt
991 llay = llay + len_sigpt
993 llay = llay + nel*bufly%LY_HOURG
995 buflen = buflen + llay
998 bufly => elbuf_tab(ng)%BUFLY(i)
1001 lloc = lloc + bufly%L_OFF
1002 lloc = lloc + bufly%L_GAMA
1003 lloc = lloc + bufly%L_STRA
1004 lloc = lloc + bufly%L_FRAC
1005 lloc = lloc + bufly%L_BFRAC
1006 lloc = lloc + bufly%L_EINT
1007 lloc = lloc + bufly%L_EINS
1008 lloc = lloc + bufly%L_RHO
1009 lloc = lloc + bufly%L_DP_DRHO
1010 lloc = lloc + bufly%L_QVIS
1011 lloc = lloc + bufly%L_DELTAX
1012 lloc = lloc + bufly%L_VOL
1013 lloc = lloc + bufly%L_EPSA
1014 lloc = lloc + bufly%L_EPSD
1015 lloc = lloc + bufly%L_EPSQ
1016 lloc = lloc + bufly%L_EPSF
1017 lloc = lloc + bufly%L_PLA
1018 lloc = lloc + bufly%L_WPLA
1019 lloc = lloc + bufly%L_TEMP
1020 lloc = lloc + bufly%L_TB
1021 lloc = lloc + bufly%L_RK
1022 lloc = lloc + bufly%L_RE
1023 lloc = lloc + bufly%L_VK
1024 lloc = lloc + bufly%L_SF
1025 lloc = lloc + bufly%L_ROB
1026 lloc = lloc + bufly%L_DAM
1027 lloc = lloc + bufly%L_DSUM
1028 lloc = lloc + bufly%L_DGLO
1029 lloc = lloc + bufly%L_CRAK
1030 lloc = lloc + bufly%L_ANG
1031 lloc = lloc + bufly%L_EPE
1032 lloc = lloc + bufly%L_EPC
1033 lloc = lloc + bufly%L_XST
1034 lloc = lloc + bufly%L_SSP
1035 lloc = lloc + bufly%L_Z
1036 lloc = lloc + bufly%L_VISC
1037 lloc = lloc + bufly%L_SIGL
1038 lloc = lloc + bufly%L_SIGV
1039 lloc = lloc + bufly%L_SIGA
1040 lloc = lloc + bufly%L_SIGB
1041 lloc = lloc + bufly%L_SIGC
1042 lloc = lloc + bufly%L_SIGD
1043 lloc = lloc + bufly%L_SIGF
1044 lloc = lloc + bufly%L_SIG
1045 lloc = lloc + bufly%L_FOR
1046 lloc = lloc + bufly%L_MOM
1047 lloc = lloc + bufly%L_THK
1048 lloc = lloc + bufly%L_SMSTR
1049 lloc = lloc + bufly%L_DMG
1050 lloc = lloc + bufly%L_FORTH
1051 lloc = lloc + bufly%L_EINTTH
1052 lloc = lloc + bufly%L_SEQ
1053 lloc = lloc + bufly%L_JAC_I
1054 lloc = lloc + bufly%L_FAC_YLD
1055 lloc = lloc + bufly%L_ABURN
1056 lloc = lloc + bufly%L_MU
1057 lloc = lloc + bufly%L_PIJ
1059 lloc = lloc + bufly%L_PLANL
1060 lloc = lloc + bufly%L_EPSDNL
1061 lloc = lloc + bufly%L_DMGSCL
1062 lloc = lloc + bufly%L_TSAIWU
1063 buflen = buflen + (lloc * nel + npar_lbuf) * npg
1067 iparg(66,ng) = buflen
1073 . nintlay,nel,npt,ng,ngroup,ity,
1074 . igtyp,nummat,mat_param)
1083 ELSEIF (ity == 3 .OR. ity == 7)
THEN
1092 ELSEIF (ity == 7)
THEN
1093 imid = ixtg(1,nft+1)
1094 ipid = ixtg(5,nft+1)
1096 elbuf_tab(ng)%GBUF%G_DT = 1
1099 IF (ity == 3 .and. jhbe == 11)
THEN
1102 ELSEIF (ity==7 .and. jhbe == 30)
THEN
1109 IF (igtyp == 10 .or. igtyp == 11 .or. igtyp == 16 .or.
1110 . igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1117 IF (igtyp == 17 .and. ishplyxfem == 1) nintlay = nlay-1
1118 IF (ity == 7 .AND. mlw == 151)
THEN
1119 nlay = iparg(20, ng)
1129 elbuf_tab(ng)%IGTYP = igtyp
1130 elbuf_tab(ng)%NEL = nel
1131 elbuf_tab(ng)%NLAY = nlay
1132 elbuf_tab(ng)%NINTLAY= nintlay
1133 elbuf_tab(ng)%NPTR = nptr
1134 elbuf_tab(ng)%NPTS = npts
1135 elbuf_tab(ng)%NPTT = nptt
1136 elbuf_tab(ng)%IXFEM = ixfem
1137 elbuf_tab(ng)%NXEL = nxel
1138 elbuf_tab(ng)%IDRAPE = idrape
1142 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1153 maxflay = 7 !
max nb of failure models per mat
1154 CALL my_alloc(tfail,nlay,maxflay)
1155 CALL my_alloc(failid,nlay,maxflay)
1156 CALL my_alloc(imat,nlay)
1157 CALL my_alloc(ilaw,nlay)
1161 IF (inloc == 0)
THEN
1162 ALLOCATE(elbuf_tab(ng)%NLOC(0,0))
1172 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
1175 IF (igtyp == 51 .OR. igtyp == 52 )
THEN
1178 ipnpt_lay = ippid + 3*nlay
1180 npt_lay = stack%IGEO(ipnpt_lay + il,isubstack)
1181 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1185 elbuf_tab(ng)%BUFLY(il)%NPTT = nptt
1189 IF (igtyp == 51 )
THEN
1193 ipidl = stack%IGEO(ippid+il,isubstack)
1194 npt_lay = igeo(4,ipidl)
1195 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1197 ELSEIF(igtyp == 52)
THEN
1200 ipidl = stack%IGEO(ippid+il,isubstack)
1201 npt_lay = igeo_stack(4,ipidl)
1202 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1206 elbuf_tab(ng)%BUFLY(il)%NPTT = nptt
1213 npttot = npttot + npg*elbuf_tab(ng)%BUFLY(i
1217 bufly => elbuf_tab(ng)%BUFLY(il)
1219 ALLOCATE(bufly%LBUF(nptr,npts,nptt))
1220 ALLOCATE(bufly%MAT (nptr,npts,nptt))
1221 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
1222 ALLOCATE(bufly%PROP(nptr,npts,nptt))
1223 ALLOCATE(bufly%EOS (nptr,npts,nptt))
1224 ALLOCATE(bufly%VISC(nptr,npts,nptt))
1225 ALLOCATE(bufly%PORO(nptr,npts,nptt))
1226 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52
1227 .
ALLOCATE(elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(nptt))
1231 IF ((inloc > 0).AND.(nptt>1))
THEN
1233 ALLOCATE(elbuf_tab(ng)%NLOC(nptr,npts))
1244 bufnl => elbuf_tab(ng)%NLOC(ir,is)
1246 CALL my_alloc(bufnl%MASSTH,nel,nonl)
1248 lnloc = lnloc + nel*nonl
1250 CALL my_alloc(bufnl%UNLTH,nel,nonl)
1252 lnloc = lnloc + nel*nonl
1254 CALL my_alloc(bufnl%VNLTH,nel,nonl)
1256 lnloc = lnloc + nel*nonl
1258 CALL my_alloc(bufnl%FNLTH,nel,nonl)
1260 lnloc = lnloc + nel*nonl
1266 ALLOCATE(elbuf_tab(ng)%INTLAY(nintlay))
1269 ALLOCATE(intlay%ILBUF(nptr,npts))
1270 ALLOCATE(intlay%MAT (nptr,npts))
1271 ALLOCATE(intlay%FAIL (nptr,npts))
1280 IF (igtyp == 11 .or. igtyp == 16)
THEN
1282 imat(il) = igeo(100+il,ipid)
1283 ilaw(il) = ipm(2,imat(il))
1285 ELSEIF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp
THEN
1288 imat(il) = stack%IGEO(ipmat + il ,isubstack)
1289 ilaw(il) = ipm(2,imat(il))
1291 ELSEIF(ipm(2,imid) == 151)
THEN
1293 imat(il) = ipm(20+il,imid)
1294 ilaw(il) = ipm(2,ipm(20+il,imid))
1304 IF (mlw == 151)
THEN
1306 ieos_type = mat_param(imat(il))%IEOS
1307 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il
1309 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
1310 elbuf_tab(ng)%BUFLY(il)%IVISC= 0
1311 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
1312 elbuf_tab(ng)%BUFLY(il)%NFAIL= 0
1313 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = 0
1314 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = 0
1315 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = 0
1316 elbuf_tab(ng)%BUFLY(il)%NVARTMP = 0
1317 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
1321 nfail = mat_param(imat(il))%NFAIL
1325 ieos_type = ipm(4,imat(il))
1326 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
1327 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type
1328 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
1329 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
1330 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
1331 elbuf_tab(ng)%BUFLY(il)%IVISC = mat_param
1332 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
1333 elbuf_tab(ng)%BUFLY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
1334 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imat(il))%VISC%NUVAR + nvar_damp_freq_range
1335 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
1336 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
1337 elbuf_tab(ng)%BUFLY(il)%IPORO = 0
1338 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
1341 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
1342 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
1344 failid(il,j) = idfail
1349 IF (debug_print == 1)
THEN
1356 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
1357 nuvarv = mat_param(mx)%VISC%NUVAR + nvar_damp_freq_range
1358 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = nuvarv
1359 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
1360 nvartmp= elbuf_tab(ng)%BUFLY(il)%NVARTMP
1361 nvar_eos = elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
1362 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
1363 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
1364 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
1368 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
1369 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = elbuf_tab(ng)%BUFLY(il)%IMAT
1370 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
1371 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
1372 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR,nuvarv*nel)
1373 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR,nvar_eos*nel)
1374 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos
1375 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR = zero
1376 elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR = zero
1377 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR = zero
1378 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP = 0
1379 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP = 0
1381 lmat = lmat + nuvarm*nel
1382 lvisc = lvisc + nuvarv*nel
1383 leos = leos + nvar_eos*nel
1385 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail))
1386 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
1388 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
1390 irupt = mat_param(mx)%FAIL(j)%IRUPT
1394 floc%IDFAIL = mat_param(mx)%FAIL(j)%FAIL_ID
1397 floc%NVAR = mat_param(mx)%FAIL(j)%NUVAR
1398 CALL my_alloc(floc%VAR,floc%NVAR*nel)
1400 lfail = lfail + floc%NVAR*nel + 1
1402 floc%LF_DAM = fail_tag(irupt)%LF_DAM
1403 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
1405 lfail = lfail + floc%LF_DAM*nel + 1
1407 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
1408 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
1410 lfail = lfail + floc%LF_DAMMX*nel + 1
1412 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
1413 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI*nel)
1415 lfail = lfail + floc%LF_DAMINI*nel + 1
1417 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
1418 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
1420 lfail = lfail + floc%LF_TDEL*nel + 1
1422 floc%LF_INDX = fail_tag(irupt)%LF_INDX
1423 CALL my_alloc(floc%INDX,floc%LF_INDX*nel)
1425 lfail = lfail + floc%LF_INDX*nel + 1
1427 floc%LF_OFF = fail_tag(irupt)%LF_OFF
1428 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
1430 lfail = lfail + floc%LF_OFF*nel + 1
1449 ipmat_iply = 2 + 2*nlay
1456 intlay => elbuf_tab(ng)%INTLAY(il)
1458 imat(il) = stack%IGEO(ipmat_iply + il ,isubstack)
1459 ilaw(il) = ipm(2,imat(il))
1460 nfail = mat_param(imat(il))%NFAIL
1461 elbuf_tab(ng)%INTLAY(il)%ILAW = ilaw(il)
1462 elbuf_tab(ng)%INTLAY(il)%IMAT = imat(il)
1463 elbuf_tab(ng)%INTLAY(il)%NFAIL= nfail
1464 elbuf_tab(ng)%INTLAY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
1465 elbuf_tab(ng)%INTLAY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
1467 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
1468 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
1470 failid(il,j) = idfail
1473 limat = limat + nel*ly_eint
1474 limat = limat + nel*ly_count
1478 ilbuf => elbuf_tab(ng)%INTLAY(il)%ILBUF(i,j)
1479 CALL my_alloc(intlay%ILBUF(i,j)%EPS,l_eps*nel)
1480 CALL my_alloc(intlay%ILBUF(i,j)%SIG,l_sig*nel)
1481 intlay%ILBUF(i,j)%EPS = zero
1482 intlay%ILBUF(i,j)%SIG = zero
1483 limat = limat + nel*l_eps
1484 limat = limat + nel*l_sig
1490 nuvarm = elbuf_tab(ng)%INTLAY(il)%NVAR_MAT
1491 nvartmp = elbuf_tab(ng)%INTLAY(il)%NVARTMP
1492 nfail = elbuf_tab(ng)%INTLAY(il)%NFAIL
1495 CALL my_alloc(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR,nuvarm*nel
1496 CALL my_alloc(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VARTMP,nvartmp*nel)
1497 elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR = zero
1498 elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VARTMP = 0
1499 limat = limat + nuvarm*nel
1503 ALLOCATE(elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC(nfail))
1506 floc=>elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC(j)
1507 floc%ILAWF = mat_param(imat(il))%FAIL(j)%IRUPT
1508 floc%IDFAIL = mat_param(imat(il))%FAIL(j)%FAIL_ID
1509 floc%NVAR = mat_param(imat(il))%FAIL(j)%NUVAR
1510 CALL my_alloc(floc%VAR,floc%NVAR*nel)
1512 lifail = lifail + floc%NVAR*nel + 3
1516 IF (debug_print == 1)
THEN
1518 print*,
' INTLAY ',il
1519 print*,
' LIMAT,LIFAIL = ',limat,lifail
1523 IF (debug_print == 1)
THEN
1525 print*,
' sum local variables mat,visc,fail on all layers'
1526 print*,
' LMAT,LVISC,LFAIL,LEOS = ',lmat,lvisc,lfail,leos
1529 gbuf => elbuf_tab(ng)%GBUF
1530 IF (jthe /= 0 ) gbuf%G_TEMP = 1
1531 IF (jthe /= 0 .AND. npg > 1) gbuf%G_TEMPG = npg
1532 IF (isms_selec >= 1) gbuf%G_ISMS = 1
1533 IF (jeul+jale /= 0 .AND. isnod >= 4) gbuf%G_MOM = 3
1537 ELSEIF (jhbe == 23)
THEN
1540 IF (isrot > 0) gbuf%G_HOURG = gbuf%G_HOURG + 13
1541 IF (ismstr == 10)
THEN
1544 ELSEIF (ismstr /= 4)
THEN
1549 ELSEIF (ity == 7)
THEN
1550 IF (jhbe >= 30)
THEN
1551 IF (ismstr /= 4) gbuf%G_SMSTR = 13
1552 ELSEIF (ismstr == 10)
THEN
1554 ELSEIF (ismstr /= 4)
THEN
1558 IF (jhbe < 30 .and. isrot > 0) gbuf%G_HOURG = 5
1560 IF (ity == 3 .OR. ity == 7)
THEN
1561 IF (defaults%SHELL%IOFFSET ==1) elbuf_tab(ng)%GBUF%G_SH_IOFFSET = 1
1564 IF (npg > 1) gbuf%G_FORPG_G = 5*npg
1568 IF (ismstr == 10 )
THEN
1570 gbuf%G_STRWPG = gbuf%G_STRW*npg
1572 gbuf%G_STRPG = gbuf%G_STRA*npg
1573 ELSEIF (istra > 0 .OR. ifail > 0 .OR.
1574 . ismstr == 11 .OR.(ismstr==1 .AND. mlw==19))
THEN
1577 IF (ity == 3 .AND. jhbe == 23 .AND. istr_24 > 0) gbuf%G_STRPG = 4*gbuf%G_STRA
1586 bufly => elbuf_tab(ng)%BUFLY(il)
1587 IF (isorth == 1 .AND. isrot > 0) bufly%L_SIGD = 6
1588 IF (gbuf%G_GAMA > 0 .AND. nlay > 1) bufly%L_GAMA = gbuf%G_GAMA
1589 IF (irep == 1 )
THEN
1591 ELSEIF (irep >= 2)
THEN
1595 IF (jthe /= 0) bufly%L_TEMP = 1
1596 IF (isvis > 0 .OR. bufly%IVISC == 1 .OR. bufly%IVISC == 3) bufly%L_SIGV = 5
1597 IF ((bufly%IVISC > 0).OR.(idamp_freq_range > 0)) bufly%L_VISC = 5
1598 IF (bufly%IVISC > 0 .and. mlw == 25) bufly%L_SIGD = 6
1599 IF (mlw == 27) bufly%L_DMG = 2
1600 IF (mlw == 2) bufly%L_SIGB = 3
1602 IF (istra > 0 .AND. mlw /= 0 .AND. nlay > 1) bufly%L_STRA = 8
1605 bufly%LY_HOURG = gbuf%G_HOURG
1606 IF (igtyp == 11 .or. igtyp == 51 .or. igtyp == 52)
THEN
1616 IF (iexpan > 0)
THEN
1620 IF(iufacyld == 1.AND.(mlw==36.OR.mlw==87))bufly%L_FAC_YLD = 1
1624 bufly%LY_OFFPG = npg
1630 IF((ity==3.OR.ity==7).AND.igtyp /= 1)
THEN
1635 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
1636 . imid ,mlw ,igtyp ,jmult ,ifail ,
1637 . ieos ,eos_tag ,isnod )
1662 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat + lifail + lnloc
1664 IF (debug_print == 1)
THEN
1665 print*,
' BUFLEN=NPAR_TAB+LMAT+LFAIL+LVISC+LPORO+LEOS+LIMAT+LIFAIL+LNLOC',buflen
1672 bufly => elbuf_tab(ng)%BUFLY(il)
1676 bufly%LY_CRKDIR =
max(fail_tag(irupt)%LF_DIR,bufly%LY_CRKDIR)
1677 bufly%LY_DMG =
max(fail_tag(irupt)%LF_DAM,bufly%LY_DMG)
1681 IF (mlw /= 151)
THEN
1686 lglob = lglob + gbuf%G_NOFF
1687 lglob = lglob + gbuf%G_IERR
1688 lglob = lglob + gbuf%G_GAMA
1692 lglob = lglob + gbuf%G_HOURG
1693 lglob = lglob + gbuf%G_TAG22
1694 lglob = lglob + gbuf%G_STRA
1695 lglob = lglob + gbuf%G_SIGI
1696 lglob = lglob + gbuf%G_DMG
1697 lglob = lglob + gbuf%G_DAMDL
1698 lglob = lglob + gbuf%G_FOR
1699 lglob = lglob + gbuf%G_MOM
1700 lglob = lglob + gbuf%G_THK
1701 lglob = lglob + gbuf%G_DT
1702 lglob = lglob + gbuf%G_ISMS
1704 lglob = lglob + gbuf%G_STRW
1705 gbuf%G_THK_I = gbuf%G_THK
1706 lglob = lglob + gbuf%G_THK_I
1707 lglob = lglob + gbuf%G_MAXFRAC
1708 lglob = lglob + gbuf%G_MAXEPS
1709 lglob = lglob + gbuf%G_FOR_G
1710 lglob = lglob + gbuf%G_WPLA
1712 lglob = lglob + gbuf%G_FORPG
1713 lglob = lglob + gbuf%G_MOMPG
1715 lglob = lglob + gbuf%G_FORPGPINCH
1716 lglob = lglob + gbuf%G_MOMPGPINCH
1717 lglob = lglob + gbuf%G_EPGPINCHXZ
1718 lglob = lglob + gbuf%G_EPGPINCHYZ
1719 lglob = lglob + gbuf%G_EPGPINCHZZ
1721 lglob = lglob + gbuf%G_STRPG
1722 lglob = lglob + gbuf%G_STRWPG
1723 lglob = lglob + gbuf%G_TEMPG
1724 lglob = lglob + gbuf%G_FORPG_G
1725 ELSEIF (gbuf%G_STRPG > gbuf%G_STRA)
THEN
1726 lglob = lglob + gbuf%G_STRPG
1730 lglob = lglob + gbuf%G_UELR
1731 lglob = lglob + gbuf%G_UELR1
1734 IF (npttot /= 1)
THEN
1735 lglob = lglob + gbuf%G_BFRAC
1736 lglob = lglob + gbuf%G_OFF
1737 lglob = lglob + gbuf%G_EINT
1738 lglob = lglob + gbuf%G_EINS
1739 lglob = lglob + gbuf%G_RHO
1740 lglob = lglob + gbuf%G_QVIS
1741 lglob = lglob + gbuf%G_DELTAX
1742 lglob = lglob + gbuf%G_VOL
1743 lglob = lglob + gbuf%G_EPSD
1744 lglob = lglob + gbuf%G_EPSQ
1745 lglob = lglob + gbuf%G_PLA
1746 lglob = lglob + gbuf%G_TEMP
1748 lglob = lglob + gbuf%G_RK
1749 lglob = lglob + gbuf%G_RE
1750 lglob = lglob + gbuf%G_SIG
1751 lglob = lglob + gbuf%G_FORTH
1752 lglob = lglob + gbuf%G_EINTTH
1753 lglob = lglob + gbuf%G_SEQ
1754 lglob = lglob + gbuf%G_ABURN
1755 lglob = lglob + gbuf%G_MU
1758 lglob = lglob + gbuf%G_AREA
1759 lglob = lglob + gbuf%G_SKEW
1760 lglob = lglob + gbuf%G_LENGTH
1761 lglob = lglob + gbuf%G_TOTDEPL
1762 lglob = lglob + gbuf%G_TOTROT
1763 lglob = lglob + gbuf%G_FOREP
1764 lglob = lglob + gbuf%G_MOMEP
1765 lglob = lglob + gbuf%G_DEP_IN_TENS
1766 lglob = lglob + gbuf%G_DEP_IN_COMP
1767 lglob = lglob + gbuf%G_ROT_IN_TENS
1768 lglob = lglob + gbuf%G_ROT_IN_COMP
1769 lglob = lglob + gbuf%G_POSX
1770 lglob = lglob + gbuf%G_POSY
1771 lglob = lglob + gbuf%G_POSZ
1772 lglob = lglob + gbuf%G_POSXX
1773 lglob = lglob + gbuf%G_POSYY
1774 lglob = lglob + gbuf%G_POSZZ
1775 lglob = lglob + gbuf%G_YIELD
1776 lglob = lglob + gbuf%G_LENGTH_ERR
1777 lglob = lglob + gbuf%G_DV
1778 lglob = lglob + gbuf%G_DFS
1779 lglob = lglob + gbuf%G_SKEW_ERR
1780 lglob = lglob + gbuf%G_E6
1781 lglob = lglob + gbuf%G_RUPTCRIT
1782 lglob = lglob + gbuf%G_MASS
1783 lglob = lglob + gbuf%G_V_REPCVT
1784 lglob = lglob + gbuf%G_VR_REPCVT
1785 lglob = lglob + gbuf%G_NUVAR
1786 lglob = lglob + gbuf%G_DEFINI
1787 lglob = lglob + gbuf%G_FORINI
1788 lglob = lglob + gbuf%G_INIFRIC
1790 lglob = lglob + gbuf%G_SLIPRING_ID
1791 lglob = lglob + gbuf%G_SLIPRING_FRAM_ID
1792 lglob = lglob + gbuf%G_INTVAR
1793 lglob = lglob + gbuf%G_ADD_NODE
1794 lglob = lglob + gbuf%G_UPDATE
1796 lglob = lglob + gbuf%G_FILL
1797 lglob = lglob + gbuf%G_BETAORTH
1799 lglob = lglob + gbuf%G_TM_YIELD
1800 lglob = lglob + gbuf%G_TM_SEQ
1801 lglob = lglob + gbuf%G_TM_EINT
1802 lglob = lglob + gbuf%G_TM_DMG
1803 lglob = lglob + 2*gbuf%G_TM_SIG
1804 lglob = lglob + 2*gbuf%G_TM_STRA
1805 lglob = lglob + gbuf%G_SH_IOFFSET
1808 buflen = buflen + gbuf%NVAR_GLOB + 1 + lglob*nel
1811 IF (debug_print == 1)
THEN
1812 print*,' lglob, glob vars=
',LGLOB,LGLOB*NEL
1813 print*,' total glob:
', GBUF%NVAR_GLOB + 1 + LGLOB*NEL
1814 print*,' buflen=buflen + gbuf%NVAR_GLOB + 1 + lglob*nel
',buflen
1815 print*,' npar_lay+nvar_lay,nvar_loc=
',NPAR_LAY+BUFLY%NVAR_LAY+BUFLY%NVAR_LOC
1822 BUFLY => ELBUF_TAB(NG)%BUFLY(I)
1823 LLAY = LLAY + NPAR_LAY + BUFLY%NVAR_LAY + BUFLY%NVAR_LOC
1824 LLAY = LLAY + NEL*BUFLY%LY_DMG
1825 LLAY = LLAY + NEL*BUFLY%LY_GAMA
1826.OR..AND.
IF(IDRAPE == 0 (IDRAPE > 0 IGTYP == 17)) THEN
1827 LLAY = LLAY + NEL*BUFLY%LY_DIRA
1828 LLAY = LLAY + NEL*BUFLY%LY_DIRB
1832 LEN_PLAPT = NEL*BUFLY%LY_PLAPT
1833 LEN_SIGPT = NEL*BUFLY%LY_SIGPT
1835.AND.
IF (IGTYP /= 51 IGTYP /= 52) THEN
1836 LEN_PLAPT = NEL*BUFLY%LY_PLAPT*NPT
1837 LEN_SIGPT = NEL*BUFLY%LY_SIGPT*NPT
1839 LEN_PLAPT = NEL*BUFLY%LY_PLAPT*BUFLY%NPTT
1840 LEN_SIGPT = NEL*BUFLY%LY_SIGPT*BUFLY%NPTT
1845 LLAY = LLAY + LEN_PLAPT
1846 LLAY = LLAY + LEN_SIGPT
1848 LLAY = LLAY + NEL*BUFLY%LY_HOURG
1850 LLAY = LLAY + NEL*BUFLY%LY_UELR
1851 LLAY = LLAY + NEL*BUFLY%LY_UELR1
1852 LLAY = LLAY + NEL*BUFLY%LY_CRKDIR
1853 LLAY = LLAY + NEL*BUFLY%LY_OFFPG
1854 LLAY = LLAY + NEL*BUFLY%LY_OFF
1856 IF (DEBUG_PRINT == 1) THEN
1857 print*,' ** layer=
',IL
1858 print*,' vars nel*ly_xxx, buflen =:
', LLAY - IAD , buflen
1863 BUFLEN = BUFLEN + LLAY
1866 IF (DEBUG_PRINT == 1) THEN
1867 print*,' total vars ly_xxx, buflen =:
', LLAY , buflen
1872 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
1874 NIP_LAY = NPG*BUFLY%NPTT
1877 LLOC = LLOC + BUFLY%L_OFF
1878 LLOC = LLOC + BUFLY%L_GAMA
1880 IF(IXFEM == 0) BUFLY%L_STRA = 0 ! not used for shell elements
1881 LLOC = LLOC + BUFLY%L_STRA
1883 LLOC = LLOC + BUFLY%L_FRAC
1884 LLOC = LLOC + BUFLY%L_BFRAC
1885 LLOC = LLOC + BUFLY%L_EINT
1886 LLOC = LLOC + BUFLY%L_EINS
1887 IF (MLW /= 151) THEN
1890 LLOC = LLOC + BUFLY%L_RHO
1891 LLOC = LLOC + BUFLY%L_DP_DRHO
1892 LLOC = LLOC + BUFLY%L_QVIS
1893 LLOC = LLOC + BUFLY%L_DELTAX
1894 LLOC = LLOC + BUFLY%L_VOL
1895 LLOC = LLOC + BUFLY%L_EPSA
1896 LLOC = LLOC + BUFLY%L_EPSD
1897 LLOC = LLOC + BUFLY%L_EPSQ
1898 LLOC = LLOC + BUFLY%L_EPSF
1899 LLOC = LLOC + BUFLY%L_PLA
1900 LLOC = LLOC + BUFLY%L_WPLA
1901 LLOC = LLOC + BUFLY%L_TEMP
1902 LLOC = LLOC + BUFLY%L_TB
1903 LLOC = LLOC + BUFLY%L_RK
1904 LLOC = LLOC + BUFLY%L_RE
1905 LLOC = LLOC + BUFLY%L_VK
1906 LLOC = LLOC + BUFLY%L_SF
1907 LLOC = LLOC + BUFLY%L_ROB
1908 LLOC = LLOC + BUFLY%L_DAM
1909 LLOC = LLOC + BUFLY%L_DSUM
1910 LLOC = LLOC + BUFLY%L_DGLO
1911 LLOC = LLOC + BUFLY%L_CRAK
1912 LLOC = LLOC + BUFLY%L_ANG
1913 LLOC = LLOC + BUFLY%L_EPE
1914 LLOC = LLOC + BUFLY%L_EPC
1915 LLOC = LLOC + BUFLY%L_XST
1916 LLOC = LLOC + BUFLY%L_SSP
1917 LLOC = LLOC + BUFLY%L_Z
1918 LLOC = LLOC + BUFLY%L_VISC
1919 LLOC = LLOC + BUFLY%L_SIGL
1920 LLOC = LLOC + BUFLY%L_SIGV
1921 LLOC = LLOC + BUFLY%L_SIGA
1922 LLOC = LLOC + BUFLY%L_SIGB
1923 LLOC = LLOC + BUFLY%L_SIGC
1924 LLOC = LLOC + BUFLY%L_SIGD
1925 LLOC = LLOC + BUFLY%L_SIGF
1926 LLOC = LLOC + BUFLY%L_SIG
1927 LLOC = LLOC + BUFLY%L_SIGPLY
1928 LLOC = LLOC + BUFLY%L_FOR
1929 LLOC = LLOC + BUFLY%L_MOM
1930 LLOC = LLOC + BUFLY%L_THK
1931 LLOC = LLOC + BUFLY%L_SMSTR
1932 LLOC = LLOC + BUFLY%L_DMG
1933 LLOC = LLOC + BUFLY%L_FORTH
1934 LLOC = LLOC + BUFLY%L_EINTTH
1935 LLOC = LLOC + BUFLY%L_SEQ
1936 LLOC = LLOC + BUFLY%L_FAC_YLD
1937 LLOC = LLOC + BUFLY%L_ABURN
1938 LLOC = LLOC + BUFLY%L_MU
1939 LLOC = LLOC + BUFLY%L_PLANL
1940 LLOC = LLOC + BUFLY%L_EPSDNL
1941 LLOC = LLOC + BUFLY%L_DMGSCL
1942 LLOC = LLOC + BUFLY%L_TSAIWU
1944 BUFLEN = BUFLEN + (LLOC * NEL + NPAR_LBUF) * NIP_LAY
1945.AND..OR.
IF(IDRAPE > 0 (IGTYP == 51 IGTYP == 52)) THEN
1946 LLOC_SLICE = BUFLY%LY_DIRA + BUFLY%LY_DIRB
1947 BUFLEN = BUFLEN + LLOC_SLICE*NEL*BUFLY%NPTT
1949 IF (DEBUG_PRINT == 1) THEN
1950 print*,' ** variables locales layer=',il
1951 print*,
' (LLOC*NEL+NPAR_LBUF)*NIP_LAY=',(lloc*nel+npar_lbuf)*nip_lay
1955 iparg(66,ng) = buflen
1957 IF(print_flag>6)
WRITE(iout,1002) ng, buflen
1963 . nintlay,nel,npt,ng,ngroup,ity,
1964 . igtyp,nummat,mat_param)
1973 ELSEIF (ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100)
THEN
1981 ELSEIF (ity == 5)
THEN
1984 ELSEIF (ity == 6)
THEN
1987 ELSEIF (ity == 100)
THEN
1991 igtyp = igeo(11,ipid)
1993 gbuf => elbuf_tab(ng)%GBUF
2003 IF (igtyp == 18)
THEN
2015 elbuf_tab(ng)%IGTYP = igtyp
2016 elbuf_tab(ng)%NEL = nel
2017 elbuf_tab(ng)%NLAY = nlay
2018 elbuf_tab(ng)%NINTLAY= 0
2019 elbuf_tab(ng)%NPTR = nptr
2020 elbuf_tab(ng)%NPTS = npts
2021 elbuf_tab(ng)%NPTT = nptt
2022 elbuf_tab(ng)%IXFEM = 0
2023 elbuf_tab(ng)%NXEL = 0
2024 elbuf_tab(ng)%IDRAPE = 0
2026 CALL my_alloc(imat,nlay)
2027 CALL my_alloc(ilaw,nlay)
2035 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
2038 bufly => elbuf_tab(ng)%BUFLY(il)
2040 ALLOCATE(bufly%LBUF(nptr,npts,nptt))
2041 ALLOCATE(bufly%MAT (nptr,npts,nptt))
2042 ALLOCATE(bufly%EOS (nptr,npts,nptt))
2043 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
2052 nfail = mat_param(imat(il))%NFAIL
2055 ieos_type = ipm(4,imat(il))
2056 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
2057 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
2058 elbuf_tab(ng)%BUFLY(il)%ILAW = mlw
2059 elbuf_tab(ng)%BUFLY(il)%IMAT = imid
2060 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
2061 elbuf_tab(ng)%BUFLY(il)%IVISC = mat_param(imid)%VISC%ILAW
2062 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
2063 elbuf_tab(ng)%BUFLY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
2064 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imid)%VISC%NUVAR + nvar_damp_freq_range
2065 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
2066 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
2067 elbuf_tab(ng)%BUFLY(il)%IPORO = 0
2068 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
2074 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
2075 nvartmp = elbuf_tab(ng)%BUFLY(il)%NVARTMP
2076 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
2077 nvar_eos= elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
2078 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
2079 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
2084 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
2085 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = elbuf_tab(ng)%BUFLY(il)%IMAT
2086 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
2087 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
2088 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR,nvar_eos*nel)
2089 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos*nel)
2090 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR = zero
2091 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP = 0
2092 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR = zero
2093 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP = 0
2094 lmat = lmat + nuvarm*nel
2096 IF (nfail == 1)
THEN
2097 irupt = mat_param(imat(il))%FAIL(1)%IRUPT
2098 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail))
2099 floc => elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(1)
2104 floc%IDFAIL = mat_param(imat(il))%FAIL(1)%FAIL_ID
2107 floc%NVAR = mat_param(imat(il))%FAIL(1)%NUVAR
2108 CALL my_alloc(floc%VAR,floc%NVAR*nel)
2110 lfail = lfail + floc%NVAR*nel + 1
2112 floc%LF_DAM = fail_tag(irupt)%LF_DAM
2113 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
2115 lfail = lfail + floc%LF_DAM*nel + 1
2117 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
2118 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
2120 lfail = lfail + floc%LF_DAMMX*nel + 1
2122 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
2123 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI*nel)
2125 lfail = lfail + floc%LF_DAMINI*nel + 1
2127 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
2128 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
2130 lfail = lfail + floc%LF_TDEL*nel + 1
2132 floc%LF_INDX = fail_tag(irupt)%LF_INDX
2133 CALL my_alloc(floc%INDX,floc%LF_INDX
2135 lfail = lfail + floc%LF_INDX*nel + 1
2137 floc%LF_OFF = fail_tag(irupt)%LF_OFF
2138 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
2140 lfail = lfail + floc%LF_OFF*nel + 1
2150 ALLOCATE(elbuf_tab(ng)%BUFLY(0))
2153 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat + lifail
2158 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
2159 . imid ,mlw ,igtyp ,jmult ,ifail ,
2160 . ieos ,eos_tag ,isnod )
2163 bufly => elbuf_tab(ng)%BUFLY(il)
2164 IF (mlw == 2) bufly%L_SIGB = 0
2171 IF (ity == 100)
THEN
2172 nuvarn = nint(geo(35,ipid))
2174 gbuf%G_NUVARN = nuvarn*nx
2182 IF (isms_selec >= 1) gbuf%G_ISMS = 1
2184 IF (iboltp>0) gbuf%G_BPRELD = 2
2188 gbuf%G_THK_I = gbuf%G_THK
2192 lglob = lglob + gbuf%G_NOFF
2193 lglob = lglob + gbuf%G_IERR
2194 lglob = lglob + gbuf%G_GAMA
2195 lglob = lglob + gbuf%G_SMSTR
2196 lglob = lglob + gbuf%G_HOURG
2197 lglob = lglob + gbuf%G_TAG22
2198 lglob = lglob + gbuf%G_STRA
2199 lglob = lglob + gbuf%G_SIGI
2200 lglob = lglob + gbuf%G_DMG
2201 lglob = lglob + gbuf%G_DAMDL
2202 lglob = lglob + gbuf%G_FOR
2203 lglob = lglob + gbuf%G_MOM
2204 lglob = lglob + gbuf%G_THK
2205 lglob = lglob + gbuf%G_DT
2206 lglob = lglob + gbuf%G_ISMS
2207 lglob = lglob + gbuf%G_STRW
2208 lglob = lglob + gbuf%G_THK_I
2209 lglob = lglob + gbuf%G_MAXFRAC
2210 lglob = lglob + gbuf%G_MAXEPS
2211 lglob = lglob + gbuf%G_BPRELD
2214 lglob = lglob + gbuf%G_FORPG
2215 lglob = lglob + gbuf%G_MOMPG
2217 lglob = lglob + gbuf%G_FORPGPINCH
2218 lglob = lglob + gbuf%G_MOMPGPINCH
2219 lglob = lglob + gbuf%G_EPGPINCHXZ
2220 lglob = lglob + gbuf%G_EPGPINCHYZ
2221 lglob = lglob + gbuf%G_EPGPINCHZZ
2223 lglob = lglob + gbuf%G_STRPG
2224 lglob = lglob + gbuf%G_STRWPG
2227 lglob = lglob + gbuf%G_BFRAC
2228 lglob = lglob + gbuf%G_OFF
2229 lglob = lglob + gbuf%G_EINT
2230 lglob = lglob + gbuf%G_EINS
2231 lglob = lglob + gbuf%G_RHO
2232 lglob = lglob + gbuf%G_QVIS
2233 lglob = lglob + gbuf%G_DELTAX
2234 lglob = lglob + gbuf%G_VOL
2235 lglob = lglob + gbuf%G_EPSD
2236 lglob = lglob + gbuf%G_EPSQ
2237 lglob = lglob + gbuf%G_PLA
2238 lglob = lglob + gbuf%G_WPLA
2239 lglob = lglob + gbuf%G_TEMP
2240 lglob = lglob + gbuf%G_TB
2241 lglob = lglob + gbuf%G_RK
2242 lglob = lglob + gbuf%G_RE
2243 lglob = lglob + gbuf%G_SIG
2244 lglob = lglob + gbuf%G_FORTH
2245 lglob = lglob + gbuf%G_EINTTH
2246 lglob = lglob + gbuf%G_SEQ
2247 lglob = lglob + gbuf%G_ABURN
2248 lglob = lglob + gbuf%G_MU
2250 lglob = lglob + gbuf%G_FILL
2252 IF (igtyp == 3)
THEN
2253 lglob = lglob + gbuf%G_DMGSCL
2255 lglob = lglob + gbuf%G_AREA
2256 lglob = lglob + gbuf%G_SKEW
2257 lglob = lglob + gbuf%G_LENGTH
2258 lglob = lglob + gbuf%G_TOTDEPL
2259 lglob = lglob + gbuf%G_TOTROT
2260 lglob = lglob + gbuf%G_FOREP
2261 lglob = lglob + gbuf%G_MOMEP
2262 lglob = lglob + gbuf%G_DEP_IN_TENS
2263 lglob = lglob + gbuf%G_DEP_IN_COMP
2264 lglob = lglob + gbuf%G_ROT_IN_TENS
2265 lglob = lglob + gbuf%G_ROT_IN_COMP
2266 lglob = lglob + gbuf%G_POSX
2267 lglob = lglob + gbuf%G_POSY
2268 lglob = lglob + gbuf%G_POSZ
2269 lglob = lglob + gbuf%G_POSXX
2270 lglob = lglob + gbuf%G_POSYY
2271 lglob = lglob + gbuf%G_POSZZ
2272 lglob = lglob + gbuf%G_YIELD
2273 lglob = lglob + gbuf%G_LENGTH_ERR
2274 lglob = lglob + gbuf%G_DV
2275 lglob = lglob + gbuf%G_DFS
2276 lglob = lglob + gbuf%G_SKEW_ERR
2277 lglob = lglob + gbuf%G_E6
2278 lglob = lglob + gbuf%G_RUPTCRIT
2279 lglob = lglob + gbuf%G_MASS
2280 lglob = lglob + gbuf%G_V_REPCVT
2281 lglob = lglob + gbuf%G_VR_REPCVT
2282 lglob = lglob + gbuf%G_NUVAR
2283 lglob = lglob + gbuf%G_NUVARN
2284 lglob = lglob + gbuf%G_DEFINI
2285 lglob = lglob + gbuf%G_FORINI
2286 lglob = lglob + gbuf%G_INIFRIC
2287 lglob = lglob + gbuf%G_SKEW_ID
2288 lglob = lglob + gbuf%G_YIELD_IN_COMP
2289 lglob = lglob + gbuf%G_XXOLD_IN_COMP
2291 lglob = lglob + gbuf%G_SLIPRING_ID
2292 lglob = lglob + gbuf%G_SLIPRING_FRAM_ID
2293 lglob = lglob + gbuf%G_SLIPRING_STRAND
2294 lglob = lglob + gbuf%G_RETRACTOR_ID
2295 lglob = lglob + gbuf%G_RINGSLIP
2296 lglob = lglob + gbuf%G_ADD_NODE
2297 lglob = lglob + gbuf%G_UPDATE
2298 lglob = lglob + gbuf%G_FRAM_FACTOR
2299 lglob = lglob + gbuf%G_INTVAR
2304 IF (igtyp == 3 .and. ifail > 0)
THEN
2305 ALLOCATE(elbuf_tab(ng)%GBUF%FAIL(1))
2307 irupt = mat_param(imid)%FAIL(1)%IRUPT
2308 elbuf_tab(ng)%GBUF%FAIL(1)%ILAWF = irupt
2311 elbuf_tab(ng)%GBUF%FAIL(1)%IDFAIL = mat_param(imid)%FAIL(1)%FAIL_ID
2314 elbuf_tab(ng)%GBUF%FAIL(1)%NVAR = mat_param(imid
2315 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%VAR,elbuf_tab(ng)%GBUF%FAIL(1)%NVAR*nel)
2316 elbuf_tab(ng)%GBUF%FAIL(1)%VAR = zero
2317 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%NVAR*nel + 1
2319 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM = fail_tag(irupt)%LF_DAM
2320 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAM,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM*nel)
2321 elbuf_tab(ng)%GBUF%FAIL(1)%DAM = zero
2322 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM*nel + 1
2324 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
2325 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAMMX,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX*nel)
2326 elbuf_tab(ng)%GBUF%FAIL(1)%DAMMX = zero
2327 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX*nel + 1
2329 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
2330 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAMINI,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI*nel)
2331 elbuf_tab(ng)%GBUF%FAIL(1)%DAMINI = zero
2332 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI*nel + 1
2334 elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL = fail_tag(irupt)%LF_TDEL
2335 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%TDEL,elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL*nel)
2336 elbuf_tab(ng)%GBUF%FAIL(1)%TDEL = zero
2337 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL*nel + 1
2339 elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX = fail_tag(irupt)%LF_INDX
2340 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%INDX,elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX*nel)
2341 elbuf_tab(ng)%GBUF%FAIL(1)%INDX = 0
2342 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX*nel
2344 elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF = fail_tag(irupt)%LF_OFF
2345 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%OFF,elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF*nel)
2346 elbuf_tab(ng)%GBUF%FAIL(1)%OFF = 1
2347 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF*nel + 1
2350 buflen = buflen + gbuf%NVAR_GLOB + 1 + lglob*nel + gfail
2355 bufly => elbuf_tab(ng)%BUFLY(il)
2356 llay = llay + npar_lay + bufly%NVAR_LAY + bufly%NVAR_LOC
2357 llay = llay + nel*bufly%LY_DMG
2358 llay = llay + nel*bufly%LY_GAMA
2359 llay = llay + nel*bufly%LY_DIRA
2360 llay = llay + nel*bufly%LY_DIRB
2361 llay = llay + nel*bufly%LY_HOURG
2363 llay = llay + nel*bufly%LY_UELR
2364 llay = llay + nel*bufly%LY_UELR1
2365 llay = llay + nel*bufly%LY_OFFPG
2366 llay = llay + nel*bufly%LY_OFF
2370 buflen = buflen + llay
2374 bufly => elbuf_tab(ng)%BUFLY(il)
2375 nip_lay = bufly%NPTT
2378 lloc = lloc + bufly%L_OFF
2379 lloc = lloc + bufly%L_GAMA
2381 lloc = lloc + bufly%L_STRA
2383 lloc = lloc + bufly%L_FRAC
2384 lloc = lloc + bufly%L_BFRAC
2385 lloc = lloc + bufly%L_EINT
2386 lloc = lloc + bufly%L_EINS
2388 lloc = lloc + bufly%L_RHO
2389 lloc = lloc + bufly%L_DP_DRHO
2390 lloc = lloc + bufly%L_QVIS
2391 lloc = lloc + bufly%L_DELTAX
2392 lloc = lloc + bufly%L_VOL
2393 lloc = lloc + bufly%L_EPSA
2394 lloc = lloc + bufly%L_EPSD
2395 lloc = lloc + bufly%L_EPSQ
2396 lloc = lloc + bufly%L_EPSF
2397 lloc = lloc + bufly%L_PLA
2398 lloc = lloc + bufly%L_WPLA
2399 lloc = lloc + bufly%L_TEMP
2400 lloc = lloc + bufly%L_TB
2401 lloc = lloc + bufly%L_RK
2402 lloc = lloc + bufly%L_RE
2403 lloc = lloc + bufly%L_VK
2404 lloc = lloc + bufly%L_SF
2405 lloc = lloc + bufly%L_ROB
2406 lloc = lloc + bufly%L_DAM
2407 lloc = lloc + bufly%L_DSUM
2408 lloc = lloc + bufly%L_DGLO
2409 lloc = lloc + bufly%L_CRAK
2410 lloc = lloc + bufly%L_ANG
2411 lloc = lloc + bufly%L_EPE
2412 lloc = lloc + bufly%L_EPC
2413 lloc = lloc + bufly%L_XST
2414 lloc = lloc + bufly%L_SSP
2415 lloc = lloc + bufly%L_Z
2416 lloc = lloc + bufly%L_VISC
2417 lloc = lloc + bufly%L_SIGL
2418 lloc = lloc + bufly%L_SIGV
2419 lloc = lloc + bufly%L_SIGA
2420 lloc = lloc + bufly%L_SIGB
2421 lloc = lloc + bufly%L_SIGC
2422 lloc = lloc + bufly%L_SIGD
2423 lloc = lloc + bufly%L_SIGF
2424 lloc = lloc + bufly%L_SIG
2425 lloc = lloc + bufly%L_SIGPLY
2426 lloc = lloc + bufly%L_FOR
2427 lloc = lloc + bufly%L_MOM
2428 lloc = lloc + bufly%L_THK
2429 lloc = lloc + bufly%L_SMSTR
2430 lloc = lloc + bufly%L_DMG
2431 lloc = lloc + bufly%L_FORTH
2432 lloc = lloc + bufly%L_EINTTH
2433 lloc = lloc + bufly%L_SEQ
2434 lloc = lloc + bufly%L_FAC_YLD
2435 lloc = lloc + bufly%L_ABURN
2436 lloc = lloc + bufly%L_MU
2437 lloc = lloc + bufly%L_PLANL
2438 lloc = lloc + bufly%L_EPSDNL
2439 lloc = lloc + bufly%L_DMGSCL
2440 lloc = lloc + bufly%L_TSAIWU
2442 buflen = buflen + (lloc * nel + npar_lbuf) * nip_lay
2451 iparg(66,ng) = buflen
2453 IF(print_flag>6)
WRITE(iout,1002) ng, buflen
2456 . nintlay,nel,npt,ng,ngroup,ity,
2457 . igtyp,nummat,mat_param)
2459 IF (
ALLOCATED(imat))
DEALLOCATE(imat)
2460 IF (
ALLOCATED(ilaw))
DEALLOCATE(ilaw)
2463 ALLOCATE(elbuf_tab(ng)%BUFLY(0))
2470 IF (idamp_freq_range > 0)
THEN
2471 ALLOCATE(elbuf_tab(ng)%DAMP_RANGE%ALPHA(3))
2472 ALLOCATE(elbuf_tab(ng)%DAMP_RANGE%TAU(3))
2473 buflen = iparg(66,ng) + ldamp_freq_range
2474 iparg(66,ng) = buflen
2479 IF (debug_print == 1)
THEN
2480 print*,
' elbuf_ini : NG,ITY,IGTYP,buflen=',ng,ity,igtyp,buflen
2486 + 7x,
'RESTART SIZE OF SHELL AND SOLID ELEMENT GROUPS'/
2487 + 7x,
'----------------------------------------------'/)
2489 + 7x,
'ELEMENT GROUP',i10,
', SIZE=',i10)