OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps92.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!|| sigeps92 ../engine/source/materials/mat/mat092/sigeps92.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
27!||--- calls -----------------------------------------------------
28!|| finter ../engine/source/tools/curve/finter.F
29!|| valpvec_v ../engine/source/materials/mat/mat033/sigeps33.F
30!|| valpvecdp_v ../engine/source/materials/mat/mat033/sigeps33.F
31!||====================================================================
32 SUBROUTINE sigeps92(
33 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
34 2 TF , TIME , TIMESTEP, UPARAM, RHO0 , RHO ,
35 3 VOLUME , EINT , NGL ,
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 , ISMSTR, ET ,
43 B IHET ,OFFG , EPSTH3 , IEXPAN, WW)
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 "mvsiz_p.inc"
52C-----------------------------------------------
53C C O M M O N
54C-----------------------------------------------
55#include "scr05_c.inc"
56#include "impl1_c.inc"
57C----------------------------------------------------------------
58C I N P U T A R G U M E N T S
59C----------------------------------------------------------------
60 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,NGL(*),IHET,IEXPAN
61 my_real
62 . TIME , TIMESTEP , UPARAM(NUPARAM),
63 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
64 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
65 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
66 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
67 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
68 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
69 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
70 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(NEL),
71 . sigoxy(nel), sigoyz(nel), sigozx(nel),offg(nel),
72 . epsth3(nel)
73C----------------------------------------------------------------
74C O U T P U T A R G U M E N T S
75C----------------------------------------------------------------
76 my_real
77 . signxx(nel), signyy(nel), signzz(nel),
78 . signxy(nel), signyz(nel), signzx(nel),
79 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
80 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
81 . soundsp(nel), viscmax(nel), et(nel)
82C----------------------------------------------------------------
83C I N P U T O U T P U T A R G U M E N T S
84C----------------------------------------------------------------
85 my_real
86 . uvar(nel,nuvar), off(nel) ,ww(nel)
87C----------------------------------------------------------------
88C VARIABLES FOR FUNCTION INTERPOLATION
89C----------------------------------------------------------------
90 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
91 my_real FINTER,FINTTE,TF(*),FINT2V
92 EXTERNAL FINTER,FINTTE
93C----------------------------------------------------------------
94C L O C A L V A R I B L E S
95C----------------------------------------------------------------
96 INTEGER I,J,MULLINS,II
97
98 my_real
99 . MU,D,LAM,G,RBULK,AA,BB,CC,P,TRACE(MVSIZ),C(5),BETA,
100 . T1(MVSIZ), T2(MVSIZ),T3(MVSIZ),AV(MVSIZ,6),EV(MVSIZ,3),
101 . evv(mvsiz,3),rv(mvsiz),rvd,di1lam1(mvsiz),di1lam2(mvsiz),di1lam3(mvsiz),
102 . dirprv(mvsiz,3,3),evd(3),eti(mvsiz)
103 my_real
104 . clam(5),lam_2(3),lam_4(3),amax,clp
105 my_real ,DIMENSION(NEL,3) :: evm,cii
106 my_real ,DIMENSION(NEL) :: gtmax,rkmax,rv_1
107C----------------------------------------------------------------
108C material parameters
109 mu = uparam(1)
110 d = uparam(2)
111 lam = uparam(3)
112 g = uparam(4)
113 rbulk = uparam(5)
114 c(1) = uparam(6)
115 c(2) = uparam(7)
116 c(3) = uparam(8)
117 c(4) = uparam(9)
118 c(5) = uparam(10)
119 mullins = int(uparam(13)) ! computed in updmat
120C iniialisation des variabesl users
121 IF(time==zero)THEN
122 DO j = 1,nuvar
123 DO i = 1, nel
124 uvar(i,j) = zero
125 ENDDO
126 ENDDO
127 ENDIF
128C
129 DO i=1,nel
130 av(i,1)=epsxx(i)
131 av(i,2)=epsyy(i)
132 av(i,3)=epszz(i)
133 av(i,4)=epsxy(i)/2
134 av(i,5)=epsyz(i)/2
135 av(i,6)=epszx(i)/2
136 ENDDO
137CEigenvalues needed to be calculated in double precision
138C for a simple precision executing
139 IF (iresp==1) THEN
140 CALL valpvecdp_v(av,evv,dirprv,nel)
141 ELSE
142 CALL valpvec_v(av,evv,dirprv,nel)
143 ENDIF
144C-ISMSTR=0-NO SMALL STRAIN OPTION:STRAINS ARE LOGARITHMIC, STRESS IS CAUCHY
145C-ISMSTR=1-SMALL STRAIN OPTION:STRAINS ARE ENGINEERING, STRESS IS CAUCHY
146C-ISMSTR=2-SMALL STRAIN OPTION:STRAINS ARE ENGINEERING, STRESS IS BIOT
147C-ISMSTR=3-NO SMALL STRAIN OPTION:STRESS IS BIOT
148 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4) THEN
149 DO i=1,nel
150C ---- (STRAIN IS LOGARITHMIC)
151 ev(i,1)=exp(evv(i,1))
152 ev(i,2)=exp(evv(i,2))
153 ev(i,3)=exp(evv(i,3))
154 ENDDO
155 ELSEIF(ismstr==10.OR.ismstr==12) THEN
156 DO i =1,nel
157 IF(offg(i)<=one) THEN
158 ev(i,1)=sqrt(evv(i,1)+ one)
159 ev(i,2)=sqrt(evv(i,2)+ one)
160 ev(i,3)=sqrt(evv(i,3)+ one)
161 ELSE
162 ev(i,1)=evv(i,1)+ one
163 ev(i,2)=evv(i,2)+ one
164 ev(i,3)=evv(i,3)+ one
165 END IF
166 ENDDO
167 ELSE
168C ---- STRAIN IS ENGINEERING)
169 DO i=1,nel
170 ev(i,1)=evv(i,1)+ one
171 ev(i,2)=evv(i,2)+ one
172 ev(i,3)=evv(i,3)+ one
173 ENDDO
174 ENDIF
175
176 IF (impl_s > 0 .OR. ihet > 1) THEN
177 eti(1:nel)=zero
178 DO j= 1,5
179 bb = one/lam**(2*j - 2)
180 aa = j*(j-1)*c(j)
181 DO i=1,nel
182 trace(i) = ev(i,1)*ev(i,1)+ ev(i,2)*ev(i,2) + ev(i,3)*ev(i,3)
183 cc = aa*bb*trace(i)**(j-2)
184 eti(i) = eti(i) + cc
185 ENDDO
186 ENDDO
187 DO i=1,nel
188 eti(i) = mu*eti(i)
189 et(i)= eti(i)
190 et(i)= max(one,et(i)/g)
191 ENDDO
192 ENDIF
193C----------------
194C
195C
196 DO i = 1,nel
197C---- RV = RHO0/RHO = RELATIVE VOLUME = DET A (A = GRADIENT OF DEFORMATION)
198 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
199 ENDDO
200C----THERM STRESS COMPUTATION-----
201 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12)) THEN
202 DO i=1,nel
203 rv(i) = rv(i) -epsth3(i)
204 ENDDO
205 ENDIF
206C----------------
207
208
209 DO i = 1,nel
210! RVD = RV**(-THIRD)
211 ! if rv > 0 --> rvd = exp(-third * ln(rv))
212 ! else --> rvd = 0
213 IF(rv(i)>zero) THEN
214 rvd = exp((-third)*log(rv(i)))
215 ELSE
216 rvd = zero
217 ENDIF
218 evd(1) = ev(i,1)*rvd
219 evd(2) = ev(i,2)*rvd
220 evd(3) = ev(i,3)*rvd
221 evm(i,1:3) = evd(1:3)
222C
223 trace(i) = evd(1)**2 + evd(2)**2 + evd(3)**2
224 di1lam1(i) = two*evd(1)**2 - two_third*trace(i)
225 di1lam2(i) = two*evd(2)**2 - two_third*trace(i)
226 di1lam3(i) = two*evd(3)**2 - two_third*trace(i)
227 t1(i) = zero
228 t2(i) = zero
229 t3(i) = zero
230 ENDDO
231 DO j=1,5
232 bb = one/lam**(2*j - 2)
233 aa = j*c(j)
234 clam(j) = bb*c(j)
235 DO i=1,nel
236 cc = aa*bb*trace(i)**(j-1)
237 t1(i) = t1(i) + cc*di1lam1(i)
238 t2(i) = t2(i) + cc*di1lam2(i)
239 t3(i) = t3(i) + cc*di1lam3(i)
240 ENDDO
241 ENDDO
242C RBilk = 2/D
243 DO i=1,nel
244 rv_1(i) = one/rv(i)
245 p = rv_1(i)*rbulk*(rv(i)**2 - one)/two
246 t1(i) = (mu*t1(i) + p)*rv_1(i)
247 t2(i) = (mu*t2(i) + p)*rv_1(i)
248 t3(i) = (mu*t3(i) + p)*rv_1(i)
249 ENDDO
250c------------------------
251 IF(mullins == 1)THEN
252 DO i = 1,nel
253 beta = one/lam**2
254 ww(i) = mu *(c(1)*(trace(i)- three)+c(2) * beta *(trace(i)**2- nine)
255 . + c(3) * beta**2 *(trace(i)**3- three**3)
256 . + c(4) * beta**3 *(trace(i)**4- three**4)
257 . + c(5) * beta**4 *(trace(i)**5- three**5) )
258
259 ENDDO
260 ENDIF
261c----compute GT_MAX
262 gtmax(1:nel) = g
263 rkmax(1:nel) = rbulk/two
264 cii(1:nel,1:3) = zero
265 DO ii = 1,5
266 clp = four*ii*clam(ii)
267 DO i=1,nel
268 lam_2(1:3) = evm(i,1:3)**2
269 lam_4(1:3) = lam_2(1:3)**2
270 aa = one_over_9*ii*trace(i)**ii
271 bb = zero
272 cc = zero
273 IF (ii>1) bb =third*(3-ii)*trace(i)**(ii-1)
274 IF (ii>2) cc =(ii-1)*trace(i)**(ii-2)
275 cii(i,1:3) = cii(i,1:3) +clp*(aa+bb*lam_2(1:3) +cc*lam_4(1:3))
276 ENDDO
277 ENDDO
278 DO i=1,nel
279 amax= max(cii(i,1),cii(i,2),cii(i,3))
280C---------reduce old result change
281 eti(i) = max(one,amax*0.81)
282 gtmax(i) = g*eti(i)
283 rkmax(i) = rkmax(i)*(one+rv_1(i)*rv_1(i))
284 rkmax(i) = max(rbulk,rkmax(i))
285C----
286 et(i)= max(one,amax)
287 ENDDO
288C
289C cauchy to glabale
290 DO i=1,nel
291 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*t1(i)
292 . + dirprv(i,1,2)*dirprv(i,1,2)*t2(i)
293 . + dirprv(i,1,3)*dirprv(i,1,3)*t3(i)
294
295 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*t2(i)
296 . + dirprv(i,2,3)*dirprv(i,2,3)*t3(i)
297 . + dirprv(i,2,1)*dirprv(i,2,1)*t1(i)
298
299 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*t3(i)
300 . + dirprv(i,3,1)*dirprv(i,3,1)*t1(i)
301 . + dirprv(i,3,2)*dirprv(i,3,2)*t2(i)
302
303 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*t1(i)
304 . + dirprv(i,1,2)*dirprv(i,2,2)*t2(i)
305 . + dirprv(i,1,3)*dirprv(i,2,3)*t3(i)
306
307 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*t2(i)
308 . + dirprv(i,2,3)*dirprv(i,3,3)*t3(i)
309 . + dirprv(i,2,1)*dirprv(i,3,1)*t1(i)
310
311 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*t3(i)
312 . + dirprv(i,3,1)*dirprv(i,1,1)*t1(i)
313 . + dirprv(i,3,2)*dirprv(i,1,2)*t2(i)
314C
315* SET SOUND SPEED
316 soundsp(i)=sqrt((four_over_3*gtmax(i) + rkmax(i))/rho(i))
317* SET VISCOSITY
318 viscmax(i) = zero
319 ENDDO
320C
321 RETURN
322 END
323
#define max(a, b)
Definition macros.h:21
subroutine valpvecdp_v(sig, val, vec, nel)
Definition sigeps33.F:2231
subroutine valpvec_v(sig, val, vec, nel)
Definition sigeps33.F:1902
subroutine sigeps92(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, ngl, 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, ismstr, et, ihet, offg, epsth3, iexpan, ww)
Definition sigeps92.F:44