OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_cockroft_s.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "scr17_c.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_cockroft_s (nel, nuparam, nuvar, time, timestep, uparam, ngl, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, pla, dpla, epsp, uvar, off, dfmax, tdele)

Function/Subroutine Documentation

◆ fail_cockroft_s()

subroutine fail_cockroft_s ( integer nel,
integer nuparam,
integer nuvar,
time,
timestep,
uparam,
integer, dimension(nel) ngl,
epspxx,
epspyy,
epspzz,
epspxy,
epspyz,
epspzx,
epsxx,
epsyy,
epszz,
epsxy,
epsyz,
epszx,
signxx,
signyy,
signzz,
signxy,
signyz,
signzx,
pla,
dpla,
epsp,
uvar,
off,
dfmax,
tdele )

Definition at line 30 of file fail_cockroft_s.F.

38
39C--------------------------------------------------------------------
40C /FAIL/COCKROFT - Cockroft-Latham failure criteria for solids
41C--------------------------------------------------------------------
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C---------+---------+---+---+--------------------------------------------
47C---------+--------+--+--+-------------------------------------------
48C VAR | SIZE |TYP| RW| DEFINITION
49C---------+--------+--+--+-------------------------------------------
50C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
51C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
52C NUVAR | 1 | I | R | NUMBER OF FAILURE ELEMENT VARIABLES
53C---------+--------+--+--+-------------------------------------------
54C TIME | 1 | F | R | CURRENT TIME
55C TIMESTEP| 1 | F | R | CURRENT TIME STEP
56C UPARAM | NUPARAM | F | R | USER FAILURE PARAMETER ARRAY
57C---------+--------+--+--+-------------------------------------------
58C EPSPXX | NEL | F | R | STRAIN RATE XX
59C EPSPYY | NEL | F | R | STRAIN RATE YY
60C ... | | | |
61C EPSXX | NEL | F | R | STRAIN XX
62C EPSYY | NEL | F | R | STRAIN YY
63C ... | | | |
64C SIGNXX | NEL | F |R/W| NEW ELASTO PLASTIC STRESS XX
65C SIGNYY | NEL | F |R/W| NEW ELASTO PLASTIC STRESS YY
66C ... | | | |
67C ... | | | |
68C PLA | NEL | F | R | PLASTIC STRAIN
69C DPLA | NEL | F | R | INCREMENTAL PLASTIC STRAIN
70C EPSP | NEL | F | R | EQUIVALENT STRAIN RATE
71C---------+--------+--+--+-------------------------------------------
72C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
73C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
74C---------+--------+--+--+-------------------------------------------
75C I N P U T A r g u m e n t s
76C-----------------------------------------------
77#include "units_c.inc"
78#include "scr17_c.inc"
79#include "comlock.inc"
80
81C
82 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
83
84 my_real time,timestep,uparam(nuparam),
85 . dpla(nel),epsp(nel),pla(nel),
86 . epspxx(nel),epspyy(nel),epspzz(nel),
87 . epspxy(nel),epspyz(nel),epspzx(nel),
88 . epsxx(nel) ,epsyy(nel) ,epszz(nel) ,
89 . epsxy(nel) ,epsyz(nel) ,epszx(nel) ,
90 . tdele(nel) ,dfmax(nel)
91C-----------------------------------------------
92C I N P U T O U T P U T A r g u m e n t s
93C-----------------------------------------------
94 my_real uvar(nel,nuvar), off(nel),
95 . signxx(nel),signyy(nel),signzz(nel),
96 . signxy(nel),signyz(nel),signzx(nel)
97C-----------------------------------------------
98C L o c a l V a r i a b l e s
99C-----------------------------------------------
100 INTEGER I,J,LENG,NINDX,INDX(NEL),NCYC
101 my_real c0,ema,e_hyd,e_11,e_22,e_33,e_12,e_23,
102 . e_13,eeq,d_eeq
103 my_real i1,i2,i3,s11,s22,s33,
104 . q,r,r_inter,phi,lockroft
105
106C--------------------------------------------------------------
107C-----------------------------------------------
108C! USER VARIABLES INITIALIZATION
109c!
110c! from:
111c! Calibration and evaluation of seven fracture models
112c! Tomasz Wierzbicki, Yingbin Bao, Young-Woong Lee, Yuanli Bai
113c!
114c! The well known Cockcroft Latham, [28] fracture criterion is also studied here. It
115c! was developed for the bulk forming operations and therefore is applicable only to the range
116c! of small and negative stress triaxilaity. According to this criterion, fracture occurs when
117c! the accumulated equivalent strain modified by maximum principal tensile stress reaches a
118c! critical value.
119c!
120C-----------------------------------------------
121C...
122C! UVAR(I,1) contains previous equivalent strain value increment
123C! UVAR(I,2) contains the Cockroft-Latham accumulated value
124c! UVAR(I,3) contains the previous first principal stress
125
126 c0 = uparam(1)
127 ema = uparam(2)
128
129 lockroft = zero
130 e_hyd = zero
131 eeq = zero
132 d_eeq = zero
133 r_inter = zero
134 phi = zero
135
136 leng = 0
137
138
139c! ***********************
140 nindx = 0
141
142C-----------------------------------------------
143c! fast degradation
144 DO i=1,nel
145 IF(off(i)<one .AND. off(i) > zero) THEN
146 signxx(i) = signxx(i) * off(i)
147 signyy(i) = signyy(i) * off(i)
148 signzz(i) = signzz(i) * off(i)
149 signxy(i) = signxy(i) * off(i)
150 signyz(i) = signyz(i) * off(i)
151 signzx(i) = signzx(i) * off(i)
152 off(i) = off(i) * four_over_5
153 ENDIF
154 IF(off(i)<em01) off(i) = zero
155 END DO
156C-------------------
157
158
159 DO i=1,nel
160 IF(off(i)==one) THEN
161
162c! COCKROFT = UVAR(I,2)
163c! equivalent strain calculation (negative = total strain ; positive = plastic strain)
164 IF(c0 < zero)THEN
165 e_hyd = third * (epsxx(i) + epsyy(i) + epszz(i))
166 e_11 = epsxx(i) - e_hyd
167 e_22 = epsyy(i) - e_hyd
168 e_33 = epszz(i) - e_hyd
169 e_12 = half*epsxy(i)
170 e_23 = half*epsyz(i)
171 e_13 = half*epszx(i)
172
173 eeq = e_11**2 + e_22**2 + e_33**2
174 eeq = eeq + two * (e_12**2) + two * (e_23**2) + two * (e_13**2)
175 eeq = 0.8164965809 * sqrt(eeq) ! sqrt (2/3)*sqrt(...)
176
177 d_eeq = eeq - uvar(i,1)
178 IF (d_eeq <= zero) d_eeq = zero
179 uvar(i,1) = eeq
180 ELSE
181 d_eeq = dpla(i)
182 uvar(i,1) = uvar(i,1) + dpla(i)
183 ENDIF
184
185c! principal stress calculation
186
187 i1 = signxx(i)+signyy(i)+signzz(i)
188 i2 = signxx(i)*signyy(i)+signyy(i)*signzz(i)+signzz(i)*signxx(i)-
189 . signxy(i)*signxy(i)-signzx(i)*signzx(i)-signyz(i)*signyz(i)
190 i3 = signxx(i)*signyy(i)*signzz(i)-signxx(i)*signyz(i)*signyz(i)-
191 . signyy(i)*signzx(i)*signzx(i)-signzz(i)*signxy(i)*signxy(i)+
192 . two*signxy(i)*signzx(i)*signyz(i)
193 q = (three*i2 - i1*i1)/nine
194 r = (two*i1*i1*i1-nine*i1*i2+twenty7*i3)/cinquante4 ! (2*I3^3-9*I1*I2+27*I3)/54
195
196 r_inter = min(r/sqrt(max(em20,(-q**3))),one)
197 phi = acos(max(r_inter,-one))
198
199 s11 = two*sqrt(-q)*cos(phi/three)+third*i1
200 s22 = two*sqrt(-q)*cos((phi+two*pi)/three)+third*i1
201 s33 = two*sqrt(-q)*cos((phi+four*pi)/three)+third*i1
202
203 IF (s11<s22) THEN
204 r_inter = s11
205 s11 = s22
206 s22 = r_inter
207 ENDIF
208 IF (s22<s33)THEN
209 r_inter = s22
210 s22 = s33
211 s33 = r_inter
212 ENDIF
213 IF (s11<s22)THEN
214 r_inter = s11
215 s11 = s22
216 s22 = r_inter
217 ENDIF
218
219 IF(s11 > zero) THEN
220 s11 = s11 * ema + (one-ema)* uvar(i,3)
221 uvar(i,3) = s11
222
223 uvar(i,2) = uvar(i,2) + max(s11,zero) * d_eeq
224 ENDIF
225
226 dfmax(i) = uvar(i,2) / max(abs(c0),em20)
227 dfmax(i) = min(one,dfmax(i))
228
229 IF (uvar(i,2) >= abs(c0)) THEN
230 tdele(i) = time
231 nindx = nindx+1
232 indx(nindx) = i
233
234 off(i) = four_over_5
235
236 ENDIF
237
238c! PRINT *,' UVAR(I,2) =',UVAR(I,2),' el#= ',NGL(I)
239
240 ENDIF
241
242 ENDDO
243
244 DO j=1,nindx
245 i = indx(j)
246#include "lockon.inc"
247 WRITE(iout, 1000) ngl(i),time
248 WRITE(istdo,1100) ngl(i),time
249#include "lockoff.inc"
250
251 ENDDO
252
253 1000 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER (COCKROFT-LATHAM) el#',i10,
254 . ' AT TIME :',1pe12.4)
255 1100 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER (COCKROFT-LATHAM) el#',i10,
256 . ' AT TIME :',1pe12.4)
257
258 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21