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)
110 CALL HM_GET_FLOATV('mat_hard
' ,FISOKIN ,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)
120 CALL HM_GET_FLOATV('mat_eps
' ,EPSM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
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.OR.
IF (NU < ZERO NU >= HALF) THEN
132 CALL ANCMSG(MSGID=49,
134 . ANMODE=ANINFO_BLIND_2,
139 IF (EPSP_REF == ZERO) THEN
144.AND..AND.
IF (CC > ZERO CP > ZERO
145.AND..AND.
. ISRAT == 0 ASRATE == ZERO Ivflag /= 1) THEN
146 CALL ANCMSG(MSGID=1881,
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
162 !----------------------------------------------------------
163 ! Filtering frequency
164 IF (Ivflag == 1) THEN
165 ! If plastic strain is chosen, filtering by default
167 ISRATE = MAX(ISRATE,ISRAT)
168 ASRATE = 10000.0D0*UNITAB%FAC_T_WORK
170 IF (ASRATE /= ZERO) THEN
171 ! If a filtering frequency is given by the user
173 ISRATE = MAX(ISRATE,ISRAT)
175 ! If no filtering frequency is given but the flag is activated
178 ISRATE = MAX(ISRATE,ISRAT)
179 ASRATE = 10000.0D0*UNITAB%FAC_T_WORK
180 ! If no filtering frequency and no flag is activated => no filtering
188 !---------------------------------------------------------
189.and.
IF (CN /= ZERO 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
200 ! If IFUNC > 0 and CA > 0 and Ivflag =/ 1
201.AND..AND.
IF (((IFUNC(1) > 0)(CA /= ZERO))(Ivflag /= 1)) THEN
202 CALL ANCMSG(MSGID=1880,
203 . MSGTYPE=MSGWARNING,
204 . ANMODE=ANINFO_BLIND_1,
208 ! IFUNC > 0 and CA > 0 can only be set with Ivflag = 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) ! == (1-2*nu)/(1-nu)
262 PM(27) = SQRT(A1/RHO0) ! sound speed estimation
271 IF (FISOKIN > ZERO) THEN
275 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
276 CALL INIT_MAT_KEYWORD(MATPARAM,"INCREMENTAL")
277 CALL INIT_MAT_KEYWORD(MATPARAM,"LARGE_STRAIN")
278 ! Properties compatibility
279 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
280 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
281 CALL INIT_MAT_KEYWORD(MATPARAM,"BEAM_ALL")
282 CALL INIT_MAT_KEYWORD(MATPARAM,"TRUSS")
284 ! Material compatibility with /EOS option
285 CALL INIT_MAT_KEYWORD(MATPARAM,"EOS")
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 hm_read_mat44(uparam, maxuparam, nuparam, nuvar, nfunc, mtag, parmat, unitab, pm, lsubmodel, israte, mat_id, titr, ifunc, maxfunc, 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)