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

Go to the source code of this file.

Functions/Subroutines

subroutine fail_wierzbicki_s (nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, pla, uvar, off, dfmax, tdele)

Function/Subroutine Documentation

◆ fail_wierzbicki_s()

subroutine fail_wierzbicki_s ( integer nel,
integer nuparam,
integer nuvar,
time,
timestep,
uparam,
integer, dimension(nel) ngl,
signxx,
signyy,
signzz,
signxy,
signyz,
signzx,
dpla,
pla,
uvar,
off,
dfmax,
tdele )

Definition at line 32 of file fail_wierzbicki_s.F.

38C-----------------------------------------------
39C Xue-Wierbzcki
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C---------+---------+---+---+--------------------------------------------
45C VAR | SIZE |TYP| RW| DEFINITION
46C---------+---------+---+---+--------------------------------------------
47C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
48C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
49C NUVAR | 1 | I | R | NUMBER OF FAILURE ELEMENT VARIABLES
50C---------+---------+---+---+--------------------------------------------
51C TIME | 1 | F | R | CURRENT TIME
52C TIMESTEP| 1 | F | R | CURRENT TIME STEP
53C UPARAM | NUPARAM | F | R | USER FAILURE PARAMETER ARRAY
54C---------+---------+---+---+--------------------------------------------
55C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
56C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
57C ... | | | |
58C ... | | | |
59C---------+---------+---+---+--------------------------------------------
60C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
61C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
62C---------+---------+---+---+--------------------------------------------
63#include "mvsiz_p.inc"
64#include "scr17_c.inc"
65#include "units_c.inc"
66#include "comlock.inc"
67#include "param_c.inc"
68#include "impl1_c.inc"
69C-----------------------------------------------
70C I N P U T A r g u m e n t s
71C-----------------------------------------------
72C
73 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
74 my_real time,timestep,uparam(*),
75 . signxx(nel),signyy(nel),signzz(nel),
76 . signxy(nel),signyz(nel),signzx(nel),
77 . dpla(nel),pla(nel)
78C-----------------------------------------------
79C O U T P U T A r g u m e n t s
80C-----------------------------------------------
81cc my_real
82
83C-----------------------------------------------
84C I N P U T O U T P U T A r g u m e n t s
85C-----------------------------------------------
86 my_real uvar(nel,nuvar), off(nel),dfmax(nel),tdele(nel)
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER I,J,IDEL,IDEV,IFLAG,INDX(MVSIZ),IADBUF,NINDX,
91 . NINDEX,INDEX(MVSIZ),IFAIL,JJ,IMOY
92 my_real
93 . c1,c2,c3,c4,cm,
94 . cn,p,epsf,svm,j3,eta,xi,sxx,syy,szz,delta,
95 . xi_old, eta_old,pla_old,epsf_old
96C--------------------------------------------------------------
97 c1 = uparam(1)
98 c2 = uparam(2)
99 c3 = uparam(3)
100 c4 = uparam(4)
101 cm = uparam(5)
102 cn = uparam(6)
103 iflag = int(uparam(8))
104 imoy = int( uparam(9))
105Cc
106 idel=0
107 idev=0
108 IF(iflag==1)THEN
109 idel=1
110 ELSEIF(iflag==2)THEN
111 idev =1
112 END IF
113C...
114 IF(idel==1)THEN
115 DO i=1,nel
116 IF(off(i)<0.1) off(i)=0.0
117 IF(off(i)<1.0) off(i)=off(i)*0.8
118 END DO
119 END IF
120C
121 IF(idel==1)THEN
122 nindx=0
123 DO i=1,nel
124 IF(iflag==1.AND.off(i)==1.AND.dpla(i)/=zero)THEN
125 p = third*(signxx(i) + signyy(i) + signzz(i))
126 sxx = signxx(i) - p
127 syy = signyy(i) - p
128 szz = signzz(i) - p
129C Vmises stress
130 svm =half*(sxx**2 + syy**2 + szz**2)
131 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
132 svm=sqrt(three*svm)
133C third invariant
134 j3 = sxx*syy*szz + two*signxy(i)*signzx(i)*signyz(i)
135 . - syy*signzx(i)**2 - sxx*signyz(i)**2
136 . - szz*signxy(i)**2
137 eta = p / max(em20,svm)
138 xi = half*(twenty + seven)*j3/max(em20,svm**3)
139c
140 IF(imoy==1)THEN
141 uvar(i,1) = uvar(i,1) + eta*dpla(i)
142 uvar(i,2) = uvar(i,2) + xi*dpla(i)
143 eta = uvar(i,1)/max(em20,pla(i))
144 xi = uvar(i,2)/max(em20,pla(i))
145 ENDIF
146c
147 epsf = (c1*exp(-c2*eta))**cn
148 . - (c3*exp(-c4*eta))**cn
149 epsf = epsf * max(zero,(one - xi**cm))**(one/cm)
150 epsf = ((c1*exp(-c2*eta))**cn - epsf)**(one/cn)
151 IF(epsf>zero)
152 . dfmax(i) = dfmax(i) + dpla(i)*(one/epsf)
153 IF(dfmax(i)>=one.AND.off(i)==one) THEN
154 off(i)=four_over_5
155 nindx=nindx+1
156 indx(nindx)=i
157 tdele(i) = time
158 ENDIF
159 ENDIF
160 ENDDO
161 IF(nindx>0.AND.imconv==1)THEN
162 DO j=1,nindx
163#include "lockon.inc"
164 WRITE(iout, 1000) ngl(indx(j))
165 WRITE(istdo,1100) ngl(indx(j)),time
166#include "lockoff.inc"
167 END DO
168 END IF
169 ENDIF
170Cc deviatoric will vanish
171 IF(idev==1)THEN
172 nindx=0
173 nindex = 0
174 DO i=1,nel
175 IF(iflag==2.AND.off(i)==one)THEN
176 IF(dfmax(i)<one)THEN
177 p = third*(signxx(i) + signyy(i) + signzz(i))
178 sxx = signxx(i) - p
179 syy = signyy(i) - p
180 szz = signzz(i) - p
181C Vmises stress
182 svm =half*(sxx**2 + syy**2 + szz**2)
183 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
184 svm=sqrt(three*svm)
185C third invariant
186 j3 = sxx*syy*szz + two*signxy(i)*signzx(i)*signyz(i)
187 . - syy*signzx(i)**2 - sxx*signyz(i)**2
188 . - szz*signxy(i)**2
189 eta = p / max(em20,svm)
190 xi = half*(twenty + seven)*j3/max(em20,svm**3)
191C average valeur
192 IF(imoy==1)THEN
193 uvar(i,1) = uvar(i,1) + eta*dpla(i)
194 uvar(i,2) = uvar(i,2) + xi*dpla(i)
195 eta = uvar(i,1)/max(em20,pla(i))
196 xi = uvar(i,2)/max(em20,pla(i))
197 ENDIF
198CC
199 epsf = (c1*exp(-c2*eta))**cn
200 . - (c3*exp(-c4*eta))**cn
201 epsf = epsf * max(zero,(one - xi**cm))**(one/cm)
202 epsf = ((c1*exp(-c2*eta))**cn - epsf)**(one/cn)
203 IF(epsf>zero) dfmax(i) = dfmax(i) + dpla(i)/epsf
204 IF(dfmax(i)>=one.AND.off(i)==one) THEN
205 nindx=nindx+1
206 indx(nindx)=i
207 signxx(i) = p
208 signyy(i) = p
209 signzz(i) = p
210 signxy(i) = zero
211 signyz(i) = zero
212 signzx(i) = zero
213 ENDIF
214c UVAR> 1
215 ELSE
216 p = third*(signxx(i) + signyy(i) + signzz(i))
217 signxx(i) = p
218 signyy(i) = p
219 signzz(i) = p
220 signxy(i) = zero
221 signyz(i) = zero
222 signzx(i) = zero
223 ENDIF
224 ENDIF
225 ENDDO
226 IF(nindx>0.AND.imconv==1)THEN
227 DO j=1,nindx
228 i = indx(j)
229#include "lockon.inc"
230 WRITE(iout, 2000) ngl(i)
231 WRITE(istdo,2100) ngl(i),time
232#include "lockoff.inc"
233 END DO
234 END IF
235 ENDIF
236C-------------Maximum Damage storing for output : 0 < DFMAX < 1--------------
237 DO i=1,nel
238 dfmax(i)= min(one,dfmax(i))
239 ENDDO
240C-----------------------------------------------
241 1000 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10)
242 1100 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10,
243 . ' AT TIME :',1pe20.13)
244C
245 2000 FORMAT(1x,' DEVIATORIC STRESS WILL BE VANISHED',i10)
246 2100 FORMAT(1x,' DEVIATORIC STRESS WILL BE VANISHED',i10,
247 . ' AT TIME :',1pe20.13)
248 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21