OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_tbutcher.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_tbutcher ../starter/source/materials/fail/tuler_butcher/hm_read_fail_tbutcher.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_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
32!||--- uses -----------------------------------------------------
33!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
34!|| message_mod ../starter/share/message_module/message_mod.F
35!|| submodel_mod ../starter/share/modules1/submodel_mod.F
36!||====================================================================
37 SUBROUTINE hm_read_fail_tbutcher(FAIL ,
38 . MAT_ID ,FAIL_ID ,IRUPT ,IXFEM ,
39 . LSUBMODEL,UNITAB )
40C-----------------------------------------------
41c ROUTINE DESCRIPTION :
42c Read Tuler-Butcher failure model parameters
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE fail_param_mod
47 USE unitab_mod
48 USE message_mod
49 USE submodel_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
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 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB ! table of input units
66 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*) ! submodel table
67 INTEGER ,INTENT(INOUT) :: IXFEM ! XFEM activation flag
68 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL ! failure model data structure
69C-----------------------------------------------
70C L o c a l V a r i a b l e s
71C-----------------------------------------------
72 INTEGER :: IFAIL_SH,ISOLID,IBRIT
73 my_real :: TBA,TBK,SIGR,FAC_L,FAC_T,FAC_M,FAC_C,BRIT_B,BRIT_C,DADV,PTHKF
74 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
75C-----------------------------------------------
76C S o u r c e L i n e s
77C-----------------------------------------------
78 is_encrypted = .false.
79 is_available = .false.
80
81 CALL hm_option_is_encrypted(is_encrypted)
82C
83 CALL hm_get_floatv ('Lambda' ,tba ,is_available,lsubmodel,unitab)
84 CALL hm_get_floatv ('K' ,tbk ,is_available,lsubmodel,unitab)
85 CALL hm_get_floatv ('Sigma_r' ,sigr ,is_available,lsubmodel,unitab)
86 CALL hm_get_intv ('Ifail_sh' ,ifail_sh ,is_available,lsubmodel)
87 CALL hm_get_intv ('Ifail_so' ,isolid ,is_available,lsubmodel)
88 CALL hm_get_intv ('Iduct' ,ibrit ,is_available,lsubmodel)
89 CALL hm_get_intv ('Ixfem' ,ixfem ,is_available,lsubmodel)
90C
91 CALL hm_get_floatv ('a_TBUTCHER_XFEMTBUTC',brit_b ,is_available,lsubmodel,unitab)
92 CALL hm_get_floatv ('b_TBUTCHER_XFEMTBUTC',brit_c ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv ('Dadv' ,dadv ,is_available,lsubmodel,unitab)
94c-----------------------------------------------------------------------
95 IF (dadv == zero) dadv=zep85
96 IF (dadv > one) THEN
97 dadv = one
98 CALL ancmsg(msgid=1049, msgtype=msgwarning, anmode=aninfo,
99 . i1=mat_id)
100 ENDIF
101C
102 IF(ifail_sh==0)ifail_sh=1
103 IF(isolid==0)isolid= 1
104 IF(ibrit==0)ibrit= 1
105 IF(ixfem /= 1 .AND. ixfem /= 2)ixfem = 0
106 IF(ixfem > 0)isolid = 0
107 IF(ixfem == 0)ibrit = 0
108 IF(sigr <= zero)sigr=ep30
109 IF(tbk <= zero)tbk=ep30
110c
111 IF (ifail_sh == 1) THEN
112 pthkf = em06
113 ELSEIF (ifail_sh == 2) THEN
114 pthkf = one
115 ENDIF
116c---------------------------
117 fail%KEYWORD = 'TULER-BUTCHER'
118 fail%IRUPT = irupt
119 fail%FAIL_ID = fail_id
120 fail%NUPARAM = 10
121 fail%NIPARAM = 0
122 fail%NUVAR = 2
123 fail%NFUNC = 0
124 fail%NTABLE = 0
125 fail%NMOD = 0
126 fail%PTHK = pthkf
127c
128 ALLOCATE (fail%UPARAM(fail%NUPARAM))
129 ALLOCATE (fail%IPARAM(fail%NIPARAM))
130 ALLOCATE (fail%IFUNC (fail%NFUNC))
131 ALLOCATE (fail%TABLE (fail%NTABLE))
132c
133 fail%UPARAM(1) = tba
134 fail%UPARAM(2) = tbk
135 fail%UPARAM(3) = sigr
136 fail%UPARAM(4) = ifail_sh
137 fail%UPARAM(5) = isolid
138 fail%UPARAM(6) = ibrit
139 fail%UPARAM(7) = ixfem
140 fail%UPARAM(8) = brit_b
141 fail%UPARAM(9) = brit_c
142 fail%UPARAM(10)= dadv
143c---------------------------
144c OUTPUT
145c---------------------------
146 IF(is_encrypted)THEN
147 WRITE(iout,'(5x,a,//)')'confidential data'
148 ELSE
149C---
150C for shell
151C---
152 IF(IXFEM == 0)THEN
153 WRITE(IOUT, 1000)TBA,TBK,SIGR,IXFEM
154 IF(IFAIL_SH==1)THEN
155 WRITE(IOUT, 1100)
156 ELSEIF(IFAIL_SH==2)THEN
157 WRITE(IOUT, 1200)
158 ENDIF
159 ELSE
160 WRITE(IOUT, 1010)TBA,TBK,SIGR,IXFEM,IBRIT,BRIT_B,BRIT_C,DADV
161 WRITE(IOUT, 1400)
162 END IF
163C---
164C for solid
165C---
166 IF(IXFEM == 0)THEN ! XFEM yet not available for solids
167 IF(ISOLID==1)THEN
168 WRITE(IOUT, 2100)
169 ELSEIF(ISOLID==2)THEN
170 WRITE(IOUT, 2200)
171 ENDIF
172 END IF
173 ENDIF
174c-----------------------------------------------------------
175 1000 FORMAT(
176 & 5X,40H TULER BUTCHER DAMAGE PARAMETER /,
177 & 5X,40H ----------------------------- /,
178 & 5X,40HEXPONENT LAMBDA . . . . . . . . . . . .=,E12.4/,
179 & 5X,40HDAMAGE INTEGRAL K. . . . . . . . . . .=,E12.4/,
180 & 5X,40HFRACTURE STRESS . . . . . . . . . . . .=,E12.4/,
181 & 5X,40HXFEM FAILURE FLAG . . . . . . . . . . .=,I10//)
182 1100 FORMAT(
183 & 5X,' shell element deletion after failure')
184 2100 FORMAT(
185 & 5X,' solid element deletion after failure')
186 1200 FORMAT(
187 & 5X,' stress tensor in shell layer set to zero after failure')
188 1400 FORMAT(
189 & 5X,' shell element cracking after failure')
190 2200 FORMAT(
191 & 5X,' deviatoric stress in solid will vanish after failure')
192 1010 FORMAT(
193 & 5X,40H XFEM TULER BUTCHER DAMAGE PARAMETER /,
194 & 5X,40H ----------------------------- /,
195 & 5X,40HEXPONENT LAMBDA . . . . . . . . . . . .=,E12.4/,
196 & 5X,40HDAMAGE INTEGRAL K. . . . . . . . . . .=,E12.4/,
197 & 5X,40HFRACTURE STRESS . . . . . . . . . . . .=,E12.4/,
198 & 5X,40HXFEM FAILURE FLAG . . . . . . . . . . .=,I10/,
199 & 5X,40HDUCTILE/BRITTLE FAILURE FLAG . . . . .=,I10/,
200 & 5X,40HBRITTLE FRACTURE EXPONENT A . . . . . =,E12.4/,
201 & 5X,40HBRITTLE FRACTURE EXPONENT B . . . . . =,E12.4/,
202 & 5X,40HCRITICAL ADVANCEMENT COEFFICIENT . . . =,E12.4//)
203C-----------
204 RETURN
205 END
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_tbutcher(fail, mat_id, fail_id, irupt, ixfem, lsubmodel, unitab)
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