OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps44pi.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!|| sigeps44pi ../engine/source/materials/mat/mat044/sigeps44pi.F
25!||--- called by ------------------------------------------------------
26!|| mulaw_ib ../engine/source/elements/beam/mulaw_ib.F
27!||--- calls -----------------------------------------------------
28!|| vinter ../engine/source/tools/curve/vinter.F
29!||====================================================================
30 SUBROUTINE sigeps44pi(
31 1 NEL ,NUPARAM ,UPARAM ,IPM ,IMAT ,
32 2 OFF ,PLA ,DEPSXX ,DEPSXY ,DEPSXZ ,
33 3 SIGOXX ,SIGOXY ,SIGOXZ ,EPST ,EPSP ,
34 4 SIGNXX ,SIGNXY ,SIGNXZ ,ETSE ,NUVAR ,
35 5 UVAR ,IFUNC ,NVARTMP ,VARTMP ,NPF ,
36 6 TF ,NFUNC ,SIGY, NGL,IPT)
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C---------+---------+---+---+--------------------------------------------
42C C o m m o n B l o c k s
43C-----------------------------------------------
44#include "param_c.inc"
45#include "scr17_c.inc"
46#include "com04_c.inc"
47#include "com08_c.inc"
48#include "units_c.inc"
49#include "comlock.inc"
50C-----------------------------------------------
51C I N P U T A r g u m e n t s
52C-----------------------------------------------
53 INTEGER ,INTENT(IN) :: IMAT,NGL(NEL),IPT
54 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,
55 . NFUNC,IFUNC(NFUNC),NPF(*),NVARTMP
56 INTEGER ,DIMENSION(NPROPMI,NUMMAT) ,INTENT(IN) :: IPM
57 my_real ,DIMENSION(NEL) ,INTENT(IN) :: EPST,
58 . DEPSXX,DEPSXY,DEPSXZ,SIGOXX,SIGOXY,SIGOXZ
59 my_real ,DIMENSION(*) ,INTENT(IN) :: uparam
60 my_real
61 . tf(*)
62C-----------------------------------------------
63C O U T P U T A r g u m e n t s
64C-----------------------------------------------
65 my_real ,DIMENSION(NEL) ,INTENT(OUT) :: signxx,signxy,signxz,etse
66 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: pla,off,epsp
67 INTEGER :: VARTMP(NEL,NVARTMP)
68 my_real ,DIMENSION(NEL,NUVAR) ,INTENT(INOUT):: UVAR
69 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: SIGY
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER :: I,IADBUF
74 my_real :: svm,shfact,gs,epif,dmg,r,frate,alpha,epsdot
75 INTEGER, DIMENSION(NEL) :: ICC,ISRATE,VFLAG,IAD,IPOS,ILEN
76 my_real, DIMENSION(NEL) :: E,NU,G,G3,YLD,YLDMAX,EPMAX,EPDR,
77 . EPSR1,EPSR2,CA,CB,CN,CP,ASRATE,YSCALE,DFDPLA,DPLA
78C=======================================================================
79 shfact = five_over_6
80 epif = zero
81c
82 iadbuf = ipm(7,imat)-1
83 DO i=1,nel
84 e(i) = uparam(iadbuf+1)
85 nu(i) = uparam(iadbuf+2)
86 ca(i) = uparam(iadbuf+3)
87 yldmax(i)= uparam(iadbuf+4)
88 epmax(i) = uparam(iadbuf+5)
89 epsr1(i) = uparam(iadbuf+6)
90 epsr2(i) = uparam(iadbuf+7)
91 cb(i) = uparam(iadbuf+8)
92 cn(i) = uparam(iadbuf+9)
93 icc(i) = nint(uparam(iadbuf+10))
94 epdr(i) = uparam(iadbuf+11)
95 epif = max(epif,epdr(i))
96 cp(i) = uparam(iadbuf+12)
97 g(i) = uparam(iadbuf+16)
98 g3(i) = uparam(iadbuf+18)
99 israte(i)= nint(uparam(iadbuf+13))
100 asrate(i)= uparam(iadbuf+14)
101 vflag(i) = nint(uparam(iadbuf+23))
102 yscale(i)= uparam(iadbuf+24)
103 IF (vflag(i) == 1) THEN
104 epsp(i) = uvar(i,1)
105 ENDIF
106 dpla(i) = zero
107 ENDDO
108c
109c--- Elastic constraints
110c
111 DO i = 1,nel
112 gs = shfact*g(i)
113 signxx(i) = sigoxx(i) + e(i)*depsxx(i)
114 signxy(i) = sigoxy(i) + gs*depsxy(i)
115 signxz(i) = sigoxz(i) + gs*depsxz(i)
116 etse(i) = one
117 ENDDO
118c
119c--- Yield stress
120c
121 IF (nfunc > 0) THEN
122 ipos(1:nel) = vartmp(1:nel,1)
123 iad(1:nel) = npf(ifunc(1)) / 2 + 1
124 ilen(1:nel) = npf(ifunc(1)+1) / 2 - iad(1:nel) - ipos(1:nel)
125 CALL vinter(tf,iad,ipos,ilen,nel,pla,dfdpla,yld)
126 vartmp(1:nel,1) = ipos(1:nel)
127 ENDIF
128c
129c
130c
131 DO i = 1,nel
132 IF (nfunc > 0) THEN
133 yld(i) = yscale(i)*yld(i)
134 ELSE
135 yld(i) = ca(i)
136 ENDIF
137 ENDDO
138c
139c
140c
141 DO i = 1,nel
142 IF (pla(i) > zero) THEN
143 IF (nfunc > 0) THEN
144 yld(i) = yscale(i)*yld(i)
145 ELSE
146 yld(i) = ca(i) + cb(i)*exp(cn(i)*log(pla(i)))
147 ENDIF
148 ENDIF
149 ENDDO
150c
151c Strain rate effect
152c
153 IF (epif > zero) THEN
154 DO i = 1,nel
155 IF (epdr(i) > zero) THEN
156 frate = one + (epsp(i)*epdr(i))**cp(i)
157 IF (icc(i)== 1) yldmax(i) = yldmax(i) * frate
158 IF ((nfunc > 0) .AND. (ca(i) /= zero)) THEN
159 IF (pla(i)>zero) THEN
160 yld(i) = yld(i) + (ca(i) + cb(i)*exp(cn(i)*log(pla(i))))*(frate-one)
161 ELSE
162 yld(i) = yld(i) + ca(i)*(frate-one)
163 ENDIF
164 ELSE
165 yld(i) = yld(i) * frate
166 ENDIF
167 ENDIF
168 ENDDO
169 ENDIF
170c-------------------
171c PROJECTION - radial return
172c-------------------
173 DO i = 1,nel
174 yld(i) = min(yld(i),yldmax(i))
175 sigy(i)= yld(i)
176 svm = signxx(i)**2 + three*(signxy(i)**2 + signxz(i)**2)
177 IF (svm > yld(i)**2) THEN
178 svm = sqrt(svm)
179 r = min( one, yld(i) / svm)
180 signxx(i) = signxx(i)*r
181 signxy(i) = signxy(i)*r
182 signxz(i) = signxz(i)*r
183 dpla(i) = off(i)*svm*(one - r) / e(i)
184 pla(i) = pla(i) + off(i)*svm*(one - r) / e(i)
185 ENDIF
186 ENDDO
187c--------------------------------
188c DUCTILE RUPTURE
189c--------------------------------
190 DO i=1,nel
191 IF (off(i) < em01) off(i) = zero
192 IF (off(i) < one) off(i) = off(i)*four_over_5
193 ENDDO
194c--------------------------------
195c AXIAL TENSION OR PLASTIC STRAIN FAILURE
196c--------------------------------
197 DO i = 1,nel
198 IF (off(i) == one) THEN
199 dmg = one
200 IF (epst(i) > epsr1(i)) THEN
201 dmg = (epsr2(i) - epst(i)) / (epsr2(i) - epsr1(i))
202 dmg = max(dmg, zero)
203 signxx(i) = signxx(i)*dmg
204 signxy(i) = signxy(i)*dmg
205 signxz(i) = signxz(i)*dmg
206 ENDIF
207c test strain failure
208 IF (dmg == zero .or. pla(i) >= epmax(i)) THEN
209 off(i) = four_over_5
210!#include "lockon.inc"
211 WRITE(iout, 1000) ngl(i),ipt
212 WRITE(istdo,1000) ngl(i),ipt
213!#include "lockoff.inc"
214 ENDIF
215 IF (vflag(i) == 1) THEN
216 alpha = min(one, asrate(i)*dt1)
217 epsdot = dpla(i)/max(em20,dt1)
218 epsp(i) = alpha*epsdot + (one - alpha)*epsp(i)
219 uvar(i,1) = epsp(i)
220 ENDIF
221c
222 ENDIF
223 ENDDO
224c-----------
225c---------------------------------------------------------
226 1000 FORMAT(5x,' FAILURE BEAM ELEMENT NUMBER',i3,', INTEGRATION POINT NUMBER ',i3)
227c---------------------------------------------------------
228 RETURN
229 END
#define alpha
Definition eval.h:35
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps44pi(nel, nuparam, uparam, ipm, imat, off, pla, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, epst, epsp, signxx, signxy, signxz, etse, nuvar, uvar, ifunc, nvartmp, vartmp, npf, tf, nfunc, sigy, ngl, ipt)
Definition sigeps44pi.F:37
subroutine vinter(tf, iad, ipos, ilen, nel, x, dydx, y)
Definition vinter.F:73