41 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC ,PARMAT ,
42 . UNITAB ,MAT_ID ,TITR ,MTAG ,LSUBMODEL,
43 . PM ,NVARTMP ,MATPARAM )
61#include "implicit_f.inc"
70 INTEGER,
INTENT(IN) :: MAT_ID,MAXFUNC,MAXUPARAM
71 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
72 TYPE(SUBMODEL_DATA) ,
DIMENSION(*) ,
INTENT(IN) :: LSUBMODEL
73 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
74 INTEGER ,
DIMENSION(MAXFUNC) ,
INTENT(INOUT) :: IFUNC
75 my_real ,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
76 my_real ,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
77 my_real ,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
78 INTEGER ,
INTENT(INOUT) :: NFUNC,NUVAR,NVARTMP,NUPARAM,ISRATE,IMATVIS
80 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
84 INTEGER :: I,NORDRE,ISMSTR,NMAXW,OPTE,OPTR,FUNCID,,Iplas
85 my_real :: YOUNG,YIELD,BSAT,MYU,BYU,HYU,CYU,KYU,RSAT,
86 . NU,SUM,GS,P,VISCMAX,FAC_L,FAC_T,,,
87 . rbulk,shear,lamda,einf,coe,yfac,rho0,
88 . r00,r45,r90,cst,cstt,p1,p2,p3,p4,n3,mexp,c1_kh
89 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
93 is_encrypted = .false.
94 is_available = .false.
101 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
103 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_SIGY' ,yield ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_BSAT' ,byu ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv('mat_hard
' ,CYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
109 CALL HM_GET_FLOATV('mat_hyst
' ,HYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
110 CALL HM_GET_FLOATV('mat_b
' ,BSAT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
112 CALL HM_GET_FLOATV('mat_m
' ,MYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
113 CALL HM_GET_FLOATV('mat_rsat
' ,RSAT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_INTV ('mat_optr
' ,OPTR ,IS_AVAILABLE, LSUBMODEL)
115 CALL HM_GET_FLOATV('c1
' ,CST ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116 CALL HM_GET_FLOATV('c2
' ,CSTT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('mat_r00
' ,R00 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat_r45
' ,R45 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_r90
' ,R90 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121 CALL HM_GET_FLOATV('mat_mexp
' ,MEXP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_INTV ('mat_iplas
' ,Iplas ,IS_AVAILABLE, LSUBMODEL)
124 CALL HM_GET_INTV ('mat_fct_ide
',FUNCID ,IS_AVAILABLE, LSUBMODEL)
125 CALL HM_GET_FLOATV('mat_ea
' ,EINF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_ce
' ,COE ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_c1kh
' ,C1_KH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 !========== DEFAULT VALUES=============!
133 IF (FUNCID > 0 ) OPTE = 1
134 IF (R00 == ZERO) R00 = ONE
135 IF (R45 == ZERO) R45 = ONE
136 IF (R90 == ZERO) R90 = ONE
137 IF (Iplas == 0) Iplas = 1
138.OR.
IF (NU < ZERO NU >= HALF) THEN
139 CALL ANCMSG(MSGID=49,
141 . ANMODE=ANINFO_BLIND_2,
146.OR.
IF ((HYU < ZERO)(HYU > ONE)) THEN
147 CALL ANCMSG(MSGID=1886,
149 . ANMODE=ANINFO_BLIND_2,
154 IF (C1_KH <= CYU) C1_KH = CYU
158 P1 = R00*(ONE+R90)/R90/(ONE+R00)
160 P3 = (R00+R90)*(TWO*R45+ONE)/R90/(ONE+R00)
161 P4 = R00/R90/(ONE+R00)
164 ELSEIF (Iplas == 2) THEN
165 ! Wrong value of M exponent
166.AND.
IF ((MEXP > ZERO)(MEXP < TWO)) THEN
167 CALL ANCMSG(MSGID=1735,
173 ! Default value of M exponent
174 IF (MEXP == ZERO) MEXP = SIX
175 P1 = TWO - TWO*SQRT((R00/(ONE+R00))*(R90/(ONE+R90))) ! A
177 P3 = SQRT((R00/(ONE+R00))*((ONE+R90)/R90)) ! H
179 CALL CALCULP2(P1,P2,P3,P4,MEXP,R45) ! USE ROUTINE OF HM_READ_MAT57
200 IF (BSAT < YIELD) THEN
202 CALL ANCMSG(MSGID=922,
203 . MSGTYPE=MSGWARNING,
232 PARMAT(1) = YOUNG/THREE/(ONE - TWO*NU)
237 PARMAT(17) = (ONE - TWO*NU)/(ONE - NU) ! == TWO*G/(C1+FOUR_OVER_3*G)
248 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
249 CALL INIT_MAT_KEYWORD(MATPARAM,"INCREMENTAL")
250 CALL INIT_MAT_KEYWORD(MATPARAM,"LARGE_STRAIN")
252 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
253 CALL INIT_MAT_KEYWORD(MATPARAM,"ORTHOTROPIC")
255 ! Properties compatibility
256 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
257 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ORTHOTROPIC")
260 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
263 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,ILAW
264 WRITE(IOUT,1002) RHO0
265 WRITE(IOUT,1100) YOUNG,NU,FUNCID,EINF,COE
266 WRITE(IOUT,1200) YIELD,BYU,CYU,HYU,BSAT,C1_KH
267 WRITE(IOUT,1300) MYU,RSAT,OPTR
268 WRITE(IOUT,1400) Iplas,R00,R45,R90,CST,CSTT
269 IF (Iplas == 2) WRITE(IOUT,1500) P1,P2,P3,P4,MEXP
273 & (5X,' yoshida-uemori material law
',/
274 & 5X,' ---------------------------
',//)
277 & 5X,'material number. . . . . . . . . . . . =
',I10/,
278 & 5X,'material law . . . . . . . . . . . . . =
',I10/)
280 & 5X,'initial density . . . . . . . . . . . . . . . =
',1PG20.13/)
282 & 5X,'young
''s modulus . . . . . . . . . . . . . . =
',1PG20.13/
283 & 5X,'poisson
''s ratio . . . . . . . . . . . . . . =
',1PG20.13/
284 & 5X,'young modulus evolution
FUNCTION . . . . . . =
',I10/
285 & 5X,'material parameter
',1PG20.13/
286 & 5X,'material parameter (COE ). . . . . . . . . . =
',1PG20.13)
288 & 5X,'yield stress (YIELD). . . . . . . . . . . . . =
',1PG20.13/
289 & 5X,'material parameter (BYU ) . . . . . . . . . . =
',1PG20.13/
290 & 5X,'material parameter (CYU ). . . . . . . . . . =
',1PG20.13/
291 & 5X,'material parameter (HYU ). . . . . . . . . . =
',1PG20.13/
292 & 5X,'material parameter (BSAT ) . . . . . . . . . =
',1PG20.13/
293 & 5X,'material parameter (C1_KH ) . . . . . . . . =
',1PG20.13)
295 & 5X,'material parameter (MYU ). . . . . . . . . . =
',1PG20.13/
296 & 5X,'material parameter (RSAT ). . . . . . . . . . =
',1PG20.13/
297 & 5X,'flag isotropic hardening func (OPTR) . . . . =
',I10)
299 & 5X,'plastic criterion flag . . . . . . . . . . . =
',I10/
300 & 5X,' icrit=1 hill 1948 criterion
'/
301 & 5X,' icrit=2 barlat 1989 criterion
'/
302 & 5X,'lankford coefficient r00. . . . . . . . . . . =
',1PG20.13/
303 & 5X,'lankford coefficient r45. . . . . . . . . . . =
',1PG20.13/
304 & 5X,'lankford coefficient r90. . . . . . . . . . . =
',1PG20.13/
305 & 5X,'material parameter (CST). . . . . . . . . . . =
',1PG20.13/
306 & 5X,'material parameter (CSTT) . . . . . . . . . . =
',1PG20.13/)
308 & 5X,'barlat parameter a. . . . . . . . . . . . . . =
',1PG20.13/
309 & 5X,'barlat parameter c. . . . . . . . . . . . . . =
',1PG20.13/
310 & 5X,'barlat parameter h. . . . . . . . . . . . . . =
',1PG20.13/
311 & 5X,'barlat parameter p. . . . . . . . . . . . . . =
',1PG20.13/
312 & 5X,'barlat exponent
',1PG20.13/)
subroutine hm_read_mat78(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, nvartmp, matparam)