OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps68.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!|| sigeps68 ../engine/source/materials/mat/mat068/sigeps68.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
27!||--- calls -----------------------------------------------------
28!|| finter ../engine/source/tools/curve/finter.F
29!|| vinter2 ../engine/source/tools/curve/vinter.F
30!|| vinter2dp ../engine/source/tools/curve/vinter.F
31!||====================================================================
32 SUBROUTINE sigeps68 (
33 1 NEL ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,NPF ,
34 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
35 3 VOLUME ,EINT ,FR_WAV ,
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 ,NGL ,IPT ,
43 B IPM ,MAT ,AMU )
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48#include "comlock.inc"
49C---------+---------+---+---+--------------------------------------------
50C VAR | SIZE |TYP| RW| DEFINITION
51C---------+---------+---+---+--------------------------------------------
52C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
53C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
54C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
55C---------+---------+---+---+--------------------------------------------
56C NFUNC | 1 | I | R | NUMBER FUNCTION USED FOR THIS USER LAW
57C IFUNC | NFUNC | I | R | FUNCTION INDEX
58C NPF | * | I | R | FUNCTION ARRAY
59C TF | * | F | R | FUNCTION ARRAY
60C---------+---------+---+---+--------------------------------------------
61C TIME | 1 | F | R | CURRENT TIME
62C TIMESTEP| 1 | F | R | CURRENT TIME STEP
63C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
64C RHO0 | NEL | F | R | INITIAL DENSITY
65C RHO | NEL | F | R | DENSITY
66C VOLUME | NEL | F | R | VOLUME
67C EINT | NEL | F | R | TOTAL INTERNAL ENERGY
68C FR_WAV | NEL | F | RW| INPUT:cet element ou un de ses voisins est
69C | | | | completement flambe
70C | | | | OUTPUT:cet element est completement flambe
71C EPSPXX | NEL | F | R | STRAIN RATE XX
72C EPSPYY | NEL | F | R | STRAIN RATE YY
73C ... | | | |
74C DEPSXX | NEL | F | R | STRAIN INCREMENT XX
75C DEPSYY | NEL | F | R | STRAIN INCREMENT YY
76C ... | | | |
77C EPSXX | NEL | F | R | STRAIN XX
78C EPSYY | NEL | F | R | STRAIN YY
79C ... | | | |
80C SIGOXX | NEL | F | R | OLD ELASTO PLASTIC STRESS XX
81C SIGOYY | NEL | F | R | OLD ELASTO PLASTIC STRESS YY
82C ... | | | |
83C---------+---------+---+---+--------------------------------------------
84C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
85C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
86C ... | | | |
87C SIGVXX | NEL | F | W | VISCOUS STRESS XX
88C SIGVYY | NEL | F | W | VISCOUS STRESS YY
89C ... | | | |
90C SOUNDSP | NEL | F | W | SOUND SPEED (NEEDED FOR TIME STEP)
91C VISCMAX | NEL | F | W | MAXIMUM DAMPING MODULUS(NEEDED FOR TIME STEP)
92C---------+---------+---+---+--------------------------------------------
93C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
94C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
95C---------+---------+---+---+--------------------------------------------
96C G l o b a l P a r a m e t e r s
97C-----------------------------------------------
98#include "mvsiz_p.inc"
99C-----------------------------------------------
100#include "param_c.inc"
101#include "scr17_c.inc"
102#include "scr05_c.inc"
103#include "com08_c.inc"
104#include "units_c.inc"
105C-----------------------------------------------
106C I N P U T A r g u m e n t s
107C-----------------------------------------------
108C
109 INTEGER NEL, NUPARAM, NUVAR,IPT,
110 . NGL(NEL),MAT(NEL),IPM(NPROPMI,*)
111 my_real
112 . TIME,TIMESTEP,UPARAM(*),
113 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
114 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
115 . EPSPXY(NEL,2),EPSPYZ(NEL,2),EPSPZX(NEL,2),
116 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
117 . DEPSXY(NEL,2),DEPSYZ(NEL,2),DEPSZX(NEL,2),
118 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
119 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
120 . sigoxx(nel),sigoyy(nel),sigozz(nel),
121 . sigoxy(nel,2),sigoyz(nel,2),sigozx(nel,2),
122 . fr_wav(nel),amu(nel)
123C-----------------------------------------------
124C O U T P U T A r g u m e n t s
125C-----------------------------------------------
126 my_real
127 . signxx(nel),signyy(nel),signzz(nel),
128 . signxy(nel,2),signyz(nel,2),signzx(nel,2),
129 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
130 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
131 . soundsp(nel),viscmax(nel)
132C-----------------------------------------------
133C I N P U T O U T P U T A r g u m e n t s
134C-----------------------------------------------
135 my_real
136 . uvar(nel,nuvar), off(nel)
137C-----------------------------------------------
138C VARIABLES FOR FUNCTION INTERPOLATION
139C-----------------------------------------------
140 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
141 my_real
142 . FINTER ,TF(*)
143 EXTERNAL FINTER
144C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
145C Y : y = f(x)
146C X : x
147C DYDX : f'(x) = dy/dx
148C IFUNC(J): FUNCTION INDEX
149C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
150C NPF,TF : FUNCTION PARAMETER
151C-----------------------------------------------
152C L o c a l V a r i a b l e s
153C-----------------------------------------------
154 INTEGER I,J,IADBUF,IF1,IF2,AUX,IC,II,K,JJ,
155 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
156 . INDEX(MVSIZ), NINDX
157 my_real
158 . E11,E22,E33,G12,G23,G31,
159 . Y11,Y22,Y33,Y12,Y23,Y31,
160 . EP1,EP2,EP3,EP4,EP5,EP6,
161 . YC(MVSIZ),
162 . DYDX,DYDXV(MVSIZ),EP(MVSIZ,9),EPC(MVSIZ),
163 . EMX11,EMX22,EMX33,EMX12,EMX23,EMX31,AMUV
164 my_real
165 . sxy(nel),syx(mvsiz),syz(mvsiz),
166 . szy(mvsiz),szx(mvsiz),sxz(mvsiz),
167 . dxy(mvsiz),dyx(mvsiz),dyz(mvsiz),
168 . dzy(mvsiz),dzx(mvsiz),dxz(mvsiz),fac(mvsiz,18)
169C-----------------------------------------------
170C USER VARIABLES INITIALIZATION
171C-----------------------------------------------
172 IF(time==0.0)THEN
173 IF (nuvar>0) THEN
174 DO j=1,nuvar
175 DO i=1,nel
176 uvar(i,j)=zero
177 ENDDO
178 ENDDO
179 ENDIF
180 ENDIF
181C-----------------------------------------------
182#include "vectorize.inc"
183 DO i=1,nel
184C
185 iadbuf = ipm(7,mat(i))
186 e11 = uparam(iadbuf)
187 e22 = uparam(iadbuf+1)
188 e33 = uparam(iadbuf+2)
189 g12 = uparam(iadbuf+3)
190 g23 = uparam(iadbuf+4)
191 g31 = uparam(iadbuf+5)
192C
193 signxx(i) = sigoxx(i) + e11 * depsxx(i)
194 signyy(i) = sigoyy(i) + e22 * depsyy(i)
195 signzz(i) = sigozz(i) + e33 * depszz(i)
196 sxy(i) = sigoxy(i,1) + sigoxy(i,2)
197 syx(i) = sigoxy(i,1) - sigoxy(i,2)
198 syz(i) = sigoyz(i,1) + sigoyz(i,2)
199 szy(i) = sigoyz(i,1) - sigoyz(i,2)
200 szx(i) = sigozx(i,1) + sigozx(i,2)
201 sxz(i) = sigozx(i,1) - sigozx(i,2)
202
203 dxy(i) = depsxy(i,1) + depsxy(i,2)
204 dyx(i) = depsxy(i,1) - depsxy(i,2)
205 dyz(i) = depsyz(i,1) + depsyz(i,2)
206 dzy(i) = depsyz(i,1) - depsyz(i,2)
207 dzx(i) = depszx(i,1) + depszx(i,2)
208 dxz(i) = depszx(i,1) - depszx(i,2)
209
210 sxy(i) = sxy(i) + g12 * dxy(i)
211 syx(i) = syx(i) + g12 * dyx(i)
212 syz(i) = syz(i) + g23 * dyz(i)
213 szy(i) = szy(i) + g23 * dzy(i)
214 szx(i) = szx(i) + g31 * dzx(i)
215 sxz(i) = sxz(i) + g31 * dxz(i)
216C
217 signxy(i,1) = half*(sxy(i) + syx(i))
218 signyz(i,1) = half*(syz(i) + szy(i))
219 signzx(i,1) = half*(szx(i) + sxz(i))
220 signxy(i,2) = half*(sxy(i) - syx(i))
221 signyz(i,2) = half*(syz(i) - szy(i))
222 signzx(i,2) = half*(szx(i) - sxz(i))
223
224 soundsp(i) = sqrt(max(e11,e22,e33,g12,g23,g31)/rho0(i))
225 viscmax(i) = 0.
226C
227 ENDDO
228 nindx=0
229#include "vectorize.inc"
230 DO i=1,nel
231 iadbuf = ipm(7,mat(i)) - 1
232 emx11 = uparam(iadbuf+9)
233 emx22 = uparam(iadbuf+10)
234 emx33 = uparam(iadbuf+11)
235 emx12 = uparam(iadbuf+12)
236 emx23 = uparam(iadbuf+13)
237 emx31 = uparam(iadbuf+14)
238 fac(i,1 ) = uparam(iadbuf+21)
239 fac(i,2 ) = uparam(iadbuf+22)
240 fac(i,3 ) = uparam(iadbuf+23)
241 fac(i,4 ) = uparam(iadbuf+24)
242 fac(i,5 ) = uparam(iadbuf+25)
243 fac(i,6 ) = uparam(iadbuf+26)
244 fac(i,7 ) = uparam(iadbuf+27)
245 fac(i,8 ) = uparam(iadbuf+28)
246 fac(i,9 ) = uparam(iadbuf+29)
247 fac(i,10) = uparam(iadbuf+30)
248 fac(i,11) = uparam(iadbuf+31)
249 fac(i,12) = uparam(iadbuf+32)
250 fac(i,13) = uparam(iadbuf+33)
251 fac(i,14) = uparam(iadbuf+34)
252 fac(i,15) = uparam(iadbuf+35)
253 fac(i,16) = uparam(iadbuf+36)
254 fac(i,17) = uparam(iadbuf+37)
255 fac(i,18) = uparam(iadbuf+38)
256 IF((epsxx(i)>emx11.OR.
257 . epsyy(i)>emx22.OR.
258 . epszz(i)>emx33.OR.
259 . abs(epsxy(i)/two)>emx12.OR.
260 . abs(epsyz(i)/two)>emx23.OR.
261 . abs(epszx(i)/two)>emx31).AND.off(i)/=zero) THEN
262 off(i) = zero
263 nindx=nindx+1
264 index(nindx)=i
265 ENDIF
266 ENDDO
267 IF(nindx>0)THEN
268 DO j=1,nindx
269#include "lockon.inc"
270 WRITE(iout, 1000) ngl(index(j))
271 WRITE(istdo,1100) ngl(index(j)),tt
272#include "lockoff.inc"
273 ENDDO
274 ENDIF
275C
276#include "vectorize.inc"
277 DO i=1,nel
278C
279c AMU = RHO(I)/RHO0(I) - 1.
280 ep(i,1) = amu(i)
281 ep(i,2) = amu(i)
282 ep(i,3) = amu(i)
283 ep(i,4) = amu(i)
284 ep(i,5) = amu(i)
285 ep(i,6) = amu(i)
286 IF(nuparam>=8)THEN
287 iadbuf = ipm(7,mat(i))
288 if1=nint(uparam(iadbuf+6))
289 if2=nint(uparam(iadbuf+7))
290 IF(if1==1)THEN
291 ep(i,1) = epsxx(i)
292 ep(i,2) = epsyy(i)
293 ep(i,3) = epszz(i)
294 ELSEIF(if1==-1)THEN
295 ep(i,1) = -epsxx(i)
296 ep(i,2) = -epsyy(i)
297 ep(i,3) = -epszz(i)
298 ENDIF
299 IF(if2==1)THEN
300 ep(i,4) = epsxy(i)
301 ep(i,5) = epsyz(i)
302 ep(i,6) = epszx(i)
303 ep(i,7) = epsxy(i)
304 ep(i,8) = epsyz(i)
305 ep(i,9) = epszx(i)
306 ELSEIF(if2==-1)THEN
307 ep(i,4) = -epsxy(i)
308 ep(i,5) = -epsyz(i)
309 ep(i,6) = -epszx(i)
310 ep(i,7) = -epsxy(i)
311 ep(i,8) = -epsyz(i)
312 ep(i,9) = -epszx(i)
313 ENDIF
314 ENDIF
315 ENDDO
316C
317 DO j = 1, 9
318 ic = 0
319#include "vectorize.inc"
320 DO i = 1, nel
321 jj=j
322 IF(fr_wav(i)==1.)jj=j+9
323 nfunc = ipm(10,mat(i))
324 IF (nfunc>=jj) THEN
325 aux=ipm(10+jj,mat(i))
326 IF (aux/=0) THEN
327 ic = ic + 1
328 index(ic) = i
329 ipos1(ic) = nint(uvar(i,jj))
330 iad1(ic) = npf(aux) / 2 + 1
331 ilen1(ic) = npf(aux+1) / 2 - iad1(ic) - ipos1(ic)
332 epc(ic) = ep(i,j)
333 ENDIF
334 ENDIF
335 ENDDO
336C
337 IF (iresp==1) THEN
338 CALL vinter2dp(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
339 ELSE
340 CALL vinter2(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
341 ENDIF
342C
343 IF (j==1) THEN
344#include "vectorize.inc"
345 DO ii = 1, ic
346 i = index(ii)
347 jj=j
348 IF(fr_wav(i)==1.)jj=j+9
349 uvar(i,jj) = ipos1(ii)
350 signxx(i) = sign(min(abs(signxx(i)),
351 . fac(i,jj)*yc(ii)),signxx(i))
352 ENDDO
353 ELSEIF (j==2) THEN
354#include "vectorize.inc"
355 DO ii = 1, ic
356 i = index(ii)
357 jj=j
358 IF(fr_wav(i)==1.)jj=j+9
359 uvar(i,jj) = ipos1(ii)
360 signyy(i) = sign(min(abs(signyy(i)),
361 . fac(i,jj)*yc(ii)),signyy(i))
362 ENDDO
363 ELSEIF (j==3) THEN
364#include "vectorize.inc"
365 DO ii = 1, ic
366 i = index(ii)
367 jj=j
368 IF(fr_wav(i)==1.)jj=j+9
369 uvar(i,jj) = ipos1(ii)
370 signzz(i) = sign(min(abs(signzz(i)),
371 . fac(i,jj)*yc(ii)),signzz(i))
372 ENDDO
373 ELSEIF (j==4) THEN
374#include "vectorize.inc"
375 DO ii = 1, ic
376 i = index(ii)
377 jj=j
378 IF(fr_wav(i)==1.)jj=j+9
379 uvar(i,jj) = ipos1(ii)
380 sxy(i) = sign(min(abs(sxy(i)),
381 . fac(i,jj)*yc(ii)),sxy(i))
382 ENDDO
383 ELSEIF (j==5) THEN
384#include "vectorize.inc"
385 DO ii = 1, ic
386 i = index(ii)
387 jj=j
388 IF(fr_wav(i)==1.)jj=j+9
389 uvar(i,jj) = ipos1(ii)
390 syz(i) = sign(min(abs(syz(i)),
391 . fac(i,jj)*yc(ii)),syz(i))
392 ENDDO
393 ELSEIF (j==6) THEN
394#include "vectorize.inc"
395 DO ii = 1, ic
396 i = index(ii)
397 jj=j
398 IF(fr_wav(i)==1.)jj=j+9
399 uvar(i,jj) = ipos1(ii)
400 szx(i) = sign(min(abs(szx(i)),
401 . fac(i,jj)*yc(ii)),szx(i))
402 ENDDO
403 ELSEIF (j==7) THEN
404#include "vectorize.inc"
405 DO ii = 1, ic
406 i = index(ii)
407 jj=j
408 IF(fr_wav(i)==1.)jj=j+9
409 uvar(i,jj) = ipos1(ii)
410 syx(i) = sign(min(abs(syx(i)),
411 . fac(i,jj)*yc(ii)),syx(i))
412 ENDDO
413 ELSEIF (j==8) THEN
414#include "vectorize.inc"
415 DO ii = 1, ic
416 i = index(ii)
417 jj=j
418 IF(fr_wav(i)==1.)jj=j+9
419 uvar(i,jj) = ipos1(ii)
420 szy(i) = sign(min(abs(szy(i)),
421 . fac(i,jj)*yc(ii)),szy(i))
422 ENDDO
423 ELSEIF (j==9) THEN
424#include "vectorize.inc"
425 DO ii = 1, ic
426 i = index(ii)
427 jj=j
428 IF(fr_wav(i)==1.)jj=j+9
429 uvar(i,jj) = ipos1(ii)
430 sxz(i) = sign(min(abs(sxz(i)),
431 . fac(i,jj)*yc(ii)),sxz(i))
432 ENDDO
433 ENDIF
434C
435 ENDDO
436C
437 DO i=1,nel
438 signxy(i,1) = half*(sxy(i) + syx(i))
439 signyz(i,1) = half*(syz(i) + szy(i))
440 signzx(i,1) = half*(szx(i) + sxz(i))
441 signxy(i,2) = half*(sxy(i) - syx(i))
442 signyz(i,2) = half*(syz(i) - szy(i))
443 signzx(i,2) = half*(szx(i) - sxz(i))
444 ENDDO
445
446#include "vectorize.inc"
447 DO i=1,nel
448 iadbuf = ipm(7,mat(i)) - 1
449 emx11 = uparam(iadbuf+15)
450 emx22 = uparam(iadbuf+16)
451 emx33 = uparam(iadbuf+17)
452 emx12 = uparam(iadbuf+18)
453 emx23 = uparam(iadbuf+19)
454 emx31 = uparam(iadbuf+20)
455 IF(-epsxx(i)>emx11.OR.
456 . -epsyy(i)>emx22.OR.
457 . -epszz(i)>emx33.OR.
458 . abs(epsxy(i)/two)>emx12.OR.
459 . abs(epsyz(i)/two)>emx23.OR.
460 . abs(epszx(i)/two)>emx31) THEN
461 fr_wav(i) = one
462 ELSE
463 fr_wav(i) = zero
464 ENDIF
465 ENDDO
466C
467 1000 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
468 1100 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
469 . ' AT TIME :',g11.4)
470C
471 RETURN
472 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps68(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, fr_wav, 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 sigeps68.F:44
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