40 . MAT_ID ,FAIL_ID ,IRUPT ,IXFEM ,
58#include "implicit_f.inc"
66 INTEGER ,
INTENT(IN) :: FAIL_ID
67 INTEGER ,
INTENT(IN) :: MAT_ID
68 INTEGER ,
INTENT(IN) :: IRUPT
69 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
70 TYPE (SUBMODEL_DATA),
INTENT(IN) :: LSUBMODEL(*)
71 INTEGER ,
INTENT(INOUT) :: IXFEM
72 TYPE (FAIL_PARAM_) ,
INTENT(INOUT) :: FAIL
76 INTEGER :: IFAIL_SH,ISOLID,DMG_FLAG,INST_FLAG,
77 . IFUN_DMG,ITAB_EPSF,ITAB_INST,IFUN_SIZE,IFUN_TEMP
78 my_real :: p_thick,pthkf,p_thinnfail,scale_temp,scale_el,el_ref,
79 . y1scale,x1scale,y2scale,x2scale,dcrit,dd,dn,dadv,
80 .
ecrit,fade_expo,fscal_unit,shrf,biaxf
82 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
94 is_encrypted = .false.
95 is_available = .false.
106 CALL hm_get_intv (
'Ifail_sh' ,ifail_sh ,is_available,lsubmodel)
107 CALL hm_get_intv (
'Ifail_so' ,isolid ,is_available,lsubmodel)
108 CALL hm_get_floatv (
'P_thickfail' ,p_thick ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv (
'P_thinfail' ,p_thinnfail ,is_available,lsubmodel,unitab)
110 CALL hm_get_intv (
'Ixfem' ,ixfem ,is_available,lsubmodel)
112 CALL hm_get_floatv (
'Dcrit' ,dcrit ,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv (
'Dadv' ,dadv ,is_available,lsubmodel,unitab)
116 CALL hm_get_intv (
'fct_IDd' ,ifun_dmg ,is_available,lsubmodel)
118 CALL hm_get_intv (
'table1_ID' ,itab_epsf ,is_available,lsubmodel)
119 CALL hm_get_floatv (
'Xscale1' ,y1scale ,is_available,lsubmodel,unitab)
120 CALL hm_get_floatv (
'Xscale2' ,x1scale ,is_available,lsubmodel,unitab)
121 CALL hm_get_intv (
'table2_ID' ,itab_inst ,is_available,lsubmodel)
122 CALL hm_get_floatv (
'Xscale3' ,y2scale ,is_available,lsubmodel,unitab)
123 CALL hm_get_floatv (
'Xscale4' ,x2scale ,is_available,lsubmodel,unitab)
125 CALL hm_get_intv (
'fct_IDel' ,ifun_size ,is_available,lsubmodel)
126 CALL hm_get_floatv (
'Fscale_el' ,scale_el ,is_available,lsubmodel
130 CALL hm_get_intv (
'Ch_i_f' ,inst_flag ,is_available,lsubmodel)
133 CALL hm_get_floatv (
'FscaleT' ,scale_temp ,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv (
'Shear_limit' ,shrf ,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv (
'Biax_limit' ,biaxf ,is_available,lsubmodel,unitab)
138 IF (itab_epsf == 0)
THEN
139 CALL ancmsg(msgid=2068, msgtype=msgerror, anmode=aninfo_blind,
145 IF (dcrit == zero) dcrit = one
146 IF (dadv == zero) dadv = dcrit
147 IF (dadv > dcrit)
THEN
149 CALL ancmsg(msgid=974, msgtype=msgwarning, anmode=aninfo,
152 IF (dd == one ) dd = 0.999
153 IF (itab_inst > 0)
THEN
155 ELSEIF (
ecrit == zero)
THEN
158 IF (dn == zero) dn = one
159 IF (ifail_sh == 0) ifail_sh = 1
160 IF (isolid == 0) isolid = 1
161 IF (ixfem /= 1 .AND. ixfem /= 2) ixfem = 0
162 IF (ixfem > 0) isolid = 0
163 IF (y1scale == zero) y1scale = one
164 IF (y2scale == zero) y2scale = one
165 IF (scale_el == zero) scale_el = one
166 IF (scale_temp == zero) scale_temp = one
167 IF (shrf == zero) shrf =-one
168 IF (biaxf == zero) biaxf = one
170 IF (fade_expo > zero .or.
ecrit /= zero)
THEN
175 IF (inst_flag == 0 .OR. inst_flag > 3) inst_flag = 1
176 IF (p_thick == one ) p_thick = p_thick - em06
177 IF (p_thick == zero) p_thick = one-em06
178 p_thick =
min(p_thick, one)
179 p_thick =
max(p_thick,-one)
181 IF (p_thick > zero .and. ifail_sh > 1)
THEN
183 ELSEIF (ifail_sh == 1)
THEN
185 ELSEIF (ifail_sh == 2)
THEN
190 IF (x1scale == zero) x1scale
193 IF (x2scale == zero) x2scale = one*fscal_unit
196 IF (el_ref == zero) el_ref = one*fscal_unit
198 fail%KEYWORD =
'TAB1'
200 fail%FAIL_ID = fail_id
209 ALLOCATE (fail%UPARAM(fail%NUPARAM))
210 ALLOCATE (fail%IPARAM(fail%NIPARAM))
211 ALLOCATE (fail%IFUNC (fail%NFUNC))
212 ALLOCATE (fail%TABLE (fail%NTABLE))
214 fail%UPARAM(1) = isolid
215 fail%UPARAM(2) = ifail_sh
217 fail%UPARAM(4) = dcrit
220 fail%UPARAM(7) = scale_temp
221 fail%UPARAM(8) = scale_el
222 fail%UPARAM(9) = el_ref
224 fail%UPARAM(11)= dadv
225 fail%UPARAM(12)= y1scale
226 fail%UPARAM(13)= one / x1scale
227 fail%UPARAM(14)= y2scale
228 fail%UPARAM(15)= one / x2scale
229 fail%UPARAM(16)= p_thinnfail
230 fail%UPARAM(17)=
ecrit
231 fail%UPARAM(18)= fade_expo
232 fail%UPARAM(19)= dmg_flag
233 fail%UPARAM(20)= inst_flag
234 fail%UPARAM(21)= shrf
235 fail%UPARAM(22)= biaxf
237 fail%TABLE(1) = itab_epsf
238 fail%TABLE(2) = itab_inst
239 fail%IFUNC(1) = ifun_size
240 fail%IFUNC(2) = ifun_temp
241 fail%IFUNC(3) = ifun_dmg
242 IF (fade_expo < zero)
THEN
243 fail%IFUNC(4) = int(abs(fade_expo))
248 IF (is_encrypted)
THEN
249 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
251 WRITE(iout,100) mat_id,irupt,fail_id
253 WRITE(iout, 1001) itab_epsf, y1scale, x1scale
254 IF (itab_inst /= 0)
THEN
255 WRITE(iout, 1002) itab_inst, y2scale, x2scale
257 IF (ixfem > 0)
WRITE(iout, 1003) ixfem,dadv
258 WRITE(iout, 1004) p_thick,p_thinnfail
259 IF (ifun_dmg > 0)
THEN
260 WRITE(iout, 1009) dcrit,ifun_dmg,
ecrit
262 WRITE(iout, 1005) dcrit,dd,dn,
ecrit
264 IF (fade_expo >= zero)
THEN
265 WRITE(iout, 1006) fade_expo
267 WRITE(iout, 1007) int(abs(fade_expo))
269 WRITE(iout, 1008) dmg_flag,
270 . ifun_temp,scale_temp,
271 . ifun_size,scale_el,el_ref,shrf,biaxf,inst_flag
272 WRITE(iout, 1008) dmg_flag,ifun_temp,scale_temp,ifun_size,scale_el,
273 . el_ref,shrf,biaxf,inst_flag
276 IF(ifail_sh == 1)
THEN
278 ELSEIF (ifail_sh == 2)
THEN
280 ELSEIF (ifail_sh == 3)
THEN
283 ELSE IF (ixfem == 1)
THEN
287 IF (isolid == 1)
THEN
289 ELSEIF(isolid == 2)
THEN
298 & 5x,
'MAT_ID . . . . . . . . . . . . . . .=',i10/
299 & 5x,
'FAILURE MODEL. . . . . . . . . . . .=',i10/
300 & 5x,
'FAIL_ID. . . . . . . . . . . . . . .='
302 & 5x,
'TABULATED FAILURE CRITERIA WITH DAMAGE',//,
303 & 5x,
'STRAIN TABLE ID . . . . . . . . . . . . . . . . . . .=',i10/
304 & 5x,
' SCALE FACTOR FOR FAILURE STRAIN . . . . . . . . .=',1pg20.13/
305 & 5x,
' STRAIN RATE FACTOR FOR FAILURE STRAIN . . . . . .=',1pg20.13)
307 & 5x,
'NECKING TABLE ID . . . . . . . . . . . . . . . .=',i10/
308 & 5x,
' SCALE FACTOR FOR NECKING STRAIN. . . . . . . . .=',1pg20.13/
309 & 5x,
' STRAIN RATE FACTOR FOR NECKING STRAIN. . . . . .=',1pg20.13)
311 & 5x,
'FLAG XFEM. . . . . . . .. . . . . . . . . . . . . . .=',i10/
312 & 5x,
' XFEM ADVANCEMENT SOFTENING FACTOR. . . . . . . .=',1pg20.13)
314 & 5x,
'SHELL ELEMENT DELETION PARAMETER PTHICKFAIL . . . . .=',1pg20.13,/,
315 & 5x,
' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
316 & 5x,
' < 0.0 : FRACTION OF FAILED INTG. POINTS OR LAYERS',/,
317 & 5x,
'SHELL FAILURE DUE TO THINNING . . . . . . . . . . . .=',1pg20.13)
319 & 5x,
'CRITICAL DAMAGE VALUE . . . . . . . . . . . . . . . .=',1pg20.13/
320 & 5x,
'DAMAGE PARAMETER D. . . . . . . . . . . . . . . . . .=',1pg20.13/
321 & 5x,
'DAMAGE PARAMETER N. . . . . . . . . . . . . . . . . .='
322 & 5x,
'INSTABILITY STRAIN. . . . . . . . . . . . . . . . . .=',1pg20.13)
324 & 5x,
'CRITICAL DAMAGE VALUE . . . . . . . . . . . . . . . .=',1pg20.13/
325 & 5x,
'DAMAGE EVOLUTION FUNCTION . . . . . . . . . . . . . .=',i10/
326 & 5x,
'INSTABILITY STRAIN. . . . . . . . . . . . . . . . . .=',1pg20.13)
328 & 5x,
'FADE PARAMETER. . . . . . . . . . . . . . . . . . . .=',1pg20
330 & 5x,
'FADE FUNCTION . . . . . . . . . . . . . . . . . . . .=',i10)
332 & 5x,
'DAMAGE FLAG . . . . . . . . . . . . . . . . . . . . .=',i10/
333 & 5x,
'TEMPERATURE SCALE FUNCTION. . . . . . . . . . . . . .=',i10/
334 & 5x,
'SCALE FACTOR OF TEMPERATURE FUNCTION. . . . . . . . .=',1pg20.13/
335 & 5x,
'ELEMENT LENGTH FUNCTION . . . . . . . . . . . . . . .=',i10/
336 & 5x,
'SCALE FACTOR OF LENGTH FUNCTION . . . . . . . . . . .=',1pg20.13/
337 & 5x,
'REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . .=',1pg20.13/
338 & 5x,
'SHEAR TRIAXIALITY LIMIT FOR ELEMENT SIZE SCALING. . .=',1pg20.13/
339 & 5x,
'BI-TRACT TRIAXIALITY LIMIT FOR ELEMENT SIZE SCALING .=',1pg20.13/
340 & 5x,
'REGULARIZATION FLAG . . . . . . . . . . . . . . . . .=',i10/
341 & 5x,
'FAILURE OPTION:')
343 & 5x,
' SHELL ELEMENT DELETION AFTER FAILURE OF ONE LAYER')
345 & 5x,
' STRESS TENSOR IN SHELL LAYER SET TO ZERO AFTER FAILURE')
347 & 5x,
' SHELL ELEMENT DELETION AFTER FAILURE OF ALL LAYERS')
349 & 5x,
' SHELL ELEMENT CRACKING AFTER FAILURE')
351 & 5x,
' SOLID ELEMENT DELETION AFTER FAILURE')
353 & 5x,
' DEVIATORIC STRESS IN SOLID WILL VANISH AFTER FAILURE')
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)
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)