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,UNIT_T,DADV,PTHKF,EPSF_MIN
75 my_real triax,epsf,depsf_dtriax
76 LOGICAL :: ,IS_ENCRYPTED
78 is_encrypted = .false.
79 is_available = .false.
88 CALL HM_GET_FLOATV ('d2
' ,D2 ,IS_AVAILABLE,LSUBMODEL,UNITAB)
89 CALL HM_GET_FLOATV ('d3
' ,D3 ,IS_AVAILABLE,LSUBMODEL,UNITAB)
90 CALL HM_GET_FLOATV ('d4
' ,D4 ,IS_AVAILABLE,LSUBMODEL,UNITAB)
91 CALL HM_GET_FLOATV ('d5
' ,D5 ,IS_AVAILABLE,LSUBMODEL,UNITAB)
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
101 ! CHECK COMPATIBILITY WITH MATERIAL LAW
103 CALL ANCMSG(MSGID=3001, MSGTYPE=MSGWARNING, ANMODE=ANINFO_BLIND,
108 ! Check the Johnson-Cook Failure criterion
110 EPSF = D1 + D2*EXP(D3*TRIAX)
111 ! -> Check if criterion reaches negative values
112.AND.
IF ((EPSF <= ZERO)(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)
120 ! -> Print warning message
121.AND..AND.
IF ((ABS(EPSF) < EM06) (TRIAX < ONE) (TRIAX > -ONE)) THEN
122 CALL ANCMSG(MSGID=3058,
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.AND.
IF (IXFEM /= 1 IXFEM /= 2) IXFEM = 0
135 IF (IXFEM > 0) ISOLID = 0
136.OR.
IF (DADV == ZERO 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
168 FAIL%UPARAM(9) = 0 ! not used
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
199 IF (IXFEM == 0) THEN ! XFEM is not available for solids
202 ELSEIF (ISOLID == 2) THEN
204 ELSEIF (ISOLID == 3) THEN
206 ELSEIF (ISOLID == 4) THEN
212 CALL ANCMSG(MSGID=831, MSGTYPE=MSGWARNING, ANMODE=ANINFO,
215 ENDIF ! IF (IS_ENCRYPTED)
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 &
' ---------------------------------------------------- ',/
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 hm_read_fail(mat_param, nummat, maxfail, fail_tag, ntable, table, failwave, nloc_dmg, unitab, lsubmodel)
subroutine hm_read_fail_johnson(fail, mat_id, fail_id, ilaw, irupt, ixfem, titr, lsubmodel, unitab)