39 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NTABL ,
40 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
41 . ISRATE ,MAT_ID ,TITR ,ITABLE ,MAXTABL ,
55#include "implicit_f.inc"
65 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
66 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXTABL
67 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
68 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
69 INTEGER,
INTENT(INOUT) :: ISRATE,ITABLE(MAXTABL)
70 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR
71DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
72 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
75 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
79 INTEGER I, J, K, ILAW, Ivflag, NANGLE, INFO, Icrit, TAB_YLD, Ismooth,
80 . TAB_TEMP,ITER,Ires,Istat
83 . rho0,young,nu,
alpha,gamma,epsd,
alpha2,beta,sigp,cfail,pfail,
84 . g,g2,lam,bulk,nnu,nnu1,rhof0,sigp_c0,sigp_c1,sigp_n,alpha2_c0,
85 . alpha2_c1,alpha2_n,gamma_c0,gamma_c1,gamma_n,beta_c0,beta_c1,beta_n
87 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
89 IS_ENCRYPTED = .false.
90 is_available = .false.
97 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
99 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
100 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
101 CALL hm_get_intv (
'MAT_IRES' ,ires ,is_available, lsubmodel)
102 CALL hm_get_intv (
'MAT_ISTAT' ,istat ,is_available, lsubmodel)
108 CALL hm_get_floatv(
'MAT_CFAIL' ,cfail ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_PFAIL' ,pfail ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_SIGP' ,sigp ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('mat_gamma
' ,GAMMA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
113 CALL HM_GET_FLOATV('mat_epsd
' ,EPSD ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('mat_alpha2
',ALPHA2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115 CALL HM_GET_FLOATV('mat_beta
' ,BETA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 ! Statistical variation parameter
120 CALL HM_GET_FLOATV('mat_alpha
' ,ALPHA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121 CALL HM_GET_FLOATV('mat_cfail
' ,CFAIL ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_FLOATV('mat_pfail
' ,PFAIL ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('mat_rhof0
' ,RHOF0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_FLOATV('mat_sigp_c0
' ,SIGP_C0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_sigp_c1
' ,SIGP_C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_sigp_n
' ,SIGP_N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129 CALL HM_GET_FLOATV('mat_alpha2_c0
' ,ALPHA2_C0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_alpha2_c1
' ,ALPHA2_C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_alpha2_n
' ,ALPHA2_N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133 CALL HM_GET_FLOATV('mat_gamma_c0
' ,GAMMA_C0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
134 CALL HM_GET_FLOATV('mat_gamma_c1
' ,GAMMA_C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
135 CALL HM_GET_FLOATV('mat_gamma_n
' ,GAMMA_N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
137 CALL HM_GET_FLOATV('mat_beta_c0
' ,BETA_C0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
138 CALL HM_GET_FLOATV('mat_beta_c1
' ,BETA_C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
139 CALL HM_GET_FLOATV('mat_beta_n
' ,BETA_N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
147.OR.
IF ((Ires == 0)(Ires > 2)) Ires = 2
149 IF (nu < zero .OR. nu >= half)
THEN
152 . anmode=aninfo_blind_2,
158 g2 = young / (one + nu)
160 lam = g2 * nu /(one - two*nu)
161 bulk = third * young / (one - nu*two)
162 nnu = nu / (one - nu)
167 IF (sigp == zero) sigp = infinity
168 IF (sigp < zero)
THEN
171 . anmode=aninfo_blind_2,
177 IF (epsd == zero) epsd = infinity
178 IF (epsd < zero)
THEN
181 . anmode=aninfo_blind_2,
187 IF (beta == zero) beta = one
190 IF ((
alpha < zero).OR.(
alpha > sqrt(4.5d0)))
THEN
193 . anmode=aninfo_blind_2,
199 IF (cfail < zero)
THEN
202 . anmode=aninfo_blind_2,
208 IF (pfail < zero)
THEN
211 . anmode=aninfo_blind_2,
219 IF (nperturb == 0)
THEN
221 . msgtype=msgwarning,
222 . anmode=aninfo_blind_2,
242 IF (cfail > zero)
THEN
248 IF (cfail > zero)
THEN
280 uparam(20) = alpha2_c0
281 uparam(21) = alpha2_c1
282 uparam(22) = alpha2_n
283 uparam(23) = gamma_c0
284 uparam(24) = gamma_c1
302 pm(27) = sqrt((bulk + four_over_3*g)/rho0)
324 WRITE(iout,1000) trim(titr),mat_id,ilaw
326 IF (is_encrypted)
THEN
327 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
329 WRITE(iout,1200) rho0
330 WRITE(iout,1300) young,nu
331 WRITE(iout,1350) ires
332 WRITE(iout,1375) istat
334 WRITE(iout,1400)
alpha,gamma,epsd,
alpha2,beta,sigp,cfail,pfail
336 WRITE(iout,1450)
alpha,rhof0,sigp_c0,sigp_c1,sigp_n,alpha2_c0,
337 . alpha2_c1,alpha2_n,gamma_c0,gamma_c1,gamma_n,
338 . beta_c0,beta_c1,beta_n,cfail,pfail
344 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
345 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
347 &(5x,
'MATERIAL MODEL : DESHPANDE AND FLECK FOAM',/,
348 & 5x,
'-----------------------------------------',/)
350 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
352 & 5x,
'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
353 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/)
355 & 5x,
'RETURN MAPPING ALGORITHM FLAG . . . . .=',i3/
356 & 5x,
' IRES=1 NICE EXPLICIT'/
357 & 5x,
' IRES=2 NEWTON-ITERATION IMPLICIT (CUTTING PLANE)'/)
359 & 5x,
'STATISTICAL VARIATION FLAG . . . . . .='
361 & 5x,
'YIELD SURFACE SHAPE PARAMETER ALPHA . .=',1pg20.13/
362 & 5x,
'LINEAR HARDENING MODULUS GAMMA . . . .=',1pg20.13/
363 & 5x,
'DENSIFICATION STRAIN EPSD . . . . . . .=',1pg20.13/
364 & 5x,
'NON-LINEAR HARDENING MODULUS ALPHA2 . .=',1pg20.13/
365 & 5x,
'NON-LINEAR HARDENING EXPONENT BETA . .=',1pg20.13/
366 & 5x,
'INITIAL YIELD STRESS SIGP . . . . . . .=',1pg20.13/
367 & 5x,
'TENSILE VOLUMETRIC STRAIN AT FAILURE .=',1pg20.13/
368 & 5x,
'MAX. PRINCIPAL STRESS AT FAILURE . . .=',1pg20.13/)
370 & 5x,
'YIELD SURFACE SHAPE PARAMETER ALPHA . .=',1pg20.13/
371 & 5x,
'DENSITY OF BASE MATERIAL . . . . . . .=',1pg20.13/
372 & 5x,
'INITIAL YIELD STRESS PARAM. SIGP_C0 . .=',1pg20.13/
373 & 5x,
'INITIAL YIELD STRESS PARAM. SIGP_C1 . .='
374 & 5x,
'INITIAL YIELD STRESS EXPO. SIGP_N . .=',1pg20.13/
375 & 5x,
'NON-LINEAR HARDENING PARAM. ALPHA2_C0 .=',1pg20.13/
376 & 5x,
'NON-LINEAR HARDENING PARAM. ALPHA2_C1 .=',1pg20.13/
377 & 5x,
'NON-LINEAR HARDENING EXPO. ALPHA2_N .=',1pg20.13/
378 & 5x,
'LINEAR HARDENING PARAM. GAMMA_C0 . . .=',1pg20.13/
379 & 5x,
'LINEAR HARDENING PARAM. GAMMA_C1 . . .=',1pg20.13/
380 & 5x,
'LINEAR HARDENING PARAM. GAMMA_N . . . .=',1pg20.13/
381 & 5x,
'NON-LINEAR HARDENING EXPO. BETA_C0 . .=',1pg20.13/
382 & 5x,
'NON-LINEAR HARDENING EXPO. BETA_C1 . .=',1pg20.13/
383 & 5x,
'NON-LINEAR HARDENING EXPO. BETA_N . .=',1pg20.13/
384 & 5x,
'TENSILE VOLUMETRIC STRAIN AT FAILURE .=',1pg20.13/
385 & 5x,
'MAX. PRINCIPAL STRESS AT FAILURE . . .=',1pg20.13/)
subroutine hm_read_mat115(uparam, maxuparam, nuparam, nuvar, ntabl, mtag, parmat, unitab, pm, lsubmodel, israte, mat_id, titr, itable, maxtabl, nvartmp, matparam)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)