50 1 IXS ,IXQ ,IXC ,IXT ,IXP ,
51 2 IXR ,GEO ,PM ,IXTG ,INDEX ,
52 3 ITRI ,NSIGSH ,IGEO ,
53 4 IPM ,NSIGS ,NSIGSPH ,KSYSUSR ,NSIGRS ,
54 5 UNITAB ,ISOLNODD00 ,LSUBMODEL ,RTRANS ,IDRAPE ,
55 6 NSIGI ,NSIGBEAM ,NSIGTRUSS ,
56 7 SIGI ,SIGSH ,SIGSP ,SIGSPH ,SIGRS ,
57 8 SIGBEAM ,SIGTRUSS ,STRSGLOB ,STRAGLOB ,ORTHOGLOB ,
58 9 ISIGSH ,IYLDINI ,FAIL_INI ,IUSOLYLD ,IUSER ,
59 A ID_SIGSH ,ID_SOLID_SIGI,ID_QUAD_SIGI ,ID_SIGSPRI ,ID_SIGBEAM,
60 B ID_SIGTRUSS,WORK ,IGRBRIC ,NIBRICK ,NIQUAD ,
61 C NISHELL ,NISH3N ,NISPRING ,NIBEAM ,NITRUSS ,
62 D MAP_TABLES ,VARMAX ,IPARG ,PTSHEL ,PTSH3N ,
63 E STACK ,IWORKSH ,IOUT ,MAT_PARAM ,NISPHCEL ,
64 F NUMSPH ,NISP ,KXSP ,ID_SIGSPH )
77 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
81#include "implicit_f.inc"
91#include "vect01_c.inc"
95 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
96 INTEGER IXS(NIXS,*), IXQ(NIXQ,*) ,IXC(NIXC,*),
97 . IGEO(NPROPGI,*) , IXT(NIXT,*) ,IXP(NIXP,*), IXR(NIXR,*),
98 . IXTG(NIXTG,*) , INDEX(*) ,ITRI(*) ,IPM(NPROPMI,*),
99 . KSYSUSR(*) , IDRAPE(NPLYMAX,*)
100 INTEGER NSIGI, NSIGSH, NSIGS, NSIGSPH, NSIGRS,
101 . ISOLNODD00(*), NSIGBEAM, NSIGTRUSS, STRSGLOB(*),
102 . STRAGLOB(*), ORTHOGLOB(*), ISIGSH, IYLDINI, FAIL_INI(5),
103 . IUSOLYLD, IUSER,VARMAX
104 INTEGER ID_SIGSH(*), ID_SOLID_SIGI(*), ID_QUAD_SIGI(*)
105 INTEGER ID_SIGSPRI(*), ID_SIGBEAM(*), ID_SIGTRUSS(*)
107 INTEGER NIBRICK, , NISHELL, NISH3N, , NIBEAM,
109 . GEO(*),PM(NPROPM,*),RTRANS(NTRANSF,*),
110 . sigi(nsigs,*),sigsh(
max(1,nsigsh),*),sigtruss(nsigtruss,*),
111 . sigsp(nsigi,*),sigsph(nsigsph,*),sigrs(nsigrs,*),sigbeam(nsigbeam,*)
114 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
117 INTEGER,
DIMENSION(NPARG,NGROUP) ,
INTENT(IN):: IPARG
118 INTEGER,
INTENT(INOUT) :: PTSHEL(NUMELC),PTSH3N(NUMELTG)
119 TYPE (STACK_PLY) :: STACK
120 INTEGER,
INTENT(IN) :: IWORKSH(3,NUMELC + NUMELTG)
121 INTEGER,
INTENT(IN) :: IOUT
122 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
123 INTEGER,
INTENT(INOUT) :: NISPHCEL
124 INTEGER,
INTENT(IN) :: NUMSPH
125 INTEGER,
INTENT(IN) :: NISP
126 INTEGER,
INTENT(IN) :: KXSP(NISP,NUMSPH)
127 INTEGER,
INTENT(INOUT) :: ID_SIGSPH(NUMSPH)
131 INTEGER K, N, I,J, L,IG, ISOLNOD,IGTYP,
132 . ihbe, ish3n,iis,nip,ipg,npg,pt,npp,
134 . nvarsh,kk,uid,iflagunit,
136 . nuvard00, ndir, npgtmp,
137 . nptr,npts,nptt,jr,js,jt,nfail(5),imat,ilaw,
138 . jl,npt_max,mlawly,ipmat,nvarbeam,ifail,nem1,
139 . irupt_typ,nvar_rupt,iok,nvmax,flagdeg,num_lines,nmax_aux,nmax_fail,
140 . isubstack,nslice,ipnpt_lay,ipt
141 INTEGER IE, IR, IS, IT, BRIGLOB, SUB_ID, NLAY, ILAY, PID
142 INTEGER KTRIELS, KTRIELC, KTRIELTG, KTRIELSPR, KTRIELBEAM, KTRIELTRUSS,
143 . KTRIELTQUAD, KTRIELSPHCEL
144 INTEGER IGBR, JGBR, I1, SIZE,NSROT,NG,ITYR,NFTR,NELR,ISMRAD
148 . em , eb, h1, h2, h3,
149 . r0 , ein, vx, vy, vz, phi1, phi2, scaleyld,
150 . epsp, angle1, angle2,
area,
for,ener,dens,
156 . tmpval1(varmax),tmpval2(varmax),tmpval3(varmax),
157 . tmpval4(varmax),tmpval5(varmax),tmpval6(varmax),
158 . tmpval7(varmax),tmpval8(varmax),tmpval9(varmax),
159 . tmpval10(varmax),tmpval11(varmax),tmpval12(varmax),
162 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KSYSUSRTG ,KSYSUSRS,INDEXS,ITRIS,
163 . KSYSUSRQ,INDEXQ,ITRIQ,IES2IPARG,MLAW_LY,ITRISPH,INDEXSPH,KSYSUSRSPH
165 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
166 CHARACTER(LEN=NCHARTITLE) :: TITR
173 LOGICAL IS_AVAILABLE,GLOB
175 INTEGER ,NB_INISHE,NB_INISH3,NB_ELEMENTS,ID_ELEM,
176 . INI,K0,NB_INITRUSS,NB_INIBEAM,NB_INISPRI,NB_INIQUA,
177 . sub_index,istrsf,istrsfg,istraf,istrafg,istat,nb_inisphcel
179 . thk,for1,for2,for3,mom1,mom2,mom3
191 ALLOCATE (itris(numels))
192 ALLOCATE (indexs(2*numels))
193 ALLOCATE (ksysusrs(2*numels))
194 ALLOCATE (ksysusrtg(2*numeltg))
195 ALLOCATE (itriq(numelq))
196 ALLOCATE (indexq(2*numelq))
197 ALLOCATE (ksysusrq(2*numelq))
198 ALLOCATE (ies2iparg(numels) ,stat=istat)
199 ALLOCATE (itrisph(numsph))
200 ALLOCATE (indexsph(2*numsph))
201 ALLOCATE (ksysusrsph(2*numsph))
202 IF (istat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
206 IF (numels > 0) itris(1:numels) = 0
207 IF (numels > 0) indexs(1:2*numels) = 0
208 IF (numels > 0) ksysusrs(1:2*numels)=0
209 IF (numeltg > 0) ksysusrtg(1:2*numeltg)=0
210 IF (numelq > 0) itriq(1:numelq) = 0
211 IF (numelq > 0) indexq(1:2*numelq) = 0
212 IF (numelq > 0) ksysusrq(1:2*numelq)=0
213 IF (numels > 0) ies2iparg(1:numels) = 0
227 is_available = .false.
235 IF ( nb_inibri > 0 )
THEN
241 IF (ityr /= 1 ) cycle
243 ies2iparg(i+nftr) = ng
258 . submodel_index = sub_index,
259 . submodel_id = sub_id,
263 SELECT CASE (key(1:len_trim(key)))
275 IF (istrsfg>0.AND.istrsf>0)
THEN
276 CALL ancmsg(msgid=2044,anmode=aninfo,msgtype=msgwarning)
278 IF (istrafg>0.AND.istraf>0)
THEN
279 CALL ancmsg(msgid=2045,anmode=aninfo,msgtype=msgwarning)
288 IF ( nb_inibri > 0 )
THEN
296 itris(ie) = ixs(nixs,ie)
298 CALL my_orders(0,work,itris,indexs,numels,1)
301 ksysusrs(j) =ixs(nixs,ie)
302 ksysusrs(numels+j)=ie
311 . submodel_index = sub_index,
312 . submodel_id = sub_id,
316 DO iunit=1,unitab%NUNITS
317 IF (unitab%UNIT_ID(iunit) == uid)
THEN
322 IF (uid/=0.AND.iflagunit == 0)
THEN
323 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
324 . i2=uid,i1=sub_id,c1=
'INIBRI',
325 . c2=
'INIBRI',c3=
' ')
328 SELECT CASE (key(1:len_trim(key)))
332 CALL hm_get_intv(
'inibri_fill_count',nb_elements,is_available,lsubmodel)
340 id_solid_sigi(i) = id_elem
347 CALL hm_get_intv(
'inibri_epsp_count',nb_elements,is_available,lsubmodel)
355 id_solid_sigi(i) = id_elem
362 CALL hm_get_intv(
'inibri_ener_count',nb_elements,is_available,lsubmodel)
370 id_solid_sigi(i) = id_elem
377 CALL hm_get_intv(
'inibri_dens_count',nb_elements,is_available,lsubmodel)
385 id_solid_sigi(i) = id_elem
392 CALL hm_get_intv(
'inibri_stress_count',nb_elements,is_available,lsubmodel)
405 id_solid_sigi(i) = id_elem
414 CALL hm_get_intv(
'inibri_aux_count',nb_elements,is_available,lsubmodel)
424 ie=uel2sys(id_elem,ksysusrs,numels)
428 nonexist = nonexist+1
430 keyword =
'/INIBRI/AUX '
433 id_solid_sigi(i) = id_elem
435 sigsp(nvsolid1 + nvsolid2 +1 , i) = isolnod
436 sigsp(nvsolid1 + nvsolid2 +2 , i) = npt
437 sigsp(nvsolid1 + nvsolid2 +3 , i) = nuvar
438 sigsp(nvsolid1 + nvsolid2 +4 , i) = jjhbe
441 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
442 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
447 nuvard00 = ipm(8,imat)
448 IF (nuvard00 > nuvar)
THEN
450 . msgtype=msgwarning,
453 . c1=
'NUMBER OF USER VARIABLES',
454 . c2=
'MATERIAL LAW ',
455 . i2=ipm(1,ixs(10,ie)),
458 IF ((ilaw == 36 .and. (nuvar < 4 .or. nuvard00 > 3) .and.
459 . nuvard00 < nuvar) .or.
460 . (ilaw /= 36 .and. ilaw /= 78 .and. ilaw /= 87 .and. ilaw /= 112 .and. nuvard00 < nuvar))
THEN
465 . c1=
'NUMBER OF USER VARIABLES',
466 . c2=
'MATERIAL LAW ',
467 . i2=ipm(1,ixs(10,ie)),
474 iis = nvsolid1 + nvsolid2 + 4 + nuvar*(jj - 1)
477 sigsp(iis + k,i) = tmpval(l)
485 keyword=
'/INIBRI/STRS_FG'
489 CALL hm_get_intv(
'inibri_strs_fglo_count',nb_elements,is_available,lsubmodel)
504 IF (jjhbe == 2) jjhbe = 1
507 IF (igbr == igrbric(k)%ID)
THEN
512 ie = igrbric(jgbr)%ENTITY(1)
513 id_elem = ixs(nixs,ie)
520 ie=uel2sys(id_elem,ksysusrs,numels)
524 nonexist = nonexist+1
525 ELSEIF (strsglob(ie) >= 0)
THEN
530 id_solid_sigi(i) = id_elem
534 IF (briglob == 1) strsglob(ie)=1
537 1 ixs ,igeo ,itris ,isolnodd00 ,ie
541 IF ( (isolnod == 8 .AND. (jjhbe==1.OR.jjhbe==2.OR.jjhbe==12.OR.jjhbe==24)
542 . .AND. igtyp /= 43) .OR.(isolnod == 4 .AND. isrot == 0)
543 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jjhbe==5)
THEN
545 IF(isolnod == 8 .AND. jjhbe == 12)
THEN
578 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
579 sigsp(iis+1,i) = s(1)
580 sigsp(iis+2,i) = s(2)
581 sigsp(iis+3,i) = s(3)
582 sigsp(iis+4,i) = s(4)
583 sigsp(iis+5,i) = s(5)
584 sigsp(iis+6,i) = s(6)
587 sigsp(iis+7,i) = epsp
605 sigi(8,i) = tmpval2(1)
606 sigi(9,i) = tmpval1(1)
607 ELSEIF (npt == 1)
THEN
608 sigi(8,i) = tmpval2(1)
609 sigi(9,i) = tmpval1(1)
611 sigsp(3,i) = tmpval1(1)
612 sigsp(4,i) = tmpval2(1)
621 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
628 sigi(10,i)= tmpval9(1)
639 sigsp(iis+1,i) = s(1)
640 sigsp(iis+2,i) = s(2)
641 sigsp(iis+3,i) = s(3)
645 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
646 sigsp(iis+1,i) = s(1)
647 sigsp(iis+2,i) = s(2)
648 sigsp(iis+3,i) = s(3)
649 sigsp(iis+4,i) = s(4)
650 sigsp(iis+5,i) = s(5)
651 sigsp(iis+6,i) = s(6)
653 sigsp(iis+7,i) = epsp
655 sigi(l,i) = sigi(l,i) + fourth*sigsp(iis+l,i)
657 sigi(10,i)= sigi(10,i) + fourth*sigsp(iis+7,i)
665 IF (isolnod == 16)
THEN
667 SIZE = nptt*nptr*nlay
682 k = jr + ( (jl-1) + (jt-1)*nlay )*nptr
693 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
694 sigsp(iis+1,i) = s(1)
695 sigsp(iis+2,i) = s(2)
696 sigsp(iis+3,i) = s(3)
697 sigsp(iis+4,i) = s(4)
698 sigsp(iis+5,i) = s(5)
699 sigsp(iis+6,i) = s(6)
703 sigsp(iis+7,i) = epsp
710 ELSEIF (isolnod == 20)
THEN
712 SIZE = nptt*npts*nptr
729 k = jr + ( (js-1) + (jt-1)*npts )*nptr
740 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
741 sigsp(iis+1,i) = s(1)
742 sigsp(iis+2,i) = s(2)
743 sigsp(iis+3,i) = s(3)
744 sigsp(iis+4,i) = s(4)
745 sigsp(iis+5,i) = s(5)
746 sigsp(iis+6,i) = s(6)
750 sigsp(iis+7,i) = epsp
759 IF (igtyp == 22)
THEN
761 SIZE = nptr*npts*nptt
778 k = jr + ( (js-1) + (jt-1)*npts )*nptr
789 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
790 sigsp(iis+1,i) = s(1)
791 sigsp(iis+2,i) = s(2)
792 sigsp(iis+3,i) = s(3)
793 sigsp(iis+4,i) = s(4)
794 sigsp(iis+5,i) = s(5)
795 sigsp(iis+6,i) = s(6)
799 sigsp(iis+7,i) = epsp
827 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
828 sigsp(iis+1,i) = s(1)
829 sigsp(iis+2,i) = s(2)
830 sigsp(iis+3,i) = s(3)
831 sigsp(iis+4,i) = s(4)
832 sigsp(iis+5,i) = s(5)
833 sigsp(iis+6,i) = s(6)
837 sigsp(iis+7,i) = epsp
848 DO k = 2,igrbric(jgbr)%NENTITY
849 ie = igrbric(jgbr)%ENTITY(k)
851 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
852 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
854 IF (strsglob(ie) >= 0) cycle
855 IF (briglob == 1) strsglob(ie)=1
857 id_solid_sigi(i) = ixs(11,ie)
859 sigsp(l,i) = sigsp(l,i1)
862 sigi(l,i) = sigi(l,i1)
871 keyword=
'/INIBRI/STRS_F '
874 CALL hm_get_intv(
'inibri_strs_f_count',nb_elements,is_available,lsubmodel)
891 IF (igbr == igrbric(k)%ID)
THEN
896 ie = igrbric(jgbr)%ENTITY(1)
897 id_elem = ixs(nixs,ie)
900! elt = set_usrtos(id_elem,map_tables%ISOLM,numels)
903 ie=uel2sys(id_elem,ksysusrs,numels)
907 nonexist = nonexist+1
908 ELSEIF (strsglob(ie) >= 0)
THEN
913 IF (jjhbe == 2) jjhbe = 1
914 id_solid_sigi(i) = id_elem
918 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
919 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
923 IF ( (isolnod == 8 .AND. (jjhbe==1.OR.jjhbe==2.OR.jjhbe==12.OR.jjhbe==24)
924 . .AND. igtyp /= 43) .OR.(isolnod == 4 .AND. isrot == 0)
925 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jjhbe==5)
THEN
927 IF(isolnod == 8 .AND. jjhbe == 12)
THEN
961 sigsp(iis+1,i) = s(1)
962 sigsp(iis+2,i) = s(2)
963 sigsp(iis+3,i) = s(3)
964 sigsp(iis+4,i) = s(4)
965 sigsp(iis+5,i) = s(5)
966 sigsp(iis+6,i) = s(6)
976 CALL HM_GET_FLOAT_ARRAY('sigma1
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
977 CALL HM_GET_FLOAT_ARRAY('sigma2
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
978 CALL HM_GET_FLOAT_ARRAY('sigma3
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
979 CALL HM_GET_FLOAT_ARRAY('sigma12
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
980 CALL HM_GET_FLOAT_ARRAY('sigma23
' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
981 CALL HM_GET_FLOAT_ARRAY('sigma31
' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
982 CALL HM_GET_FLOAT_ARRAY('epsilon_p
' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
987 SIGI(8,I) = TMPVAL2(1)
988 SIGI(9,I) = TMPVAL1(1)
989 ELSEIF(NPT == 1) THEN
990 SIGI(8,I) = TMPVAL2(1)
991 SIGI(9,I) = TMPVAL1(1)
993 SIGSP(3,I) = TMPVAL1(1)
994 SIGSP(4,I) = TMPVAL2(1)
1011 SIGI(10,I)= TMPVAL9(1)
1023 SIGSP(IIS+1,I) = S(1)
1024 SIGSP(IIS+2,I) = S(2)
1025 SIGSP(IIS+3,I) = S(3)
1030 SIGSP(IIS+1,I) = S(1)
1031 SIGSP(IIS+2,I) = S(2)
1032 SIGSP(IIS+3,I) = S(3)
1033 SIGSP(IIS+4,I) = S(4)
1034 SIGSP(IIS+5,I) = S(5)
1035 SIGSP(IIS+6,I) = S(6)
1037 SIGSP(IIS+7,I) = EPSP
1039 SIGI(L,I) = SIGI(L,I) + FOURTH*SIGSP(IIS+L,I)
1041 SIGI(10,I)= SIGI(10,I) + FOURTH*SIGSP(IIS+7,I)
1044.AND.
ENDIF ! IF(ISOLNOD == 8 JJHBE == 12)
1048! --------------------Second Group of solids : 3 lines to be read-----------------
1049 IF (ISOLNOD == 16) THEN
1051 SIZE = NPTT*NPTR*NLAY
1052 CALL HM_GET_FLOAT_ARRAY('sigma1
' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1053 CALL HM_GET_FLOAT_ARRAY('sigma2
' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1054 CALL HM_GET_FLOAT_ARRAY('sigma3
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1055 CALL HM_GET_FLOAT_ARRAY('sigma12
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1056 CALL HM_GET_FLOAT_ARRAY('sigma23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1057 CALL HM_GET_FLOAT_ARRAY('sigma31
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1058 CALL HM_GET_FLOAT_ARRAY('epsilon_p
' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1059 CALL HM_GET_FLOAT_ARRAY('e_int
' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1060 CALL HM_GET_FLOAT_ARRAY('rho
' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1068 K = JR + ( (JL-1) + (JT-1)*NLAY )*NPTR
1080 SIGSP(IIS+1,I) = S(1)
1081 SIGSP(IIS+2,I) = S(2)
1082 SIGSP(IIS+3,I) = S(3)
1083 SIGSP(IIS+4,I) = S(4)
1084 SIGSP(IIS+5,I) = S(5)
1085 SIGSP(IIS+6,I) = S(6)
1089 SIGSP(IIS+7,I) = EPSP
1090 SIGSP(IIS+8,I) = EIN
1092 ENDDO ! DO JL=1,NLAY
1093 ENDDO ! DO JR=1,NPTR
1094 ENDDO ! DO JT=1,NPTT
1096 ELSEIF (ISOLNOD == 20) THEN
1098 SIZE = NPTT*NPTS*NPTR
1099 CALL HM_GET_FLOAT_ARRAY('sigma1
' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1100 CALL HM_GET_FLOAT_ARRAY('sigma2
' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1101 CALL HM_GET_FLOAT_ARRAY('sigma3
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1102 CALL HM_GET_FLOAT_ARRAY('sigma12
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1103 CALL HM_GET_FLOAT_ARRAY('sigma23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1104 CALL HM_GET_FLOAT_ARRAY('sigma31
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1105 CALL HM_GET_FLOAT_ARRAY('epsilon_p
' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1106 CALL HM_GET_FLOAT_ARRAY('e_int
' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1107 CALL HM_GET_FLOAT_ARRAY('rho
' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1115 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1127 SIGSP(IIS+1,I) = S(1)
1128 SIGSP(IIS+2,I) = S(2)
1129 SIGSP(IIS+3,I) = S(3)
1130 SIGSP(IIS+4,I) = S(4)
1131 SIGSP(IIS+5,I) = S(5)
1132 SIGSP(IIS+6,I) = S(6)
1136 SIGSP(IIS+7,I) = EPSP
1137 SIGSP(IIS+8,I) = EIN
1139 ENDDO ! DO JT=1,NPTT
1140 ENDDO ! DO JS=1,NPTS
1141 ENDDO ! DO JR=1,NPTR
1145 IF (IGTYP == 22) THEN
1147 SIZE = NPTR*NPTS*NPTT
1148 CALL HM_GET_FLOAT_ARRAY('sigma1
' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1149 CALL HM_GET_FLOAT_ARRAY('sigma2
' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1150 CALL HM_GET_FLOAT_ARRAY('sigma3
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1151 CALL HM_GET_FLOAT_ARRAY('sigma12
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1152 CALL HM_GET_FLOAT_ARRAY('sigma23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1153 CALL HM_GET_FLOAT_ARRAY('sigma31
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1154 CALL HM_GET_FLOAT_ARRAY('epsilon_p
' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1155 CALL HM_GET_FLOAT_ARRAY('e_int
' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1156 CALL HM_GET_FLOAT_ARRAY('rho
' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1164 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1176 SIGSP(IIS+1,I) = S(1)
1177 SIGSP(IIS+2,I) = S(2)
1178 SIGSP(IIS+3,I) = S(3)
1179 SIGSP(IIS+4,I) = S(4)
1180 SIGSP(IIS+5,I) = S(5)
1181 SIGSP(IIS+6,I) = S(6)
1185 SIGSP(IIS+7,I) = EPSP
1186 SIGSP(IIS+8,I) = EIN
1188 ENDDO ! DO JT=1,NPTT
1189 ENDDO ! DO JS=1,NPTS
1190 ENDDO ! DO JR=1,NPTR
1192 ELSE ! (IGTYP /= 22)
1195 CALL HM_GET_FLOAT_ARRAY('sigma1
' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1196 CALL HM_GET_FLOAT_ARRAY('sigma2
' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1197 CALL HM_GET_FLOAT_ARRAY('sigma3
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1198 CALL HM_GET_FLOAT_ARRAY('sigma12
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1199 CALL HM_GET_FLOAT_ARRAY('sigma23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1200 CALL HM_GET_FLOAT_ARRAY('sigma31
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1201 CALL HM_GET_FLOAT_ARRAY('epsilon_p
' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1202 CALL HM_GET_FLOAT_ARRAY('e_int
' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1203 CALL HM_GET_FLOAT_ARRAY('rho
' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1214 SIGSP(IIS+1,I) = S(1)
1215 SIGSP(IIS+2,I) = S(2)
1216 SIGSP(IIS+3,I) = S(3)
1217 SIGSP(IIS+4,I) = S(4)
1218 SIGSP(IIS+5,I) = S(5)
1219 SIGSP(IIS+6,I) = S(6)
1223 SIGSP(IIS+7,I) = EPSP
1224 SIGSP(IIS+8,I) = EIN
1227 ENDIF ! IF (IGTYP == 22)
1228 ENDIF ! IF (ISOLNOD == 16)
1229.AND.
ENDIF ! IF ( (ISOLNOD == 8 ...)
1230 ENDIF ! IF (IE == 0)
1234 DO K = 2,IGRBRIC(JGBR)%NENTITY
1235 IE = IGRBRIC(JGBR)%ENTITY(K)
1236 CALL LEC_INISTATE_D00_BRICK_CHECK (
1237 1 IXS ,IGEO ,ITRIS ,ISOLNODD00 ,IE ,
1238 2 NPT ,NLAY ,ISOLNOD ,JJHBE ,IGTYP ,
1240!! IF (BRIGLOB == 1) STRSGLOB(IE)=1
1241 IF (STRSGLOB(IE) >= 0) CYCLE
1244 ID_SOLID_SIGI(I) = IXS(11,IE)
1246 SIGSP(L,I) = SIGSP(L,I1)
1249 SIGI(L,I) = SIGI(L,I1)
1251 ENDDO ! DO K = 2,IGRBRIC(JGBR)%NENTITY
1252 ENDIF ! IF (IGBR > 0)
1254 ENDDO ! DO J=1,NB_ELEMENTS
1259 CALL HM_GET_INTV('inibri_stra_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
1261 KEYWORD='/inibri/stra_f
'
1265 ! Reading --- ID_ELEM, .... ---
1266 CALL HM_GET_INT_ARRAY_INDEX('brick_id
' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
1267 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
1268 CALL HM_GET_INT_ARRAY_INDEX('isolnod
' ,ISOLNOD,J,IS_AVAILABLE,LSUBMODEL)
1269 CALL HM_GET_INT_ARRAY_INDEX('isolid
' ,JJHBE,J,IS_AVAILABLE,LSUBMODEL)
1270 CALL HM_GET_INT_ARRAY_INDEX('nptr
' ,NPTR,J,IS_AVAILABLE,LSUBMODEL)
1271 CALL HM_GET_INT_ARRAY_INDEX('npts
' ,NPTS,J,IS_AVAILABLE,LSUBMODEL)
1272 CALL HM_GET_INT_ARRAY_INDEX('nptt' ,nptt,j,is_available,lsubmodel)
1276 IF (jjhbe == 2) jjhbe = 1
1277 id_solid_sigi(i) = id_elem
1282 ie=uel2sys(id_elem,ksysusrs,numels)
1289 nonexist = nonexist+1
1290 ELSEIF (straglob(ie)>=0)
THEN
1293 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1294 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
1298 IF ( isolnod == 16 )
THEN
1300 SIZE = nptt*nptr*nlay
1314 k = jr + ( (jl-1) + (jt-1)*nlay )*nptr
1315 iis= nvsolid1 + (k-1)*6
1326 sigsp(iis+1,i) = s(1)
1327 sigsp(iis+2,i) = s(2)
1328 sigsp(iis+3,i) = s(3)
1329 sigsp(iis+4,i) = s(4)
1330 sigsp(iis+5,i) = s(5)
1331 sigsp(iis+6,i) = s(6)
1336 ELSEIF ( isolnod == 20 )
THEN
1338 SIZE = nptt*npts*nptr
1352 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1353 iis= nvsolid1 + (k-1)*6
1364 sigsp(iis+1,i) = s(1)
1365 sigsp(iis+2,i) = s(2)
1366 sigsp(iis+3,i) = s(3)
1367 sigsp(iis+4,i) = s(4)
1368 sigsp(iis+5,i) = s(5)
1369 sigsp(iis+6,i) = s(6)
1374 ELSEIF ((igtyp == 21 .OR. igtyp == 22) .AND. jjhbe == 14)
THEN
1376 SIZE = nptr*npts*nptt
1390 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1391 iis= nvsolid1 + (k-1)*6
1402 sigsp(iis+1,i) = s(1)
1403 sigsp(iis+2,i) = s(2)
1404 sigsp(iis+3,i) = s(3)
1405 sigsp(iis+4,i) = s(4)
1406 sigsp(iis+5,i) = s(5)
1407 sigsp(iis+6,i) = s(6)
1419 CALL HM_GET_FLOAT_ARRAY('epsilon_23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1420 CALL HM_GET_FLOAT_ARRAY('epsilon_31
' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1423 IIS= NVSOLID1 + (K-1)*6
1431 SIGSP(IIS+1,I) =S(1)
1432 SIGSP(IIS+2,I) =S(2)
1433 SIGSP(IIS+3,I) =S(3)
1434 SIGSP(IIS+4,I) =S(4)
1435 SIGSP(IIS+5,I) =S(5)
1436 SIGSP(IIS+6,I) =S(6)
1440 ENDIF ! IF ( ISOLNOD == 16 )
1441 ENDIF ! IF (IE == 0)
1442 ENDDO ! DO J=1,NB_ELEMENTS
1445 CASE ( 'stra_fglo
' )
1447 CALL HM_GET_INTV('inibri_stra_fglo_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
1449 KEYWORD='/inibri/stra_f
'
1454 ! Reading --- ID_ELEM, .... ---
1455 CALL HM_GET_INT_ARRAY_INDEX('brick_id
' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
1456 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
1457 CALL HM_GET_INT_ARRAY_INDEX('isolnod
' ,ISOLNOD,J,IS_AVAILABLE,LSUBMODEL)
1458 CALL HM_GET_INT_ARRAY_INDEX('isolid
' ,JJHBE,J,IS_AVAILABLE,LSUBMODEL)
1459 CALL HM_GET_INT_ARRAY_INDEX('nptr
' ,NPTR,J,IS_AVAILABLE,LSUBMODEL)
1460 CALL HM_GET_INT_ARRAY_INDEX('npts
' ,NPTS,J,IS_AVAILABLE,LSUBMODEL)
1461 CALL HM_GET_INT_ARRAY_INDEX('nptt
' ,NPTT,J,IS_AVAILABLE,LSUBMODEL)
1462 CALL HM_GET_INT_ARRAY_INDEX('nlay
' ,NLAY,J,IS_AVAILABLE,LSUBMODEL)
1465 IF (JJHBE == 2) JJHBE = 1
1466 ID_SOLID_SIGI(I) = ID_ELEM
1468! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISOLM,NUMELS)
1469! IE = MAP_TABLES%ISOLM(ELT,2)
1471 IE=UEL2SYS(ID_ELEM,KSYSUSRS,NUMELS)
1478 ! Solid was not found. Issue a Warning & Skip.
1479 NONEXIST = NONEXIST+1
1480 ELSEIF (STRAGLOB(IE)>=0) THEN
1482 CALL LEC_INISTATE_D00_BRICK_CHECK (
1483 1 IXS ,IGEO ,ITRIS ,ISOLNODD00 ,IE ,
1484 2 NPT ,NLAY ,ISOLNOD ,JJHBE ,IGTYP ,
1486 IF (BRIGLOB == 1) STRAGLOB(IE)=1
1488 IF ( ISOLNOD == 16 ) THEN
1490 SIZE = NPTT*NPTR*NLAY
1491 CALL HM_GET_FLOAT_ARRAY('epsilon_1
' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1492 CALL HM_GET_FLOAT_ARRAY('epsilon_2
' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1493 CALL HM_GET_FLOAT_ARRAY('epsilon_3
' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1494 CALL HM_GET_FLOAT_ARRAY('epsilon_12
' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1495 CALL HM_GET_FLOAT_ARRAY('epsilon_23
' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1496 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,tmpval6,
SIZE,j,is_available,lsubmodel,unitab)
1504 k = jr + ( (jl-1) + (jt-1)*nlay )*nptr
1505 iis= nvsolid1 + (k-1)*6
1515 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
1516 sigsp(iis+1,i) = s(1)
1517 sigsp(iis+2,i) = s(2)
1518 sigsp(iis+3,i) = s(3)
1519 sigsp(iis+4,i) = s(4)
1520 sigsp(iis+5,i) = s(5)
1521 sigsp(iis+6,i) = s(6)
1526 ELSEIF ( isolnod == 20 )
THEN
1528 SIZE = nptt*npts*nptr
1542 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1543 iis= nvsolid1 + (k-1)*6
1553 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
1554 sigsp(iis+1,i) = s(1)
1555 sigsp(iis+2,i) = s(2)
1556 sigsp(iis+3,i) = s(3)
1557 sigsp(iis+4,i) = s(4)
1558 sigsp(iis+5,i) = s(5)
1559 sigsp(iis+6,i) = s(6)
1564 ELSEIF ((igtyp == 21 .OR. igtyp == 22) .AND. jjhbe == 14)
THEN
1566 SIZE = nptr*npts*nptt
1579 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1580 iis= nvsolid1 + (k-1)*6
1590 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
1591 sigsp(iis+1,i) = s(1)
1592 sigsp(iis+2,i) = s(2)
1593 sigsp(iis+3,i) = s(3)
1594 sigsp(iis+4,i) = s(4)
1595 sigsp(iis+5,i) = s(5)
1596 sigsp(iis+6,i) = s(6)
1612 iis= nvsolid1 + (k-1
1619 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
1620 sigsp(iis+1,i) =s(1)
1621 sigsp(iis+2,i) =s(2)
1622 sigsp(iis+3,i) =s(3)
1623 sigsp(iis+4,i) =s(4)
1624 sigsp(iis+5,i) =s(5)
1625 sigsp(iis+6,i) =s(6)
1636 CALL hm_get_intv(
'inibri_fail_count',nb_elements,is_available,lsubmodel)
1655 ie=uel2sys(id_elem,ksysusrs,numels)
1657 nvmax = nvsolid4 /(nptr*npts*nptt*nlay*5)
1659 IF(id_elem /= nem1) i=i+1
1664 IF(ipm(1,k) == imat)
THEN
1676 . c1=
'MATERIAL LAW',
1677 . c2=
'/INIBRI/FAIL')
1679 id_solid_sigi(i) = id_elem
1683 nonexist = nonexist+1
1687 nfail(k) = mat_param(imat)%FAIL(k)%FAIL_ID
1688 IF (ifail == nfail(k) .AND.
1689 . irupt_typ == mat_param(imat)%FAIL(k)%IRUPT)
THEN
1701 . c1=
'FAILURE CRITERIA',
1702 . c2=
'/INIBRI/FAIL')
1705 iis= nvsolid1 + nvsolid2 + 4 + nusolid + nvsolid3
1707 nmax_fail = num_lines*nvar_rupt
1712 l = nvar_rupt*(jj-1) + k
1713 sigsp(iis+l+(ifail-1)*nlay*nptr*npts*nptt*nvmax+
1714 . (ilay-1)*nvmax*nptr*npts*nptt,i) = tmpval(l)
1721 CASE (
'SCALE_YLD' )
1723 CALL hm_get_intv(
'inibri_scale_yld_count',nb_elements,is_available,lsubmodel)
1738 ie=uel2sys(id_elem,ksysusrs,numels)
1741 IF (nlay == 0) nlay = 1
1742 sigi( 7,i) = id_elem
1743 id_solid_sigi(i) = id_elem
1744 iis = nvsolid1 + nvsolid2 + nvsolid3 + nusolid + 4 + nvsolid4
1745 sigsp(iis + 7,i) = id_elem
1747 sigsp(iis +1 , i) = nptr
1748 sigsp(iis +2 , i) = npts
1749 sigsp(iis +3 , i) = nptt
1750 sigsp(iis +4 , i) = nlay
1754 nonexist = nonexist+1
1756 iis = nvsolid1 + nvsolid2 + nvsolid3 + nusolid + 4 + nvsolid4 + 7
1758 SIZE = nlay*nptt*npts*nptr
1765 jj = nptr*npts*nptt*(ilay-1)+ nptr*npts*(it-1)+nptr*(is-1)+ir
1766 sigsp(iis+ jj ,i) = tmpval(jj)
1778 CALL hm_get_intv(
'inibri_ortho_count',nb_elements,is_available,lsubmodel)
1780 keyword=
'/INIBRI/ORTHO '
1791 id_solid_sigi(i) = id_elem
1792 IF (jjhbe == 2) jjhbe = 1
1797 ie=uel2sys(id_elem,ksysusrs,numels)
1802 nonexist = nonexist+1
1805 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1806 2 npt ,nlay ,isolnod ,jjhbe ,igtyp
1809 iis= nvsolid1 + nvsolid2 + 4 + nusolid
1812 IF (igtyp /= 21 .AND. igtyp /= 22)
THEN
1823 sigsp(iis+1,i) = tmpval1(k)
1824 sigsp(iis+2,i) = tmpval2(k)
1825 sigsp(iis+3,i) = tmpval3(k)
1826 sigsp(iis+4,i) = tmpval4(k)
1827 sigsp(iis+5,i) = tmpval5(k)
1828 sigsp(iis+6,i) = tmpval6(k)
1837 sigsp(iis+1,i) = tmpval1(k
1838 sigsp(iis+2,i) = tmpval2(k)
1849 CALL hm_get_intv(
'inibri_eref_count',nb_elements,is_available,lsubmodel)
1851 keyword=
'/INIBRI/EREF '
1862 IF (jjhbe == 2) jjhbe = 1
1863 id_solid_sigi(i) = id_elem
1868 ie=uel2sys(id_elem,ksysusrs,numels)
1873 nonexist = nonexist+1
1876 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1877 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
1883 ismrad = iparg(9,ng)
1884 IF (ismrad/=ismstr.OR.(ismstr/=1.AND.ismstr<10))
THEN
1889 . c1=
'SMALL STRAIN FORMULATION',
1890 . c2=
'SOLID PROPERTY',
1894 iis= nvsolid1 + nvsolid2 + nvsolid3 + nusolid+4 + nvsolid4 +
1906 IF(sub_id /= 0 .AND.(ismstr==1.OR.ismstr==11))
1907 .
CALL subrotvect (s(1),s(2),s(3),rtrans,sub_id,lsubmodel)
1908 sigsp(iis+(k-1)*3+1,i) =s(1)
1909 sigsp(iis+(k-1)*3+2,i) =s(2)
1910 sigsp(iis+(k-1)*3+3,i) =s(3)
1917 iis = iis + 3*isolnod
1922 IF(sub_id /= 0 .AND.(ismstr==1.OR.ismstr==11))
1923 .
CALL subrotvect (s(1),s(2),s(3),rtrans,sub_id,lsubmodel)
1924 sigsp(iis+(k-1)*3+1,i) =s(1)
1925 sigsp(iis+(k-1)*3+2,i) =s(2)
1926 sigsp(iis+(k-1)*3+3,i) =s(3)
1950 IF ( nb_inishe > 0 )
THEN
1956 IF (ktrielc == 0)
THEN
1959 itri(ie) = ixc(nixc,ie)
1961 CALL my_orders(0,work,itri,index,numelc,1)
1964 ksysusr(j) =ixc(nixc,ie)
1965 ksysusr(numelc+j)=ie
1974 . submodel_index = sub_index,
1975 . submodel_id = sub_id,
1979 IF (key2 /=
' ') glob = .true.
1982 DO iunit=1,unitab%NUNITS
1983 IF (unitab%UNIT_ID(iunit) == uid)
THEN
1989 IF (uid /= 0.AND.iflagunit == 0)
THEN
1990 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
1991 . i2=uid, i1=sub_id, c1=
'INISHE',
1996 SELECT CASE (key(1:len_trim(key)))
2002 CALL hm_get_intv(
'inishe_epsp_f_count',nb_elements,is_available,lsubmodel)
2014 ie=uel2sys(id_elem,ksysusr,numelc)
2018 nonexist = nonexist+1
2024 IF (ihbe==12 .OR. ihbe==24)
THEN
2029 IF (npgtmp /= npg)
THEN
2030 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
2040 id_sigsh(i) = id_elem
2041 sigsh(1,i) = id_elem
2044 sigsh(nvshell - 1,i) = one
2048 SIZE = nip*
max(npg,1)
2057 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
2064 ELSEIF (npg > 1)
THEN
2065 sigsh(nvshell,i) = npg
2074 sigsh(pt+(k-1)*9+5,i) = tmpval(k)
2087 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
2107 CALL hm_get_intv(
'inishe_strs_f_glob_count',nb_elements,is_available,lsubmodel)
2110 ! reading --- id_elem, nip, npg, thk ---
2119 ie=uel2sys(id_elem,ksysusr,numelc)
2123 nonexist = nonexist+1
2129 IF (ihbe==12 .OR. ihbe==24)
THEN
2134 IF (npgtmp /= npg)
THEN
2135 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
2152 sigsh(1,i) = id_elem
2153 id_sigsh(i) = id_elem
2159 sigsh(nvshell - 1 , i) = one
2161 IF (npg == 0 .OR. npg == 1)
THEN
2187 ELSEIF (nip /= 0)
THEN
2200 inishvar = 22 + nip*6
2204 sigsh(pt,i) = tmpval1(n)
2205 sigsh(pt + 1,i) = tmpval2(n)
2206 sigsh(inishvar + n,i) = tmpval3(n)
2207 sigsh(pt + 2,i) = tmpval4(n)
2208 sigsh(pt + 3,i) = tmpval5(n)
2209 sigsh(pt + 4,i) = tmpval6(n)
2210 sigsh(pt + 5,i) = tmpval7(n)
2211 sigsh(inishvar + nip + n,i) = tmpval8(n)
2215 ELSEIF (npg > 1)
THEN
2217 sigsh(nvshell,i) = npg
2239 sigsh(pt ,i) = tmpval1(k)
2240 sigsh(pt+1,i) = tmpval2(k)
2241 sigsh(pt+2,i) = tmpval3(k)
2242 sigsh(pt+3,i) = tmpval4(k)
2243 sigsh(pt+4,i) = tmpval5(k)
2244 sigsh(pt+5,i) = tmpval6(k)
2245 sigsh(pt+6,i) = tmpval7(k)
2246 sigsh(pt+7,i) = tmpval8(k)
2247 sigsh(pt+8,i) = tmpval9(k)
2248 sigsh(pt+9,i) = tmpval10(k)
2249 sigsh(pt+10,i) = tmpval11(k)
2250 sigsh(pt+11,i) = tmpval12(k)
2251 sigsh(pt+12,i) = tmpval13(k)
2272 sigsh(pt ,i) = tmpval1(l)
2273 sigsh(pt+1,i) = tmpval2(l)
2274 sigsh(pt+2,i) = tmpval3(l)
2275 sigsh(pt+3,i) = tmpval4(l)
2276 sigsh(pt+4,i) = tmpval5(l)
2277 sigsh(pt+5,i) = tmpval6(l)
2278 sigsh(pt+6,i) = tmpval7(l)
2279 sigsh(pt+7,i) = tmpval8(l)
2292 ELSEIF ( .NOT. glob )
THEN
2294 CALL hm_get_intv(
'inishe_strs_f_count',nb_elements,is_available,lsubmodel)
2306 ie=uel2sys(id_elem,ksysusr,numelc)
2310 nonexist = nonexist+1
2316 IF (ihbe==12 .OR. ihbe==24)
THEN
2321 IF (npgtmp /= npg)
THEN
2322 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
2340 sigsh(1,i) = id_elem
2341 id_sigsh(i) = id_elem
2347 sigsh(nvshell - 1 , i) = one
2349 IF (npg == 0 .OR. npg
THEN
2369 ELSEIF (nip /= 0)
THEN
2380 inishvar = 22 + nip*6
2384 sigsh(pt ,i) = tmpval1(n)
2385 sigsh(pt+1,i) = tmpval2(n)
2386 sigsh(pt+2,i) = tmpval3(n)
2387 sigsh(pt+3,i) = tmpval4(n)
2388 sigsh(pt+4,i) = tmpval5(n)
2389 sigsh(pt+5,i) = tmpval6(n)
2393 ELSEIF (npg > 1)
THEN
2395 sigsh(nvshell,i) = npg
2413 sigsh(pt ,i) = tmpval1(k)
2414 sigsh(pt+1,i) = tmpval2(k)
2415 sigsh(pt+2,i) = tmpval3(k)
2416 sigsh(pt+3,i) = tmpval4(k)
2417 sigsh(pt+4,i) = tmpval5(k)
2418 sigsh(pt+5,i) = tmpval6(k)
2419 sigsh(pt+6,i) = tmpval7(k)
2420 sigsh(pt+7,i) = tmpval8(k)
2421 sigsh(pt+8,i) = tmpval9(k)
2439 sigsh(pt ,i) = tmpval1(l)
2440 sigsh(pt+1,i) = tmpval2(l)
2441 sigsh(pt+2,i) = tmpval3(l)
2442 sigsh(pt+3,i) = tmpval4(l)
2443 sigsh(pt+4,i) = tmpval5(l)
2444 sigsh(pt+5,i) = tmpval6(l)
2463 CALL hm_get_intv(
'inishe_stra_f_glob_count',nb_elements,is_available,lsubmodel)
2475 ie=uel2sys(id_elem,ksysusr,numelc)
2479 nonexist = nonexist+1
2482 sigsh(1,i) = id_elem
2483 id_sigsh(i) = id_elem
2487 sigsh(nvshell - 1 , i) = one
2489 IF (npg == 0 .OR. npg == 1)
THEN
2492 IF (ihbe==24) sigsh(nvshell,i) = 4
2493 ELSEIF (npg>1 )
THEN
2495 sigsh(nvshell,i) = npg
2501 sigsh(inishvar1,i) =
max(1,npg)
2519 sigsh(pt ,i) = tmpval1(l)
2520 sigsh(pt+1,i) = tmpval2(l)
2521 sigsh(pt+2,i) = tmpval3(l)
2522 sigsh(pt+3,i) = tmpval4(l)
2523 sigsh(pt+4,i) = tmpval5(l)
2524 sigsh(pt+5,i) = tmpval6(l)
2525 sigsh(pt+6,i) = tmpval7(l)
2533 ELSEIF (.NOT. glob )
THEN
2535 CALL hm_get_intv(
'inishe_stra_f_count',nb_elements,is_available,lsubmodel)
2547 ie=uel2sys(id_elem,ksysusr,numelc)
2551 nonexist = nonexist+1
2554 sigsh(1,i) = id_elem
2555 id_sigsh(i) = id_elem
2557 sigsh(nvshell - 1 , i) = one
2559 IF (npg == 0 .OR. npg == 1)
THEN
2563 IF (ihbe==24) sigsh(nvshell,i) = 4
2574 ELSEIF (npg>1 )
THEN
2576 sigsh(nvshell,i) = npg
2599 sigsh(6,i) =sigsh(6,i) +tmpval1(ipg)/npg
2600 sigsh(7,i) =sigsh(7,i) +tmpval2(ipg)/npg
2601 sigsh(8,i) =sigsh(8,i) +tmpval3(ipg)/npg
2602 sigsh(9,i) =sigsh(9,i) +tmpval4(ipg)/npg
2603 sigsh(10,i)=sigsh(10,i)+tmpval5(ipg)/npg
2604 sigsh(11,i)=sigsh(11,i)+tmpval6(ipg)/npg
2605 sigsh(12,i)=sigsh(12,i)+tmpval7(ipg)/npg
2606 sigsh(13,i)=sigsh(13,i)+tmpval8(ipg)/npg
2620 CALL hm_get_intv(
'no_elems',nb_elements,is_available,lsubmodel)
2630 ie=uel2sys(id_elem,ksysusr,numelc)
2634 nonexist = nonexist+1
2637 sigsh(1,i) = id_elem
2638 id_sigsh(i) = id_elem
2647 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
2657 ie=uel2sys(id_elem,ksysusr,numelc)
2661 nonexist = nonexist+1
2664 sigsh(1,i) = id_elem
2665 id_sigsh(i) = id_elem
2673 CALL hm_get_intv(
'inishe_ortho_count',nb_elements,is_available,lsubmodel)
2686 ie=uel2sys(id_elem,ksysusr,numelc)
2690 nonexist = nonexist+1
2698 pt = nvshell + nushell
2699 sigsh(1,i) = id_elem
2700 id_sigsh(i) = id_elem
2701 IF ( igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
2702 sigsh(pt + 4 ,i) = nip
2703 sigsh(pt + 5 ,i) = one
2704 IF( ihbe==12 .OR. ihbe==24)
THEN
2705 sigsh(nvshell,i) = 4
2707 sigsh(nvshell,i) = 1
2713 IF ( igtyp == 9 )
THEN
2716 sigsh(pt+1,i) = phi1*pi/hundred80
2717 sigsh(pt+2,i) = phi2*pi/hundred80
2719 ELSEIF (igtyp == 1 )
THEN
2723 . c1=
'/INISHE/ORTHO',
2725 . i2=id_elem,i1=igeo(1,ig))
2731 sigsh(pt+1,i) = tmpval1(jj)*pi/hundred80
2741 CALL hm_get_intv(
'inishe_orth_loc_count',nb_elements,is_available,lsubmodel)
2754 ie=uel2sys(id_elem,ksysusr,numelc)
2758 nonexist = nonexist+1
2766 pt = nvshell + nushell
2767 id_sigsh(i) = id_elem
2768 sigsh(1,i) = id_elem
2769 IF (igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
2770 sigsh(pt + 4,i) = nip
2772 IF( ihbe==12 .OR. ihbe==24)
THEN
2773 sigsh(nvshell,i) = 4
2775 sigsh(nvshell,i) = 1
2779 IF (igtyp == 51 .OR. igtyp == 52)
THEN
2780 isubstack = iworksh(3, ie)
2781 nlay = stack%IGEO(1,isubstack)
2785 mlawly= stack%IGEO(ipmat + jj,isubstack)
2786 IF (mlawly == 58)
THEN
2801 ALLOCATE(mlaw_ly(nip))
2803 IF (igtyp == 9)
THEN
2805 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
2806 sigsh(pt+1,i) = cos(angle1)
2807 sigsh(pt+2,i) = sin(angle1)
2809 ELSEIF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR.
2810 . igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
2811 IF (igtyp == 51 .OR. igtyp == 52)
THEN
2812 isubstack = iworksh(3, ie)
2813 nlay = stack%IGEO(1,isubstack)
2815 ipnpt_lay = ipmat + 2*nlay
2816 IF(nlay /= nip)
THEN
2820 nslice = stack%IGEO(ipnpt_lay + jj,isubstack)
2823 mlaw_ly(ipt)= stack%IGEO(ipmat + jj,isubstack)
2831 mlaw_ly(jj)= stack%IGEO(ipmat + jj,isubstack)
2836 angle1 = tmpval1(jj)
2837 angle2 = tmpval2(jj)
2838 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
2839 IF(flagdeg == 1) angle2 = angle2*pi/hundred80
2841 IF (igtyp == 16 .OR.
2842 . (igtyp == 51 .AND. mlaw_ly(jj) == 58) .OR.
2843 . (igtyp == 52 .AND. mlaw_ly(jj) == 58) )
THEN
2845 angle2 = angle2 + angle1
2846 sigsh(pt+1,i) = cos(angle1)
2847 sigsh(pt+2,i) = sin(angle1)
2848 sigsh(pt+3,i) = cos(angle2)
2849 sigsh(pt+4,i) = sin(angle2)
2852 sigsh(pt+1,i) = cos(angle1)
2853 sigsh(pt+2,i) = sin(angle1)
2857 ELSEIF (igtyp == 1)
THEN
2861 . c1=
'/INISHE/ORTH_LOC',
2863 . i2=id_elem,i1=igeo(1,ig))
2865 IF(
ALLOCATED(mlaw_ly))
DEALLOCATE(mlaw_ly)
2869 CASE (
'SCALE_YLD' )
2871 CALL hm_get_intv(
'inishe_scale_yld_count',nb_elements,is_available,lsubmodel)
2882 ie=uel2sys(id_elem,ksysusr,numelc)
2886 nonexist = nonexist+1
2889 sigsh(nvshell + 1,i) = id_elem
2890 id_sigsh(i) = id_elem
2891 sigsh(nvshell + 2,i) = nip ! integ point
2892 sigsh(nvshell + 3,i) = npg
2895 pt = nvshell+nushell+nortshel+nvshell1+3
2903 scaleyld = tmpval1(l)
2904 sigsh(pt+l,i) = scaleyld
2914 CALL hm_get_intv(
'inishe_aux_count',nb_elements,is_available,lsubmodel)
2925 ie=uel2sys(id_elem,ksysusr,numelc)
2929 nonexist = nonexist+1
2934 nuvard00 = ipm(8,imat)
2935 IF (nuvard00 > nuvar)
THEN
2937 . msgtype=msgwarning,
2940 . c1=
'NUMBER OF USER VARIABLES',
2941 . c2=
'MATERIAL LAW ',
2945 IF ((ilaw == 36 .and. (nuvar < 4 .or. nuvard00 > 3) .and.
2946 . nuvard00 < nuvar) .or.
2947 . (ilaw /= 36 .and. ilaw /= 78 .and. ilaw /= 87 .and. ilaw /= 112 .and. nuvard00 < nuvar))
THEN
2952 . c1=
'NUMBER OF USER VARIABLES',
2953 . c2=
'MATERIAL LAW ',
2960 nvarsh = nvshell + 4
2961 IF (nip == 0) nip = 1
2962 IF (npg == 0) npg = 1
2963 sigsh(1,i) = id_elem
2964 id_sigsh(i) = id_elem
2966 sigsh(nvshell,i) = npg
2970 IF (ihbe==24) sigsh(nvshell,i) = 4
2972 sigsh(nvshell + 2 ,i) = nip
2973 sigsh(nvshell + 3 ,i) = npg
2974 sigsh(nvshell + 4 ,i) = nuvar
2978 nmax_aux = num_lines*nuvar
2983 l = nuvar*(jj-1) + k
2984 sigsh(nvarsh+pt+k,i) = tmpval(l)
2994 CALL hm_get_intv(
'inishe_fail_count',nb_elements,is_available,lsubmodel)
3010 ie=uel2sys(id_elem,ksysusr,numelc)
3015 nonexist = nonexist+1
3020 npt_max =
max(nptt,nlay)
3021 nvmax = nvshell1 /(
max(1,npg
3022 IF (id_elem /= nem1) i = ptshel(ie)
3027 IF (ipm(1,k) == imat)
THEN
3038 . c1=
'MATERIAL LAW',
3039 . c2=
'/INISHE/FAIL')
3045 sigsh(1,i) = id_elem
3046 id_sigsh(i) = id_elem
3047 IF ( igtyp == 9 ) nlay = nint(geo(npropg*(ig-1)+6))
3048 IF ( igtyp == 10 .OR. igtyp == 11)
THEN
3051 sigsh(2,i) = nptt*nlay
3053 IF (ihbe==12 .OR. ihbe==24)
THEN
3054 sigsh(nvshell,i) = 4
3056 sigsh(nvshell,i) = 1
3062 nfail(k) = mat_param(imat)%FAIL(k)%FAIL_ID
3063 IF (ifail == nfail(k) .AND.
3064 . irupt_typ == mat_param(imat)%FAIL(k)%IRUPT)
THEN
3076 . c1=
'FAILURE CRITERIA',
3077 . c2=
'/INISHE/FAIL')
3080 pt = nvshell+nushell+3+nortshel
3085 nmax_fail = num_lines*nvar_rupt
3090 l = nvar_rupt*(jj-1) + k
3091 sigsh(pt+l+(ifail-1)*npt_max*npg*nvmax+
3092 . (ilay-1)*nvmax*npg*nptt,i) = tmpval(l)
3124 IF (ktrieltg==0)
THEN
3127 itri(ie) = ixtg(nixtg,ie)
3129 CALL my_orders(0,work,itri,index,numeltg,1)
3132 ksysusrtg(j) =ixtg(nixtg,ie)
3133 ksysusrtg(numeltg+j)=ie
3142 . submodel_index = sub_index,
3143 . submodel_id = sub_id,
3147 IF (key2 /=
' ') glob = .true.
3151 DO iunit=1,unitab%NUNITS
3152 IF (unitab%UNIT_ID(iunit) == uid)
THEN
3158 IF (uid /= 0.AND.iflagunit == 0)
THEN
3159 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
3160 . i2=uid, i1=sub_id, c1=
'INISH3',
3165 SELECT CASE (key(1:len_trim(key)))
3171 CALL hm_get_intv(
'inish3_epsp_f_count',nb_elements,is_available,lsubmodel)
3183 ie = uel2sys(id_elem,ksysusrtg,numeltg)
3187 nonexist = nonexist+1
3190 i = numshel + ptsh3n(ie)
3192 id_sigsh(i) = id_elem
3193 sigsh(1,i) = id_elem
3196 sigsh(nvshell - 1,i) = one
3201 SIZE = nip*
max(npg,1)
3210 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
3218 ELSEIF (npg > 1)
THEN
3219 sigsh(nvshell,i) = npg
3228 sigsh(pt+(k-1)*9+5,i) = tmpval(k)
3241 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
3264 CALL hm_get_intv(
'inish3_strs_f_glob_count',nb_elements,is_available,lsubmodel)
3276 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3280 nonexist = nonexist+1
3287 i = numshel + ptsh3n(ie)
3289 sigsh(1,i) = id_elem
3290 id_sigsh(i) = id_elem
3299 sigsh(nvshell - 1,i) = one
3301 IF (npg == 0 .OR.
THEN
3323 ELSEIF (nip /= 0)
THEN
3338 inishvar = 22 + nip*6
3342 sigsh(pt,i) = tmpval1(n)
3343 sigsh(pt + 1,i) = tmpval2(n)
3344 sigsh(inishvar + n,i) = tmpval3(n)
3345 sigsh(pt + 2,i) = tmpval4(n)
3346 sigsh(pt + 3,i) = tmpval5(n)
3347 sigsh(pt + 4,i) = tmpval6(n)
3348 sigsh(pt + 5,i) = tmpval7(n)
3349 sigsh(inishvar+nip+n,i) = tmpval8(n)
3353 ELSEIF (npg > 1)
THEN
3355 sigsh(nvshell,i) = npg
3377 sigsh(pt ,i) = tmpval1(k)
3378 sigsh(pt+1,i) = tmpval2(k)
3379 sigsh(pt+2,i) = tmpval3(k)
3380 sigsh(pt+3,i) = tmpval4(k)
3381 sigsh(pt+4,i) = tmpval5(k)
3382 sigsh(pt+5,i) = tmpval6(k)
3383 sigsh(pt+6,i) = tmpval7(k)
3384 sigsh(pt+7,i) = tmpval8(k)
3385 sigsh(pt+8,i) = tmpval9(k)
3386 sigsh(pt+9,i) = tmpval10(k)
3387 sigsh(pt+10,i) = tmpval11(k)
3388 sigsh(pt+11,i) = tmpval12(k)
3389 sigsh(pt+12,i) = tmpval13(k)
3412 sigsh(pt ,i) = tmpval1(l)
3413 sigsh(pt+1,i) = tmpval2
3414 sigsh(pt+2,i) = tmpval3(l)
3415 sigsh(pt+3,i) = tmpval4(l)
3416 sigsh(pt+4,i) = tmpval5(l)
3417 sigsh(pt+5,i) = tmpval6(l)
3418 sigsh(pt+6,i) = tmpval7(l)
3419 sigsh(pt+7,i) = tmpval8(l)
3438 ELSEIF ( .NOT. glob )
THEN
3440 CALL hm_get_intv(
'inish3_strs_f_count',nb_elements,is_available,lsubmodel)
3452 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3456 nonexist = nonexist+1
3463 i = numshel + ptsh3n(ie)
3465 sigsh(1,i) = id_elem
3466 id_sigsh(i) = id_elem
3475 sigsh(nvshell - 1,i) = one
3477 IF (npg == 0 .OR. npg == 1)
THEN
3493 ELSEIF (nip /= 0)
THEN
3507 inishvar = 22 + nip*6
3511 sigsh(pt ,i) = tmpval1(n)
3512 sigsh(pt + 1,i) = tmpval2(n)
3513 sigsh(pt + 2,i) = tmpval3(n)
3514 sigsh(pt + 3,i) = tmpval4(n)
3515 sigsh(pt + 4,i) = tmpval5(n)
3516 sigsh(pt + 5,i) = tmpval6(n)
3520 ELSEIF (npg > 1)
THEN
3522 sigsh(nvshell,i) = npg
3540 sigsh(pt ,i) = tmpval1(k)
3541 sigsh(pt+1,i) = tmpval2(k)
3542 sigsh(pt+2,i) = tmpval3(k)
3543 sigsh(pt+3,i) = tmpval4(k)
3544 sigsh(pt+4,i) = tmpval5(k)
3545 sigsh(pt+5,i) = tmpval6(k)
3546 sigsh(pt+6,i) = tmpval7(k)
3547 sigsh(pt+7,i) = tmpval8(k)
3548 sigsh(pt+8,i) = tmpval9(k)
3566 sigsh(pt ,i) = tmpval1(l)
3567 sigsh(pt+1,i) = tmpval2(l)
3568 sigsh(pt+2,i) = tmpval3(l)
3569 sigsh(pt+3,i) = tmpval4(l)
3570 sigsh(pt+4,i) = tmpval5(l)
3571 sigsh(pt+5,i) = tmpval6(l)
3591 CALL hm_get_intv(
'inish3_stra_f_glob_count',nb_elements,is_available,lsubmodel)
3603 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3607 nonexist = nonexist+1
3609 i = numshel + ptsh3n(ie)
3610 sigsh(1,i) = id_elem
3611 id_sigsh(i) = id_elem
3615 sigsh(nvshell,i) =
max(1,npg)
3616 sigsh(nvshell - 1,i) = one
3633 l = (n-1)*
max(1,npg)+ipg
3634 sigsh(pt ,i) = tmpval1(l)
3635 sigsh(pt+1,i) = tmpval2(l)
3636 sigsh(pt+2,i) = tmpval3(l)
3637 sigsh(pt+3,i) = tmpval4(l)
3638 sigsh(pt+4,i) = tmpval5(l)
3639 sigsh(pt+5,i) = tmpval6(l)
3640 sigsh(pt+6,i) = tmpval7(l)
3648 ELSEIF ( .NOT. glob )
THEN
3651 CALL hm_get_intv(
'inish3_stra_f_count',nb_elements,is_available,lsubmodel)
3663 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3667 nonexist = nonexist+1
3669 i = numshel + ptsh3n(ie)
3670 sigsh(1,i) = id_elem
3671 id_sigsh(i) = id_elem
3673 sigsh(nvshell - 1,i) = one
3675 IF (npg == 0 .OR. npg == 1)
THEN
3686 ELSEIF (npg>1 )
THEN
3688 sigsh(nvshell,i) = npg
3710 sigsh(6,i) =sigsh(6,i) +tmpval1(ipg)/npg
3711 sigsh(7,i) =sigsh(7,i) +tmpval2(ipg)/npg
3712 sigsh(8,i) =sigsh(8,i) +tmpval3(ipg)/npg
3713 sigsh(9,i) =sigsh(9,i) +tmpval4(ipg)/npg
3714 sigsh(10,i)=sigsh(10,i
3715 sigsh(11,i)=sigsh(11,i)+tmpval6(ipg)/npg
3716 sigsh(12,i)=sigsh(12,i)+tmpval7(ipg)/npg
3717 sigsh(13,i)=sigsh(13,i)+tmpval8(ipg)/npg
3730 CALL hm_get_intv'no_elems',nb_elements,is_available,lsubmodel)
3740 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3744 nonexist = nonexist+1
3746 i = numshel + ptsh3n(ie)
3747 sigsh(1,i) = id_elem
3757 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
3766 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3772 i = numshel + ptsh3n(ie)
3773 sigsh(1,i) = id_elem
3774 id_sigsh(i) = id_elem
3782 CALL hm_get_intv(
'inish3_ortho_count',nb_elements,is_available,lsubmodel)
3792! elt = set_usrtos(id_elem,map_tables%ISH3NM,numelth)
3795 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3799 nonexist = nonexist+1
3806 i = numshel + ptsh3n(ie)
3807 pt = nvshell+nushell
3809 id_sigsh(i) = id_elem
3810 IF ( igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
3811 sigsh(pt + 4,i) = nip
3812 IF( ish3n == 30 )
THEN
3813 sigsh(nvshell,i) = 3
3815 sigsh(nvshell,i) = 1
3821 IF ( igtyp == 9 )
THEN
3824 sigsh(pt+1,i) = phi1*pi/hundred80
3825 sigsh(pt+2,i) = phi2*pi/hundred80
3827 ELSEIF (igtyp == 1 )
THEN
3831 . c1=
'/INISH3/ORTHO',
3833 . i2=id_elem,i1=igeo(1,ig))
3839 sigsh(pt+1,i) = tmpval1(jj)*pi/hundred80
3840 sigsh(pt+2,i) = tmpval2(jj)*pi/hundred80
3849 CALL hm_get_intv(
'inish3_orth_loc_count',nb_elements,is_available,lsubmodel)
3862 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3866 nonexist = nonexist+1
3873 i = numshel + ptsh3n(ie)
3874 pt = nvshell + nushell
3875 sigsh(1,i) = id_elem
3876 id_sigsh(i) = id_elem
3877 IF (igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
3878 sigsh(pt + 4 ,i) = nip
3879 sigsh(pt + 5,i) = one
3880 IF (ish3n == 30)
THEN
3881 sigsh(nvshell,i) = 3
3883 sigsh(nvshell,i) = 1
3887 IF (igtyp == 51 .OR. igtyp == 52)
THEN
3888 isubstack = iworksh(3, numelc + ie)
3889 nlay = stack%IGEO(1,isubstack)
3893 mlawly= stack%IGEO(ipmat + jj,isubstack)
3894 IF (mlawly == 58)
THEN
3905 ALLOCATE(mlaw_ly(nip))
3911 IF (igtyp == 9)
THEN
3913 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
3914 sigsh(pt+1,i) = cos(angle1)
3915 sigsh(pt+2,i) = sin(angle1)
3917 ELSEIF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR.
3918 . igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
3919 IF (igtyp == 51 .OR. igtyp == 52)
THEN
3920 isubstack = iworksh(3, numelc + ie)
3921 nlay = stack%IGEO(1,isubstack)
3923 ipnpt_lay = ipmat + 2*nlay
3924 IF(nlay /= nip)
THEN
3928 nslice = stack%IGEO(ipnpt_lay + jj,isubstack)
3931 mlaw_ly(ipt)= stack%IGEO(ipmat + jj,isubstack)
3939 mlaw_ly(jj)= stack%IGEO(ipmat + jj,isubstack)
3944 angle1 = tmpval1(jj)
3945 angle2 = tmpval2(jj)
3946 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
3947 IF(flagdeg == 1) angle2 = angle2*pi/hundred80
3949 IF (igtyp == 16 .OR.
3950 . (igtyp == 51 .AND. mlaw_ly(jj) == 58) .OR.
3951 . (igtyp == 52 .AND. mlaw_ly(jj) == 58) )
THEN
3953 angle2 = angle2 + angle1
3954 sigsh(pt+1,i) = cos(angle1)
3955 sigsh(pt+2,i) = sin(angle1)
3956 sigsh(pt+3,i) = cos(angle2)
3957 sigsh(pt+4,i) = sin(angle2)
3960 angle1 = tmpval1(jj)
3961 angle1 = angle1*pi/hundred80
3962 sigsh(pt+1,i) = cos(angle1)
3963 sigsh(pt+2,i) = sin(angle1)
3967 ELSEIF (igtyp == 1)
THEN
3971 . c1=
'/INISH3/ORTH_LOC',
3972 . c2=
'3 NODES SHELL',
3973 . i2=id_elem,i1=igeo(1,ig))
3975 IF(
ALLOCATED(mlaw_ly))
DEALLOCATE(mlaw_ly)
3979 CASE (
'SCALE_YLD' )
3981 CALL hm_get_intv(
'inish3_scale_yld_count',nb_elements,is_available
3989! elt = set_usrtos(id_elem,map_tables%ISH3NM,numeltg)
3992 ie=uel2sys(id_elem,ksysusrtg,numeltg)
3996 nonexist = nonexist+1
3998 i = numshel + ptsh3n(ie)
3999 sigsh(nvshell + 1,i) = id_elem
4000 id_sigsh(i) = id_elem
4001 sigsh(nvshell + 2,i) = nip
4002 sigsh(nvshell + 3,i) = npg
4011 scaleyld = tmpval1(l)
4012 sigsh(pt+ l,i) = scaleyld
4022 CALL hm_get_intv(
'inish3_aux_count',nb_elements,is_available,lsubmodel)
4033 ie=uel2sys(id_elem,ksysusrtg,numeltg)
4037 nonexist = nonexist+1
4042 nuvard00 = ipm(8,imat)
4043 IF (nuvard00 > nuvar)
THEN
4045 . msgtype=msgwarning,
4048 . c1=
'NUMBER OF USER VARIABLES',
4049 . c2=
'MATERIAL LAW ',
4053 IF ((ilaw == 36 .and. (nuvar < 4 .or. nuvard00 > 3) .and.
4054 . nuvard00 < nuvar) .or.
4055 . (ilaw /= 36 .and. ilaw /= 78 .and. ilaw /= 87 .and. ilaw /= 112 .and. nuvard00 < nuvar))
THEN
4060 . c1=
'NUMBER OF USER VARIABLES',
4061 . c2=
'MATERIAL LAW ',
4066 i = numshel + ptsh3n(ie)
4068 nvarsh = nvshell + 4
4069 IF (nip == 0) nip = 1
4070 IF (npg == 0) npg = 1
4071 sigsh(1,i) = id_elem
4072 id_sigsh(i) = id_elem
4074 sigsh(nvshell,i) = npg
4075 sigsh(nvshell + 2 ,i) = nip
4076 sigsh(nvshell + 3 ,i) = npg
4077 sigsh(nvshell + 4 ,i) = nuvar
4081 nmax_aux = num_lines*nuvar
4086 l = nuvar*(jj-1) + k
4087 sigsh(nvarsh+pt+k,i) = tmpval(l)
4097 CALL hm_get_intv(
'inish3_fail_count',nb_elements,is_available,lsubmodel)
4113 ie=uel2sys(id_elem,ksysusrtg,numeltg)
4117 nonexist = nonexist+1
4122 npt_max =
max(nptt,nlay)
4123 nvmax = nvshell1 /(
max(1,npg)*npt_max*5)
4126 i = numshel + ptsh3n(ie)
4130 IF (ipm(1,k) == imat)
THEN
4142 . c2=
'/INISHE/FAIL')
4148 sigsh(1,i) = id_elem
4150 IF ( igtyp == 9 ) nlay = nint(geo(npropg*(ig-1)+6))
4151 IF ( igtyp == 10 .OR. igtyp == 11)
THEN
4154 sigsh(2,i) = nptt*nlay
4156 IF( ish3n == 30 )
THEN
4157 sigsh(nvshell,i) = 3
4159 sigsh(nvshell,i) = 1
4165 nfail(k) = mat_param(imat)%FAIL(k)%FAIL_ID
4166 IF (ifail == nfail(k) .AND.
4167 . irupt_typ == mat_param(imat)%FAIL(k)%IRUPT)
THEN
4179 . c1=
'FAILURE CRITERIA',
4180 . c2=
'/INISH3/FAIL')
4183 pt = nvshell+nushell+3+nortshel
4188 nmax_fail = num_lines*nvar_rupt
4193 l = nvar_rupt*(jj-1) + k
4194 sigsh(pt+l+(ifail-1)*npt_max*npg*nvmax+
4195 . (ilay-1)*nvmax*npg*nptt,i) = tmpval(l)
4220 IF ( nb_initruss > 0 )
THEN
4226 IF (ktrieltruss == 0)
THEN
4229 itri(ie) = ixt(nixt,ie)
4231 CALL my_orders(0,work,itri,index,numelt,1)
4234 ksysusr(j) =ixt(nixt,ie)
4235 ksysusr(numelt+j)=ie
4240 DO ini=1,nb_initruss
4244 . submodel_index = sub_index,
4245 . submodel_id = sub_id,
4249 DO iunit=1,unitab%NUNITS
4250 IF (unitab%UNIT_ID(iunit) == uid)
THEN
4255 IF (uid /= 0.AND.iflagunit == 0)
THEN
4256 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4257 . i2=uid,i1=sub_id,c1=
'INITRUSS',
4262 SELECT CASE (key(1:len_trim(key)))
4267 CALL hm_get_intv(
'no_of_elems',nb_elements,is_available,lsubmodel)
4277 ie=uel2sys(id_elem,ksysusr,numelt)
4281 nonexist = nonexist+1
4290 id_sigtruss(i) = id_elem
4291 sigtruss(1,i) = id_elem
4292 sigtruss(2,i) = igtyp
4295 sigtruss(5,i) = epsp
4296 sigtruss(6,i) =
area
4321 IF ( nb_inibeam > 0 )
THEN
4327 IF (ktrielbeam == 0)
THEN
4330 itri(ie) = ixp(nixp,ie)
4332 CALL my_orders(0,work,itri,index,numelp,1)
4335 ksysusr(j) =ixp(nixp,ie)
4336 ksysusr(numelp+j)=ie
4345 . submodel_index = sub_index,
4346 . submodel_id = sub_id,
4350 DO iunit=1,unitab%NUNITS
4351 IF (unitab%UNIT_ID(iunit) == uid)
THEN
4356 IF (uid /= 0.AND.iflagunit == 0)
THEN
4357 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4358 . i2=uid,i1=sub_id,c1=
'INIBEAM',
4363 SELECT CASE (key(1:len_trim(key)))
4368 CALL hm_get_intv(
'inibeam_count',nb_elements,is_available,lsubmodel)
4379 ie=uel2sys(id_elem,ksysusr,numelp)
4383 nonexist = nonexist+1
4395 id_sigbeam(i) = id_elem
4396 sigbeam(1,i) = id_elem
4398 sigbeam(3,i) = igtyp
4407 sigbeam(10,i) = mom2
4408 sigbeam(11,i) = mom3
4412 IF (igtyp == 3)
THEN
4416 ELSEIF (nip > 0)
THEN
4418 IF (igtyp == 18)
THEN
4423 CALL hm_get_float_array(
'EpsilonP_array',tmpval4,
SIZE,j,is_available,lsubmodel,unitab)
4425 sigbeam(pt+1,i) = tmpval1(k)
4426 sigbeam(pt+2,i) = tmpval2(k)
4427 sigbeam(pt+3,i) = tmpval3(k)
4428 sigbeam(pt+4,i) = tmpval4(k)
4445 CALL hm_get_intv(
'inibeam_count',nb_elements,is_available,lsubmodel)
4457 ie=uel2sys(id_elem,ksysusr,numelp)
4461 nonexist = nonexist+1
4467 id_sigbeam(i) = id_elem
4468 sigbeam(1,i) = id_elem
4472 nvarbeam = nvbeam + 4
4473 sigbeam(nvbeam + 1 ,i) = id_elem
4474 sigbeam(nvbeam + 2 ,i) = nip
4475 sigbeam(nvbeam + 3 ,i) = igtyp
4476 sigbeam(nvbeam + 4 ,i) = nuvar
4478 IF (igtyp /= 18)
THEN
4479 CALL ancmsg(msgid=1236,anmode=aninfo,msgtype=msgerror,
4486 nmax_aux = nip*nuvar
4491 l = nuvar*(jj-1) + k
4492 sigbeam(nvarbeam+pt+k,i) = tmpval(l)
4521 IF ( nb_inispri > 0 )
THEN
4527 IF (ktrielspr == 0)
THEN
4530 itri(ie) = ixr(nixr,ie)
4532 CALL my_orders(0,work,itri,index,numelr,1)
4535 ksysusr(j) =ixr(nixr,ie)
4536 ksysusr(numelr+j)=ie
4545 . submodel_index = sub_index,
4546 . submodel_id = sub_id,
4550 DO iunit=1,unitab%NUNITS
4551 IF (unitab%UNIT_ID(iunit) == uid)
THEN
4556 IF (uid /= 0.AND.iflagunit == 0)
THEN
4557 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4558 . i2=uid,i1=sub_id,c1=
'INISPRING',
4563 SELECT CASE (key(1:len_trim(key)))
4568 CALL hm_get_intv(
'size_spring',nb_elements,is_available,lsubmodel)
4571 ! reading --- id_elem, prop ... ---
4579 ie=uel2sys(id_elem,ksysusr,numelr)
4583 nonexist = nonexist+1
4586 id_sigspri(i) = id_elem
4587 sigrs(1,i) = id_elem
4589 IF (igtyp == 4 .OR. igtyp == 12)
THEN
4599 IF (igtyp == 12)
THEN
4603 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25 .OR. igtyp == 23)
THEN
4653 ELSEIF (igtyp == 26)
THEN
4663 ELSEIF (igtyp == 29 .OR. igtyp == 30 .OR. igtyp == 31 .OR.
4664 . igtyp == 32 .OR. igtyp == 33 .OR. igtyp == 35 .OR.
4665 . igtyp == 36 .OR. igtyp == 44 .OR. igtyp == 45 .OR.
4720 IF ( nb_iniqua > 0 )
THEN
4726 IF (ktrieltquad == 0)
THEN
4729 itriq(ie) = ixq(nixq,ie)
4731 CALL my_orders(0,work,itriq,indexq,numelq,1)
4744 . submodel_index = sub_index,
4745 . submodel_id = sub_id,
4749 DO iunit=1,unitab%NUNITS
4750 IF (unitab%UNIT_ID(iunit) == uid)
THEN
4755 IF (uid/=0.AND.iflagunit == 0)
THEN
4756 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4757 . i2=uid,i1=sub_id,c1=
'INIQUA',
4762 SELECT CASE (key(1:len_trim(key)))
4767 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4777 ie=uel2sys(id_elem,ksysusrq,numelq)
4781 nonexist = nonexist+1
4785 id_quad_sigi(i) = id_elem
4793 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4803 ie=uel2sys(id_elem,ksysusrq,numelq)
4807 nonexist = nonexist+1
4811 id_quad_sigi(i) = id_elem
4819 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4828 ie=uel2sys(id_elem,ksysusrq,numelq)
4832 nonexist = nonexist+1
4836 id_quad_sigi(i) = id_elem
4844 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4854 ie=uel2sys(id_elem,ksysusrq,numelq)
4858 nonexist = nonexist+1
4866 id_quad_sigi(i) = id_elem
4891 IF ( nb_inisphcel > 0 )
THEN
4896 IF (ktrielsphcel == 0)
THEN
4898 itrisph(ie) = kxsp(nisp,ie)
4900 CALL my_orders(0,work,itrisph,indexsph,numsph,1)
4903 ksysusrsph(j) =kxsp(nisp,ie)
4904 ksysusrsph(numsph+j)=ie
4909 DO ini=1,nb_inisphcel
4913 . submodel_index = sub_index,
4914 . submodel_id = sub_id,
4918 IF (key2 /=
' ') glob = .true.
4921 DO iunit=1,unitab%NUNITS
4922 IF (unitab%UNIT_ID(iunit) == uid)
THEN
4928 IF (uid /= 0.AND.iflagunit == 0)
THEN
4929 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4930 . i2=uid, i1=sub_id, c1=
'INISPHCEL',
4935 SELECT CASE (key(1:len_trim(key)))
4939 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4953 ie=uel2sys(id_elem,ksysusrsph,numsph)
4957 nonexist = nonexist+1
4959 id_sigsph(i) = id_elem
4971 sigsph(12,i) = nuvar
4974 sigsph(12+k,i) = tmpval(k)
4991 IF (nonexist > 0)
THEN
4992 CALL ancmsg(msgid=3045,anmode=aninfo,msgtype=msgwarning,i1=nonexist)
4997 DEALLOCATE (ksysusrs)
4998 DEALLOCATE (ksysusrtg)
5001 DEALLOCATE (ksysusrq)
5002 DEALLOCATE (ies2iparg)
5003 IF(
ALLOCATED(itrisph))
DEALLOCATE(itrisph)
5004 IF(
ALLOCATED(indexsph))
DEALLOCATE(indexsph)
5005 IF(
ALLOCATED(ksysusrsph))
DEALLOCATE(ksysusrsph)