OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps28.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!|| sigeps28 ../engine/source/materials/mat/mat028/sigeps28.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!|| vinter2 ../engine/source/tools/curve/vinter.F
31!|| vinter2dp ../engine/source/tools/curve/vinter.F
32!||====================================================================
33 SUBROUTINE sigeps28 (
34 1 NEL ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,NPF ,
35 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
36 3 VOLUME ,EINT ,
37 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
38 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
39 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
40 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
41 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
42 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
43 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
44 B IPM ,MAT ,AMU )
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49#include "comlock.inc"
50C---------+---------+---+---+--------------------------------------------
51C VAR | SIZE |TYP| RW| DEFINITION
52C---------+---------+---+---+--------------------------------------------
53C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
54C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
55C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
56C---------+---------+---+---+--------------------------------------------
57C NFUNC | 1 | I | R | NUMBER FUNCTION USED FOR THIS USER LAW
58C IFUNC | NFUNC | I | R | FUNCTION INDEX
59C NPF | * | I | R | FUNCTION ARRAY
60C TF | * | F | R | FUNCTION ARRAY
61C---------+---------+---+---+--------------------------------------------
62C TIME | 1 | F | R | CURRENT TIME
63C TIMESTEP| 1 | F | R | CURRENT TIME STEP
64C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
65C RHO0 | NEL | F | R | INITIAL DENSITY
66C RHO | NEL | F | R | DENSITY
67C VOLUME | NEL | F | R | VOLUME
68C EINT | NEL | F | R | TOTAL INTERNAL ENERGY
69C EPSPXX | NEL | F | R | STRAIN RATE XX
70C EPSPYY | NEL | F | R | STRAIN RATE YY
71C ... | | | |
72C DEPSXX | NEL | F | R | STRAIN INCREMENT XX
73C DEPSYY | NEL | F | R | STRAIN INCREMENT YY
74C ... | | | |
75C EPSXX | NEL | F | R | STRAIN XX
76C EPSYY | NEL | F | R | STRAIN YY
77C ... | | | |
78C SIGOXX | NEL | F | R | OLD ELASTO PLASTIC STRESS XX
79C SIGOYY | NEL | F | R | OLD ELASTO PLASTIC STRESS YY
80C ... | | | |
81C---------+---------+---+---+--------------------------------------------
82C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
83C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
84C ... | | | |
85C SIGVXX | NEL | F | W | VISCOUS STRESS XX
86C SIGVYY | NEL | F | W | VISCOUS STRESS YY
87C ... | | | |
88C SOUNDSP | NEL | F | W | SOUND SPEED (NEEDED FOR TIME STEP)
89C VISCMAX | NEL | F | W | MAXIMUM DAMPING MODULUS(NEEDED FOR TIME STEP)
90C---------+---------+---+---+--------------------------------------------
91C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
92C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
93C---------+---------+---+---+--------------------------------------------
94C G l o b a l P a r a m e t e r s
95C-----------------------------------------------
96#include "mvsiz_p.inc"
97C-----------------------------------------------
98#include "param_c.inc"
99#include "scr17_c.inc"
100#include "scr05_c.inc"
101#include "com08_c.inc"
102#include "units_c.inc"
103C-----------------------------------------------
104C I N P U T A r g u m e n t s
105C-----------------------------------------------
106C
107 INTEGER NEL, NUPARAM, NUVAR,IPT,
108 . NGL(NEL),MAT(NEL),IPM(NPROPMI,*)
109 my_real
110 . TIME,TIMESTEP,UPARAM(*),
111 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
112 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
113 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
114 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
115 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
116 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
117 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
118 . sigoxx(nel),sigoyy(nel),sigozz(nel),
119 . sigoxy(nel),sigoyz(nel),sigozx(nel),
120 . amu(nel)
121C-----------------------------------------------
122C O U T P U T A r g u m e n t s
123C-----------------------------------------------
124 my_real
125 . signxx(nel),signyy(nel),signzz(nel),
126 . signxy(nel),signyz(nel),signzx(nel),
127 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
128 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
129 . soundsp(nel),viscmax(nel)
130C-----------------------------------------------
131C I N P U T O U T P U T A r g u m e n t s
132C-----------------------------------------------
133 my_real
134 . uvar(nel,nuvar), off(nel)
135C-----------------------------------------------
136C VARIABLES FOR FUNCTION INTERPOLATION
137C-----------------------------------------------
138 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
139 my_real
140 . FINTER ,TF(*)
141 EXTERNAL FINTER
142C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
143C Y : y = f(x)
144C X : x
145C DYDX : f'(x) = dy/dx
146C IFUNC(J): FUNCTION INDEX
147C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
148C NPF,TF : FUNCTION PARAMETER
149C-----------------------------------------------
150C L o c a l V a r i a b l e s
151C-----------------------------------------------
152 INTEGER I,J,IADBUF,IF1,IF2,AUX,IC,II,K,
153 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
154 . INDEX(MVSIZ),
155 . NINDX,INDX(MVSIZ)
156 my_real
157 . E11,E22,E33,G12,G23,G31,
158 . Y11,Y22,Y33,Y12,Y23,Y31,EP1,EP2,EP3,EP4,EP5,EP6,
159 . YC(MVSIZ),FAC1(MVSIZ),FAC2(MVSIZ),
160 . FAC3(MVSIZ),FAC4(MVSIZ),FAC5(MVSIZ),FAC6(MVSIZ),
161 . DYDX,DYDXV(MVSIZ),EP(MVSIZ,6),EPC(MVSIZ),
162 . EMX11,EMX22,EMX33,EMX12,EMX23,EMX31,AMUV
163C=======================================================================
164C USER VARIABLES INITIALIZATION
165C-----------------------------------------------
166 IF(time==zero)THEN
167 IF (nuvar>0) THEN
168 DO 100 j=1,nuvar
169 DO 100 i=1,nel
170 uvar(i,j)=zero
171 100 CONTINUE
172 ENDIF
173 ENDIF
174C-----------------------------------------------
175 DO i=1,nel
176C
177 iadbuf = ipm(7,mat(i))
178 e11 = uparam(iadbuf)
179 e22 = uparam(iadbuf+1)
180 e33 = uparam(iadbuf+2)
181 g12 = uparam(iadbuf+3)
182 g23 = uparam(iadbuf+4)
183 g31 = uparam(iadbuf+5)
184C
185 signxx(i) = sigoxx(i) + e11 * depsxx(i)
186 signyy(i) = sigoyy(i) + e22 * depsyy(i)
187 signzz(i) = sigozz(i) + e33 * depszz(i)
188 signxy(i) = sigoxy(i) + g12 * depsxy(i)
189 signyz(i) = sigoyz(i) + g23 * depsyz(i)
190 signzx(i) = sigozx(i) + g31 * depszx(i)
191C
192 soundsp(i) = sqrt(max(e11,e22,e33,g12,g23,g31)/rho0(i))
193 viscmax(i) = zero
194C
195 ENDDO
196
197 nindx=0
198 DO i=1,nel
199 iadbuf = ipm(7,mat(i)) - 1
200 emx11 = uparam(iadbuf+9)
201 emx22 = uparam(iadbuf+10)
202 emx33 = uparam(iadbuf+11)
203 emx12 = uparam(iadbuf+12)
204 emx23 = uparam(iadbuf+13)
205 emx31 = uparam(iadbuf+14)
206 fac1(i) = uparam(iadbuf+15)
207 fac2(i) = uparam(iadbuf+16)
208 fac3(i) = uparam(iadbuf+17)
209 fac4(i) = uparam(iadbuf+18)
210 fac5(i) = uparam(iadbuf+19)
211 fac6(i) = uparam(iadbuf+20)
212 IF((epsxx(i)>emx11.OR.
213 . epsyy(i)>emx22.OR.
214 . epszz(i)>emx33.OR.
215 . abs(epsxy(i)/two)>emx12.OR.
216 . abs(epsyz(i)/two)>emx23.OR.
217 . abs(epszx(i)/two)>emx31).AND.off(i)/=zero) THEN
218 off(i) = zero
219 nindx=nindx+1
220 indx(nindx)=i
221 ENDIF
222 ENDDO
223 IF(nindx>0)THEN
224 DO j=1,nindx
225#include "lockon.inc"
226 WRITE(iout, 1000) ngl(indx(j))
227 WRITE(istdo,1100) ngl(indx(j)),tt
228#include "lockoff.inc"
229 ENDDO
230 ENDIF
231C
232 DO i=1,nel
233C
234c AMU = RHO(I)/RHO0(I) - ONE ! Change using AMU(I) to take into account THERM_STRESS
235 ep(i,1) = amu(i)
236 ep(i,2) = amu(i)
237 ep(i,3) = amu(i)
238 ep(i,4) = amu(i)
239 ep(i,5) = amu(i)
240 ep(i,6) = amu(i)
241 iadbuf = ipm(7,mat(i))
242 if1=nint(uparam(iadbuf+6))
243 if2=nint(uparam(iadbuf+7))
244 IF(if1==1)THEN
245 ep(i,1) = epsxx(i)
246 ep(i,2) = epsyy(i)
247 ep(i,3) = epszz(i)
248 ELSEIF(if1==-1)THEN
249 ep(i,1) = -epsxx(i)
250 ep(i,2) = -epsyy(i)
251 ep(i,3) = -epszz(i)
252 ENDIF
253 IF(if2==1)THEN
254 ep(i,4) = epsxy(i)
255 ep(i,5) = epsyz(i)
256 ep(i,6) = epszx(i)
257 ELSEIF(if2==-1)THEN
258 ep(i,4) = -epsxy(i)
259 ep(i,5) = -epsyz(i)
260 ep(i,6) = -epszx(i)
261 ENDIF
262 ENDDO
263C---------------------------
264 DO j = 1, 6
265 ic = 0
266 DO i = 1, nel
267 nfunc = ipm(10,mat(i))
268 IF (nfunc>=j) THEN
269 aux = ipm(10+j,mat(i))
270 IF (aux/=0) THEN
271 ic = ic + 1
272 index(ic) = i
273 ipos1(ic) = nint(uvar(i,j))
274 iad1(ic) = npf(aux) / 2 + 1
275 ilen1(ic) = npf(aux+1) / 2 - iad1(ic) - ipos1(ic)
276 epc(ic) = ep(i,j)
277 ENDIF
278 ENDIF
279 ENDDO
280
281 IF (iresp==1) THEN
282 CALL vinter2dp(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
283 ELSE
284 CALL vinter2(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
285 ENDIF
286C
287 IF (j==1) THEN
288#include "vectorize.inc"
289 DO ii = 1, ic
290 i = index(ii)
291 uvar(i,j)=ipos1(ii)
292 signxx(i)=sign(min(abs(signxx(i)),yc(ii)*fac1(i)),signxx(i))
293 ENDDO
294 ELSEIF (j==2) THEN
295#include "vectorize.inc"
296 DO ii = 1, ic
297 i = index(ii)
298 uvar(i,j)=ipos1(ii)
299 signyy(i)=sign(min(abs(signyy(i)),yc(ii)*fac2(i)),signyy(i))
300 ENDDO
301 ELSEIF (j==3) THEN
302#include "vectorize.inc"
303 DO ii = 1, ic
304 i = index(ii)
305 uvar(i,j)=ipos1(ii)
306 signzz(i)=sign(min(abs(signzz(i)),yc(ii)*fac3(i)),signzz(i))
307 ENDDO
308 ELSEIF (j==4) THEN
309#include "vectorize.inc"
310 DO ii = 1, ic
311 i = index(ii)
312 uvar(i,j)=ipos1(ii)
313 signxy(i)=sign(min(abs(signxy(i)),yc(ii)*fac4(i)),signxy(i))
314 ENDDO
315 ELSEIF (j==5) THEN
316#include "vectorize.inc"
317 DO ii = 1, ic
318 i = index(ii)
319 uvar(i,j)=ipos1(ii)
320 signyz(i)=sign(min(abs(signyz(i)),yc(ii)*fac5(i)),signyz(i))
321 ENDDO
322 ELSEIF (j==6) THEN
323#include "vectorize.inc"
324 DO ii = 1, ic
325 i = index(ii)
326 uvar(i,j)=ipos1(ii)
327 signzx(i)=sign(min(abs(signzx(i)),yc(ii)*fac6(i)),signzx(i))
328 ENDDO
329 ENDIF
330C
331 ENDDO
332
333 1000 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
334 1100 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
335 . ' AT TIME :',g11.4)
336 RETURN
337 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps28(nel, 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, ngl, ipt, ipm, mat, amu)
Definition sigeps28.F:45
subroutine vinter2(tf, iad, ipos, ilen, nel0, x, dydx, y)
Definition vinter.F:143
subroutine vinter2dp(tf, iad, ipos, ilen, nel0, x, dydx, y)
Definition vinter.F:214