OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps103.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!|| sigeps103 ../engine/source/materials/mat/mat103/sigeps103.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
27!||====================================================================
28 SUBROUTINE sigeps103(
29 A NEL ,NUPARAM ,NUVAR ,TIME ,UPARAM ,UVAR ,
30 C RHO0 ,RHO ,VOLUME ,EINT ,EPSD ,TEMP ,
31 D DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
32 E EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
33 F SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
34 G SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 H SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
36 I SOUNDSP ,OFF ,DPDM ,PLA ,JTHE )
37
38C------------------------------------------------------------------------
39C HENSEL SPITTEL Material Law
40C NUVAR NUMBER OF USER ELEMENT VARIABLES
41C UVAR USER ELEMENT VARIABLE ARRAY
42C UVAR(I,1) = THETA Temperature
43C
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C----------------------------------------------------------------
49C I n p u t A r g u m e n t s
50C----------------------------------------------------------------
51 INTEGER NEL, NUPARAM, JTHE,NUVAR
52 my_real
53 . TIME , UPARAM(NUPARAM),
54 . RHO(NEL) , RHO0(NEL) , VOLUME(NEL), EINT(NEL),
55 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL), DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
56 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL), EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
57 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(NEL), SIGOXY(NEL), SIGOYZ(NEL), SIGOZX(NEL),
58 . OFF(NEL) , DPDM(NEL) , EPSD(NEL)
59C----------------------------------------------------------------
60C O u t p u t A r g u m e n t s
61C----------------------------------------------------------------
62 my_real
63 . signxx(nel), signyy(nel), signzz(nel),
64 . signxy(nel), signyz(nel), signzx(nel),
65 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
66 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
67 . soundsp(nel)
68C----------------------------------------------------------------
69C I n p u t O u t p u t A r g u m e n t s
70C----------------------------------------------------------------
71 my_real ,DIMENSION(NEL,NUVAR) ,INTENT(INOUT) :: uvar
72 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: pla
73 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: temp
74C----------------------------------------------------------------
75C L o c a l V a r i a b l e s
76C----------------------------------------------------------------
77 INTEGER :: I
78 my_real :: DAVG(NEL), POLD(NEL), THETA(NEL), HM(NEL), EPS(NEL)
79 my_real :: yld(nel), yld_h(nel), yld_sr(nel), yld_t(nel), svm(nel)
80 my_real :: a0, eps0, time_fac, rhocp, tini, eta, t0k, ratio, dpla, g, g2, g3, j2
81 my_real :: m1, m2, m3, m4, m5, m7
82C----------------------------------------------------------------
83C I n i t i a l i z a t i o n
84C----------------------------------------------------------------
85 a0 = uparam(1)
86 time_fac= uparam(2)
87 g = uparam(3)
88 m1 = uparam(4)
89 m2 = uparam(5)
90 m3 = uparam(6)
91 m4 = uparam(7)
92 m5 = uparam(8)
93 m7 = uparam(9)
94 rhocp = uparam(10)
95 tini = uparam(11)
96 eta = uparam(12)
97 t0k = uparam(13)
98 eps0 = uparam(14)
99 g2 = two*g
100 g3 = three*g
101
102 IF (time == zero) THEN
103 uvar(1:nel,1) = tini
104 ENDIF
105
106 DO i=1,nel
107 pold(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
108 davg(i) = (depsxx(i)+depsyy(i)+depszz(i))*third
109 eps(i) = eps0 + pla(i)
110 ENDDO
111C-----------------------------------------------------------------------
112C Elastic deviatoric stress tensor
113C-----------------------------------------------------------------------
114 DO i=1,nel
115 signxx(i)=sigoxx(i)+pold(i)+g2*(depsxx(i)-davg(i))
116 signyy(i)=sigoyy(i)+pold(i)+g2*(depsyy(i)-davg(i))
117 signzz(i)=sigozz(i)+pold(i)+g2*(depszz(i)-davg(i))
118 signxy(i)=sigoxy(i)+g*depsxy(i)
119 signyz(i)=sigoyz(i)+g*depsyz(i)
120 signzx(i)=sigozx(i)+g*depszx(i)
121 ENDDO
122C--------------------------------------------------------
123C Sound speed !
124C--------------------------------------------------------
125 DO i=1,nel
126 dpdm(i) = dpdm(i) + four_over_3*g
127 soundsp(i) = sqrt(abs(dpdm(i))/rho0(i))
128 ENDDO
129C--------------------------------------------------------
130C Von Mises equivalent stress
131C--------------------------------------------------------
132 DO i=1,nel
133 j2 =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)+signxy(i)**2+signyz(i)**2+signzx(i)**2
134 svm(i) =sqrt(three*j2)
135 ENDDO
136C--------------------------------------------------------
137C Conversion of Kelvin to Celsius temp used in equations
138C--------------------------------------------------------
139 IF (jthe >= 0) THEN
140 theta(1:nel) = uvar(1:nel,1) - t0k
141 ELSE
142 theta(1:nel) = temp(1:nel) - t0k
143 ENDIF
144C--------------------------------------------------------
145C Yield Stress
146C--------------------------------------------------------
147C Hardening scale factor
148 DO i=1,nel
149 yld_h(i) = one
150 ENDDO
151 IF(m2 /= zero) THEN
152 DO i=1,nel
153 IF(eps(i) > zero) yld_h(i) = yld_h(i)*eps(i)**m2
154 ENDDO
155 ENDIF
156 IF(m4 /= zero) THEN
157 DO i=1,nel
158 IF(eps(i) > zero) yld_h(i) = yld_h(i) * exp(m4/eps(i))
159 ENDDO
160 ENDIF
161 IF(m7 /= zero) THEN
162 DO i=1,nel
163 IF(eps(i) > zero) yld_h(i) = yld_h(i) * exp(m7*eps(i))
164 ENDDO
165 ENDIF
166C Strain rate scale factor; convert strain rate in second-1
167 IF(m3 /= zero) THEN
168 DO i=1,nel
169 yld_sr(i) = (epsd(i)*time_fac)**m3
170 ENDDO
171 ELSE
172 DO i=1,nel
173 yld_sr(i) = one
174 ENDDO
175 ENDIF
176C temperature scale factor
177 IF(m1 /= zero .AND. m5 /= zero) THEN
178 DO i=1,nel
179 yld_t(i) = exp(theta(i)*m1) * (one+eps(i))**(theta(i)*m5)
180 ENDDO
181 ELSEIF(m1 /= zero) THEN
182 DO i=1,nel
183 yld_t(i) = exp(theta(i)*m1)
184 ENDDO
185 ELSEIF(m5 /= zero) THEN
186 DO i=1,nel
187 yld_t(i) = (one+eps(i))**(theta(i)*m5)
188 ENDDO
189 ELSE
190 DO i=1,nel
191 yld_t(i) = one
192 ENDDO
193 ENDIF
194C Yield Stress
195 DO i=1,nel
196 yld(i) = a0 * yld_h(i) * yld_sr(i) * yld_t(i)
197 ENDDO
198C----------------------------------------------------------------
199C Compute hardening modulus
200C----------------------------------------------------------------
201 DO i=1,nel
202 hm(i) = m7*yld(i)
203 ENDDO
204 DO i=1,nel
205 IF(eps(i) > zero) hm(i) = hm(i) + yld(i)*(m2-m4/eps(i))/eps(i)
206 ENDDO
207C----------------------------------------------------------------
208C Update deviatoric stress tensor
209C----------------------------------------------------------------
210 DO i=1,nel
211 ratio = min(one,yld(i)/ max(svm(i),em20))
212 ! plastic strain increment.
213 dpla = (one-ratio)*svm(i)/max(g3+hm(i),em20)
214 ! actual yield stress
215 yld(i) = max(yld(i)+dpla*hm(i),zero)
216 ratio = min(one,yld(i)/ max(svm(i),em20))
217 signxx(i) = signxx(i)*ratio
218 signyy(i) = signyy(i)*ratio
219 signzz(i) = signzz(i)*ratio
220 signxy(i) = signxy(i)*ratio
221 signyz(i) = signyz(i)*ratio
222 signzx(i) = signzx(i)*ratio
223 pla(i) = pla(i) + dpla
224 theta(i) = uvar(i,1) + eta*yld(i)*dpla/rhocp
225 ENDDO
226C
227 DO i=1,nel
228 uvar(i,1) = theta(i)
229 sigvxx(i) = zero
230 sigvyy(i) = zero
231 sigvzz(i) = zero
232 sigvxy(i) = zero
233 sigvyz(i) = zero
234 sigvzx(i) = zero
235 ENDDO
236 IF (jthe == 0) THEN
237 temp(1:nel) = theta(1:nel) + t0k
238 END IF
239!-----------
240 RETURN
241 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps103(nel, nuparam, nuvar, time, uparam, uvar, rho0, rho, volume, eint, epsd, temp, 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, off, dpdm, pla, jthe)
Definition sigeps103.F:37