OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_gurson.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_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.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!||====================================================================
38 . FAIL ,MAT_ID ,FAIL_ID ,IRUPT ,NLOC_MOD ,
39 . TITR ,LSUBMODEL,UNITAB )
40C-----------------------------------------------
41c ROUTINE DESCRIPTION :
42c Read Gurson damage model parameters (irup = 35)
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
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C----------+---------+---+---+--------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "units_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER ,INTENT(IN) :: FAIL_ID ! failure model ID
65 INTEGER ,INTENT(IN) :: MAT_ID ! material law ID
66 INTEGER ,INTENT(IN) :: IRUPT ! failure model type number
67 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR ! material model title
68 TYPE(unit_type_) ,INTENT(IN) :: UNITAB ! table of input units
69 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*) ! submodel table
70 INTEGER ,INTENT(INOUT) :: NLOC_MOD ! non-local variable regularization flag
71 TYPE(fail_param_) ,INTENT(INOUT) :: FAIL ! failure model data structure
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER :: ILOC
76 my_real :: Q1,Q2,Q3,EPN,AS,KW,FC,FR,F0,RLEN,HKHI,LE_MAX
77 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
78C-----------------------------------------------
79C S o u r c e L i n e s
80C=======================================================================
81 is_encrypted = .false.
82 is_available = .false.
83
84 CALL hm_option_is_encrypted(is_encrypted)
85C--------------------------------------------------
86C EXTRACT DATAS (REAL VALUES)
87C--------------------------------------------------
88 ! Card 1
89 CALL hm_get_floatv ('FAIL_q1' ,q1 ,is_available,lsubmodel,unitab)
90 CALL hm_get_floatv ('FAIL_q2' ,q2 ,is_available,lsubmodel,unitab)
91 CALL hm_get_intv ('FAIL_Iloc' ,iloc ,is_available,lsubmodel)
92 ! Card 2
93 CALL hm_get_floatv ('FAIL_eps_strain',epn ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv ('FAIL_As' ,as ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv ('FAIL_Kw' ,kw ,is_available,lsubmodel,unitab)
96 ! Card 3
97 CALL hm_get_floatv ('FAIL_Fc' ,fc ,is_available,lsubmodel,unitab)
98 CALL hm_get_floatv ('FAIL_Fr' ,fr ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv ('FAIL_F0' ,f0 ,is_available,lsubmodel,unitab)
100 ! Card 4
101 CALL hm_get_floatv ('FAIL_RLen' ,rlen ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv ('FAIL_Hchi' ,hkhi ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv ('FAIL_Le_max' ,le_max ,is_available,lsubmodel,unitab)
104c-----------------------------------------------------------------------
105 ! Checking Gurson yield criterion parameters
106 IF (q1 == zero) q1 = three_half
107 IF (q2 == zero) q2 = one
108 q3 = q1**2
109 ! Checking value of nucleation function
110 IF (as == zero) THEN
111 ! No nucleation trigger
112 epn = infinity
113 ENDIF
114 ! Checking value of coalescence function
115 IF (fc == zero) fc = infinity
116 IF (fr == zero) fr = two*infinity
117 IF (fc >= fr) THEN
118 ! Error message
119 CALL ancmsg(msgid=1747,msgtype=msgerror,
120 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
121 ENDIF
122 IF (f0 >= fc) THEN
123 ! Warning message
124 CALL ancmsg(msgid=1748,msgtype=msgwarning,
125 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
126 ENDIF
127c
128 ! Choice of the non-local regularization method
129c ILOC = 1 => local damage : no plastic strain regularization (default)
130c ILOC = 2 => Forest (micromorphic) method of nodal variable regularization
131c ILOC = 3 => Peerlings method of nodal variable regularization
132 IF (iloc == 0) iloc = 1
133 nloc_mod = iloc-1
134c
135 ! Automatic Rlen computation
136 IF (le_max > zero) THEN
137 CALL get_length(rlen,le_max)
138 ! Or printout the maximum element length target for convergence
139 ELSE
140 CALL get_lemax(le_max,rlen)
141 ENDIF
142c
143 ! Micromorphic penalty parameter (homogeneous to a stress [MPa])
144 IF (iloc /= 2) THEN
145 hkhi = zero ! only used for micromorphic
146 ENDIF
147c-----------------------------------------------------------------------
148 fail%KEYWORD = 'GURSON'
149 fail%IRUPT = irupt
150 fail%FAIL_ID = fail_id
151 fail%NUPARAM = 12
152 fail%NIPARAM = 0
153 fail%NUVAR = 0
154 fail%NFUNC = 0
155 fail%NTABLE = 0
156 fail%NMOD = 0
157c
158 ALLOCATE (fail%UPARAM(fail%NUPARAM))
159 ALLOCATE (fail%IPARAM(fail%NIPARAM))
160 ALLOCATE (fail%IFUNC (fail%NFUNC))
161 ALLOCATE (fail%TABLE (fail%NTABLE))
162c
163 fail%UPARAM(1) = nloc_mod ! non-local variable regularization flag
164 fail%UPARAM(2) = q1 ! Gurson yield criterion 1st parameter
165 fail%UPARAM(3) = q2 ! Gurson yield criterion 2nd parameter
166 fail%UPARAM(4) = q3 ! Gurson yield criterion 3rd parameter
167 fail%UPARAM(5) = epn ! Trigger plastic strain for nucleation
168 fail%UPARAM(6) = as ! Nucleation rate
169 fail%UPARAM(7) = kw ! Nahshon-Hutchinson shear parameter
170 fail%UPARAM(8) = fr ! Failure void volume fraction
171 fail%UPARAM(9) = fc ! Critical void volume fraction
172 fail%UPARAM(10)= f0 ! initial void volume fraction
173 fail%UPARAM(11)= rlen ! Non-local internal length
174 fail%UPARAM(12)= hkhi ! Micromorphic penalty parameter
175c-----------------------------------------------------------------------
176 IF (is_encrypted) THEN
177 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
178 ELSE
179 WRITE(iout, 1100) q1,q2,epn,as,kw,f0,fc,fr,iloc
180 IF (iloc > 1) WRITE(iout, 1200) rlen,le_max
181 IF (iloc == 2) WRITE(iout, 1300) hkhi
182 ENDIF
183C-----------
184 RETURN
185C-----------
186 1100 FORMAT(
187 & 5x,40h gurson ductile damage model /,
188 & 5x,40h ------------------------------------ /,
189 & 5x,'Q1 GURSON COEFFICIENT. . . . . . . . . . . . . . . =',1pg20.13/
190 & 5x,'Q2 GURSON COEFFICIENT. . . . . . . . . . . . . . . =',1pg20.13/
191 & 5x,'NUCLEATION PLASTIC STRAIN. . . . . . . . . . . . . =',1pg20.13/
192 & 5x,'AS NUCLEATION SLOPE. . . . . . . . . . . . . . . . =',1pg20.13/
193 & 5x,'SHEAR DAMAGE COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/
194C
195 & 5x,'INITIAL VOID VOLUME FRACTION . . . . . . . . . . . =',1pg20.13/
196 & 5x,'CRITICAL VOID VOLUME FRACTION. . . . . . . . . . . =',1pg20.13/
197 & 5x,'RUPTURE VOID VOLUME FRACTION . . . . . . . . . . . =',1pg20.13/
198 & 5x,'NON LOCAL PLASTIC STRAIN REGULARIZATION FLAG . . . =',i3/
199 & 5x,' ILOC=1 LOCAL DAMAGE MODEL '/
200 & 5x,' ILOC=2 NON LOCAL MICROMORPHIC MODEL '/
201 & 5x,' ILOC=3 NON LOCAL PEERLING MODEL ')
202 1200 FORMAT(
203 & 5x,'NON-LOCAL REGULARIZATION LENGTH. . . . . . . . . . =',1pg20.13/
204 & 5x,'CONVERGENCE ELEMENT LENGTH TARGET. . . . . . . . . =',1pg20.13/)
205 1300 FORMAT(
206 & 5x,'PENALTY PARAMETER FOR NONLOCAL MICROMORPHIC METHOD =',1pg20.13/)
207C-----------
208 RETURN
209 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_gurson(fail, mat_id, fail_id, irupt, nloc_mod, titr, lsubmodel, unitab)
integer, parameter nchartitle
subroutine get_lemax(le_max, nloc_length)
subroutine get_length(nloc_length, le_max)
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
program starter
Definition starter.F:39