OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_tab2.F File Reference
#include "implicit_f.inc"
#include "com04_c.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_fail_tab2 (fail, mat_id, fail_id, irupt, titr, lsubmodel, unitab)

Function/Subroutine Documentation

◆ hm_read_fail_tab2()

subroutine hm_read_fail_tab2 ( type (fail_param_), intent(inout) fail,
integer, intent(in) mat_id,
integer, intent(in) fail_id,
integer, intent(in) irupt,
character(len=nchartitle), intent(in) titr,
type(submodel_data), dimension(*), intent(in) lsubmodel,
type(unit_type_), intent(in) unitab )

Definition at line 38 of file hm_read_fail_tab2.F.

41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE fail_param_mod
45 USE unitab_mod
46 USE message_mod
47 USE submodel_mod
50C-----------------------------------------------
51C I m p l i c i t T y p e s
52C-----------------------------------------------
53#include "implicit_f.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57#include "com04_c.inc"
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ,INTENT(IN) :: FAIL_ID ! failure model ID
63 INTEGER ,INTENT(IN) :: MAT_ID ! material law ID
64 INTEGER ,INTENT(IN) :: IRUPT ! failure model number
65 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
66 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB ! table of input units
67 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
68 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
69C-----------------------------------------------
70C L o c a l V a r i a b l e s
71C-----------------------------------------------
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
77C-----------------------------------------------
78 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
79C=======================================================================
80 is_encrypted = .false.
81 is_available = .false.
82C--------------------------------------------------
83C EXTRACT DATA (IS OPTION CRYPTED)
84C--------------------------------------------------
85 CALL hm_option_is_encrypted(is_encrypted)
86C--------------------------------------------------
87C EXTRACT INPUT DATA
88C--------------------------------------------------
89Card1
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)
95Card2
96 CALL hm_get_floatv ('N' ,dn ,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)
99 CALL hm_get_floatv ('ECRIT' ,ecrit ,is_available,lsubmodel,unitab)
100Card3
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)
107Card4
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)
113Card5
114 CALL hm_get_floatv ('SHRF' ,shrf ,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv ('BIAXF' ,biaxf ,is_available,lsubmodel,unitab)
116Card6
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)
121Card7
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)
124C--------------------------------------------------------------------------------
125C Setting default values
126C--------------------------------------------------------------------------------
127 IF (itab_epsf == 0 .AND. fcrit == zero) THEN
128 CALL ancmsg(msgid=3000, msgtype=msgerror, anmode=aninfo_blind,
129 . i1=mat_id,
130 . c1=titr)
131 ENDIF
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
139 CALL hm_get_floatv_dim('EXP_REF' ,length_unit,is_available, lsubmodel, unitab)
140 exp_ref = one*length_unit
141 ENDIF
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
146 ENDIF
147 IF (fscale_temp == zero) fscale_temp = one
148 IF (ireg == 0) ireg = 1
149 IF ((itab_size > 0).AND.(el_ref == zero)) THEN
150 CALL hm_get_floatv_dim('EL_REF' ,length_unit,is_available, lsubmodel, unitab)
151 el_ref = one*length_unit
152 ENDIF
153 IF ((ireg == 1).AND.(itab_size > 0).AND.(sr_ref1 == zero)) THEN
154 CALL hm_get_floatv_dim('SR_REF1' ,rate_unit,is_available, lsubmodel, unitab)
155 sr_ref1 = one*rate_unit
156 ENDIF
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
161 CALL hm_get_floatv_dim('SR_REF2' ,rate_unit,is_available, lsubmodel, unitab)
162 sr_ref2 = one*rate_unit
163 ENDIF
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)
169
170 volfrac = min(volfrac,one)
171 volfrac = max(volfrac,zero)
172
173 IF (volfrac > zero) THEN
174 CALL ancmsg(msgid=3080, msgtype=msginfo, anmode=aninfo_blind,
175 . i1=mat_id,
176 . c1=titr)
177 ENDIF
178
179C--------------------------------------------------------------------------------
180C Filling buffer tables
181C--------------------------------------------------------------------------------
182 fail%KEYWORD = 'TAB2'
183 fail%IRUPT = irupt
184 fail%FAIL_ID = fail_id
185 fail%NUPARAM = 23
186 fail%NIPARAM = 0
187 fail%NUVAR = 3
188 fail%NFUNC = 4
189 fail%NTABLE = 3
190 fail%NMOD = 0
191 fail%PTHK = pthkfail
192c
193 ALLOCATE (fail%UPARAM(fail%NUPARAM))
194 ALLOCATE (fail%IPARAM(fail%NIPARAM))
195 ALLOCATE (fail%IFUNC (fail%NFUNC))
196 ALLOCATE (fail%TABLE (fail%NTABLE))
197c
198 fail%UPARAM(1) = fcrit
199 fail%UPARAM(2) = failip
200 fail%UPARAM(3) = pthkfail
201 fail%UPARAM(4) = dn
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
221c
222 fail%IFUNC(1) = ifun_exp
223 fail%IFUNC(2) = ifun_rate
224 fail%IFUNC(3) = ifun_dlim
225 fail%IFUNC(4) = ifun_temp
226c
227 fail%TABLE(1) = itab_epsf
228 fail%TABLE(2) = itab_inst
229 fail%TABLE(3) = itab_size
230c-----------------------------------------------------------------------
231 IF (is_encrypted)THEN
232 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
233 ELSE
234 ! Title
235 WRITE(iout,1000)
236 ! Failure definition
237 IF (itab_epsf > 0) THEN
238 WRITE(iout,1001) itab_epsf,fcrit
239 ELSE
240 WRITE(iout,1002) fcrit
241 ENDIF
242 WRITE(iout,1003) dn
243 ! Necking control definition
244 WRITE(iout,1004)
245 IF (itab_inst > 0) THEN
246 WRITE(iout,1005) itab_inst,ecrit
247 ELSEIF (ecrit > zero) THEN
248 WRITE(iout,1006) ecrit
249 ELSE
250 WRITE(iout,1007) dcrit
251 ENDIF
252 ! Fading exponent definition
253 WRITE(iout,1008)
254 IF (ifun_exp > 0) THEN
255 WRITE(iout,1009) ifun_exp,exp_ref,expo
256 ELSE
257 WRITE(iout,1010) expo
258 ENDIF
259 ! Temperature scaling definition
260 IF (ifun_temp > 0) THEN
261 WRITE(iout,1020)
262 WRITE(iout,1021) ifun_temp,temp_ref,fscale_temp
263 ENDIF
264 ! Element size scaling definition
265 IF (itab_size > 0) THEN
266 WRITE(iout,1011) ireg
267 IF (ireg == 1) THEN
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
271 ENDIF
272 ENDIF
273 ! Strain rate scaling definition
274 IF (ifun_rate > 0) THEN
275 WRITE(iout,1014)
276 WRITE(iout,1015) ifun_rate,sr_ref2,fscale_sr
277 ELSEIF (cjc > zero) THEN
278 WRITE(iout,1014)
279 WRITE(iout,1016) sr_ref2,cjc
280 ENDIF
281 ! Damage limit definition
282 IF (ifun_dlim > 0) THEN
283 WRITE(iout,1017)
284 WRITE(iout,1018) ifun_dlim,fscale_dlim
285 ENDIF
286 ! Element deletion control parameters
287 WRITE(iout,1019) failip,pthkfail,volfrac
288 WRITE(iout,1022)
289 ENDIF ! IS_ENCRYPTED
290c-----------------------------------------------------------------------
291 1000 FORMAT(
292 & 5x,' --------------------------------------------------------',/,
293 & 5x,' TABULATED FAILURE CRITERION VERSION 2 ',/,
294 & 5x,' --------------------------------------------------------',/,
295 & 5x,' ',/,
296 & 5x,'FAILURE DEFINITION: ',/,
297 & 5x,'------------------- ',/)
298 1001 FORMAT(
299 & 5x,'FAILURE PLASTIC STRAIN TABLE ID . . . . . . . . . . . . =',i10/,
300 & 5x,' SCALE FACTOR FOR FAILURE PLASTIC STRAIN TABLE . . . =',1pg20.13/)
301 1002 FORMAT(
302 & 5x,'CRITICAL FAILURE PLASTIC STRAIN FCRIT . . . . . . . . . =',1pg20.13/)
303 1003 FORMAT(
304 & 5x,'DAMAGE EVOLUTION EXPONENT N . . . . . . . . . . . . . . =',1pg20.13/)
305 1004 FORMAT(
306 & 5x,' ',/,
307 & 5x,'NECKING CONTROL DEFINITION: ',/,
308 & 5x,'--------------------------- ',/)
309 1005 FORMAT(
310 & 5x,'NECKING PLASTIC STRAIN TABLE ID . . . . . . . . . . . . =',i10/,
311 & 5x,' SCALE FACTOR FOR NECKING PLASTIC STRAIN . . . . . . =',1pg20.13/)
312 1006 FORMAT(
313 & 5x,'CRITICAL NECKING PLASTIC STRAIN VALUE ECRIT . . . . . . =',1pg20.13/)
314 1007 FORMAT(
315 & 5x,'CRITICAL DAMAGE VALUE DCRIT . . . . . . . . . . . . . . =',1pg20.13/)
316 1008 FORMAT(
317 & 5x,' ',/,
318 & 5x,'STRESS SOFTENING EXPONENT DEFINITION: ',/,
319 & 5x,'------------------------------------- ',/)
320 1009 FORMAT(
321 & 5x,'SOFTENING EXPONENT FUNCTION ID. . . . . . . . . . . . . =',i10/,
322 & 5x,' REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . =',1pg20.13/
323 & 5x,' SCALE FACTOR FOR SOFTENING EXPONENT FUNCTION . . . =',1pg20.13/)
324 1010 FORMAT(
325 & 5x,'STRESS SOFTENING EXPONENT EXPO. . . . . . . . . . . . . =',1pg20.13/)
326 1011 FORMAT(
327 & 5x,' ',/,
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) ',/)
333 1012 FORMAT(
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/)
340 1013 FORMAT(
341 & 5x,'ELEMENT SIZE SCALING TABLE ID . . . . . . . . . . . . . =',i10/,
342 & 5x,' SCALE FACTOR FOR SIZE SCALING . . . . . . . . . . . =',1pg20.13/,
343 & 5x,' REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . . =',1pg20.13/)
344 1014 FORMAT(
345 & 5x,' ',/,
346 & 5x,'STRAIN RATE SCALING DEFINITION: ',/,
347 & 5x,'------------------------------- ',/)
348 1015 FORMAT(
349 & 5x,'STRAIN RATE SCALING FUNCTION . . . . . . . . . . . . . =',i10/,
350 & 5x,' REFERENCE STRAIN RATE . . . . . . . . . . . . . . . =',1pg20.13/,
351 & 5x,' STRAIN RATE DEPENDENCY SCALE FACTOR . . . . . . . . =',1pg20.13/)
352 1016 FORMAT(
353 & 5x,'JOHNSON-COOK STRAIN RATE SCALING ',/,
354 & 5x,' REFERENCE STRAIN RATE . . . . . . . . . . . . . . . =',1pg20.13/,
355 & 5x,' JOHNSON-COOK STRAIN RATE FACTOR . . . . . . . . . . =',1pg20.13/)
356 1017 FORMAT(
357 & 5x,' ',/,
358 & 5x,'DAMAGE LIMIT DEFINITION: ',/,
359 & 5x,'------------------------ ',/)
360 1018 FORMAT(
361 & 5x,'DAMAGE LIMIT FUNCTION . . . . . . . . . . . . . . . . . =',i10/,
362 & 5x,' SCALE FACTOR FOR DAMAGE LIMIT FUNCTION . . . . . . =',1pg20.13/)
363 1019 FORMAT(
364 & 5x,' ',/,
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/)
372 1020 FORMAT(
373 & 5x,' ',/,
374 & 5x,'TEMPERATURE SCALING DEFINITION: ',/,
375 & 5x,'------------------------------- ',/)
376 1021 FORMAT(
377 & 5x,'TEMPERATURE SCALING FUNCTION . . . . . . . . . . . . . =',i10/,
378 & 5x,' REFERENCE TEMPERATURE . . . . . . . . . . . . . . . =',1pg20.13/,
379 & 5x,' TEMPERATURE DEPENDENCY SCALE FACTOR . . . . . . . . =',1pg20.13/)
380 1022 FORMAT(
381 & 5x,' --------------------------------------------------------',/)
382c-----------------------------------------------------------------------
#define my_real
Definition cppsort.cpp:32
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)
Definition ecrit.F:52
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
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)
Definition message.F:889