OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps82.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!|| sigeps82 ../engine/source/materials/mat/mat082/sigeps82.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 sigeps82(
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 MFXX , MFXY , MFXZ , MFYX , MFYY , MFYZ ,
44 C MFZX , MFZY , MFZZ , IHET ,OFFG ,EPSTH3 ,
45 D IEXPAN )
46C-----------------------------------------------
47C I M P L I C I T T Y P E S
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C G L O B A L P A R A M E T E R S
52C-----------------------------------------------
53#include "mvsiz_p.inc"
54C-----------------------------------------------
55C C O M M O N
56C-----------------------------------------------
57#include "scr05_c.inc"
58#include "impl1_c.inc"
59C----------------------------------------------------------------
60C I N P U T A R G U M E N T S
61C----------------------------------------------------------------
62 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,NGL(*),IHET,IEXPAN
63 my_real
64 . TIME , TIMESTEP , UPARAM(NUPARAM),
65 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
66 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
67 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
68 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
69 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
70 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
71 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
72 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(NEL),
73 . SIGOXY(NEL), SIGOYZ(NEL), SIGOZX(NEL),
74 . MFXX(NEL) , MFXY(NEL), MFXZ(NEL),
75 . mfyx(nel) , mfyy(nel), mfyz(nel),
76 . mfzx(nel) , mfzy(nel), mfzz(nel),offg(nel),
77 . epsth3(nel)
78C----------------------------------------------------------------
79C O U T P U T A R G U M E N T S
80C----------------------------------------------------------------
81 my_real
82 . signxx(nel), signyy(nel), signzz(nel),
83 . signxy(nel), signyz(nel), signzx(nel),
84 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
85 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
86 . soundsp(nel), viscmax(nel), et(nel)
87C----------------------------------------------------------------
88C I N P U T O U T P U T A R G U M E N T S
89C----------------------------------------------------------------
90 my_real
91 . uvar(nel,nuvar), off(nel)
92C----------------------------------------------------------------
93C VARIABLES FOR FUNCTION INTERPOLATION
94C----------------------------------------------------------------
95 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
96 my_real FINTER,FINTTE,TF(*),FINT2V
97 EXTERNAL FINTER,FINTTE
98C----------------------------------------------------------------
99C L O C A L V A R I B L E S
100C----------------------------------------------------------------
101 INTEGER I,J,K,II,NORDRE,NMAXW,JJ
102 my_real
103 . mu(100),al(100),s(mvsiz,3),dd,pp,gmax,
104 . d(mvsiz),av(mvsiz,6),rbulk,ev(mvsiz,3),
105 . evd(mvsiz,3),rv(mvsiz),evv(mvsiz,3),
106 . dirprv(mvsiz,3,3),pui,pui_tab(3),lam_al(3)
107 my_real
108 . a(3,3),dpra(3,3),eigen(3) ,amax ,eti,p,efac
109 my_real ,DIMENSION(NEL,3) :: cii
110 my_real ,DIMENSION(NEL) :: gtmax,rkmax
111C----------------------------------------------------------------
112
113C SET INITIAL MATERIAL CONSTANTS
114 gmax = zero
115cc NU = UPARAM(1)
116 nordre = nint(uparam(1))
117 DO i= 1,nordre
118 mu(i) = uparam(1 + i)
119 al(i) = uparam(1 + nordre + i)
120 d(i) = uparam(1 + 2*nordre + i)
121 gmax = gmax + mu(i)
122
123 ENDDO
124
125cc RBULK = TWO/D(1) + TWO*GMAX*THIRD
126 rbulk = two/d(1)
127C iniialisation des variabesl users
128 IF(time==zero)THEN
129 DO j = 1,nuvar
130 DO i = 1, nel
131 uvar(i,j) = zero
132 ENDDO
133 ENDDO
134 ENDIF
135C---------------------------------
136c ENDIF
137 DO i=1,nel
138 av(i,1)=epsxx(i)
139 av(i,2)=epsyy(i)
140 av(i,3)=epszz(i)
141 av(i,4)=epsxy(i)/2
142 av(i,5)=epsyz(i)/2
143 av(i,6)=epszx(i)/2
144 ENDDO
145CEigenvalues needed to be calculated in double precision
146C for a simple precision executing
147 IF (iresp==1) THEN
148 CALL valpvecdp_v(av,evv,dirprv,nel)
149 ELSE
150 CALL valpvec_v(av,evv,dirprv,nel)
151 ENDIF
152C-ISMSTR=0-NO SMALL STRAIN OPTION:STRAINS ARE LOGARITHMIC, STRESS IS CAUCHY
153C-ISMSTR=1-SMALL STRAIN OPTION:STRAINS ARE ENGINEERING, STRESS IS CAUCHY
154C-ISMSTR=2-SMALL STRAIN OPTION:STRAINS ARE ENGINEERING, STRESS IS BIOT
155C-ISMSTR=3-NO SMALL STRAIN OPTION:STRESS IS BIOT
156 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4) THEN
157 DO i=1,nel
158C ---- (STRAIN IS LOGARITHMIC)
159 ev(i,1)=exp(evv(i,1))
160 ev(i,2)=exp(evv(i,2))
161 ev(i,3)=exp(evv(i,3))
162 ENDDO
163 ELSEIF(ismstr==10.OR.ismstr==12) THEN
164 DO i =1,nel
165 IF(offg(i)<=one) THEN
166 ev(i,1)=sqrt(evv(i,1)+ one)
167 ev(i,2)=sqrt(evv(i,2)+ one)
168 ev(i,3)=sqrt(evv(i,3)+ one)
169 ELSE
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 END IF
174 ENDDO
175 ELSE
176C ---- STRAIN IS ENGINEERING)
177 DO i=1,nel
178 ev(i,1)=evv(i,1)+ one
179 ev(i,2)=evv(i,2)+ one
180 ev(i,3)=evv(i,3)+ one
181 ENDDO
182 ENDIF
183
184 IF (impl_s > 0 .OR. ihet > 1) THEN
185 DO j =1,3
186 DO i=1,nel
187 amax = ev(i,j)
188 eti=zero
189 IF(amax/=zero) THEN
190 DO k= 1,nordre
191 eti = eti + mu(k)*amax**(al(k)-one) !MU(K)*EXP((AL(K)-ONE)*LOG(AMAX))
192 ENDDO
193 ENDIF
194 et(i)= max(eti,et(i))
195 ENDDO
196 ENDDO
197C EFAC=TWOP5
198 DO i=1,nel
199 et(i)= max(one,et(i)/gmax)
200 ENDDO
201 ENDIF
202C----------------
203C deviatorique strecth
204C
205 DO i=1,nel
206C---- RV = RHO0/RHO = RELATIVE VOLUME = DET A (A = GRADIENT OF DEFORMATION)
207 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
208 ENDDO
209C----THERM STRESS COMPUTATION-----Done before
210 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12)) THEN
211 DO i=1,nel
212 rv(i) = rv(i) -epsth3(i)
213 ENDDO
214 ENDIF
215C----------------
216 DO i=1,nel
217 IF(rv(i)/=zero) THEN
218 pui = rv(i)**(-third)!EXP((-THIRD)*LOG(RV(I)))
219 ELSE
220 pui = zero
221 ENDIF
222 evd(i,1) = ev(i,1)*pui
223 evd(i,2) = ev(i,2)*pui
224 evd(i,3) = ev(i,3)*pui
225 ENDDO
226 DO i=1,nel
227 s(i,1) = zero
228 s(i,2) = zero
229 s(i,3) = zero
230 p = zero
231 DO j=1,nordre
232 dd = two*mu(j)/al(j)
233 dd = dd /rv(i)
234 pp = zero
235 IF(al(j)/=zero) THEN
236 DO ii=1,3
237 IF(evd(i,ii)/=zero) THEN
238 pui_tab(ii) = evd(i,ii)**al(j)!EXP(AL(J)*LOG(EVD(I,II)))
239 ELSE
240 pui_tab(ii) = zero
241 ENDIF
242 ENDDO
243 ELSE
244 DO ii=1,3
245 IF(evd(i,ii)/=zero) THEN
246 pui_tab(ii) = one
247 ELSE
248 pui_tab(ii) = zero
249 ENDIF
250 ENDDO
251 ENDIF
252
253
254 IF(d(j) /= zero)pp = one/d(j)
255 s(i,1) = s(i,1) + dd*(two_third*pui_tab(1)
256 . - third*(pui_tab(2) + pui_tab(3)))
257C
258 s(i,2) = s(i,2) + dd*(two_third*pui_tab(2)
259 . - third*(pui_tab(1) + pui_tab(3)))
260C
261 s(i,3) = s(i,3) + dd*(two_third*pui_tab(3)
262 . - third*(pui_tab(2) + pui_tab(1)))
263C (-) pression
264 p = p + 2*j*pp*(rv(i) - one)**(2*j - 1)
265 ENDDO
266
267 s(i,1) = s(i,1) + p
268 s(i,2) = s(i,2) + p
269 s(i,3) = s(i,3) + p
270 ENDDO
271C
272C---------tagent G, RBULK:
273 gtmax(1:nel) = gmax
274 rkmax(1:nel) = rbulk
275C------max of Cii :
276 cii(1:nel,1:3) = zero
277 DO ii = 1,nordre
278 IF(mu(ii)/=zero) THEN
279 DO i=1,nel
280 lam_al(1:3) = exp(al(ii)*log(evd(i,1:3)))
281 amax = third*(lam_al(1)+lam_al(2)+lam_al(3))
282 cii(i,1:3) = cii(i,1:3) + mu(ii) * (lam_al(1:3)+amax)
283 ENDDO
284 ENDIF
285 ENDDO
286 DO ii = 2,nordre
287 IF (d(ii)==zero) cycle
288 pp = 2*ii*(2*ii-1)/d(ii)
289 jj = 2*ii - 2
290 DO i=1,nel
291 IF (abs(rv(i)- one)<em20) cycle
292 rkmax(i) = rkmax(i) + pp * (rv(i)- one)**jj
293 ENDDO
294 ENDDO
295C------GT=3/4 Cii (factor 1/2*1/3 already inside CII)
296 DO i=1,nel
297 amax= half*max(cii(i,1),cii(i,2),cii(i,3))/gmax
298C---------reduce old result change
299 eti = max(one,amax*0.81)
300 gtmax(i) = gmax*eti
301 rkmax(i) = max(rbulk,rkmax(i))
302C----
303 et(i)= max(one,amax)
304 ENDDO
305C cauchy to glabale
306 DO i=1,nel
307 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*s(i,1)
308 . + dirprv(i,1,2)*dirprv(i,1,2)*s(i,2)
309 . + dirprv(i,1,3)*dirprv(i,1,3)*s(i,3)
310
311 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*s(i,2)
312 . + dirprv(i,2,3)*dirprv(i,2,3)*s(i,3)
313 . + dirprv(i,2,1)*dirprv(i,2,1)*s(i,1)
314
315 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*s(i,3)
316 . + dirprv(i,3,1)*dirprv(i,3,1)*s(i,1)
317 . + dirprv(i,3,2)*dirprv(i,3,2)*s(i,2)
318
319 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*s(i,1)
320 . + dirprv(i,1,2)*dirprv(i,2,2)*s(i,2)
321 . + dirprv(i,1,3)*dirprv(i,2,3)*s(i,3)
322
323 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*s(i,2)
324 . + dirprv(i,2,3)*dirprv(i,3,3)*s(i,3)
325 . + dirprv(i,2,1)*dirprv(i,3,1)*s(i,1)
326
327 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*s(i,3)
328 . + dirprv(i,3,1)*dirprv(i,1,1)*s(i,1)
329 . + dirprv(i,3,2)*dirprv(i,1,2)*s(i,2)
330C
331* SET SOUND SPEED
332 soundsp(i)=sqrt((four_over_3*gtmax(i) + rkmax(i))/rho(i))
333* SET VISCOSITY
334 viscmax(i) = zero
335 ENDDO
336C
337 RETURN
338 END
339
#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 sigeps82(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, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ihet, offg, epsth3, iexpan)
Definition sigeps82.F:46