38 . FAIL ,MAT_ID ,FAIL_ID ,ILAW ,IRUPT ,IXFEM ,
39 . TITR ,LSUBMODEL,UNITAB )
55#include "implicit_f.inc"
61 INTEGER ,
INTENT(IN) :: FAIL_ID
62 INTEGER ,
INTENT(IN) :: MAT_ID
63 INTEGER ,
INTENT(IN) :: ILAW
64 INTEGER ,
INTENT(IN) :: IRUPT
65 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
68 INTEGER ,
INTENT(INOUT) :: IXFEM
69 TYPE(fail_param_) ,
INTENT(INOUT) :: FAIL
73 INTEGER IFAIL_SH,ISOLID,I,FAILIP
74 my_real D1, D2, D3, D4, D5, EPSP0, DADV, PTHKF, EPSF_MIN
75 my_real triax,epsf,depsf_dtriax
76 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
78 is_encrypted = .false.
79 is_available = .false.
92 CALL hm_get_floatv (
'Epsilon_Dot_0',epsp0 ,is_available,lsubmodel,unitab)
93 CALL hm_get_intv (
'Ifail_sh' ,ifail_sh,is_available,lsubmodel)
94 CALL hm_get_intv (
'Ifail_so' ,isolid ,is_available,lsubmodel)
95 CALL hm_get_floatv (
'EPSF_MIN' ,epsf_min,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv (
'Dadv' ,dadv ,is_available,lsubmodel,unitab)
97 CALL hm_get_intv (
'Ixfem' ,ixfem ,is_available,lsubmodel)
98 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
99 IF (failip == 0) failip = 1
103 CALL ancmsg(msgid=3001, msgtype=msgwarning, anmode=aninfo_blind,
110 epsf = d1 + d2*exp(d3*triax)
112 IF ((epsf <= zero).AND.(epsf_min == zero))
THEN
114 depsf_dtriax = d2*d3*exp(d3*triax)
115 triax = triax - epsf/depsf_dtriax
116 triax =
min(triax, one)
117 triax =
max(triax,-one)
118 epsf = d1 + d2*exp(d3*triax)
121 IF ((abs(epsf) < em06) .AND. (triax < one) .AND. (triax > -one))
THEN
123 . msgtype=msgwarning,
124 . anmode=aninfo_blind,
131 IF (epsp0 == zero) epsp0=em20
132 IF (ifail_sh == 0) ifail_sh=1
133 IF (isolid == 0) isolid=1
134 IF (ixfem /= 1 .AND. ixfem /= 2) ixfem = 0
135 IF (ixfem > 0) isolid = 0
136 IF (dadv == zero .OR. dadv > one) dadv = one
138 IF (ifail_sh == 1)
THEN
140 ELSEIF (ifail_sh == 2)
THEN
144 fail%KEYWORD =
'JOHNSON-COOK'
146 fail%FAIL_ID = fail_id
155 ALLOCATE (fail%UPARAM(fail%NUPARAM))
156 ALLOCATE (fail%IPARAM(fail%NIPARAM))
157 ALLOCATE (fail%IFUNC (fail%NFUNC))
158 ALLOCATE (fail%TABLE (fail%NTABLE))
165 fail%UPARAM(6) = epsp0
166 fail%UPARAM(7) = ifail_sh
167 fail%UPARAM(8) = isolid
169 fail%UPARAM(10)= dadv
170 fail%UPARAM(11)= ixfem
171 fail%UPARAM(12)= epsf_min
172 fail%UPARAM(13)= failip
176 IF (is_encrypted)
THEN
177 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
180 WRITE(iout,500) mat_id,irupt,fail_id
186 WRITE(iout, 1000)d1,d2,d3,d4,d5,epsf_min,failip
187 IF (ifail_sh == 1)
THEN
189 ELSEIF(ifail_sh == 2)
THEN
193 WRITE(iout, 1010)d1,d2,d3,d4,d5,ixfem,dadv,epsf_min
202 ELSEIF (isolid == 2)
THEN
204 ELSEIF (isolid == 3)
THEN
206 ELSEIF (isolid == 4)
THEN
212 CALL ancmsg(msgid=831, msgtype=msgwarning, anmode=aninfo,
218 & 5x,
'MAT_ID . . . . . . . . . . . . . . .=',i10/
219 & 5x,'failure model. . . . . . . . . . . .=
',I10/
220 & 5X,'fail_id. . . . . . . . . . . . . . .=
',I10/)
222 & 5X,' ----------------------------------------------------
',/
223 & 5X,' failure criterion : johnson-cook
',/,
224 & 5X,' ----------------------------------------------------
',/
225 & 5X,'first failure parameter(d1). . . . . . . . . . . . . .=
',1PG20.13/
226 & 5X,'second failure parameter(d2). . . . . . . . . . . . . .=
',1PG20.13/
227 & 5X,'third failure parameter(d3). . . . . . . . . . . . . .=
',1PG20.13/
228 & 5X,'forth failure parameter(d4). . . . . . . . . . . . . .=
',1PG20.13/
229 & 5X,'fifth failure parameter(d5). . . . . . . . . . . . . .=
',1PG20.13/
230 & 5X,'lower plastic strain at failure(epsf_min). . . . . . . =
',1PG20.13/
231 & 5X,'number of failed intg. points prior to elem deletion .=
',I10/)
233 & 5X,' shell element deletion after failure
')
235 & 5X,' solid element deletion after failure
')
238 & 5X,' stress tensor in shell layer set to zero after failure
')
240 & 5X,' shell element cracking after failure
')
242 & 5X,' deviatoric stress tensor in solid will vanish after failure
')
244 & 5X,' deviatoric stress tensor in solid will vanish after failure
',/,
245 & 5X,' pressure can still be positive or null
')
247 & 5X,' the stress tensor in solid will vanish after failure
')
250 & 5X,' ----------------------------------------------------
',/
251 & 5X,' failure criterion : x-fem johnson-cook
',/,
252 & 5X,' ----------------------------------------------------
',/
253 & 5X,'first failure parameter(d1). . . . . . . . . . . . . .=
',1PG20.13/
254 & 5X,'second failure parameter(d2). . . . . . . . . . . . . .=
',1PG20.13/
255 & 5X,'third failure parameter(d3). . . . . . . . . . . . . .=
',1PG20.13/
256 & 5X,'forth failure parameter(d4). . . . . . . . . . . . . .=
',1PG20.13/
257 & 5X,'fifth failure parameter(d5). . . . . . . . . . . . . .=
',1PG20.13/
258 & 5X,'flag xfem. . . . . . . . . . . . . . . . . . . . . . . .=
',I10/
259 & 5X,'critical advancement
VALUE . . . . . . . . . . . . . . .=
',1PG20.13/
260 & 5X,'lower plastic strain at failure(epsf_min). . . . . . . =
',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)