OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps22g.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!|| sigeps22g ../engine/source/materials/mat/mat022/sigeps22g.f
25!||--- called by ------------------------------------------------------
26!|| mulawglc ../engine/source/materials/mat_share/mulawglc.f
27!||--- uses -----------------------------------------------------
28!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.f90
29!||====================================================================
30 SUBROUTINE sigeps22g(ELBUF_STR,
31 1 JFT ,JLT ,PM ,FOR ,MOM ,
32 2 THK ,OFF ,DT1C ,NU ,THK0 ,
33 3 GS ,EPSP ,IOFC ,INDX ,NEL ,
34 4 NGL ,EXZ ,EYZ ,MX ,IOFF_DUCT,
35 5 DEGMB ,DEGFX ,DEPSXX ,DEPSYY ,DEPSXY ,
36 6 DEPSYZ ,DEPSZX ,DEPBXX ,DEPBYY ,DEPBXY ,
37 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
38 8 MOMOXX ,MOMOYY ,MOMOXY ,SIGNXX ,SIGNYY ,
39 9 SIGNXY ,SIGNYZ ,SIGNZX ,MOMNXX ,MOMNYY ,
40 A MOMNXY )
41!-----------------------------------------------
42! M o d u l e s
43!-----------------------------------------------
44 USE elbufdef_mod
45!-----------------------------------------------
46! I m p l i c i t T y p e s
47!-----------------------------------------------
48#include "implicit_f.inc"
49#include "comlock.inc"
50!-----------------------------------------------
51! G l o b a l P a r a m e t e r s
52!-----------------------------------------------
53#include "mvsiz_p.inc"
54!-----------------------------------------------
55! C o m m o n B l o c k s
56!-----------------------------------------------
57#include "units_c.inc"
58#include "param_c.inc"
59#include "scr17_c.inc"
60#include "com08_c.inc"
61#include "impl1_c.inc"
62!-----------------------------------------------
63! D u m m y A r g u m e n t s
64!-----------------------------------------------
65 INTEGER JFT,JLT,IOFC,NEL,IOFF_DUCT(*),MX
66 INTEGER NGL(MVSIZ),INDX(MVSIZ)
67 my_real
68 . PM(NPROPM,*),
69 . OFF(*),DT1C(*),GS(*),THK(*),EPSP(MVSIZ)
70 my_real
71 . EXZ(MVSIZ),EYZ(MVSIZ),KXX(MVSIZ),KYY(MVSIZ),KXY(MVSIZ),
72 . NU(MVSIZ),THK0(MVSIZ),DEGMB(MVSIZ),DEGFX(MVSIZ)
73 my_real
74 . FOR(NEL,5),MOM(NEL,3),
75 . depsxx(nel),depsyy(nel),depsxy(nel),depsyz(nel),depszx(nel),
76 . depbxx(nel),depbyy(nel),depbxy(nel),
77 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),sigozx(nel),
78 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
79 . momoxx(nel),momoyy(nel),momoxy(nel),
80 . momnxx(nel),momnyy(nel),momnxy(nel)
81 TYPE(elbuf_struct_), TARGET :: ELBUF_STR
82!-----------------------------------------------
83! L o c a l V a r i a b l e s
84!-----------------------------------------------
85 INTEGER ICC(MVSIZ),I,J,ICC_1,NINDX
86 my_real
87 . F1(MVSIZ),F2(MVSIZ),F3(MVSIZ),F4(MVSIZ),F5(MVSIZ),
88 . YM(MVSIZ),FP1(MVSIZ),FP2(MVSIZ),FP3(MVSIZ),
89 . M1(MVSIZ),M2(MVSIZ),M3(MVSIZ),MP1(MVSIZ),MP2(MVSIZ),MP3(MVSIZ),
90 . DWELM(MVSIZ),DWELF(MVSIZ),CA(MVSIZ),CB(MVSIZ),CN(MVSIZ),
91 . epmx(mvsiz),ymax(mvsiz),yeq(mvsiz),dwpla(mvsiz),hh(mvsiz),
92 . rr(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),cc(mvsiz),
93 . b1(mvsiz),b2(mvsiz),b3(mvsiz),epdr(mvsiz),epsl(mvsiz),hl(mvsiz),
94 . yldl(mvsiz),a1(mvsiz),a2(mvsiz),g(mvsiz),
95 . degmb_loc(mvsiz),degsh_loc(mvsiz),degfx_loc(mvsiz),
96 . alpe(mvsiz),yld(mvsiz)
97 my_real
98 . depsl,ymi,a1i,thk12,ezz,dpla,aaa,bbb,ccc,
99 . p1,p2,p3,q1,q2,q3,ym_1,a1_1,c1_1,c2_1,c3_1,ca_1,cb_1,
100 . cn_1,epmx_1,ymax_1,cc_1,epsl_1,hl_1,yldl_1
101!
102 TYPE(g_bufel_) ,POINTER :: GBUF
103!-----------------------------------------------
104 GBUF => elbuf_str%GBUF
105!---
106 DATA p1/ 0.9659258/, p2/-0.2588190/, p3/ 1.7320508/
107 DATA q1/ 1.1153548/, q2/+0.2988584/, q3/ 0.5773503/
108!
109 ym_1 = pm(20,mx)
110 a1_1 = pm(24,mx)
111 c1_1 = pm(28,mx)
112 c2_1 = pm(29,mx)
113 c3_1 = pm(30,mx)
114 ca_1 = pm(38,mx)
115 cb_1 = pm(39,mx)
116 cn_1 = pm(40,mx)
117 epmx_1 = pm(41,mx)
118 ymax_1 = pm(42,mx)
119 cc_1 = pm(43,mx)
120 epsl_1 = pm(45,mx)
121 hl_1 = pm(46,mx)
122 yldl_1 = pm(47,mx)
123 icc_1 = nint(pm(49,mx))
124!
125 DO i=jft,jlt
126 ym(i) = ym_1
127 a1(i) = a1_1
128 c1(i) = c1_1
129 c2(i) = c2_1
130 c3(i) = c3_1
131 ca(i) = ca_1
132 cb(i) = cb_1
133 cn(i) = cn_1
134 epmx(i) = epmx_1
135 ymax(i) = ymax_1
136 cc(i) = cc_1
137 epdr(i) = max(em20,pm(44,mx)*dt1c(i))
138 epsl(i) = epsl_1
139 hl(i) = hl_1
140 yldl(i) = yldl_1
141 icc(i) = icc_1
142 ENDDO
143
144!-------------
145! CRITERE
146!-------------
147 DO i=jft,jlt
148 yld(i) = ca(i)+cb(i)*exp(cn(i) * log(gbuf%PLA(i)+em30))
149 yld(i) = min(yld(i),ymax(i))
150 depsl = max(zero,gbuf%PLA(i)-epsl(i))
151 yld(i) = min(yld(i),yldl(i)+hl(i)*depsl)
152 yld(i) = max(yld(i),zero)
153 alpe(i)= min(one,yld(i)/(yld(i)+ym(i)*depsl))
154 ymi = alpe(i)*ym(i)
155 g(i) = half*ymi/(one+nu(i))
156 a1i = ymi/(one-nu(i)**2)
157 alpe(i)= max(em30,a1i/a1(i))
158 a1(i) = a1i
159 a2(i) = nu(i)*a1(i)
160 thk12 = thk0(i)/twelve
161 b1(i) = a1(i)*thk12
162 b2(i) = a2(i)*thk12
163 b3(i) = g(i) *thk12
164 ENDDO
165!
166#include "vectorize.inc"
167 DO i=jft,jlt
168 degsh_loc(i) = for(i,4)*eyz(i)+for(i,5)*exz(i) ! shear only
169 degmb_loc(i) = degmb(i) - degsh_loc(i) ! (membrane without shear)
170 degfx_loc(i) = degfx(i) ! bending only
171 ENDDO
172!---------------------------
173! CONTRAINTES ELASTIQUES
174!---------------------------
175#include "vectorize.inc"
176 DO i=jft,jlt
177 f1(i) = sigoxx(i) + a1(i)*depsxx(i)+a2(i)*depsyy(i)
178 f2(i) = sigoyy(i) + a1(i)*depsyy(i)+a2(i)*depsxx(i)
179 f3(i) = sigoxy(i) + g(i) *depsxy(i)
180 f4(i) = sigoyz(i) + alpe(i)*gs(i)*depsyz(i)
181 f5(i) = sigozx(i) + alpe(i)*gs(i)*depszx(i)
182!
183 fp1(i) = p1*f1(i) + p2*f2(i)
184 fp2(i) = p2*f1(i) + p1*f2(i)
185 fp3(i) = p3*f3(i)
186 yeq(i) = fp1(i)**2 + fp2(i)**2
187 yeq(i) = yeq(i) + fp3(i)**2
188!
189 m1(i) = momoxx(i) + b1(i)*depbxx(i)+b2(i)*depbyy(i)
190 m2(i) = momoyy(i) + b1(i)*depbyy(i)+b2(i)*depbxx(i)
191 m3(i) = momoxy(i) + b3(i)*depbxy(i)
192!
193 mp1(i) = (p1*m1(i) + p2*m2(i))*four
194 mp2(i) = (p2*m1(i) + p1*m2(i))*four
195 mp3(i) = p3*m3(i) * four
196 yeq(i) = yeq(i) + mp1(i)**2+mp2(i)**2
197 yeq(i) = sqrt(yeq(i) + mp3(i)**2)
198 ENDDO
199!-------------
200! VITESSE DE DEFORMATION
201!-------------
202 DO i=jft,jlt
203 epsp(i) = abs(degmb_loc(i)+degfx_loc(i)*thk0(i))/(yeq(i)+em20)
204 epsp(i) = max(epsp(i),epdr(i))
205 yld(i) = yld(i)*(one+cc(i)*log(epsp(i)/epdr(i)))
206 IF (icc(i) == 2) yld(i)= min(yld(i),ymax(i))
207 rr(i) = min(one,yld(i)/(yeq(i)+em20))
208 ENDDO
209!--------------
210! ENERGIES
211!--------------
212#include "vectorize.inc"
213 DO i=jft,jlt
214 f1(i) =(q1*fp1(i) + q2*fp2(i))*rr(i)
215 f2(i) =(q2*fp1(i) + q1*fp2(i))*rr(i)
216 f3(i) = q3*fp3(i)*rr(i)
217!
218 dwelm(i) =(f1(i)+sigoxx(i))*(c1(i)*(f1(i)-sigoxx(i))+
219 . c2(i)*(f2(i)-sigoyy(i)))+
220 . (f2(i)+sigoyy(i))*(c2(i)*(f1(i)-sigoxx(i))+
221 . c1(i)*(f2(i)-sigoyy(i)))+
222 . (f3(i)+sigoxy(i))*(c3(i)*(f3(i)-sigoxy(i)))
223 degmb_loc(i) = degmb_loc(i) + f1(i)*depsxx(i)+f2(i)*depsyy(i)+f3(i)*depsxy(i)
224 ENDDO
225!
226 DO i=jft,jlt
227 m1(i) =(q1*mp1(i) + q2*mp2(i))*rr(i)*fourth
228 m2(i) =(q2*mp1(i) + q1*mp2(i))*rr(i)*fourth
229 m3(i) = q3*mp3(i)*rr(i)*fourth
230!
231 dwelf(i) =(m1(i)+momoxx(i))*twelve*(c1(i)*(m1(i)-momoxx(i))+
232 . c2(i)*(m2(i)-momoyy(i)))+
233 . (m2(i)+momoyy(i))*twelve*(c2(i)*(m1(i)-momoxx(i))+
234 . c1(i)*(m2(i)-momoyy(i)))+
235 . (m3(i)+momoxy(i))*twelve*(c3(i)*(m3(i)-momoxy(i)))
236 degfx_loc(i) = degfx_loc(i) + m1(i)*depbxx(i)+m2(i)*depbyy(i)+m3(i)*depbxy(i)
237 ENDDO
238!
239#include "vectorize.inc"
240 DO i=jft,jlt
241 dwpla(i) = degmb_loc(i) + degfx_loc(i)*thk0(i)-dwelm(i)-dwelf(i)
242 ENDDO
243!-----------------------
244! EPS PLASTIQUE
245!-----------------------
246 DO i=jft,jlt
247 dpla = off(i) * max(zero,half*dwpla(i)/max(em20,yld(i)))
248 gbuf%PLA(i) = gbuf%PLA(i) + dpla
249 aaa = abs(dwelm(i)+dwelf(i))
250 bbb = abs(dwpla(i))
251 ccc = max(em20,aaa+bbb)
252 ezz = - (depsxx(i) + depsyy(i)) * (nu(i)*aaa/(one-nu(i)) + bbb) / ccc
253 thk(i) = thk(i) * (one + ezz*off(i))
254 ENDDO
255!--------------------------------
256! TEST DE RUPTURE DUCTILE
257!--------------------------------
258 DO i=jft,jlt
259 IF (off(i) < em01) off(i) = zero
260 IF (off(i) < one) off(i) = off(i)*four_over_5
261 ENDDO
262!
263 nindx=0
264!
265 DO i=jft,jlt
266 IF (off(i) < one) cycle
267 IF (gbuf%PLA(i) < epmx(i)) cycle
268 off(i) = four_over_5
269 nindx = nindx + 1
270 indx(nindx) = i
271 ioff_duct(i) = 1
272 ENDDO
273!
274 IF (nindx > 0) THEN
275 IF (inconv == 1) THEN
276 DO j=1,nindx
277#include "lockon.inc"
278 WRITE(iout, 1000) ngl(indx(j))
279 WRITE(istdo,1100) ngl(indx(j)),tt
280#include "lockoff.inc"
281 ENDDO
282 ENDIF
283 ENDIF ! IF (NINDX > 0)
284!---
285 iofc = nindx
286!---
287 DO i=jft,jlt
288 signxx(i) = f1(i)
289 signyy(i) = f2(i)
290 signxy(i) = f3(i)
291 signyz(i) = f4(i)
292 signzx(i) = f5(i)
293 momnxx(i) = m1(i)
294 momnyy(i) = m2(i)
295 momnxy(i) = m3(i)
296 ENDDO
297!---
298 1000 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
299 1100 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT :',i10,' AT TIME :',g11.4)
300!---
301 RETURN
302 END
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:272
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine mulawglc(elbuf_str, jft, jlt, pm, for, mom, thk, eint, off, gstr, dir, shf, mat, area, exx, eyy, exy, nel, exz, eyz, kxx, kyy, kxy, dm, pid, tf, npf, mtn, dt1c, a1, bufmat, ssp, rho, viscmx, iofc, a2, indx, ngl, zcfac, gs, sigy, g, thk0, epsd_glob, ipla, igeo, ipm, table, ir, is, f_def, ismstr, nu, vol0, kfts, zshift, idamp_freq_range, mat_elem, damp_buf, for_g)
Definition mulawglc.F:59
subroutine sigeps22g(elbuf_str, jft, jlt, pm, for, mom, thk, off, dt1c, nu, thk0, gs, epsp, iofc, indx, nel, ngl, exz, eyz, mx, ioff_duct, degmb, degfx, depsxx, depsyy, depsxy, depsyz, depszx, depbxx, depbyy, depbxy, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, momoxx, momoyy, momoxy, signxx, signyy, signxy, signyz, signzx, momnxx, momnyy, momnxy)
Definition sigeps22g.F:41