39 . MAT_ID ,FAIL_ID ,IRUPT ,TITR ,
53#include
"implicit_f.inc"
62 INTEGER ,
INTENT(IN) :: FAIL_ID
63 INTEGER ,
INTENT(IN) :: MAT_ID
64 INTEGER ,
INTENT(IN) :: IRUPT
65 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: TITR
68 TYPE (FAIL_PARAM_) ,
INTENT(INOUT) :: FAIL
72 INTEGER :: ITAB_EPSF,FAILIP,ITAB_INST,
73 . IFUN_EXP,ITAB_SIZE,IREG,IFUN_RATE,IFUN_DLIM,IFUN_TEMP
74 my_real :: fcrit,pthkfail,dn,dcrit,
ecrit,exp_ref,expo,el_ref,sr_ref1,
75 . fscale_el,shrf,biaxf,sr_ref2,fscale_sr,cjc,fscale_dlim,
76 . length_unit,rate_unit,temp_ref,fscale_temp,temp_unit,volfrac
78 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
80 is_encrypted = .false.
81 is_available = .false.
90 CALL hm_get_intv (
'EPSF_ID' ,itab_epsf ,is_available,lsubmodel)
91 CALL hm_get_floatv (
'FCRIT' ,fcrit ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv (
'PTHK' ,pthkfail ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv (
'VOLFRAC' ,volfrac ,is_available,lsubmodel,unitab)
97 CALL hm_get_floatv (
'DCRIT' ,dcrit ,is_available,lsubmodel,unitab)
98 CALL hm_get_intv (
'INST_ID' ,itab_inst ,is_available,lsubmodel)
101 CALL hm_get_intv (
'FCT_EXP' ,ifun_exp ,is_available,lsubmodel)
102 CALL hm_get_floatv (
'EXP_REF' ,exp_ref ,is_available,lsubmodel,unitab)
104 CALL hm_get_intv (
'FCT_TEMP' ,ifun_temp ,is_available,lsubmodel)
105 CALL hm_get_floatv (
'TEMP_REF' ,temp_ref ,is_available,lsubmodel,unitab)
106 CALL hm_get_floatv (
'FSCALE_TEMP' ,fscale_temp ,is_available,lsubmodel,unitab)
108 CALL hm_get_intv (
'TAB_EL' ,itab_size ,is_available,lsubmodel)
109 CALL hm_get_intv (
'IREG' ,ireg ,is_available,lsubmodel)
110 CALL hm_get_floatv (
'EL_REF' ,el_ref ,is_available,lsubmodel,unitab)
112 CALL hm_get_floatv (
'FSCALE_EL' ,fscale_el ,is_available,lsubmodel,unitab)
114 CALL hm_get_floatv (
'SHRF' ,shrf ,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv (
'BIAXF' ,biaxf ,is_available,lsubmodel,unitab)
117 CALL hm_get_intv (
'FCT_SR' ,ifun_rate ,is_available,lsubmodel)
118 CALL hm_get_floatv (
'SR_REF2' ,sr_ref2 ,is_available,lsubmodel,unitab)
119 CALL hm_get_floatv (
'FSCALE_SR' ,fscale_sr ,is_available,lsubmodel,unitab)
120 CALL hm_get_floatv (
'CJC' ,cjc ,is_available,lsubmodel,unitab)
122 CALL hm_get_intv ('fct_dlim
' ,IFUN_DLIM ,IS_AVAILABLE,LSUBMODEL)
123 CALL HM_GET_FLOATV ('fscale_dlim
' ,FSCALE_DLIM ,IS_AVAILABLE,LSUBMODEL,UNITAB)
127.AND.
IF (ITAB_EPSF == 0 FCRIT == ZERO) THEN
128 CALL ANCMSG(MSGID=3000, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND,
132 IF (FCRIT == ZERO) FCRIT = ONE
133 IF (FAILIP == 0) FAILIP = 1
134 IF (DN <= ZERO) DN = ONE
135 IF (DCRIT > ONE) DCRIT = ONE
136 IF (DCRIT < ZERO) DCRIT = ZERO
137.AND.
IF ((ITAB_INST > 0)(ECRIT == ZERO)) ECRIT = ONE
138.AND.
IF ((IFUN_EXP > 0)(EXP_REF == ZERO)) THEN
139 CALL HM_GET_FLOATV_DIM('exp_ref
' ,LENGTH_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
140 EXP_REF = ONE*LENGTH_UNIT
142 IF (EXPO == ZERO) EXPO = ONE
143 IF (TEMP_REF == ZERO) THEN
144 CALL HM_GET_FLOATV_DIM('temp_ref
' ,TEMP_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
145 TEMP_REF = ONE*TEMP_UNIT
147 IF (FSCALE_TEMP == ZERO) FSCALE_TEMP = ONE
148 IF (IREG == 0) IREG = 1
149.AND.
IF ((ITAB_SIZE > 0)(EL_REF == ZERO)) THEN
150 CALL HM_GET_FLOATV_DIM('el_ref
' ,LENGTH_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
151 EL_REF = ONE*LENGTH_UNIT
153.AND..AND.
IF ((IREG == 1)(ITAB_SIZE > 0)(SR_REF1 == ZERO)) THEN
154 CALL HM_GET_FLOATV_DIM('sr_ref1
' ,RATE_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
155 SR_REF1 = ONE*RATE_UNIT
157 IF (FSCALE_EL == ZERO) FSCALE_EL = ONE
158 IF (SHRF == ZERO) SHRF = -ONE
159 IF (BIAXF == ZERO) BIAXF = ONE
160.OR..AND.
IF (((IFUN_RATE > 0)(CJC > ZERO))(SR_REF2 == ZERO)) THEN
161 CALL HM_GET_FLOATV_DIM('sr_ref2
' ,RATE_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
162 SR_REF2 = ONE*RATE_UNIT
164 IF (FSCALE_SR == ZERO) FSCALE_SR = ONE
165 IF (FSCALE_DLIM == ZERO) FSCALE_DLIM = ONE
166 IF (PTHKFAIL == ZERO) PTHKFAIL = EM06
167 PTHKFAIL = MIN(PTHKFAIL, ONE)
168 PTHKFAIL = MAX(PTHKFAIL,-ONE)
170 VOLFRAC = MIN(VOLFRAC,ONE)
171 VOLFRAC = MAX(VOLFRAC,ZERO)
173 IF (VOLFRAC > ZERO) THEN
174 CALL ANCMSG(MSGID=3080, MSGTYPE=MSGINFO, ANMODE=ANINFO_BLIND,
182 FAIL%KEYWORD = 'tab2
'
184 FAIL%FAIL_ID = FAIL_ID
193 ALLOCATE (FAIL%UPARAM(FAIL%NUPARAM))
194 ALLOCATE (FAIL%IPARAM(FAIL%NIPARAM))
195 ALLOCATE (FAIL%IFUNC (FAIL%NFUNC))
196 ALLOCATE (FAIL%TABLE (FAIL%NTABLE))
198 FAIL%UPARAM(1) = FCRIT
199 FAIL%UPARAM(2) = FAILIP
200 FAIL%UPARAM(3) = PTHKFAIL
202 FAIL%UPARAM(5) = DCRIT
203 FAIL%UPARAM(6) = ECRIT
204 FAIL%UPARAM(7) = EXP_REF
205 FAIL%UPARAM(8) = EXPO
206 FAIL%UPARAM(9) = IREG
207 FAIL%UPARAM(10) = EL_REF
208 FAIL%UPARAM(11) = SR_REF1
209 FAIL%UPARAM(12) = FSCALE_EL
210 FAIL%UPARAM(13) = SHRF
211 FAIL%UPARAM(14) = BIAXF
212 FAIL%UPARAM(15) = SR_REF2
213 FAIL%UPARAM(16) = FSCALE_SR
214 FAIL%UPARAM(17) = CJC
215 FAIL%UPARAM(18) = FSCALE_DLIM
216 FAIL%UPARAM(19) = TEMP_REF
217 FAIL%UPARAM(20) = FSCALE_TEMP
218 FAIL%UPARAM(21) = 0 ! Flag 1 for logarithmic scale in strain rate dependency
219 FAIL%UPARAM(22) = 0 ! Flag 2 for logarithmic scale in strain rate dependency
220 FAIL%UPARAM(23) = VOLFRAC
222 FAIL%IFUNC(1) = IFUN_EXP
223 FAIL%IFUNC(2) = IFUN_RATE
224 FAIL%IFUNC(3) = IFUN_DLIM
225 FAIL%IFUNC(4) = IFUN_TEMP
227 FAIL%TABLE(1) = ITAB_EPSF
228 FAIL%TABLE(2) = ITAB_INST
229 FAIL%TABLE(3) = ITAB_SIZE
231 IF (IS_ENCRYPTED)THEN
232 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
237 IF (ITAB_EPSF > 0) THEN
238 WRITE(IOUT,1001) ITAB_EPSF,FCRIT
240 WRITE(IOUT,1002) FCRIT
243 ! Necking control definition
245 IF (ITAB_INST > 0) THEN
246 WRITE(IOUT,1005) ITAB_INST,ECRIT
247 ELSEIF (ECRIT > ZERO) THEN
248 WRITE(IOUT,1006) ECRIT
250 WRITE(IOUT,1007) DCRIT
252 ! Fading exponent definition
254 IF (IFUN_EXP > 0) THEN
255 WRITE(IOUT,1009) IFUN_EXP,EXP_REF,EXPO
257 WRITE(IOUT,1010) EXPO
259 ! Temperature scaling definition
260 IF (IFUN_TEMP > 0) THEN
262 WRITE(IOUT,1021) IFUN_TEMP,TEMP_REF,FSCALE_TEMP
264 ! Element size scaling definition
265 IF (ITAB_SIZE > 0) THEN
266 WRITE(IOUT,1011) IREG
268 WRITE(IOUT,1012) ITAB_SIZE,EL_REF,SR_REF1,FSCALE_EL,SHRF,BIAXF
269 ELSEIF(IREG == 2) THEN
270 WRITE(IOUT,1013) ITAB_SIZE,EL_REF,FSCALE_EL
273 ! Strain rate scaling definition
274 IF (IFUN_RATE > 0) THEN
276 WRITE(IOUT,1015) IFUN_RATE,SR_REF2,FSCALE_SR
277 ELSEIF (CJC > ZERO) THEN
279 WRITE(IOUT,1016) SR_REF2,CJC
281 ! Damage limit definition
282 IF (IFUN_DLIM > 0) THEN
284 WRITE(IOUT,1018) IFUN_DLIM,FSCALE_DLIM
286 ! Element deletion control parameters
287 WRITE(IOUT,1019) FAILIP,PTHKFAIL,VOLFRAC
292 & 5X,' --------------------------------------------------------
',/,
293 & 5X,' tabulated failure criterion version 2
',/,
294 & 5X,' --------------------------------------------------------
',/,
296 & 5X,'failure definition:
',/,
297 & 5X,'-------------------
',/)
299 & 5X,'failure plastic strain table
id . . . . . . . . . . . . =
',I10/,
300 & 5X,' scale factor
for failure plastic strain table . . . =
',1PG20.13/)
302 & 5X,'critical failure plastic strain fcrit . . . . . . . . . =
',1PG20.13/)
304 & 5X,'damage evolution exponent n . . . . . . . . . . . .
307 & 5x,
'NECKING CONTROL DEFINITION: ',/,
308 & 5x,
'--------------------------- ',/)
310 & 5x,
'NECKING PLASTIC STRAIN TABLE ID . . . . . . . . . . . . =',i10
311 & 5x,
' SCALE FACTOR FOR NECKING PLASTIC STRAIN . . . . . . =',1pg20.13/)
313 & 5x,
'CRITICAL NECKING PLASTIC STRAIN VALUE ECRIT . . . . . . =',1pg20.13/)
315 & 5x,
'CRITICAL DAMAGE VALUE DCRIT . . . . . . . . . . . . . . =',1pg20.13/)
318 & 5x,
'STRESS SOFTENING EXPONENT DEFINITION: ',/,
319 & 5x,
'------------------------------------- ',/)
321 & 5x,
'SOFTENING EXPONENT FUNCTION ID. . . . . . . . . . . . . =',i10/,
322 & 5x,
' REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . =',1pg20.13/
323 & 5x,
' SCALE FACTOR FOR SOFTENING EXPONENT FUNCTION . . . =',1pg20.13/)
325 & 5x,
'STRESS SOFTENING EXPONENT EXPO. . . . . . . . . . . . . =',1pg20.13/)
328 & 5x,
'ELEMENT SIZE SCALING DEFINITION: ',/,
329 & 5x,
'-------------------------------- ',/,
330 & 5x,
'ELEMENT SIZE SCALING FLAG . . . . . . . . . . . . . . . =',i10/,
331 & 5x,
' IREG = 1: FACTOR VS EL. LENGTH (VS STRAIN RATE) '
332 & 5x,
' IREG = 2: FACTOR VS EL. LENGTH (VS TRIAXIALITY) ',/)
334 & 5x,
'ELEMENT SIZE SCALING TABLE ID . . . . . . . . . . . . . =',i10/,
335 & 5x,
' REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . =',1pg20.13/,
336 & 5x,
' REFERENCE STRAIN RATE . . . . . . . . . . . . . . . =',1pg20.13/,
337 & 5x,
' SCALE FACTOR FOR SIZE SCALING . . . . . . . . . . . =',1pg20.13/,
338 & 5x,
'TRIAXIALITY LOWER BOUNDARY FOR SIZE SCALING . . . . . . =',1pg20.13/,
339 & 5x,
'TRIAXIALITY UPPER BOUNDARY FOR SIZE SCALING . . . . . . =',1pg20.13/)
341 & 5x,
'ELEMENT SIZE SCALING TABLE ID . . . . . . . . . . . . . =',i10/,
342 & 5x,
' SCALE FACTOR FOR SIZE SCALING . . . . . . . . . . . =',1pg20.13/,
343 & 5x,
' REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . =',1pg20.13/)
346 & 5x,
'STRAIN RATE SCALING DEFINITION: ',/,
347 & 5x,
'------------------------------- ',/)
349 & 5x,
'STRAIN RATE SCALING FUNCTION . . . . . . . . . . . . . =',i10/,
350 & 5x,' reference strain rate . . . . . . . . . . . . . . . =
',1PG20.13/,
351 & 5X,' strain rate dependency scale factor . . . . . . . . =
',1PG20.13/)
353 & 5X,'johnson-cook strain rate scaling
',/,
354 & 5X,' reference strain rate . . . . . . . . . . . . . . . =
',1PG20.13/,
355 & 5X,' johnson-cook strain rate factor . . . . . . . . . . =
',1PG20.13/)
358 & 5X,'damage limit definition:
',/,
359 & 5X,'------------------------
',/)
361 & 5X,'damage limit
FUNCTION . . . . . . . . . . . . . . . . . =
',I10/,
362 & 5X,' scale factor
for damage limit function . . . . . . =
',1PG20.13/)
365 & 5X,'element deletion parameters:
',/,
366 & 5X,'----------------------------
',/,
367 & 5X,'number of failed intg. points prior to solid deletion . =
',I10/,
368 & 5X,'shell element deletion parameter pthickfail . . . . . .=
',1PG20.13,/,
369 & 5X,' > 0.0 : fraction of failed thickness
',/,
370 & 5X,' < 0.0 : fraction of failed intg. points or layers
',/,
371 & 5X,'failed volume fraction prior to solid deletion . . . . =
',1PG20.13/)
374 & 5X,'temperature scaling definition:
',/,
375 & 5X,'-------------------------------
',/)
377 & 5X,'temperature scaling function . . . . . . . . . . . . . =
',I10/,
378 & 5X,' reference temperature . . . . . . . . . . . . . . . =
',1PG20.13/,
379 & 5X,' temperature dependency scale factor . . . . . . . . =
',1PG20.13/)
381 & 5X,' --------------------------------------------------------
',/)
subroutine ecrit(timers, partsav, ms, v, in, r, dmas, weight, enintot, ekintot, a, ar, fxbipm, fxbrpm, monvol, xmom_sms, sensors, qfricint, ipari, weight_md, wfexth, iflag, ms_2d, multi_fvm, mas_nd, kend, h3d_data, dynain_data, usreint, output)