OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps68.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "scr17_c.inc"
#include "scr05_c.inc"
#include "com08_c.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ sigeps68()

subroutine sigeps68 ( integer nel,
integer nuparam,
integer nuvar,
integer nfunc,
integer, dimension(nfunc) ifunc,
integer, dimension(*) 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,
integer, dimension(nel) ngl,
integer ipt,
integer, dimension(npropmi,*) ipm,
integer, dimension(nel) mat,
amu )

Definition at line 32 of file sigeps68.F.

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
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
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