OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps32c.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!|| sigeps32c ../engine/source/materials/mat/mat032/sigeps32c.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.F90
27!||--- calls -----------------------------------------------------
28!|| m32elas ../engine/source/materials/mat/mat032/m32elas.f
29!|| m32plas ../engine/source/materials/mat/mat032/m32plas.F
30!||====================================================================
31 SUBROUTINE sigeps32c(
32 1 JFT ,JLT ,PM ,THK ,OFF ,
33 2 DIR ,IPT ,IMAT ,NEL ,DT1C ,
34 3 GS ,EPSD ,THKLYL ,IPLA ,DPLA ,
35 4 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
36 5 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
37 6 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 7 PLA ,NGL ,HARDM ,INLOC ,DPLANL ,
39 8 SEQH ,LOFF ,ET )
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "param_c.inc"
52C-----------------------------------------------
53C D u m m y A r g u m e n t s
54C-----------------------------------------------
55 INTEGER JFT,JLT,IPLA,NEL,IMAT,IPT,INLOC
56 INTEGER NGL(*)
57C REAL
58 my_real
59 . PM(NPROPM,*),THK(*),OFF(*),DIR(NEL,2),DT1C(*),
60 . GS(*),DPLA(*),EPSD(*),HARDM(*)
61 my_real
62 . DEPSXX(MVSIZ),DEPSYY(MVSIZ),DEPSXY(MVSIZ),DEPSYZ(MVSIZ),
63 . depszx(mvsiz),sigoxx(nel),sigoyy(nel),sigoxy(nel),
64 . sigoyz(nel),sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
65 . signyz(nel),signzx(nel),pla(nel),thklyl(nel),dplanl(nel),
66 . seqh(nel)
67 my_real, DIMENSION(NEL), INTENT(IN) :: loff
68 my_real, DIMENSION(NEL), INTENT(INOUT) :: et
69C-----------------------------------------------
70C L o c a l V a r i a b l e s
71C-----------------------------------------------
72 INTEGER I,J
73 my_real
74 . NU,EZZ(MVSIZ),YOUNG,NORMXX,NORMYY,
75 . a01,a02,a03,yld,ymax,cm,ce,cn,ca,
76 . d11,d22,d12,sxx,syy,sxy,p,q,s11,s22,
77 . s12,a,b,c,seq,dseq_da,dseq_db,dseq_dc,
78 . da_ds11,da_ds22,da_ds12,db_ds11,db_ds22,
79 . db_dq,dc_dq,dq_dsxx,dq_dsyy,ds11_dsxx,
80 . ds11_dsyy,ds22_dsxx,ds22_dsyy,dsxx_dsigx,
81 . dsxx_dsigy,dsyy_dsigx,dsyy_dsigy,dsxy_dsigx,
82 . dsxy_dsigy,a12
83C-----------------------------------------------
84!
85 young = pm(20,imat)
86 nu = pm(21,imat)
87 a01 = pm(45,imat)
88 a02 = pm(46,imat)
89 a03 = pm(47,imat)
90 a12 = pm(48,imat)
91 ca = pm(38,imat)
92 ce = pm(39,imat)
93 cn = pm(40,imat)
94 ymax = pm(42,imat)
95 cm = pm(43,imat)
96!
97 ezz(1:mvsiz) = zero
98C----------------------------
99C ELASTIC STRESSES
100C----------------------------
101 CALL m32elas(jft ,jlt ,pm ,imat ,gs ,
102 . sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
103 . signxx ,signyy ,signxy ,signyz ,signzx ,
104 . depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
105 . nel )
106C------------------------------------------
107C PLASTIC RETURN MAPPING
108C------------------------------------------
109 CALL m32plas(jft ,jlt ,pm ,off ,pla ,
110 . imat ,dir ,ezz ,ipla ,dt1c ,
111 . dpla ,epsd ,nel ,ngl ,hardm ,
112 . signxx ,signyy ,signxy ,signyz ,signzx ,
113 . depsxx ,depsyy ,depsxy ,depsyz ,depszx )
114C----------------------------------------------------------
115C HILL EQUIVALENT STRESS OUTPUT AND THICKNESS VARIATION
116C----------------------------------------------------------
117 DO i = jft,jlt
118 d11 = dir(i,1)*dir(i,1)
119 d22 = dir(i,2)*dir(i,2)
120 d12 = dir(i,1)*dir(i,2)
121 sxx = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
122 syy = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
123 sxy = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
124 p = -(sxx+syy) * third
125 q = (one - (nu/(one - nu)))*p
126 s11 = sxx+q
127 s22 = syy+q
128 s12 = sxy
129 a = a01*s11*s11 + a02*s22*s22 - a03*s11*s22 + a12*s12*s12
130 b = -q*(a01*s11 + a02*s22 - half*a03*(s11+s22))
131 c = (a01+a02-a03)*q*q
132 seqh(i) = sqrt(a+b+b+c)
133 ! Coefficient for hourglass
134 IF (dpla(i) > zero) THEN
135 et(i) = hardm(i) / (hardm(i) + young)
136 ELSE
137 et(i) = one
138 ENDIF
139 ! Non-local
140 IF (inloc > 0) THEN
141 IF (loff(i) == one) THEN
142 seq = max(sqrt(a+b+b+c),em20)
143 dseq_da = one/(two*seq)
144 dseq_db = one/(seq)
145 dseq_dc = one/(two*seq)
146 da_ds11 = two*a01*s11 - a03*s22
147 da_ds22 = two*a02*s22 - a03*s11
148 da_ds12 = two*a12*s12
149 db_ds11 = (half*a03-a01)*q
150 db_ds22 = (half*a03-a02)*q
151 db_dq = -(a01*s11 + a02*s22 - half*a03*(s11+s22))
152 dc_dq = two*(a01+a02-a03)*q
153 dq_dsxx = -third*(one - (nu/(one - nu)))
154 dq_dsyy = -third*(one - (nu/(one - nu)))
155 ds11_dsxx = one + dq_dsxx
156 ds11_dsyy = dq_dsyy
157 ds22_dsxx = dq_dsxx
158 ds22_dsyy = one + dq_dsyy
159 dsxx_dsigx = d11
160 dsxx_dsigy = d22
161 dsyy_dsigx = d22
162 dsyy_dsigy = d11
163 dsxy_dsigx = -d12
164 dsxy_dsigy = d12
165 normxx = dseq_da*(
166 . da_ds11*(ds11_dsxx*dsxx_dsigx + ds11_dsyy*dsyy_dsigx) +
167 . da_ds22*(ds22_dsxx*dsxx_dsigx + ds22_dsyy*dsyy_dsigx) +
168 . da_ds12*dsxy_dsigx ) +
169 . dseq_db*(
170 . db_ds11*(ds11_dsxx*dsxx_dsigx + ds11_dsyy*dsyy_dsigx) +
171 . db_ds22*(ds22_dsxx*dsxx_dsigx + ds22_dsyy*dsyy_dsigx) +
172 . db_dq*(dq_dsxx*dsxx_dsigx + dq_dsyy*dsyy_dsigx)) +
173 . dseq_dc*(
174 . dc_dq*(dq_dsxx*dsxx_dsigx + dq_dsyy*dsyy_dsigx))
175 normyy = dseq_da*(
176 . da_ds11*(ds11_dsxx*dsxx_dsigy + ds11_dsyy*dsyy_dsigy) +
177 . da_ds22*(ds22_dsxx*dsxx_dsigy + ds22_dsyy*dsyy_dsigy) +
178 . da_ds12*dsxy_dsigy ) +
179 . dseq_db*(
180 . db_ds11*(ds11_dsxx*dsxx_dsigy + ds11_dsyy*dsyy_dsigy) +
181 . db_ds22*(ds22_dsxx*dsxx_dsigy + ds22_dsyy*dsyy_dsigy) +
182 . db_dq*(dq_dsxx*dsxx_dsigy + dq_dsyy*dsyy_dsigy)) +
183 . dseq_dc*(
184 . dc_dq*(dq_dsxx*dsxx_dsigy + dq_dsyy*dsyy_dsigy))
185 ezz(i) = max(dplanl(i),zero)*(normxx + normyy)
186 ezz(i) = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young) - ezz(i)
187 ENDIF
188 ! Local
189 ELSE
190 ezz(i) = -(depsxx(i)+depsyy(i))*(nu/(one-nu)) + ezz(i)
191 ENDIF
192 thk(i) = thk(i) + ezz(i)*thklyl(i)*off(i)
193 ENDDO
194!-----------
195 RETURN
196!-----------
197 END
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:272
subroutine m32elas(jft, jlt, pm, imat, gs, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx, nel)
Definition m32elas.F:33
subroutine m32plas(jft, jlt, pm, off, epseq, imat, dir, ezz, ipla, dt1c, dpla1, epspd, nel, ngl, hardm, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx)
Definition m32plas.F:35
#define max(a, b)
Definition macros.h:21
subroutine sigeps32c(jft, jlt, pm, thk, off, dir, ipt, imat, nel, dt1c, gs, epsd, thklyl, ipla, dpla, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, pla, ngl, hardm, inloc, dplanl, seqh, loff, et)
Definition sigeps32c.F:40