40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NFUNC ,
41 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
42 . ISRATE ,MAT_ID ,TITR ,IFUNC ,MAXFUNC ,
67#include "implicit_f.inc"
76 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
77 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
78 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
79 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
80 INTEGER,
INTENT(INOUT) :: ISRATE,IFUNC(MAXFUNC)
81 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC,NVARTMP
82 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
83 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
86 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
90 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
91 INTEGER :: ILAW,ICC,ISRAT,Ivflag
92 my_real :: RHO0,RHOR,E,NU,CA,CB,CN,G,A1,BULK,EPSM,SIGM,EPSR1,EPSR2,
93 . EPSP_REF,FISOKIN,CP,CC,ASRATE,EPSGM,YLD_SCALE,YLD_SCALE_UNIT
95 is_encrypted = .false.
96 is_available = .false.
101 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv(
'MAT_B' ,cb ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_N' ,cn ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_SRC' ,epsp_ref ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_SRE' ,cp ,is_available, lsubmodel, unitab)
115 CALL hm_get_intv (
'STRFLAG' ,icc ,is_available, lsubmodel)
116 CALL hm_get_intv (
'Fsmooth' ,israt ,is_available, lsubmodel)
117 CALL hm_get_floatv(
'Fcut' ,asrate ,is_available, lsubmodel, unitab)
118 CALL hm_get_intv (
'Vflag' ,ivflag ,is_available, lsubmodel)
121 CALL hm_get_floatv(
'MAT_ETA1' ,epsr1 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_ETA2' ,epsr2 ,is_available, lsubmodel, unitab)
124 CALL hm_get_intv (
'YLD_FUNC' ,ifunc(1) ,is_available, lsubmodel)
125 CALL hm_get_floatv(
'YLD_SCALE' ,yld_scale,is_available, lsubmodel, unitab)
129 IF (rhor == zero) rhor = rho0
131 IF (nu < zero .OR. nu >= half)
THEN
134 . anmode=aninfo_blind_2,
139 IF (epsp_ref == zero)
THEN
144 IF (cc > zero .AND. cp > zero .AND.
145 . israt == 0 .AND. asrate == zero .AND. ivflag /= 1)
THEN
147 . msgtype=msgwarning,
148 . anmode=aninfo_blind_1,
152 IF (epsr1 == zero) epsr1 = infinity
153 IF (epsr2 == zero) epsr2 = two*infinity
154 IF (epsm == zero) epsm = infinity
155 IF (sigm == zero) sigm = infinity
156 IF (icc == 0) icc = 1
157 IF (cp == zero) cp = one
159 IF (ivflag == 0)
THEN
164 IF (ivflag == 1)
THEN
167 israte =
max(israte,israt)
168 asrate = 10000.0d0*unitab%FAC_T_WORK
170 IF (asrate /= zero)
THEN
173 israte =
max(israte,israt)
179 asrate = 10000.0d0*unitab%FAC_T_WORK
189 IF (cn /= zero .and. cb /= zero)
THEN
190 epsgm = ((sigm - ca) / cb)**(one/cn)
194 IF (ifunc(1) == 0)
THEN
196 ELSEIF (yld_scale == zero)
THEN
197 CALL hm_get_floatv_dim(
'YLD_SCALE' ,yld_scale_unit ,is_available, lsubmodel, unitab)
198 yld_scale = one * yld_scale_unit
201 IF (((ifunc(1) > 0).AND.(ca /= zero)).AND.(ivflag /= 1))
THEN
203 . msgtype=msgwarning,
204 . anmode=aninfo_blind_1,
211 bulk = e / three / (one - two*nu)
213 g = e / two / (one + nu)
216 IF (ifunc(1) > 0)
THEN
248 uparam(24) = yld_scale
257 parmat(17) = two*g/(bulk+four_over_3*g)
262 pm(27) = sqrt(a1/rho0)
271 IF (fisokin > zero)
THEN
287 WRITE(iout,1000) trim(titr),mat_id,44
290 IF (is_encrypted)
THEN
291 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
293 WRITE(iout,1200) rho0
294 WRITE(iout,1300)e,nu,ca,cb,cn,fisokin,sigm,
295 . epsp_ref,cp,icc,israte,asrate,ivflag,epsm,
296 . epsr1,epsr2,ifunc(1),yld_scale
301 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
302 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
304 &(5x,
'MATERIAL MODEL : ELASTIC-PLASTIC (COWPER-SYMONDS)',/,
305 & 5x,
'-------------------------------------------------',/)
307 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
309 & 5x,
'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
310 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
311 & 5x,
'YIELD STRESS . . . . . . . . . . . . . =',1pg20.13/
312 & 5x,
'HARDENING PARAMETER. . . . . . . . . . =',1pg20.13/
313 & 5x,
'HARDENING EXPONENT . . . . . . . . . . =',1pg20.13/
314 & 5x,
'ISO-KINEMATIC HARDENNING FACTOR. . . . =',1pg20.13/
315 & 5x,
'MAXIMUM STRESS . . . . . . . . . . . . =',1pg20.13/
316 & 5x,
'REFERENCE STRAIN RATE CC . . . . . . . =',1pg20.13/
317 & 5x,
'STRAIN RATE EXPONENT (1/P) . . . . . . =',1pg20.13/
318 & 5x,
'FLAG FOR STRAIN RATE ON SIG-MAX. . . . =',i10/
319 & 5x,
'SMOOTH STRAIN RATE OPTION. . . . . . . =',i10/
320 & 5x,
'STRAIN RATE CUTTING FREQUENCY. . . . . =',1pg20.13/
321 & 5x,
'STRAIN RATE CHOICE FLAG . . . . . . . =',i10/
322 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
323 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
324 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/
325 & 5x,
'FAILURE PLASTIC STRAIN . . . . . . . . =',1pg20.13/
326 & 5x,
'TENSION FAILURE STRAIN 1 . . . . . . . =',1pg20.13/
327 & 5x,
'TENSION FAILURE STRAIN 2 . . . . . . . =',1pg20.13/
328 & 5x,
'YIELD FUNCTION IDENTIFIER . . . . . . =',i10/
329 & 5x,
'YIELD FUNCTION SCALE FACTOR . . . . . =',1pg20.13/)
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)