OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_tab2.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_read_fail_tab2 ../starter/source/materials/fail/tabulated/hm_read_fail_tab2.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_fail ../starter/source/materials/fail/hm_read_fail.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.F
31!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
32!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
33!||--- uses -----------------------------------------------------
34!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_fail_tab2(FAIL ,
39 . MAT_ID ,FAIL_ID ,IRUPT ,TITR ,
40 . LSUBMODEL,UNITAB )
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.AND. IF (ITAB_EPSF == 0 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.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
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.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
152 ENDIF
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
156 ENDIF
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
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-----------------------------------------------------------------------
383 END
#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_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_fail_tab2(fail, mat_id, fail_id, irupt, titr, lsubmodel, unitab)
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)
Definition tabulated.F:32