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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_fail_gurson (fail, mat_id, fail_id, irupt, nloc_mod, titr, lsubmodel, unitab)

Function/Subroutine Documentation

◆ hm_read_fail_gurson()

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

Definition at line 37 of file hm_read_fail_gurson.F.

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
#define my_real
Definition cppsort.cpp:32
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)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle