OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps27c.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!|| sigeps27c ../engine/source/materials/mat/mat027/sigeps27c.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.f90
27!||--- calls -----------------------------------------------------
28!|| m27crak ../engine/source/materials/mat/mat027/m27crak.F
29!|| m27elas ../engine/source/materials/mat/mat027/m27elas.F
30!|| m27plas ../engine/source/materials/mat/mat027/m27plas.F
31!|| roto_sig ../engine/source/airbag/roto.F
32!|| uroto_sig ../engine/source/airbag/uroto.F
33!||====================================================================
34 SUBROUTINE sigeps27c(
35 1 JFT ,JLT ,PM ,THK ,OFF ,
36 2 GSTR ,IMAT ,DT1 ,IPLA ,SHF ,
37 3 NGL ,THK0 ,THKLYL ,CRAK ,DAM ,
38 4 SIGY ,ZCFAC ,DPLA ,ILAYER ,IPT ,
39 5 ISRATE ,NEL ,ZZ ,NPTTOT ,EPSD_PG,
40 6 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX,
41 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX,
42 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX,
43 9 DIRDMG ,PLA ,INLOC ,DPLANL ,LOFF ,
44 . EPSD ,ASRATE )
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C G l o b a l P a r a m e t e r s
51C-----------------------------------------------
52#include "mvsiz_p.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "param_c.inc"
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER NGL(MVSIZ),IMAT,ILAYER,IPT,ISRATE,NPTTOT,
61 . JFT,JLT,IPLA,NEL,INLOC
62 my_real, INTENT(IN) :: DT1
63 my_real, INTENT(IN) :: ASRATE
64 my_real PM(NPROPM,*),THK(*),OFF(*),GSTR(NEL,8),
65 . SHF(*),SIGY(*),ZCFAC(MVSIZ,2),DPLA(*),
66 . THK0(MVSIZ),THKLYL(NEL),DPLANL(NEL)
67 my_real
68 . DEPSXX(MVSIZ),DEPSYY(MVSIZ),DEPSXY(MVSIZ),DEPSYZ(MVSIZ),
69 . DEPSZX(MVSIZ),SIGOXX(NEL),SIGOYY(NEL),SIGOXY(NEL),
70 . sigoyz(nel),sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
71 . signyz(nel),signzx(nel),dirdmg(nel,2),
72 . pla(nel),crak(nel),dam(nel),zz(mvsiz)
73 my_real, DIMENSION(NEL), INTENT(IN) :: loff
74 my_real ,DIMENSION(NEL), INTENT(IN) :: epsd_pg
75 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: epsd
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER I
80C REAL
81 my_real
82 . SIG(NEL,5),NU,STRN1(MVSIZ),STRN2(MVSIZ),STRN3(MVSIZ),YLD(MVSIZ),
83 . etse(mvsiz),zt,ezz(mvsiz),young
84C=======================================================================
85!
86 young = pm(20,imat)
87 nu = pm(21,imat)
88!
89 ezz(1:mvsiz) = zero
90C-----------------------------------------------------------
91C PLASTICITE AUX POINTS D'INTEGRATION
92C-----------------------------------------------------------
93C----------------------------
94C CONTRAINTES ELASTIQUES
95C----------------------------
96 DO i=jft,jlt
97 sig(i,1) = sigoxx(i)
98 sig(i,2) = sigoyy(i)
99 sig(i,3) = sigoxy(i)
100 sig(i,4) = sigoyz(i)
101 sig(i,5) = sigozx(i)
102 ENDDO
103!
104 CALL roto_sig(jft,jlt,sig,dirdmg,nel)
105!
106 CALL m27elas(jft ,jlt ,pm ,sig ,imat ,
107 2 depsxx ,depsyy ,depsxy ,depsyz ,depszx,
108 3 dam ,crak ,shf ,nel )
109C------------------------------------------
110C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
111C------------------------------------------
112 CALL m27plas(jft ,jlt ,pm ,off ,sig ,
113 2 pla ,imat ,dt1 ,ipla ,ezz ,
114 3 epsd_pg,israte ,yld ,etse ,dpla ,
115 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx,
116 5 nel ,epsd ,asrate )
117C---------------------------------
118C RETOUR DANS LE REPERE LOCAL
119C---------------------------------
120 CALL uroto_sig(jft,jlt,sig,dirdmg,nel)
121!
122 DO i=jft,jlt
123 signxx(i) = sig(i,1)
124 signyy(i) = sig(i,2)
125 signxy(i) = sig(i,3)
126 signyz(i) = sig(i,4)
127 signzx(i) = sig(i,5)
128 ENDDO
129C-----------------------
130C TENSILE RUPTURE
131C-----------------------
132 DO i=jft,jlt
133 zt = zz(i)*thk0(i)
134 strn1(i) = gstr(i,1)+zt*gstr(i,6)
135 strn2(i) = gstr(i,2)+zt*gstr(i,7)
136 strn3(i) =(gstr(i,3)+zt*gstr(i,8))*half
137 ENDDO
138C-----------------------
139 CALL m27crak(jft ,jlt ,pm ,dam ,dirdmg ,
140 2 imat ,ilayer ,off ,ngl ,nel ,
141 3 strn1 ,strn2 ,strn3 )
142C-----------------------
143 DO i=jft,jlt
144 zcfac(i,1) = zcfac(i,1) + etse(i) / npttot
145 zcfac(i,2) = min(etse(i),zcfac(i,2))
146 sigy(i) = min(sigy(i),yld(i))
147 ENDDO
148!---
149! thickness update:
150!---
151 DO i=jft,jlt
152 IF (inloc > 0) THEN
153 IF (loff(i) == one) THEN
154 ezz(i) = -nu*(signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young
155 ezz(i) = ezz(i) - max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/yld(i)
156 ENDIF
157 ELSE
158 ezz(i) =-(depsxx(i)+depsyy(i))*nu-(one - two*nu)*ezz(i)
159 ezz(i) = ezz(i)/(one-nu)
160 ENDIF
161 thk(i) = thk(i) + ezz(i) * thklyl(i)*off(i)
162 ENDDO
163C-----------
164 RETURN
165 END
subroutine m27crak(jft, jlt, pm, damt, dir, imat, ilayer, off, ngl, nel, strn1, strn2, strn3)
Definition m27crak.F:32
subroutine m27elas(jft, jlt, pm, sig, imat, depsxx, depsyy, depsxy, depsyz, depszx, damt, crak, shf, nel)
Definition m27elas.F:31
subroutine m27plas(jft, jlt, pm, off, sig, pla, imat, dt1, ipla, ezz, epsd_pg, israte, yld, etse, dpla, depsxx, depsyy, depsxy, depsyz, depszx, nel, epsd, asrate)
Definition m27plas.F:33
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine roto_sig(jft, jlt, sig, dir, nel)
Definition roto.F:126
subroutine sigeps27c(jft, jlt, pm, thk, off, gstr, imat, dt1, ipla, shf, ngl, thk0, thklyl, crak, dam, sigy, zcfac, dpla, ilayer, ipt, israte, nel, zz, npttot, epsd_pg, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, dirdmg, pla, inloc, dplanl, loff, epsd, asrate)
Definition sigeps27c.F:45
subroutine uroto_sig(jft, jlt, sig, dir, nel)
Definition uroto.F:125