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
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)
92 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
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)
103 CALL hm_get_floatv (
'EXP' ,expo ,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)
111 CALL hm_get_floatv (
'SR_REF1' ,sr_ref1 ,is_available,lsubmodel,unitab)
112 CALL hm_get_floatv (
'FSCALE_EL' ,fscale_el ,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
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 IF (itab_epsf == 0 .AND. 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 IF ((itab_inst > 0).AND.(
ecrit == zero))
ecrit = one
138 IF ((ifun_exp > 0).AND.(exp_ref == zero))
THEN
140 exp_ref = one*length_unit
142 IF (expo == zero) expo = one
143 IF (temp_ref == zero)
THEN
145 temp_ref = one*temp_unit
147 IF (fscale_temp == zero) fscale_temp = one
148 IF (ireg == 0) ireg = 1
149 IF ((itab_size > 0).AND.(el_ref == zero))
THEN
151 el_ref = one*length_unit
153 IF ((ireg == 1).AND.(itab_size > 0).AND.(sr_ref1 == zero))
THEN
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 IF (((ifun_rate > 0).OR.(cjc > zero)).AND.(sr_ref2 == zero))
THEN
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
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
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
254 IF (ifun_exp > 0)
THEN
255 WRITE(iout,1009) ifun_exp,exp_ref,expo
257 WRITE(iout,1010) expo
260 IF (ifun_temp > 0)
THEN
262 WRITE(iout,1021) ifun_temp,temp_ref,fscale_temp
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
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
282 IF (ifun_dlim > 0)
THEN
284 WRITE(iout,1018) ifun_dlim,fscale_dlim
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 . . . . . . . . . . . . . . =',1pg20.13/)
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 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)