39 . MLAW_TAG ,PROP_TAG ,FAIL_TAG ,
40 . IGEO ,IPM ,PM ,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)
57#include "implicit_f.inc"
65#include "com_xfem1.inc"
69#include "tablen_c.inc"
71#include "boltpr_c.inc"
75 INTEGER ,
INTENT(IN) :: ISTR_24
76 INTEGER IPARG(NPARG,NGROUP),IPART(LIPART1,*),
77 . IPARTSP(*),IPM(NPROPMI,NUMMAT),IGEO(NPROPGI,NUMGEO),
78 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),(NIXTG,NUMELTG),
79 . FLAG_XFEM,IPARTIG3D(*),IGEO_STACK(NPROPGI,*),
80 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),KXX(NIXX,*)
81 my_real :: pm(npropm,nummat),geo(npropg,numgeo)
82 INTEGER,
INTENT(IN) :: PRINT_FLAG
83 TYPE(ELBUF_STRUCT_),
TARGET ,
DIMENSION(NGROUP) :: ELBUF_TAB
84 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) ::
85 TYPE(MLAW_TAG_) ,
TARGET ,
DIMENSION(NUMMAT) :: MLAW_TAG
86 TYPE(EOS_TAG_) ,
TARGET ,
DIMENSION(0:MAXEOS) :: EOS_TAG
87 TYPE(
prop_tag_) ,
TARGET ,
DIMENSION(0:MAXPROP) :: PROP_TAG
88 TYPE(
fail_tag_) ,
TARGET ,
DIMENSION(0:MAXFAIL ) :: FAIL_TAG
89 TYPE (STACK_PLY) :: STACK
90 TYPE(defaults_),
INTENT(INOUT) :: DEFAULTS
94 INTEGER I,J,IL,IR,IS,IT,NG,BUFLEN,IRUPT,,IMID,IPRT,IAD,
97 . nft,nft0,kfts,ity,jale,off,ismstr,icpre,nsg,icnod,isnod,jeul,
98 . jtur,jthe,jlag,irs,ire,icstr,nvc,jmult,iadm1,iadm2,
99 . mmat1,mmat2,jhbe,jivf,jpor,ipla,proc,jclos,codconv,
100 . iint,jcvt,icsen,ilev,iexpan,igre,jsms,maxflay,ivisc,
101 . nuvar,nuvarm,nvartmp,nvartmp_eos,nuvarv,igtyp,tshell,tsh_ort,lintloc,
102 . lintlay,lintpar,npar_lay,npar_tab,npar_lbuf,nip_lay,nintlay,limat,
103 . lifail,lglob,llay,lloc,lfail,gfail,lvisc,lmat,lporo,leos,nctrl,
104 . isubstack,ippid,ipidl,npt_lay,len_plapt,len_sigpt,
105 . ipmat,ipmat_iply,npttot,nuvarn,nx,iboltp,crkdir,inloc,lnloc,
106 . nonl, debug_print,ipinch,nvar_eos,ieos_type,idrape,lloc_slice,
107 . ipnpt_lay,idfail,lnlocts,icontrol,ishoffset,idamp_freq_range,
108 . ldamp_freq_range,nvar_damp_freq_range,npt0,l_eps ,l_sig ,ly_eint, ly_count
109 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: TFAIL,FAILID
110 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: IMAT,ILAW
111 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
112 TYPE(BUF_INTLAY_) ,
POINTER :: INTLAY
113 TYPE(G_BUFEL_) ,
POINTER :: GBUF
114 TYPE(FAIL_LOC_) ,
POINTER :: FLOC
115 TYPE(buf_nloc_) ,
POINTER :: BUFNL
116 TYPE(buf_nlocts_) ,
POINTER :: BUFNLTS
117 TYPE(buf_intloc_) ,
POINTER ::
126 IF(print_flag>6)
WRITE(iout, 1001)
164 codconv = iparg(34,ng)
170 israte = iparg(40,ng)
172 IF (isnod == 10) isrot = iparg(74,ng)
173 isorth = iparg(42,ng)
178 iexpan = iparg(49,ng)
179 ishplyxfem = iparg(50,ng)
194 isubstack = iparg(71,ng)
195 iboltp = iparg(72,ng)
196 ipinch = iparg(90,ng)
197 idrape = iparg(92,ng)
198 idamp_freq_range = iparg(93,ng)
199 ldamp_freq_range = 6*
min(1,idamp_freq_range)
201 nvar_damp_freq_range = (28+16)*
min(1,idamp_freq_range)
203 nvar_damp_freq_range = 21*
min(1,idamp_freq_range)
218 IF (debug_print == 1)
THEN
219 print*,
'**** GROUP,ITY,IGTYP,MLW=',ng,ity,igtyp,mlw
220 print*,
' NPAR_TAB,NPAR_LAY,NPAR_LBUF=',npar_tab,npar_lay,npar_lbuf
237 IF (ixfem == 0 .AND. flag_xfem == 1) cycle
249 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22 .or.
250 . isnod == 16) tshell = 1
251 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
256 ELSEIF (npt == 1)
THEN
269 ELSEIF (tshell == 1)
THEN
271 nptt = mod(npt/10,10)
288 ELSEIF (icstr == 100)
THEN
301 ELSEIF (jhbe==16)
THEN
303 npts = mod(npt/10,10)
314 ELSE ! solid property
316 IF (jhbe == 16 .AND. isnod == 20)
THEN
318 npts = mod(npt/10,10)
320 ELSEIF (jhbe == 14)
THEN
322 nptt = mod(abs(npt)/10,10)
323 nptr = mod(abs(npt),10)
324 ELSEIF (jhbe == 12)
THEN
329 ELSEIF (jhbe == 17)
THEN
338 IF (n2d>0 .AND.(jhbe==17.OR.jhbe==22))
THEN
351 npt = nptr*npts*nptt*nlay
355 CALL my_alloc(tfail,nlay,maxflay)
356 CALL my_alloc(failid,nlay,maxflay)
357 CALL my_alloc(imat,nlay)
358 CALL my_alloc(ilaw,nlay)
366 ELSEIF (ity == 2)
THEN
369 ELSEIF (ity == 51)
THEN
370 iprt = ipartsp(nft+1)
373 ELSEIF (ity == 101)
THEN
374 iprt = ipartig3d(nft+1)
381 ALLOCATE(elbuf_tab(ng)%INTLAY(nintlay))
382 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
384 bufly => elbuf_tab(ng)%BUFLY(il)
386 ALLOCATE(bufly%LBUF(nptr,npts,nptt))
387 ALLOCATE(bufly%MAT (nptr,npts,nptt))
388 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
389 ALLOCATE(bufly%PROP(nptr,npts,nptt))
390 ALLOCATE(bufly%EOS (nptr,npts,nptt))
391 ALLOCATE(bufly%VISC(nptr,npts,nptt))
392 ALLOCATE(bufly%PORO(nptr,npts,nptt))
395 elbuf_tab(ng)%IGTYP = igtyp
396 elbuf_tab(ng)%NEL = nel
397 elbuf_tab(ng)%NLAY = nlay
398 elbuf_tab(ng)%NINTLAY= nintlay
399 elbuf_tab(ng)%NPTR = nptr
400 elbuf_tab(ng)%NPTS = npts
401 elbuf_tab(ng)%NPTT = nptt
402 elbuf_tab(ng)%IXFEM = ixfem
403 elbuf_tab(ng)%NXEL = nxel
404 elbuf_tab(ng)%IDRAPE = idrape
411 ALLOCATE(elbuf_tab(ng)%NLOCTS(0,0))
420 IF (igtyp == 22)
THEN
422 imat(il) = igeo(100+il,ipid)
423 ilaw(il) = ipm(2,imat(il))
424 nuvar = mlaw_tag(imat(il))%NUVAR
427 ieos_type = ipm(4,imat(il))
428 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
429 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
430 nvartmp = mlaw_tag(imat(il))%NVARTMP
431 nfail = mat_param(imat(il))%NFAIL
432 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
433 elbuf_tab(ng)%BUFLY(il
434 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
435 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imat(il))%VISC%ILAW
436 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
437 elbuf_tab(ng)%BUFLY(il)%NFAIL= nfail
438 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = nuvar
439 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
440 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
441 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
442 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imat(il))%VISC%NUVAR + nvar_damp_freq_range
444 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
445 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
447 failid(il,j) = idfail
449 IF (mlaw_tag(imat(il))%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
454 ELSEIF (igtyp > 28 .and. igtyp < 32)
THEN
455 nuvar = mlaw_tag(imid)%NUVAR
456 nvartmp = mlaw_tag(imid)%NVARTMP
459 ieos_type = ipm(4,imid)
460 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
461 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
462 elbuf_tab(ng)%BUFLY(1)%ILAW = mlw
463 elbuf_tab(ng)%BUFLY(1)%IMAT = imid
464 elbuf_tab(ng)%BUFLY(1)%IEOS = 0
465 elbuf_tab(ng)%BUFLY(1)%IVISC= 0
466 elbuf_tab(ng)%BUFLY(1)%IPORO= 0
467 elbuf_tab(ng)%BUFLY(1)%NFAIL = 0
468 elbuf_tab(ng)%BUFLY(1)%NVAR_MAT= nuvar
469 elbuf_tab(ng)%BUFLY(1)%NVAR_EOS= nvar_eos
470 elbuf_tab(ng)%BUFLY(1)%NVARTMP = nvartmp
471 elbuf_tab(ng)%BUFLY(1)%NVARTMP_EOS = nvartmp_eos
472 IF (mlaw_tag(imid)%L_PLA == 0 .and. iparg(1
THEN
476 ELSEIF (mlw == 20)
THEN
478 ilaw(il) = iparg(24+il,ng)
479 mx = mat_param(imid)%MULTIMAT%MID(il)
480 nfail = mat_param(mx)%NFAIL
481 ieos_type = ipm(4, mx)
482 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw
484 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
485 elbuf_tab(ng)%BUFLY(il)%IVISC= 0
486 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
487 elbuf_tab(ng)%BUFLY(il)%NFAIL= 0
488 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT= 0
489 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS= 0
490 elbuf_tab(ng)%BUFLY(il)%NVARTMP = 0
491 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
492 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC=0
494 irupt = mat_param(mx)%FAIL(j)%IRUPT
495 idfail = mat_param(mx)%FAIL(j)%FAIL_ID
497 failid(il,j) = idfail
501 ELSEIF (mlw == 151)
THEN
503 imat(il) = mat_param(imid)%MULTIMAT%MID(il)
504 ilaw(il) = ipm(2,imat(il))
505 nuvar = mlaw_tag(imid)%NUVAR
506 nvartmp = mlaw_tag(imid)%NVARTMP
509 ieos_type = mat_param(imat(il))%IEOS
510 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
511 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
512 nfail = mat_param(imat(il))%NFAIL
513 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
514 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
515 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos_type
516 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imat(il))%VISC%ILAW
517 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = nuvar
518 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
519 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
520 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
521 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imat(il))%VISC%NUVAR + nvar_damp_freq_range
522 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
523 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
525 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
526 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
528 failid(il,j) = idfail
530 IF (mlaw_tag(imat(il))%L_PLA == 0 .and. iparg(10,ng) == 2)
THEN
535 ELSEIF (nlay > 1)
THEN
539 nuvar = mlaw_tag(imid)%NUVAR
540 nvartmp = mlaw_tag(imid)%NVARTMP
541 nfail = mat_param(imat(il))%NFAIL
542 elbuf_tab(ng)%BUFLY(il)%ILAW = mlw
543 elbuf_tab(ng)%BUFLY(il)%IMAT = imid
544 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
545 elbuf_tab(ng)%BUFLY(il)%IVISC= mat_param(imid)%VISC%ILAW
546 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT= nuvar
547 elbuf_tab(ng)%BUFLY(il)%NVARTMP = nvartmp
548 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS= 0
549 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
550 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC=mat_param(imid)%VISC%NUVAR + nvar_damp_freq_range
551 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
552 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
554 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
555 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
557 failid(il,j) = idfail
559 IF (mlaw_tag(imat(il
THEN
567 ALLOCATE(elbuf_tab(ng)%NLOCTS(nptr,npts))
571 DO ir = 1,elbuf_tab(ng)%NPTR
572 DO is = 1,elbuf_tab(ng)%NPTS
574 bufnlts => elbuf_tab(ng)%NLOCTS(ir,is)
576 CALL my_alloc(bufnlts%MASSTH,nel,nonl)
577 bufnlts%MASSTH = zero
578 lnlocts = lnlocts + nel*nonl
580 CALL my_alloc(bufnlts%UNLTH,nel,nonl)
584 CALL my_alloc(bufnlts%VNLTH,nel,nonl)
586 lnlocts = lnlocts + nel*nonl
588 CALL my_alloc(bufnlts%FNLTH,nel,nonl)
590 lnlocts = lnlocts + nel*nonl
596 nuvar = mlaw_tag(imid)%NUVAR
597 nvartmp = mlaw_tag(imid)%NVARTMP
600 ieos_type = ipm(4,imid)
601 IF (ieos_type > 0) nvar_eos = eos_tag(ieos_type)%NVAR
602 IF (ieos_type > 0) nvartmp_eos = eos_tag(ieos_type)%NVAR
603 nfail = mat_param(imid)%NFAIL
604 elbuf_tab(ng)%BUFLY(1)%ILAW = mlw
606 elbuf_tab(ng)%BUFLY(1)%IEOS = ieos
607 elbuf_tab(ng)%BUFLY(1)%NVAR_MAT= nuvar
609 elbuf_tab(ng)%BUFLY(1)%NVARTMP = nvartmp
610 elbuf_tab(ng)%BUFLY(1)%NVARTMP_EOS = nvartmp_eos
611 elbuf_tab(ng)%BUFLY(1)%IVISC = mat_param(imid)%VISC%ILAW
612 elbuf_tab(ng)%BUFLY(1)%NVAR_VISC
613 elbuf_tab(ng)%BUFLY(1)%IPORO= 0
614 elbuf_tab(ng)%BUFLY(1)%NFAIL = nfail
616 irupt = mat_param(imid)%FAIL(j)%IRUPT
617 idfail = mat_param(imid)%FAIL(j)%FAIL_ID
625 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
626 nuvarv = mat_param(mx)%VISC%NUVAR + nvar_damp_freq_range
627 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = nuvarv
628 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
629 nvartmp = elbuf_tab(ng)%BUFLY(il)%NVARTMP
630 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
631 nvar_eos= elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
632 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
636 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
637 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = mx
638 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
639 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
640 CALL my_alloc(elbuf_tab(ng)%BUFLY(il
641 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR,nvar_eos*nel)
642 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos
644 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(1:nuvarm*nel) = zero
645 elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR
646 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR(1:nvar_eos*nel) = zero
647 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP(1:nvartmp*nel) = 0
648 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP(1:nvartmp_eos*nel) = 0
650 lmat = lmat + nuvarm*nel
651 lvisc = lvisc + nuvarv*nel
652 leos = leos + nvar_eos*nel
654 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail
655 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
658 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
660 irupt = mat_param(mx)%FAIL(j)%IRUPT
664 floc%IDFAIL = mat_param(mx)%FAIL(j)%FAIL_ID
667 floc%NVAR = mat_param(mx)%FAIL(j)%NUVAR
668 CALL my_alloc(floc%VAR,floc%NVAR*nel)
670 lfail = lfail + floc%NVAR*nel + 1
672 floc%LF_DAM = fail_tag(irupt)%LF_DAM
673 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
675 lfail = lfail + floc%LF_DAM*nel + 1
677 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
678 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
680 lfail = lfail + floc%LF_DAMMX*nel + 1
682 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
683 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI*nel)
685 lfail = lfail + floc%LF_DAMINI*nel + 1
687 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
688 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
690 lfail = lfail + floc%LF_TDEL*nel + 1
692 floc%LF_INDX = fail_tag(irupt)%LF_INDX
695 lfail = lfail + floc%LF_INDX*nel + 1
697 floc%LF_OFF = fail_tag(irupt)%LF_OFF
698 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
700 lfail = lfail + floc%LF_OFF*nel + 1
708 gbuf => elbuf_tab(ng)%GBUF
709 IF (igtyp == 43)
THEN
710 elbuf_tab(ng)%BUFLY(1)%L_EPSA = 3
711 elbuf_tab(ng)%BUFLY(1)%L_EPE = 3
713 IF (ismstr /= 4 .OR. jlag >0)
THEN
714 IF (igtyp == 43)
THEN
715 elbuf_tab(ng)%BUFLY(1)%L_VOL = 1
716 ELSEIF (ity == 1)
THEN
717 IF (isnod == 10 .OR. isnod == 16 .OR. isnod == 20 )
THEN
718 gbuf%G_SMSTR = 3*isnod
720 ELSEIF (isnod == 4 .AND.isrot == 1)
THEN
721 gbuf%G_SMSTR = 3*(isnod+6)
723 gbuf%G_SMSTR = 3*(isnod-1)
727 IF (ity == 1.AND.(igtyp == 20.OR.igtyp == 21.OR.igtyp == 22)) gbuf%G_IDT_TSH=1
730 IF (ity == 1 .AND. isnod == 4 .AND. isrot == 3 )
THEN
735 icontrol = -huge(icontrol)
737 icontrol = igeo(97,ipid)
738 IF (icontrol==1) gbuf%G_EINT_DISTOR = 1
741 IF ((ismstr == 10.OR.ismstr == 12).AND.ity == 1)
THEN
742 IF (isnod == 10.OR.(isnod==4 .AND. isrot==1))
THEN
744 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=0
745 elbuf_tab(ng)%BUFLY(1)%L_PIJ=3*10
746 ELSEIF (isnod == 8.AND.jhbe == 17 )
THEN
748 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=0
749 elbuf_tab(ng)%BUFLY(1)%L_PIJ=3*isnod
750 IF (iint == 2.AND.icpre == 0 ) elbuf_tab(ng)%BUFLY(1)%L_PIJ=9*isnod
751 IF (iint == 2) gbuf%G_ETOTSH = 6
754 elbuf_tab(ng)%BUFLY(1)%L_JAC_I=gbuf%G_JAC_I
758 IF (ismstr == 12 .AND. mlw==1 ) elbuf_tab(ng)%BUFLY(1)%L_SIGL=6
760 IF (jthe /= 0) gbuf%G_TEMP = 1
761 IF (jthe /= 0 .AND. npg > 1) gbuf%G_TEMPG = npg
762 IF (jeul+jale /= 0 .AND. isnod >= 4) gbuf%G_MOM = 3
763 IF (jhbe == 15 .OR. jhbe == 24) gbuf%G_HOURG = 12
764 IF (jhbe == 15 .AND. isnod == 6)
THEN
766 IF (icontrol==1) gbuf%G_HOURG = 12
768 IF (jhbe == 1 .AND. iint == 3) gbuf%G_HOURG = 12
770 IF (jhbe == 24) gbuf%G_STRHG = 3*6
776 IF (mlw /= 115) gbuf%G_RHO = 1
778 IF (isms_selec >= 1) gbuf%G_ISMS = 1
779 IF (jcvt>0.AND.ity == 1) gbuf%G_GAMA_R = 6
783 bufly => elbuf_tab(ng)%BUFLY(il)
784 IF (mlw /= 115) bufly%L_RHO = 1
786 IF (isorth == 1 .AND. isrot > 0) bufly%L_SIGD = 6
787 IF ((istra > 0 .AND. mlw /= 0) .OR. ity == 101)
789 IF (gbuf%G_GAMA > 0 .AND. nlay > 1) bufly%L_GAMA = gbuf%G_GAMA
790 IF (jthe /= 0) bufly%L_TEMP = 1
791 IF (isvis > 0 ..OR. bufly%IVISC == 1 .OR. bufly%IVISC == 3 ) bufly%L_SIGV = 6
792 IF ((ivisc > 0).OR.(idamp_freq_range > 0)) bufly%L_VISC = 6
798 IF(iufacyld == 1.AND.(mlw==36.OR.mlw==87))bufly%L_FAC_YLD = 1
800 IF(ity == 1) bufly%L_VOL0DP = 1
801 IF ((isorth == 1).AND.(igtyp == 34))
THEN
807 IF ((isorth == 1).AND.(igtyp == 34))
THEN
812 gbuf%G_BPRELD = nbpreld*iboltp
815 IF (ity==1 .AND. jhbe==17 .AND. iint==3)
THEN
825 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
826 . imid ,mlw ,igtyp ,jmult ,ifail ,
827 . ieos ,eos_tag ,isnod )
835 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat + lifail + lnlocts
838 lglob = lglob + gbuf%G_NOFF
839 lglob = lglob + gbuf%G_IERR
840 lglob = lglob + gbuf%G_GAMA
844 lglob = lglob + gbuf%G_HOURG
845 lglob = lglob + gbuf%G_TAG22
846 lglob = lglob + gbuf%G_STRA
847 lglob = lglob + gbuf%G_SIGI
848 lglob = lglob + gbuf%G_DMG
849 lglob = lglob + gbuf%G_DAMDL
850 lglob = lglob + gbuf%G_FOR
851 lglob = lglob + gbuf%G_MOM
852 lglob = lglob + gbuf%G_THK
853 lglob = lglob + gbuf%G_STRW
854 lglob = lglob + gbuf%G_THK_I
855 lglob = lglob + gbuf%G_JAC_I
856 lglob = lglob + gbuf%G_DT
857 lglob = lglob + gbuf%G_ISMS
858 lglob = lglob + gbuf%G_BPRELD
859 lglob = lglob + gbuf%G_COR_NF
860 lglob = lglob + gbuf%G_COR_FR
861 lglob = lglob + gbuf%G_COR_XR
862 lglob = lglob + gbuf%G_MAXFRAC
863 lglob = lglob + gbuf%G_MAXEPS
864 lglob = lglob + gbuf%G_AMU
865 lglob = lglob + gbuf%G_EINT_DISTOR
866 lglob = lglob + gbuf%G_WPLA
869 lglob = lglob + gbuf%G_FORPG
870 lglob = lglob + gbuf%G_MOMPG
872 lglob = lglob + gbuf%G_FORPGPINCH
873 lglob = lglob + gbuf%G_MOMPGPINCH
874 lglob = lglob + gbuf%G_EPGPINCHXZ
875 lglob = lglob + gbuf%G_EPGPINCHYZ
876 lglob = lglob + gbuf%G_EPGPINCHZZ
878 lglob = lglob + gbuf%G_STRPG
879 lglob = lglob + gbuf%G_STRWPG
880 lglob = lglob + gbuf%G_TEMPG
884 lglob = lglob + gbuf%G_BFRAC
885 lglob = lglob + gbuf%G_OFF
886 lglob = lglob + gbuf%G_EINT
887 lglob = lglob + gbuf%G_EINS
888 lglob = lglob + gbuf%G_RHO
889 lglob = lglob + gbuf%G_QVIS
890 lglob = lglob + gbuf%G_DELTAX
891 lglob = lglob + gbuf%G_VOL
892 lglob = lglob + gbuf%G_EPSD
893 lglob = lglob + gbuf%G_EPSQ
894 lglob = lglob + gbuf%G_PLA
895 lglob = lglob + gbuf%G_TEMP
896 lglob = lglob + gbuf%G_TB
897 lglob = lglob + gbuf%G_RK
898 lglob = lglob + gbuf%G_RE
899 lglob = lglob + gbuf%G_SIG
901 lglob = lglob + gbuf%G_FORTH
902 lglob = lglob + gbuf%G_EINTTH
903 lglob = lglob + gbuf%G_SEQ
904 lglob = lglob + gbuf%G_ABURN
905 lglob = lglob + gbuf%G_MU
910 lglob = lglob + gbuf%G_UELR
911 lglob = lglob + gbuf%G_UELR1
914 lglob = lglob + gbuf%G_AREA
915 lglob = lglob + gbuf%G_SKEW
916 lglob = lglob + gbuf%G_LENGTH
917 lglob = lglob + gbuf%G_TOTDEPL
918 lglob = lglob + gbuf%G_TOTROT
919 lglob = lglob + gbuf%G_FOREP
920 lglob = lglob + gbuf%G_MOMEP
921 lglob = lglob + gbuf%G_DEP_IN_TENS
922 lglob = lglob + gbuf%G_DEP_IN_COMP
923 lglob = lglob + gbuf%G_ROT_IN_TENS
924 lglob = lglob + gbuf%G_ROT_IN_COMP
925 lglob = lglob + gbuf%G_POSX
926 lglob = lglob + gbuf%G_POSY
927 lglob = lglob + gbuf%G_POSZ
928 lglob = lglob + gbuf%G_POSXX
929 lglob = lglob + gbuf%G_POSYY
930 lglob = lglob + gbuf%G_POSZZ
931 lglob = lglob + gbuf%G_YIELD
932 lglob = lglob + gbuf%G_LENGTH_ERR
933 lglob = lglob + gbuf%G_DV
934 lglob = lglob + gbuf%G_DFS
935 lglob = lglob + gbuf%G_SKEW_ERR
936 lglob = lglob + gbuf%G_E6
937 lglob = lglob + gbuf%G_RUPTCRIT
938 lglob = lglob + gbuf%G_MASS
939 lglob = lglob + gbuf%G_V_REPCVT
940 lglob = lglob + gbuf%G_VR_REPCVT
941 lglob = lglob + gbuf%G_NUVAR
942 lglob = lglob + gbuf%G_DEFINI
943 lglob = lglob + gbuf%G_FORINI
944 lglob = lglob + gbuf%G_INIFRIC
945 lglob = lglob + gbuf%G_STRHG
946 lglob = lglob + gbuf%G_DT_PITER
947 lglob = lglob + gbuf%G_IDT_TSH
949 lglob = lglob + gbuf%G_FILL
951 lglob = lglob + gbuf%G_TM_YIELD
952 lglob = lglob + gbuf%G_TM_SEQ
953 lglob = lglob + gbuf%G_TM_EINT
954 lglob = lglob + gbuf%G_TM_DMG
955 lglob = lglob + 2*gbuf%G_TM_SIG
956 lglob = lglob + 2*gbuf%G_TM_STRA
959 buflen = buflen + gbuf%NVAR_GLOB + 1 + lglob*nel
964 bufly => elbuf_tab(ng)%BUFLY(i)
966 llay = llay + npar_lay + bufly%NVAR_LAY + bufly%NVAR_LOC
967 llay = llay + nel*bufly%LY_DMG
968 llay = llay + nel*bufly%LY_GAMA
969 IF(idrape == 0 .OR. (idrape > 0 .and . igtyp == 17))
THEN
970 llay = llay + nel*bufly%LY_DIRA
971 llay = llay + nel*bufly%LY_DIRB
975 len_plapt = nel*bufly%LY_PLAPT
976 len_sigpt = nel*bufly%LY_SIGPT
978 IF (igtyp /= 51 .AND. igtyp /= 52)
THEN
979 len_plapt = nel*bufly%LY_PLAPT*npt
980 len_sigpt = nel*bufly%LY_SIGPT*npt
982 len_plapt = nel*bufly%LY_PLAPT*bufly%NPTT
983 len_sigpt = nel*bufly%LY_SIGPT*bufly%NPTT
988 llay = llay + len_plapt
989 llay = llay + len_sigpt
991 llay = llay + nel*bufly%LY_HOURG
993 buflen = buflen + llay
996 bufly => elbuf_tab(ng)%BUFLY(i)
999 lloc = lloc + bufly%L_OFF
1000 lloc = lloc + bufly%L_GAMA
1001 lloc = lloc + bufly%L_STRA
1002 lloc = lloc + bufly%L_FRAC
1003 lloc = lloc + bufly%L_BFRAC
1004 lloc = lloc + bufly%L_EINT
1005 lloc = lloc + bufly%L_EINS
1006 lloc = lloc + bufly%L_RHO
1007 lloc = lloc + bufly%L_DP_DRHO
1008 lloc = lloc + bufly%L_QVIS
1009 lloc = lloc + bufly%L_DELTAX
1010 lloc = lloc + bufly%L_VOL
1011 lloc = lloc + bufly%L_EPSA
1012 lloc = lloc + bufly%L_EPSD
1013 lloc = lloc + bufly%L_EPSQ
1014 lloc = lloc + bufly%L_EPSF
1015 lloc = lloc + bufly%L_PLA
1016 lloc = lloc + bufly%L_WPLA
1017 lloc = lloc + bufly%L_TEMP
1018 lloc = lloc + bufly%L_TB
1019 lloc = lloc + bufly%L_RK
1020 lloc = lloc + bufly%L_RE
1021 lloc = lloc + bufly%L_VK
1022 lloc = lloc + bufly%L_SF
1023 lloc = lloc + bufly%L_ROB
1024 lloc = lloc + bufly%L_DAM
1025 lloc = lloc + bufly%L_DSUM
1026 lloc = lloc + bufly%L_DGLO
1027 lloc = lloc + bufly%L_CRAK
1028 lloc = lloc + bufly%L_ANG
1029 lloc = lloc + bufly%L_EPE
1030 lloc = lloc + bufly%L_EPC
1031 lloc = lloc + bufly%L_XST
1032 lloc = lloc + bufly%L_SSP
1033 lloc = lloc + bufly%L_Z
1034 lloc = lloc + bufly%L_VISC
1035 lloc = lloc + bufly%L_SIGL
1036 lloc = lloc + bufly%L_SIGV
1037 lloc = lloc + bufly%L_SIGA
1038 lloc = lloc + bufly%L_SIGB
1039 lloc = lloc + bufly%L_SIGC
1040 lloc = lloc + bufly%L_SIGD
1041 lloc = lloc + bufly%L_SIGF
1042 lloc = lloc + bufly%L_SIG
1043 lloc = lloc + bufly%L_FOR
1044 lloc = lloc + bufly%L_MOM
1045 lloc = lloc + bufly%L_THK
1046 lloc = lloc + bufly%L_SMSTR
1047 lloc = lloc + bufly%L_DMG
1048 lloc = lloc + bufly%L_FORTH
1049 lloc = lloc + bufly%L_EINTTH
1050 lloc = lloc + bufly%L_SEQ
1051 lloc = lloc + bufly%L_JAC_I
1052 lloc = lloc + bufly%L_FAC_YLD
1053 lloc = lloc + bufly%L_ABURN
1054 lloc = lloc + bufly%L_MU
1055 lloc = lloc + bufly%L_PIJ
1057 lloc = lloc + bufly%L_PLANL
1058 lloc = lloc + bufly%L_EPSDNL
1059 lloc = lloc + bufly%L_DMGSCL
1060 lloc = lloc + bufly%L_TSAIWU
1061 buflen = buflen + (lloc * nel + npar_lbuf) * npg
1065 iparg(66,ng) = buflen
1071 . nintlay,nel,npt,ng,ngroup,ity,
1072 . igtyp,npropm,nummat,pm )
1081 ELSEIF (ity == 3 .OR. ity == 7)
THEN
1090 ELSEIF (ity == 7)
THEN
1091 imid = ixtg(1,nft+1)
1092 ipid = ixtg(5,nft+1)
1094 elbuf_tab(ng)%GBUF%G_DT = 1
1097 IF (ity == 3 .and. jhbe == 11)
THEN
1100 ELSEIF (ity==7 .and. jhbe == 30)
THEN
1107 IF (igtyp == 10 .or. igtyp == 11 .or. igtyp == 16 .or.
1108 . igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1115 IF (igtyp == 17 .and. ishplyxfem == 1) nintlay = nlay-1
1116 IF (ity == 7 .AND. mlw == 151)
THEN
1117 nlay = iparg(20, ng)
1127 elbuf_tab(ng)%IGTYP = igtyp
1128 elbuf_tab(ng)%NEL = nel
1129 elbuf_tab(ng)%NLAY = nlay
1130 elbuf_tab(ng)%NINTLAY= nintlay
1131 elbuf_tab(ng)%NPTR = nptr
1132 elbuf_tab(ng)%NPTS = npts
1133 elbuf_tab(ng)%NPTT = nptt
1134 elbuf_tab(ng)%IXFEM = ixfem
1135 elbuf_tab(ng)%NXEL = nxel
1136 elbuf_tab(ng)%IDRAPE = idrape
1140 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1152 CALL my_alloc(tfail,nlay,maxflay)
1153 CALL my_alloc(failid,nlay,maxflay)
1154 CALL my_alloc(imat,nlay)
1155 CALL my_alloc(ilaw,nlay)
1159 IF (inloc == 0)
THEN
1160 ALLOCATE(elbuf_tab(ng)%NLOC(0,0))
1170 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
1173 IF (igtyp == 51 .OR. igtyp == 52 )
THEN
1176 ipnpt_lay = ippid + 3*nlay
1178 npt_lay = stack%IGEO(ipnpt_lay + il,isubstack)
1179 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1183 elbuf_tab(ng)%BUFLY(il)%NPTT = nptt
1187 IF (igtyp == 51 )
THEN
1191 ipidl = stack%IGEO(ippid+il,isubstack)
1192 npt_lay = igeo(4,ipidl)
1193 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1195 ELSEIF(igtyp == 52)
THEN
1198 ipidl = stack%IGEO(ippid+il,isubstack)
1200 elbuf_tab(ng)%BUFLY(il)%NPTT = npt_lay
1211 npttot = npttot + npg*elbuf_tab(ng)%BUFLY(i)%NPTT
1215 bufly => elbuf_tab(ng)%BUFLY(il)
1217 ALLOCATE(bufly%LBUF(nptr,npts
1218 ALLOCATE(bufly%MAT (nptr,npts,nptt))
1219 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
1220 ALLOCATE(bufly%PROP(nptr,npts,nptt))
1221 ALLOCATE(bufly%EOS (nptr,npts,nptt))
1222 ALLOCATE(bufly%VISC(nptr,npts,nptt))
1223 ALLOCATE(bufly%PORO(nptr,npts,nptt))
1224 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52))
1225 .
ALLOCATE(elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(nptt))
1229 IF ((inloc > 0).AND.(nptt>1))
THEN
1242 bufnl => elbuf_tab(ng)%NLOC(ir,is)
1244 CALL my_alloc(bufnl%MASSTH,nel,nonl)
1246 lnloc = lnloc + nel*nonl
1248 CALL my_alloc(bufnl%UNLTH,nel,nonl
1250 lnloc = lnloc + nel*nonl
1252 CALL my_alloc(bufnl%VNLTH,nel,nonl)
1254 lnloc = lnloc + nel*nonl
1256 CALL my_alloc(bufnl%FNLTH,nel,nonl)
1258 lnloc = lnloc + nel*nonl
1264 ALLOCATE(elbuf_tab(ng)%INTLAY(nintlay))
1266 intlay => elbuf_tab(ng)%INTLAY(i)
1267 ALLOCATE(intlay%ILBUF(nptr,npts))
1268 ALLOCATE(intlay%MAT (nptr,npts))
1269 ALLOCATE(intlay%FAIL (nptr,npts))
1278 IF (igtyp == 11 .or. igtyp == 16)
THEN
1280 imat(il) = igeo(100+il,ipid)
1281 ilaw(il) = ipm(2,imat(il))
1283 ELSEIF (igtyp == 17 .OR.
THEN
1286 imat(il) = stack%IGEO(ipmat + il ,isubstack
1287 ilaw(il) = ipm(2,imat(il))
1289 ELSEIF(ipm(2,imid) == 151)
THEN
1291 imat(il) = ipm(20+il,imid)
1292 ilaw(il) = ipm(2,ipm(20+il,imid))
1302 IF (mlw == 151)
THEN
1304 ieos_type = mat_param
1305 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
1306 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
1307 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
1308 elbuf_tab(ng)%BUFLY(il)%IVISC= 0
1309 elbuf_tab(ng)%BUFLY(il)%IPORO= 0
1310 elbuf_tab(ng)%BUFLY(il)%NFAIL= 0
1311 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = 0
1312 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = 0
1313 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = 0
1314 elbuf_tab(ng)%BUFLY(il)%NVARTMP = 0
1315 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = 0
1319 nfail = mat_param(imat(il))%NFAIL
1323 ieos_type = ipm(4,imat(il))
1324 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
1325 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
1326 elbuf_tab(ng)%BUFLY(il)%ILAW = ilaw(il)
1327 elbuf_tab(ng)%BUFLY(il)%IMAT = imat(il)
1328 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
1329 elbuf_tab(ng)%BUFLY(il)%IVISC = mat_param(imat(il))%VISC%ILAW
1330 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
1331 elbuf_tab(ng)%BUFLY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
1332 elbuf_tab(ng)%BUFLY(il
1333 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
1334 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
1335 elbuf_tab(ng)%BUFLY(il)%IPORO = 0
1336 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
1339 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
1340 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
1342 failid(il,j) = idfail
1347 IF (debug_print == 1)
THEN
1354 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
1355 nuvarv = mat_param(mx)%VISC%NUVAR + nvar_damp_freq_range
1356 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = nuvarv
1357 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
1358 nvartmp= elbuf_tab(ng)%BUFLY(il)%NVARTMP
1359 nvar_eos = elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
1360 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
1361 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
1362 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
1366 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
1367 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = elbuf_tab(ng)%BUFLY(il)%IMAT
1368 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
1369 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
1370 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%VISC(ir
1371 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR,nvar_eos*nel)
1372 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos*nel)
1373 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR = zero
1374 elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR = zero
1375 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is
1376 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP = 0
1377 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP = 0
1379 lmat = lmat + nuvarm*nel
1380 lvisc = lvisc + nuvarv*nel
1381 leos = leos + nvar_eos*nel
1383 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail))
1384 mx = elbuf_tab(ng)%BUFLY(il)%IMAT
1386 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
1388 irupt = mat_param(mx)%FAIL(j)%IRUPT
1392 floc%IDFAIL = mat_param(mx)%FAIL(j)%FAIL_ID
1395 floc%NVAR = mat_param(mx)%FAIL(j)%NUVAR
1396 CALL my_alloc(floc%VAR,floc%NVAR*nel)
1398 lfail = lfail + floc%NVAR*nel + 1
1400 floc%LF_DAM = fail_tag(irupt)%LF_DAM
1401 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
1403 lfail = lfail + floc%LF_DAM*nel + 1
1405 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
1406 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
1408 lfail = lfail + floc%LF_DAMMX*nel + 1
1410 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
1411 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI
1413 lfail = lfail + floc%LF_DAMINI*nel + 1
1415 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
1416 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
1418 lfail = lfail + floc%LF_TDEL*nel + 1
1420 floc%LF_INDX = fail_tag(irupt)%LF_INDX
1421 CALL my_alloc(floc%INDX,floc%LF_INDX*nel)
1423 lfail = lfail + floc%LF_INDX*nel + 1
1425 floc%LF_OFF = fail_tag(irupt)%LF_OFF
1426 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
1428 lfail = lfail + floc%LF_OFF*nel + 1
1447 ipmat_iply = 2 + 2*nlay
1454 intlay => elbuf_tab(ng)%INTLAY(il)
1456 imat(il) = stack%IGEO(ipmat_iply + il ,isubstack)
1457 ilaw(il) = ipm(2,imat(il))
1458 nfail = mat_param(imat(il))%NFAIL
1459 elbuf_tab(ng)%INTLAY(il)%ILAW = ilaw(il)
1460 elbuf_tab(ng)%INTLAY(il)%IMAT = imat(il)
1461 elbuf_tab(ng)%INTLAY(il)%NFAIL= nfail
1462 elbuf_tab(ng)%INTLAY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
1463 elbuf_tab(ng)%INTLAY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
1465 irupt = mat_param(imat(il))%FAIL(j)%IRUPT
1466 idfail = mat_param(imat(il))%FAIL(j)%FAIL_ID
1468 failid(il,j) = idfail
1471 limat = limat + nel*ly_eint
1472 limat = limat + nel*ly_count
1476 ilbuf => elbuf_tab(ng)%INTLAY(il)%ILBUF(i,j)
1477 CALL my_alloc(intlay%ILBUF(i,j)%EPS,l_eps*nel)
1478 CALL my_alloc(intlay%ILBUF(i,j)%SIG,l_sig*nel)
1479 intlay%ILBUF(i,j)%EPS = zero
1480 intlay%ILBUF(i,j)%SIG = zero
1481 limat = limat + nel*l_eps
1482 limat = limat + nel*l_sig
1488 nuvarm = elbuf_tab(ng)%INTLAY(il)%NVAR_MAT
1489 nvartmp = elbuf_tab(ng)%INTLAY(il)%NVARTMP
1490 nfail = elbuf_tab(ng)%INTLAY(il)%NFAIL
1493 CALL my_alloc(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR,nuvarm*nel)
1494 CALL my_alloc(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VARTMP,nvartmp*nel)
1495 elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR = zero
1496 elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VARTMP = 0
1497 limat = limat + nuvarm*nel ! not need in restart file + nvartmp*nel
1501 ALLOCATE(elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC(nfail))
1504 floc=>elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC(j)
1505 floc%ILAWF = mat_param(imat(il))%FAIL(j)%IRUPT
1506 floc%IDFAIL = mat_param(imat(il))%FAIL(j)%FAIL_ID
1507 floc%NVAR = mat_param(imat(il))%FAIL(j)%NUVAR
1508 CALL my_alloc(floc%VAR,floc%NVAR*nel)
1510 lifail = lifail + floc%NVAR*nel + 3
1514 IF (debug_print == 1)
THEN
1516 print*,
' INTLAY ',il
1517 print*,
' LIMAT,LIFAIL = ',limat,lifail
1521 IF (debug_print == 1)
THEN
1523 print*,
' sum local variables mat,visc,fail on all layers'
1524 print*,
' LMAT,LVISC,LFAIL,LEOS = ',lmat,lvisc,lfail,leos
1527 gbuf => elbuf_tab(ng)%GBUF
1528 IF (jthe /= 0 ) gbuf%G_TEMP = 1
1529 IF (jthe /= 0 .AND. npg > 1) gbuf%G_TEMPG = npg
1530 IF (isms_selec >= 1) gbuf%G_ISMS = 1
1531 IF (jeul+jale /= 0 .AND. isnod >= 4) gbuf%G_MOM = 3
1535 ELSEIF (jhbe == 23)
THEN
1538 IF (isrot > 0) gbuf%G_HOURG = gbuf%G_HOURG + 13
1539 IF (ismstr == 10)
THEN
1542 ELSEIF (ismstr /= 4)
THEN
1547 ELSEIF (ity == 7)
THEN
1548 IF (jhbe >= 30)
THEN
1549 IF (ismstr /= 4) gbuf%G_SMSTR = 13
1550 ELSEIF (ismstr == 10)
THEN
1552 ELSEIF (ismstr /= 4)
THEN
1556 IF (jhbe < 30 .and. isrot > 0) gbuf%G_HOURG
1558 IF (ity == 3 .OR. ity == 7)
THEN
1559 IF (defaults%SHELL%IOFFSET ==1) elbuf_tab(ng)%GBUF%G_SH_IOFFSET = 1
1562 IF (npg > 1) gbuf%G_FORPG_G = 5*npg
1566 IF (ismstr == 10 )
THEN
1568 gbuf%G_STRWPG = gbuf%G_STRW
1570 gbuf%G_STRPG = gbuf%G_STRA*npg
1571 ELSEIF (istra > 0 .OR. ifail >
1572 . ismstr == 11 .OR.(ismstr==1 .AND. mlw==19))
THEN
1575 IF (ity == 3 .AND. jhbe == 23 .AND. istr_24 > 0) gbuf%G_STRPG = 4*gbuf%G_STRA
1584 bufly => elbuf_tab(ng)%BUFLY(il)
1585 IF (isorth == 1 .AND. isrot > 0) bufly%L_SIGD = 6
1586 IF (gbuf%G_GAMA > 0 .AND. nlay > 1) bufly%L_GAMA = gbuf%G_GAMA
1587 IF (irep == 1 )
THEN
1589 ELSEIF (irep >= 2)
THEN
1593 IF (jthe /= 0) bufly%L_TEMP = 1
1594 IF (isvis > 0 .OR. bufly%IVISC == 1 .OR. bufly%IVISC == 3) bufly%L_SIGV = 5
1595 IF ((bufly%IVISC > 0).OR.(idamp_freq_range > 0)) bufly%L_VISC = 5
1596 IF (bufly%IVISC > 0 .and. mlw == 25) bufly%L_SIGD = 6
1597 IF (mlw == 27) bufly%L_DMG = 2
1598 IF (mlw == 2) bufly%L_SIGB = 3
1600 IF (istra > 0 .AND. mlw /= 0 .AND. nlay > 1) bufly%L_STRA = 8
1603 bufly%LY_HOURG = gbuf%G_HOURG
1604 IF (igtyp == 11 .or. igtyp == 51 .or. igtyp == 52)
THEN
1614 IF (iexpan > 0)
THEN
1618 IF(iufacyld == 1.AND.(mlw==36.OR.mlw==87))bufly%L_FAC_YLD = 1
1622 bufly%LY_OFFPG = npg
1628 IF((ity==3.OR.ity==7).AND.igtyp /= 1)
THEN
1633 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
1645! . law == 25 .OR. law =
1660 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat + lifail + lnloc
1662 IF (debug_print == 1)
THEN
1663 print*,
' BUFLEN=NPAR_TAB+LMAT+LFAIL+LVISC+LPORO+LEOS+LIMAT+LIFAIL+LNLOC',buflen
1670 bufly => elbuf_tab(ng)%BUFLY(il)
1674 bufly%LY_CRKDIR =
max(fail_tag(irupt)%LF_DIR,bufly%LY_CRKDIR)
1675 bufly%LY_DMG =
max(fail_tag(irupt)%LF_DAM,bufly%LY_DMG)
1679 IF (mlw /= 151)
THEN
1684 lglob = lglob + gbuf%G_NOFF
1685 lglob = lglob + gbuf%G_IERR
1686 lglob = lglob + gbuf%G_GAMA
1690 lglob = lglob + gbuf%G_HOURG
1691 lglob = lglob + gbuf%G_TAG22
1692 lglob = lglob + gbuf%G_STRA
1693 lglob = lglob + gbuf%G_SIGI
1694 lglob = lglob + gbuf%G_DMG
1695 lglob = lglob + gbuf%G_DAMDL
1696 lglob = lglob + gbuf%G_FOR
1697 lglob = lglob + gbuf%G_MOM
1698 lglob = lglob + gbuf%G_THK
1699 lglob = lglob + gbuf%G_DT
1700 lglob = lglob + gbuf%G_ISMS
1702 lglob = lglob + gbuf%G_STRW
1703 gbuf%G_THK_I = gbuf%G_THK
1704 lglob = lglob + gbuf%G_THK_I
1705 lglob = lglob + gbuf%G_MAXFRAC
1706 lglob = lglob + gbuf%G_MAXEPS
1707 lglob = lglob + gbuf%G_FOR_G
1708 lglob = lglob + gbuf%G_WPLA
1710 lglob = lglob + gbuf%G_FORPG
1711 lglob = lglob + gbuf%G_MOMPG
1713 lglob = lglob + gbuf%G_FORPGPINCH
1714 lglob = lglob + gbuf%G_MOMPGPINCH
1715 lglob = lglob + gbuf%G_EPGPINCHXZ
1716 lglob = lglob + gbuf%G_EPGPINCHYZ
1717 lglob = lglob + gbuf%G_EPGPINCHZZ
1719 lglob = lglob + gbuf%G_STRPG
1720 lglob = lglob + gbuf%G_STRWPG
1721 lglob = lglob + gbuf%G_TEMPG
1722 lglob = lglob + gbuf%G_FORPG_G
1723 ELSEIF (gbuf%G_STRPG > gbuf%G_STRA)
THEN
1724 lglob = lglob + gbuf%G_STRPG
1728 lglob = lglob + gbuf%G_UELR
1729 lglob = lglob + gbuf%G_UELR1
1732 IF (npttot /= 1)
THEN
1733 lglob = lglob + gbuf%G_BFRAC
1734 lglob = lglob + gbuf%G_OFF
1735 lglob = lglob + gbuf%G_EINT
1736 lglob = lglob + gbuf%G_EINS
1737 lglob = lglob + gbuf%G_RHO
1738 lglob = lglob + gbuf%G_QVIS
1739 lglob = lglob + gbuf%G_DELTAX
1740 lglob = lglob + gbuf%G_VOL
1741 lglob = lglob + gbuf%G_EPSD
1742 lglob = lglob + gbuf%G_EPSQ
1743 lglob = lglob + gbuf%G_PLA
1744 lglob = lglob + gbuf%G_TEMP
1745 lglob = lglob + gbuf%G_TB
1746 lglob = lglob + gbuf%G_RK
1747 lglob = lglob + gbuf%G_RE
1748 lglob = lglob + gbuf%G_SIG
1749 lglob = lglob + gbuf%G_FORTH
1750 lglob = lglob + gbuf%G_EINTTH
1751 lglob = lglob + gbuf%G_SEQ
1752 lglob = lglob + gbuf%G_ABURN
1753 lglob = lglob + gbuf%G_MU
1756 lglob = lglob + gbuf%G_AREA
1757 lglob = lglob + gbuf%G_SKEW
1758 lglob = lglob + gbuf%G_LENGTH
1759 lglob = lglob + gbuf%G_TOTDEPL
1760 lglob = lglob + gbuf%G_TOTROT
1761 lglob = lglob + gbuf%G_FOREP
1762 lglob = lglob + gbuf%G_MOMEP
1763 lglob = lglob + gbuf%G_DEP_IN_TENS
1764 lglob = lglob + gbuf%G_DEP_IN_COMP
1765 lglob = lglob + gbuf%G_ROT_IN_TENS
1766 lglob = lglob + gbuf%G_ROT_IN_COMP
1767 lglob = lglob + gbuf%G_POSX
1768 lglob = lglob + gbuf%G_POSY
1769 lglob = lglob + gbuf%G_POSZ
1770 lglob = lglob + gbuf%G_POSXX
1771 lglob = lglob + gbuf%G_POSYY
1772 lglob = lglob + gbuf%G_POSZZ
1773 lglob = lglob + gbuf%G_YIELD
1774 lglob = lglob + gbuf%G_LENGTH_ERR
1775 lglob = lglob + gbuf%G_DV
1776 lglob = lglob + gbuf%G_DFS
1777 lglob = lglob + gbuf%G_SKEW_ERR
1778 lglob = lglob + gbuf%G_E6
1779 lglob = lglob + gbuf%G_RUPTCRIT
1780 lglob = lglob + gbuf%G_MASS
1781 lglob = lglob + gbuf%G_V_REPCVT
1782 lglob = lglob + gbuf%G_VR_REPCVT
1783 lglob = lglob + gbuf%G_NUVAR
1784 lglob = lglob + gbuf%G_DEFINI
1785 lglob = lglob + gbuf%G_FORINI
1786 lglob = lglob + gbuf%G_INIFRIC
1788 lglob = lglob + gbuf%G_SLIPRING_ID
1789 lglob = lglob + gbuf%G_SLIPRING_FRAM_ID
1790 lglob = lglob + gbuf%G_INTVAR
1791 lglob = lglob + gbuf%G_ADD_NODE
1792 lglob = lglob + gbuf%G_UPDATE
1794 lglob = lglob + gbuf%G_FILL
1795 lglob = lglob + gbuf%G_BETAORTH
1797 lglob = lglob + gbuf%G_TM_YIELD
1798 lglob = lglob + gbuf%G_TM_SEQ
1799 lglob = lglob + gbuf%G_TM_EINT
1800 lglob = lglob + gbuf%G_TM_DMG
1801 lglob = lglob + 2*gbuf%G_TM_SIG
1802 lglob = lglob + 2*gbuf%G_TM_STRA
1803 lglob = lglob + gbuf%G_SH_IOFFSET
1809 IF (debug_print == 1)
THEN
1810 print*,
' LGLOB, glob vars= ',lglob,lglob*nel
1811 print*,
' total glob: ', gbuf%NVAR_GLOB + 1 + lglob*nel
1812 print*,
' buflen=BUFLEN + GBUF%NVAR_GLOB + 1 + LGLOB*NEL'
1813 print*
' NPAR_LAY+NVAR_LAY,NVAR_LOC=',npar_lay+bufly%NVAR_LAY+bufly%NVAR_LOC
1820 bufly => elbuf_tab(ng)%BUFLY(i)
1821 llay = llay + npar_lay + bufly%NVAR_LAY + bufly%NVAR_LOC
1822 llay = llay + nel*bufly%LY_DMG
1823 llay = llay + nel*bufly%LY_GAMA
1824 IF(idrape == 0 .OR. (idrape > 0 .AND. igtyp == 17))
THEN
1825 llay = llay + nel*bufly%LY_DIRA
1826 llay = llay + nel*bufly%LY_DIRB
1830 len_plapt = nel*bufly%LY_PLAPT
1831 len_sigpt = nel*bufly%LY_SIGPT
1833 IF (igtyp /= 51 .AND. igtyp /= 52)
THEN
1834 len_plapt = nel*bufly%LY_PLAPT*npt
1835 len_sigpt = nel*bufly%LY_SIGPT*npt
1837 len_plapt = nel*bufly%LY_PLAPT*bufly%NPTT
1838 len_sigpt = nel*bufly%LY_SIGPT*bufly%NPTT
1843 llay = llay + len_plapt
1844 llay = llay + len_sigpt
1846 llay = llay + nel*bufly%LY_HOURG
1848 llay = llay + nel*bufly%LY_UELR
1849 llay = llay + nel*bufly%LY_UELR1
1850 llay = llay + nel*bufly%LY_CRKDIR
1851 llay = llay + nel*bufly%LY_OFFPG
1852 llay = llay + nel*bufly%LY_OFF
1854 IF (debug_print == 1)
THEN
1855 print*,
' ** LAYER=',il
1856 print*,
' vars NEL*LY_xxx, buflen =: ', llay - iad , buflen
1861 buflen = buflen + llay
1864 IF (debug_print == 1)
THEN
1865 print*,
' total vars LY_xxx, buflen =: ', llay , buflen
1870 bufly => elbuf_tab(ng)%BUFLY(il)
1872 nip_lay = npg*bufly%NPTT
1875 lloc = lloc + bufly%L_OFF
1876 lloc = lloc + bufly%L_GAMA
1878 IF(ixfem == 0) bufly%L_STRA = 0
1879 lloc = lloc + bufly%L_STRA
1881 lloc = lloc + bufly%L_FRAC
1882 lloc = lloc + bufly%L_BFRAC
1883 lloc = lloc + bufly%L_EINT
1885 IF (mlw /= 151)
THEN
1888 lloc = lloc + bufly%L_RHO
1889 lloc = lloc + bufly%L_DP_DRHO
1890 lloc = lloc + bufly%L_QVIS
1891 lloc = lloc + bufly%L_DELTAX
1892 lloc = lloc + bufly%L_VOL
1893 lloc = lloc + bufly%L_EPSA
1894 lloc = lloc + bufly%L_EPSD
1896 lloc = lloc + bufly%L_EPSF
1897 lloc = lloc + bufly%L_PLA
1898 lloc = lloc + bufly%L_WPLA
1899 lloc = lloc + bufly%L_TEMP
1900 lloc = lloc + bufly%L_TB
1901 lloc = lloc + bufly%L_RK
1902 lloc = lloc + bufly%L_RE
1903 lloc = lloc + bufly%L_VK
1904 lloc = lloc + bufly%L_SF
1905 lloc = lloc + bufly%L_ROB
1906 lloc = lloc + bufly%L_DAM
1907 lloc = lloc + bufly%L_DSUM
1908 lloc = lloc + bufly%L_DGLO
1909 lloc = lloc + bufly%L_CRAK
1910 lloc = lloc + bufly%L_ANG
1911 lloc = lloc + bufly%L_EPE
1912 lloc = lloc + bufly%L_EPC
1913 lloc = lloc + bufly%L_XST
1914 lloc = lloc + bufly%L_SSP
1915 lloc = lloc + bufly%L_Z
1916 lloc = lloc + bufly%L_VISC
1917 lloc = lloc + bufly%L_SIGL
1918 lloc = lloc + bufly%L_SIGV
1919 lloc = lloc + bufly%L_SIGA
1920 lloc = lloc + bufly%L_SIGB
1921 lloc = lloc + bufly%L_SIGC
1922 lloc = lloc + bufly%L_SIGD
1923 lloc = lloc + bufly%L_SIGF
1924 lloc = lloc + bufly%L_SIG
1925 lloc = lloc + bufly%L_SIGPLY
1926 lloc = lloc + bufly%L_FOR
1927 lloc = lloc + bufly%L_MOM
1928 lloc = lloc + bufly%L_THK
1929 lloc = lloc + bufly%L_SMSTR
1930 lloc = lloc + bufly%L_DMG
1931 lloc = lloc + bufly%L_FORTH
1932 lloc = lloc + bufly%L_EINTTH
1933 lloc = lloc + bufly%L_SEQ
1934 lloc = lloc + bufly%L_FAC_YLD
1935 lloc = lloc + bufly%L_ABURN
1936 lloc = lloc + bufly%L_MU
1937 lloc = lloc + bufly%L_PLANL
1938 lloc = lloc + bufly%L_EPSDNL
1939 lloc = lloc + bufly%L_DMGSCL
1940 lloc = lloc + bufly%L_TSAIWU
1942 buflen = buflen + (lloc * nel + npar_lbuf) * nip_lay
1943 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52))
THEN
1944 lloc_slice = bufly%LY_DIRA + bufly%LY_DIRB
1945 buflen = buflen + lloc_slice*nel*bufly%NPTT
1947 IF (debug_print == 1)
THEN
1948 print*,
' ** variables locales LAYER=',il
1949 print*,
' (LLOC*NEL+NPAR_LBUF)*NIP_LAY=',(lloc*nel+npar_lbuf)*nip_lay
1953 iparg(66,ng) = buflen
1955 IF(print_flag>6)
WRITE(iout,1002) ng, buflen
1961 . nintlay,nel,npt,ng,ngroup,ity,
1962 . igtyp,npropm,nummat,pm )
1971 ELSEIF (ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100)
THEN
1979 ELSEIF (ity == 5)
THEN
1982 ELSEIF (ity == 6)
THEN
1985 ELSEIF (ity == 100)
THEN
1989 igtyp = igeo(11,ipid)
1991 gbuf => elbuf_tab(ng)%GBUF
2001 IF (igtyp == 18)
THEN
2013 elbuf_tab(ng)%IGTYP = igtyp
2014 elbuf_tab(ng)%NEL = nel
2015 elbuf_tab(ng)%NLAY = nlay
2016 elbuf_tab(ng)%NINTLAY= 0
2017 elbuf_tab(ng)%NPTR = nptr
2018 elbuf_tab(ng)%NPTS = npts
2019 elbuf_tab(ng)%NPTT = nptt
2020 elbuf_tab(ng)%IXFEM = 0
2021 elbuf_tab(ng)%NXEL = 0
2022 elbuf_tab(ng)%IDRAPE = 0
2024 CALL my_alloc(imat,nlay)
2025 CALL my_alloc(ilaw,nlay)
2033 ALLOCATE(elbuf_tab(ng)%BUFLY(nlay))
2036 bufly => elbuf_tab(ng)%BUFLY(il)
2038 ALLOCATE(bufly%LBUF(nptr,npts,nptt))
2039 ALLOCATE(bufly%MAT (nptr,npts,nptt))
2040 ALLOCATE(bufly%EOS (nptr,npts,nptt))
2041 ALLOCATE(bufly%FAIL(nptr,npts,nptt))
2050 nfail = mat_param(imat(il))%NFAIL
2053 ieos_type = ipm(4,imat(il))
2054 IF(ieos_type>0)nvar_eos = eos_tag(ieos_type)%NVAR
2055 IF(ieos_type>0)nvartmp_eos = eos_tag(ieos_type)%NVARTMP
2056 elbuf_tab(ng)%BUFLY(il)%ILAW = mlw
2057 elbuf_tab(ng)%BUFLY(il)%IMAT = imid
2058 elbuf_tab(ng)%BUFLY(il)%IEOS = ieos
2059 elbuf_tab(ng)%BUFLY(il)%IVISC = mat_param(imid)%VISC%ILAW
2060 elbuf_tab(ng)%BUFLY(il)%NVAR_MAT = mlaw_tag(imat(il))%NUVAR
2061 elbuf_tab(ng)%BUFLY(il)%NVARTMP = mlaw_tag(imat(il))%NVARTMP
2062 elbuf_tab(ng)%BUFLY(il)%NVAR_VISC = mat_param(imid)%VISC%NUVAR + nvar_damp_freq_range
2063 elbuf_tab(ng)%BUFLY(il)%NVAR_EOS = nvar_eos
2064 elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS = nvartmp_eos
2065 elbuf_tab(ng)%BUFLY(il)%IPORO = 0
2066 elbuf_tab(ng)%BUFLY(il)%NFAIL = nfail
2072 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
2073 nvartmp = elbuf_tab(ng)%BUFLY(il)%NVARTMP
2074 nvartmp_eos = elbuf_tab(ng)%BUFLY(il)%NVARTMP_EOS
2075 nvar_eos= elbuf_tab(ng)%BUFLY(il)%NVAR_EOS
2076 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
2077 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
2082 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%MLAW = elbuf_tab(ng)%BUFLY(il)%ILAW
2083 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%LawID = elbuf_tab(ng)%BUFLY(il)%IMAT
2084 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR,nuvarm*nel)
2085 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP,nvartmp*nel)
2086 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR,nvar_eos*nel)
2087 CALL my_alloc(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP,nvartmp_eos*nel)
2088 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR
2089 elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VARTMP = 0
2090 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR = zero
2091 elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP = 0
2092 lmat = lmat + nuvarm*nel
2094 IF (nfail == 1)
THEN
2095 irupt = mat_param(imat(il))%FAIL(1)%IRUPT
2096 ALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(nfail))
2097 floc => elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(1)
2102 floc%IDFAIL = mat_param(imat(il))%FAIL(1)%FAIL_ID
2105 floc%NVAR = mat_param(imat(il))%FAIL(1)%NUVAR
2106 CALL my_alloc(floc%VAR,floc%NVAR*nel)
2108 lfail = lfail + floc%NVAR*nel + 1
2110 floc%LF_DAM = fail_tag(irupt)%LF_DAM
2111 CALL my_alloc(floc%DAM,floc%LF_DAM*nel)
2113 lfail = lfail + floc%LF_DAM*nel + 1
2115 floc%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
2116 CALL my_alloc(floc%DAMMX,floc%LF_DAMMX*nel)
2118 lfail = lfail + floc%LF_DAMMX*nel + 1
2120 floc%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
2121 CALL my_alloc(floc%DAMINI,floc%LF_DAMINI*nel)
2123 lfail = lfail + floc%LF_DAMINI*nel + 1
2125 floc%LF_TDEL = fail_tag(irupt)%LF_TDEL
2126 CALL my_alloc(floc%TDEL,floc%LF_TDEL*nel)
2128 lfail = lfail + floc%LF_TDEL*nel + 1
2130 floc%LF_INDX = fail_tag(irupt)%LF_INDX
2131 CALL my_alloc(floc%INDX,floc%LF_INDX*nel)
2133 lfail = lfail + floc%LF_INDX*nel + 1
2135 floc%LF_OFF = fail_tag(irupt)%LF_OFF
2136 CALL my_alloc(floc%OFF,floc%LF_OFF*nel)
2138 lfail = lfail + floc%LF_OFF*nel + 1
2148 ALLOCATE(elbuf_tab(ng)%BUFLY(0))
2151 buflen = npar_tab + lmat + lfail + lvisc + lporo + leos + limat + lifail
2156 . elbuf_tab(ng),mlaw_tag ,prop_tag ,
2157 . imid ,mlw ,igtyp ,jmult ,ifail ,
2158 . ieos ,eos_tag ,isnod )
2161 bufly => elbuf_tab(ng)%BUFLY(il)
2162 IF (mlw == 2) bufly%L_SIGB = 0
2169 IF (ity == 100)
THEN
2170 nuvarn = nint(geo(35,ipid))
2172 gbuf%G_NUVARN = nuvarn*nx
2180 IF (isms_selec >= 1) gbuf%G_ISMS = 1
2182 IF (iboltp>0) gbuf%G_BPRELD = 2
2186 gbuf%G_THK_I = gbuf%G_THK
2190 lglob = lglob + gbuf%G_NOFF
2191 lglob = lglob + gbuf%G_IERR
2192 lglob = lglob + gbuf%G_GAMA
2193 lglob = lglob + gbuf%G_SMSTR
2194 lglob = lglob + gbuf%G_HOURG
2195 lglob = lglob + gbuf%G_TAG22
2196 lglob = lglob + gbuf%G_STRA
2197 lglob = lglob + gbuf%G_SIGI
2198 lglob = lglob + gbuf%G_DMG
2199 lglob = lglob + gbuf%G_DAMDL
2200 lglob = lglob + gbuf%G_FOR
2201 lglob = lglob + gbuf%G_MOM
2202 lglob = lglob + gbuf%G_THK
2203 lglob = lglob + gbuf%G_DT
2204 lglob = lglob + gbuf%G_ISMS
2205 lglob = lglob + gbuf%G_STRW
2206 lglob = lglob + gbuf%G_THK_I
2207 lglob = lglob + gbuf%G_MAXFRAC
2208 lglob = lglob + gbuf%G_MAXEPS
2209 lglob = lglob + gbuf%G_BPRELD
2212 lglob = lglob + gbuf%G_FORPG
2213 lglob = lglob + gbuf%G_MOMPG
2215 lglob = lglob + gbuf%G_FORPGPINCH
2216 lglob = lglob + gbuf%G_MOMPGPINCH
2217 lglob = lglob + gbuf%G_EPGPINCHXZ
2218 lglob = lglob + gbuf%G_EPGPINCHYZ
2219 lglob = lglob + gbuf%G_EPGPINCHZZ
2221 lglob = lglob + gbuf%G_STRPG
2222 lglob = lglob + gbuf%G_STRWPG
2225 lglob = lglob + gbuf%G_BFRAC
2226 lglob = lglob + gbuf%G_OFF
2227 lglob = lglob + gbuf%G_EINT
2228 lglob = lglob + gbuf%G_EINS
2229 lglob = lglob + gbuf%G_RHO
2230 lglob = lglob + gbuf%G_QVIS
2231 lglob = lglob + gbuf%G_DELTAX
2232 lglob = lglob + gbuf%G_VOL
2233 lglob = lglob + gbuf%G_EPSD
2234 lglob = lglob + gbuf%G_EPSQ
2235 lglob = lglob + gbuf%G_PLA
2236 lglob = lglob + gbuf%G_WPLA
2237 lglob = lglob + gbuf%G_TEMP
2238 lglob = lglob + gbuf%G_TB
2239 lglob = lglob + gbuf%G_RK
2240 lglob = lglob + gbuf%G_RE
2241 lglob = lglob + gbuf%G_SIG
2242 lglob = lglob + gbuf%G_FORTH
2243 lglob = lglob + gbuf%G_EINTTH
2244 lglob = lglob + gbuf%G_SEQ
2245 lglob = lglob + gbuf%G_ABURN
2246 lglob = lglob + gbuf%G_MU
2248 lglob = lglob + gbuf%G_FILL
2250 IF (igtyp == 3)
THEN
2251 lglob = lglob + gbuf%G_DMGSCL
2253 lglob = lglob + gbuf%G_AREA
2254 lglob = lglob + gbuf%G_SKEW
2255 lglob = lglob + gbuf%G_LENGTH
2256 lglob = lglob + gbuf%G_TOTDEPL
2257 lglob = lglob + gbuf%G_TOTROT
2258 lglob = lglob + gbuf%G_FOREP
2259 lglob = lglob + gbuf%G_MOMEP
2260 lglob = lglob + gbuf%G_DEP_IN_TENS
2261 lglob = lglob + gbuf%G_DEP_IN_COMP
2262 lglob = lglob + gbuf%G_ROT_IN_TENS
2263 lglob = lglob + gbuf%G_ROT_IN_COMP
2264 lglob = lglob + gbuf%G_POSX
2265 lglob = lglob + gbuf%G_POSY
2266 lglob = lglob + gbuf%G_POSZ
2267 lglob = lglob + gbuf%G_POSXX
2268 lglob = lglob + gbuf%G_POSYY
2269 lglob = lglob + gbuf%G_POSZZ
2270 lglob = lglob + gbuf%G_YIELD
2271 lglob = lglob + gbuf%G_LENGTH_ERR
2272 lglob = lglob + gbuf%G_DV
2273 lglob = lglob + gbuf%G_DFS
2274 lglob = lglob + gbuf%G_SKEW_ERR
2275 lglob = lglob + gbuf%G_E6
2276 lglob = lglob + gbuf%G_RUPTCRIT
2277 lglob = lglob + gbuf%G_MASS
2278 lglob = lglob + gbuf%G_V_REPCVT
2279 lglob = lglob + gbuf%G_VR_REPCVT
2280 lglob = lglob + gbuf%G_NUVAR
2281 lglob = lglob + gbuf%G_NUVARN
2282 lglob = lglob + gbuf%G_DEFINI
2283 lglob = lglob + gbuf%G_FORINI
2284 lglob = lglob + gbuf%G_INIFRIC
2285 lglob = lglob + gbuf%G_SKEW_ID
2286 lglob = lglob + gbuf%G_YIELD_IN_COMP
2287 lglob = lglob + gbuf%G_XXOLD_IN_COMP
2289 lglob = lglob + gbuf%G_SLIPRING_ID
2290 lglob = lglob + gbuf%G_SLIPRING_FRAM_ID
2291 lglob = lglob + gbuf%G_SLIPRING_STRAND
2292 lglob = lglob + gbuf%G_RETRACTOR_ID
2293 lglob = lglob + gbuf%G_RINGSLIP
2294 lglob = lglob + gbuf%G_ADD_NODE
2295 lglob = lglob + gbuf%G_UPDATE
2296 lglob = lglob + gbuf%G_FRAM_FACTOR
2297 lglob = lglob + gbuf%G_INTVAR
2302 IF (igtyp == 3 .and. ifail > 0)
THEN
2303 ALLOCATE(elbuf_tab(ng)%GBUF%FAIL(1))
2305 irupt = mat_param(imid)%FAIL(1)%IRUPT
2306 elbuf_tab(ng)%GBUF%FAIL(1)%ILAWF = irupt
2309 elbuf_tab(ng)%GBUF%FAIL(1)%IDFAIL = mat_param(imid)%FAIL(1)%FAIL_ID
2312 elbuf_tab(ng)%GBUF%FAIL(1)%NVAR = mat_param(imid)%FAIL(1)%NUVAR
2313 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%VAR,elbuf_tab(ng)%GBUF%FAIL(1)%NVAR*nel)
2314 elbuf_tab(ng)%GBUF%FAIL(1)%VAR = zero
2315 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%NVAR*nel + 1
2317 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM = fail_tag(irupt)%LF_DAM
2318 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAM,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM*nel)
2319 elbuf_tab(ng)%GBUF%FAIL(1)%DAM = zero
2320 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAM*nel + 1
2322 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX = fail_tag(irupt)%LF_DAMMX
2323 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAMMX,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX*nel)
2324 elbuf_tab(ng)%GBUF%FAIL(1)%DAMMX = zero
2325 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMMX*nel + 1
2327 elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI = fail_tag(irupt)%LF_DAMINI
2328 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%DAMINI,elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI*nel)
2329 elbuf_tab(ng)%GBUF%FAIL(1)%DAMINI = zero
2330 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_DAMINI*nel + 1
2332 elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL = fail_tag(irupt)%LF_TDEL
2333 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%TDEL,elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL*nel)
2334 elbuf_tab(ng)%GBUF%FAIL(1)%TDEL = zero
2335 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_TDEL*nel + 1
2337 elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX = fail_tag(irupt)%LF_INDX
2338 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%INDX,elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX*nel)
2339 elbuf_tab(ng)%GBUF%FAIL(1)%INDX = 0
2340 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_INDX*nel + 1
2342 elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF = fail_tag(irupt)%LF_OFF
2343 CALL my_alloc(elbuf_tab(ng)%GBUF%FAIL(1)%OFF,elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF*nel)
2344 elbuf_tab(ng)%GBUF%FAIL(1)%OFF = 1
2345 gfail = gfail + elbuf_tab(ng)%GBUF%FAIL(1)%LF_OFF*nel + 1
2348 buflen = buflen + gbuf%NVAR_GLOB + 1 + lglob*nel + gfail
2353 bufly => elbuf_tab(ng)%BUFLY(il)
2354 llay = llay + npar_lay + bufly%NVAR_LAY + bufly%NVAR_LOC
2355 llay = llay + nel*bufly%LY_DMG
2356 llay = llay + nel*bufly%LY_GAMA
2357 llay = llay + nel*bufly%LY_DIRA
2358 llay = llay + nel*bufly%LY_DIRB
2359 llay = llay + nel*bufly%LY_HOURG
2361 llay = llay + nel*bufly%LY_UELR
2362 llay = llay + nel*bufly%LY_UELR1
2363 llay = llay + nel*bufly%LY_OFFPG
2364 llay = llay + nel*bufly%LY_OFF
2368 buflen = buflen + llay
2372 bufly => elbuf_tab(ng)%BUFLY(il)
2373 nip_lay = bufly%NPTT
2376 lloc = lloc + bufly%L_OFF
2377 lloc = lloc + bufly%L_GAMA
2379 lloc = lloc + bufly%L_STRA
2381 lloc = lloc + bufly%L_FRAC
2382 lloc = lloc + bufly%L_BFRAC
2383 lloc = lloc + bufly%L_EINT
2384 lloc = lloc + bufly%L_EINS
2386 lloc = lloc + bufly%L_RHO
2387 lloc = lloc + bufly%L_DP_DRHO
2388 lloc = lloc + bufly%L_QVIS
2389 lloc = lloc + bufly%L_DELTAX
2390 lloc = lloc + bufly%L_VOL
2391 lloc = lloc + bufly%L_EPSA
2392 lloc = lloc + bufly%L_EPSD
2393 lloc = lloc + bufly%L_EPSQ
2394 lloc = lloc + bufly%L_EPSF
2395 lloc = lloc + bufly%L_PLA
2396 lloc = lloc + bufly%L_WPLA
2397 lloc = lloc + bufly%L_TEMP
2398 lloc = lloc + bufly%L_TB
2399 lloc = lloc + bufly%L_RK
2400 lloc = lloc + bufly%L_RE
2401 lloc = lloc + bufly%L_VK
2402 lloc = lloc + bufly%L_SF
2403 lloc = lloc + bufly%L_ROB
2404 lloc = lloc + bufly%L_DAM
2405 lloc = lloc + bufly%L_DSUM
2406 lloc = lloc + bufly%L_DGLO
2407 lloc = lloc + bufly%L_CRAK
2408 lloc = lloc + bufly%L_ANG
2409 lloc = lloc + bufly%L_EPE
2410 lloc = lloc + bufly%L_EPC
2411 lloc = lloc + bufly%L_XST
2412 lloc = lloc + bufly%L_SSP
2413 lloc = lloc + bufly%L_Z
2414 lloc = lloc + bufly%L_VISC
2415 lloc = lloc + bufly%L_SIGL
2416 lloc = lloc + bufly%L_SIGV
2417 lloc = lloc + bufly%L_SIGA
2418 lloc = lloc + bufly%L_SIGB
2419 lloc = lloc + bufly%L_SIGC
2420 lloc = lloc + bufly%L_SIGD
2421 lloc = lloc + bufly%L_SIGF
2422 lloc = lloc + bufly%L_SIG
2423 lloc = lloc + bufly%L_SIGPLY
2424 lloc = lloc + bufly%L_FOR
2425 lloc = lloc + bufly%L_MOM
2426 lloc = lloc + bufly%L_THK
2427 lloc = lloc + bufly%L_SMSTR
2428 lloc = lloc + bufly%L_DMG
2429 lloc = lloc + bufly%L_FORTH
2430 lloc = lloc + bufly%L_EINTTH
2431 lloc = lloc + bufly%L_SEQ
2432 lloc = lloc + bufly%L_FAC_YLD
2433 lloc = lloc + bufly%L_ABURN
2434 lloc = lloc + bufly%L_MU
2435 lloc = lloc + bufly%L_PLANL
2436 lloc = lloc + bufly%L_EPSDNL
2437 lloc = lloc + bufly%L_DMGSCL
2438 lloc = lloc + bufly%L_TSAIWU
2440 buflen = buflen + (lloc * nel + npar_lbuf) * nip_lay
2449 iparg(66,ng) = buflen
2451 IF(print_flag>6)
WRITE(iout,1002) ng, buflen
2454 . nintlay,nel,npt,ng,ngroup,ity,
2455 . igtyp,npropm,nummat,pm )
2457 IF (
ALLOCATED(imat))
DEALLOCATE(imat)
2458 IF (
ALLOCATED(ilaw))
DEALLOCATE(ilaw)
2461 ALLOCATE(elbuf_tab(ng)%BUFLY(0))
2468 IF (idamp_freq_range > 0)
THEN
2469 ALLOCATE(elbuf_tab(ng)%DAMP_RANGE%ALPHA(3))
2470 ALLOCATE(elbuf_tab(ng)%DAMP_RANGE%TAU(3))
2471 buflen = iparg(66,ng) + ldamp_freq_range
2472 iparg(66,ng) = buflen
2477 IF (debug_print == 1)
THEN
2478 print*,
' elbuf_ini : NG,ITY,IGTYP,buflen=',ng,ity,igtyp,buflen
2484 + 7x,
'RESTART SIZE OF SHELL AND SOLID ELEMENT GROUPS'/
2485 + 7x,
'----------------------------------------------'/)
2487 + 7x,
'ELEMENT GROUP',i10,
', SIZE=',i10)