OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps45.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!|| sigeps45 ../engine/source/materials/mat/mat045/sigeps45.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
27!|| mulaw8 ../engine/source/materials/mat_share/mulaw8.F90
28!||--- calls -----------------------------------------------------
29!|| finter ../engine/source/tools/curve/finter.F
30!||====================================================================
31 SUBROUTINE sigeps45 (
32 1 NEL0 ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,
33 2 NPF ,
34 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
35 3 RHO ,VOLUME ,EINT ,
36 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
37 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
39 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
40 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
42 A SOUNDSP,VISCMAX,UVAR ,OFF ,SIGY ,DEFP ,
43 B AMU )
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C G l o b a l P a r a m e t e r s
50C-----------------------------------------------
51#include "scr17_c.inc"
52C---------+---------+---+---+--------------------------------------------
53C VAR | SIZE |TYP| RW| DEFINITION
54C---------+---------+---+---+--------------------------------------------
55C NEL0 | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL0
56C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
57C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
58C---------+---------+---+---+--------------------------------------------
59C NFUNC | 1 | I | R | NUMBER FUNCTION USED FOR THIS USER LAW
60C IFUNC | NFUNC | I | R | FUNCTION INDEX
61C NPF | * | I | R | FUNCTION ARRAY
62C TF | * | F | R | FUNCTION ARRAY
63C---------+---------+---+---+--------------------------------------------
64C TIME | 1 | F | R | CURRENT TIME
65C TIMESTEP| 1 | F | R | CURRENT TIME STEP
66C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
67C RHO0 | NEL0 | F | R | INITIAL DENSITY
68C RHO | NEL | F | R | DENSITY
69C VOLUME | NEL | F | R | VOLUME
70C EINT | 2*NEL0 | F | R | INTERNAL ENERGY(MEMBRANE,BENDING)
71C EPSPXX | NEL0 | F | R | STRAIN RATE XX
72C EPSPYY | NEL0 | F | R | STRAIN RATE YY
73C ... | | | |
74C DEPSXX | NEL0 | F | R | STRAIN INCREMENT XX
75C DEPSYY | NEL0 | F | R | STRAIN INCREMENT YY
76C ... | | | |
77C EPSXX | NEL0 | F | R | STRAIN XX
78C EPSYY | NEL0 | F | R | STRAIN YY
79C ... | | | |
80C SIGOXX | NEL0 | F | R | OLD ELASTO PLASTIC STRESS XX
81C SIGOYY | NEL0 | F | R | OLD ELASTO PLASTIC STRESS YY
82C ... | | | |
83C---------+---------+---+---+--------------------------------------------
84C SIGNXX | NEL0 | F | W | NEW ELASTO PLASTIC STRESS XX
85C SIGNYY | NEL0 | F | W | NEW ELASTO PLASTIC STRESS YY
86C ... | | | |
87C SIGVXX | NEL0 | F | W | VISCOUS STRESS XX
88C SIGVYY | NEL0 | F | W | VISCOUS STRESS YY
89C ... | | | |
90C SOUNDSP | NEL0 | F | W | SOUND SPEED (NEEDED FOR TIME STEP)
91C VISCMAX | NEL0 | F | W | MAXIMUM DAMPING MODULUS(NEEDED FOR TIME STEP)
92C---------+---------+---+---+--------------------------------------------
93C UVAR |NEL0*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
94C OFF | NEL0 | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
95C---------+---------+---+---+--------------------------------------------
96C-----------------------------------------------
97C I N P U T A r g u m e n t s
98C-----------------------------------------------
99C
100 INTEGER NEL0, NUPARAM, NUVAR
101 my_real
102 . TIME,TIMESTEP,UPARAM(NUPARAM),
103 . RHO(NEL0),RHO0(NEL0),VOLUME(NEL0),EINT(NEL0),
104 . EPSPXX(NEL0),EPSPYY(NEL0),EPSPZZ(NEL0),
105 . EPSPXY(NEL0),EPSPYZ(NEL0),EPSPZX(NEL0),
106 . DEPSXX(NEL0),DEPSYY(NEL0),DEPSZZ(NEL0),
107 . DEPSXY(NEL0),DEPSYZ(NEL0),DEPSZX(NEL0),
108 . EPSXX(NEL0) ,EPSYY(NEL0) ,EPSZZ(NEL0) ,
109 . EPSXY(NEL0) ,EPSYZ(NEL0) ,EPSZX(NEL0) ,
110 . SIGOXX(NEL0),SIGOYY(NEL0),SIGOZZ(NEL0),
111 . SIGOXY(NEL0),SIGOYZ(NEL0),SIGOZX(NEL0),
112 . amu(nel0)
113C-----------------------------------------------
114C O U T P U T A r g u m e n t s
115C-----------------------------------------------
116 my_real
117 . signxx(nel0),signyy(nel0),signzz(nel0),
118 . signxy(nel0),signyz(nel0),signzx(nel0),
119 . sigvxx(nel0),sigvyy(nel0),sigvzz(nel0),
120 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
121 . soundsp(nel0),viscmax(nel0),sigy(nel0),defp(nel0)
122C-----------------------------------------------
123C I N P U T O U T P U T A r g u m e n t s
124C-----------------------------------------------
125 my_real uvar(nel0,nuvar), off(nel0)
126C-----------------------------------------------
127C VARIABLES FOR FUNCTION INTERPOLATION
128C-----------------------------------------------
129 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
130 my_real FINTER ,TF(*)
131 EXTERNAL FINTER
132C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
133C Y : y = f(x)
134C X : x
135C DYDX : f'(x) = dy/dx
136C IFUNC(J): FUNCTION INDEX
137C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
138C NPF,TF : FUNCTION PARAMETER
139C-----------------------------------------------
140C L o c a l V a r i a b l e s
141C-----------------------------------------------
142 INTEGER I
143 my_real
144 . g,ca,cb,cn,epsm,sigm,cc,cd,cm,eps0,
145 . ce,ck,c1,c14g3,g3,
146 . ch1,ch2,ch3,qh1,qh2,svm,
147 . dt,dtg2,press,df,
148 . eprnxx,eprnyy,eprnzz,eprnxy,eprnyz,eprnzx,
149 . evr,edrnxx,edrnyy,edrnzz,edrnxy,edrnyz,edrnzx,
150 . dpla_i,r,umr,
151c jbm035
152 . cutfre,beta
153C
154c jbm035
155C=======================================================================
156C
157C ZHAO CONSTITUTIVE LAW
158C
159C=======================================================================
160C-----------------------------------------------
161C PARAMETERS READING
162C-----------------------------------------------
163 g = uparam(3)
164 ca = uparam(4)
165 cb = uparam(5)
166 cn = uparam(6)
167 epsm = uparam(7)
168 sigm = uparam(8)
169 cc = uparam(9)
170 cd = uparam(10)
171 cm = uparam(11)
172 eps0 = uparam(12)
173 ce = uparam(13)
174 ck = uparam(14)
175 c1 = uparam(15)
176 c14g3 = uparam(16)
177c jbm035
178 cutfre = uparam(19)
179C-----------------------------------------------
180C USER VARIABLES INITIALIZATION
181C-----------------------------------------------
182 IF(time==zero)THEN
183 DO i=1,nel0
184 uvar(i,1)=zero
185 uvar(i,2)=zero
186 uvar(i,3)=zero
187 uvar(i,4)=zero
188c jbm035
189 uvar(i,5)=zero
190 ENDDO
191 ENDIF
192C-----------------------------------------------
193 dt = timestep
194 dtg2 = two*dt*g
195c jbm035
196 beta = timestep*two*pi*cutfre
197 beta = min(one,beta)
198c jbm035 (fin)
199C
200 g3 = three * g
201C-----------------------------------------------
202C ELASTIC SOLUTION (DTG2 OK)
203C-----------------------------------------------
204 DO i=1,nel0
205C
206 press = - (sigoxx(i) + sigoyy(i) + sigozz(i)) * third
207C
208 eprnxx = epspxx(i)
209 eprnyy = epspyy(i)
210 eprnzz = epspzz(i)
211 eprnxy = epspxy(i)
212 eprnyz = epspyz(i)
213 eprnzx = epspzx(i)
214C
215 evr = - (eprnxx + eprnyy + eprnzz) * third
216 edrnxx = eprnxx + evr
217 edrnyy = eprnyy + evr
218 edrnzz = eprnzz + evr
219 edrnxy = eprnxy*half
220 edrnyz = eprnyz*half
221 edrnzx = eprnzx*half
222C
223 signxx(i)=sigoxx(i) + press + dtg2*edrnxx
224 signyy(i)=sigoyy(i) + press + dtg2*edrnyy
225 signzz(i)=sigozz(i) + press + dtg2*edrnzz
226 signxy(i)=sigoxy(i) + dtg2*edrnxy
227 signyz(i)=sigoyz(i) + dtg2*edrnyz
228 signzx(i)=sigozx(i) + dtg2*edrnzx
229C
230 soundsp(i) = sqrt(c14g3/rho0(i))
231 viscmax(i) = zero
232C----------------------------------------
233C STRAIN RATE (LAW 2 COMMENTS / LAW 36 BRICKS USED)
234C----------------------------------------
235C
236C UVAR(I,2) = OFF(I)*MAX( ABS(EPRNXX), ABS(EPRNYY),
237C . ABS(EPRNZZ), ABS(EDRNXY),
238C . ABS(EDRNYZ), ABS(EDRNZX))
239 uvar(i,2) = half*(edrnxx*edrnxx+edrnyy*edrnyy+edrnzz*edrnzz)
240 . +edrnxy*edrnxy+edrnyz*edrnyz+edrnzx*edrnzx
241 uvar(i,2) = off(i) * sqrt(three*uvar(i,2)) / three_half
242c jbm035
243 uvar(i,2) = beta*uvar(i,2) + (one - beta)*uvar(i,5)
244 uvar(i,5) = uvar(i,2)
245c jbm035 (fin)
246 ENDDO
247C-------------------
248C CRITERIA
249C-------------------
250 DO i=1,nel0
251 IF(uvar(i,1)<=zero) THEN
252 ch1=ca
253 ELSEIF(uvar(i,1)>epsm) THEN
254 ch1=ca+cb*epsm**cn
255 ELSE
256 ch1=ca+cb*uvar(i,1)**cn
257 ENDIF
258 IF(uvar(i,2)<=eps0) THEN
259 ch2=zero
260 ELSEIF(uvar(i,1)<=zero) THEN
261 ch2=cc*log(uvar(i,2)/eps0)
262 ELSE
263 ch2=(cc-cd*uvar(i,1)**cm)*log(uvar(i,2)/eps0)
264 ENDIF
265 IF(uvar(i,2)<=zero) THEN
266 ch3=zero
267 ELSE
268 ch3=ce*uvar(i,2)**ck
269 ENDIF
270c jbm033 UVAR(I,3)=MIN(SIGM,CH1+CH2+CH3)
271 uvar(i,3)=min(sigm+ch3,ch1+ch2+ch3)
272 sigy(i)=uvar(i,3)
273 IF(uvar(i,1)>epsm) uvar(i,3)=zero
274 ENDDO
275C------------------------
276C HARDENING MODULUS
277C------------------------
278 DO i=1,nel0
279 IF(uvar(i,1)>zero. and .cn>=one) THEN
280 qh1= cb*cn*uvar(i,1)**(cn- one)
281 ELSEIF(uvar(i,1)>zero. and .cn<one)THEN
282 qh1= cb*cn*uvar(i,1)**(one - cn)
283 ELSE
284 qh1=zero
285 ENDIF
286 IF(uvar(i,1)<=zero. or .uvar(i,2)<=eps0) THEN
287 qh2=zero
288 ELSEIF(cm>=one) THEN
289 qh2=cd*cm*uvar(i,1)**(cm- one)*log(uvar(i,2)/eps0)
290 ELSE
291 qh2=cd*cm*uvar(i,1)**(one - cm)*log(uvar(i,2)/eps0)
292 ENDIF
293 uvar(i,4)=qh1+qh2
294 ENDDO
295C-----------------------------
296C PROJECTION RADIAL RETURN
297C-----------------------------
298 DO i=1,nel0
299 svm = half*(signxx(i)*signxx(i)
300 . +signyy(i)*signyy(i)
301 . +signzz(i)*signzz(i)
302 . +signxy(i)*signxy(i)
303 . +signyz(i)*signyz(i)
304 . +signzx(i)*signzx(i))
305 svm = sqrt(three * svm)
306 r = min(one,uvar(i,3)/max(em20,svm))
307 signxx(i)=signxx(i)*r
308 signyy(i)=signyy(i)*r
309 signzz(i)=signzz(i)*r
310 signxy(i)=signxy(i)*r
311 signyz(i)=signyz(i)*r
312 signzx(i)=signzx(i)*r
313 umr = one - r
314 dpla_i = off(i)*svm*umr/(g3+uvar(i,4))
315 uvar(i,1) = uvar(i,1) + dpla_i
316 ENDDO
317C--------------------------------------------
318C NEW PRESSURE AND STRESS TENSOR EVALUATION
319C--------------------------------------------
320 DO i=1,nel0
321 df = rho0(i)/rho(i)
322c AMU = ONE /DF - ONE
323 press = c1*amu(i)
324 signxx(i) = (signxx(i) - press) * off(i)
325 signyy(i) = (signyy(i) - press) * off(i)
326 signzz(i) = (signzz(i) - press) * off(i)
327 signxy(i) = signxy(i) * off(i)
328 signyz(i) = signyz(i) * off(i)
329 signzx(i) = signzx(i) * off(i)
330 ENDDO
331C-----------------------------
332C A VOIR .....
333 DO i=1,nel0
334 defp(i)=uvar(i,1)
335 ENDDO
336C-------------------------
337 RETURN
338 END
339
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps45(nel0, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, sigy, defp, amu)
Definition sigeps45.F:44