OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m32plas.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!|| m32plas ../engine/source/materials/mat/mat032/m32plas.F
25!||--- called by ------------------------------------------------------
26!|| sigeps32c ../engine/source/materials/mat/mat032/sigeps32c.F
27!||--- calls -----------------------------------------------------
28!|| urotov ../engine/source/airbag/uroto.F
29!||====================================================================
30 SUBROUTINE m32plas(JFT ,JLT ,PM ,OFF ,EPSEQ ,
31 . IMAT ,DIR ,EZZ ,IPLA ,DT1C ,
32 . DPLA1 ,EPSPD ,NEL ,NGL ,HARDM ,
33 . SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 . DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX )
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39#include "impl1_c.inc"
40#include "comlock.inc"
41C-----------------------------------------------
42C G l o b a l P a r a m e t e r s
43C-----------------------------------------------
44#include "mvsiz_p.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "param_c.inc"
49#include "com08_c.inc"
50#include "units_c.inc"
51#include "scr17_c.inc"
52C-----------------------------------------------
53C D u m m y A r g u m e n t s
54C-----------------------------------------------
55 INTEGER JFT, JLT,IMAT,IPLA,NEL
56C REAL
57 my_real
58 . PM(NPROPM,*), OFF(*), DIR(NEL,2), EPSEQ(*),
59 . ezz(*),dt1c(*),dpla1(*),epspd(*),hardm(*),
60 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
61 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
62 . depszx(mvsiz)
63C-----------------------------------------------
64C L o c a l V a r i a b l e s
65C-----------------------------------------------
66 INTEGER ICC
67 INTEGER I,NMAX,J, NINDX, INDEX(MVSIZ),NGL(MVSIZ),
68 . INDX(MVSIZ),N
69C REAL
70 my_real
71 . e,ca, ce, cn, nu,
72 . ymax,cm,epdr,epchk(mvsiz),
73 . a11,a22,a1122,a12,
74 . seq,yld,scale, epsp,s11,s22,s12,g3(mvsiz),nu1,
75 . d11, d22, d12, dpla, dtinv, p,a,b,c,a1s1,a2s2,q,umr,
76 . s_11(mvsiz),s_22(mvsiz),s_12(mvsiz),s1,s2,s3,seqh(mvsiz),
77 . h(mvsiz),dpla_i(mvsiz),dpla_j(mvsiz),etse(mvsiz),nu2(mvsiz),
78 . nu3(mvsiz),nu4(mvsiz),nu5(mvsiz),nnu1(mvsiz),q12(mvsiz),
79 . q21(mvsiz),jq(mvsiz),jq2(mvsiz),a_1,a_2,a_3,
80 . st11(mvsiz),st22(mvsiz),st12(mvsiz),axx(mvsiz),ayy(mvsiz),
81 . a_xy(mvsiz),axy(mvsiz),b_1(mvsiz),b_2(mvsiz),b_3(mvsiz),
82 . yldp(mvsiz),dr,p_1,p_2,p_3,pp1,pp2,pp3,f,df,yld_i,a1,
83 . a2,epsmax,sige(mvsiz,5)
84 DATA nmax/3/
85C-----------------------------------------------
86 e = pm(20,imat)
87 nu = pm(21,imat)
88 ca = pm(38,imat)
89 ce = pm(39,imat)
90 cn = pm(40,imat)
91 ymax = pm(42,imat)
92 cm = pm(43,imat)
93 epdr = pm(44,imat)
94 a11 = pm(45,imat)
95 a22 = pm(46,imat)
96 a1122= pm(47,imat)
97 a12 = pm(48,imat)
98 icc = nint(pm(49,imat))
99 a1 = pm(24,imat)
100 a2 = pm(25,imat)
101 epsmax = pm(41,imat)
102C
103 IF (ipla == 0) THEN
104C projection radiale
105C-------------------
106C CONTRAINTE ORTHO
107C-------------------
108 DO i=jft,jlt
109 d11 = dir(i,1)*dir(i,1)
110 d22 = dir(i,2)*dir(i,2)
111 d12 = dir(i,1)*dir(i,2)
112 s11 = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
113 s22 = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
114 s12 = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
115C----------------------------
116C VITESSE DE DEFORMATION
117C----------------------------
118 epsp = max(abs(depsxx(i)),abs(depsyy(i)),half*abs(depsxy(i)))
119 dtinv= dt1c(i)/max(dt1c(i)**2,em20)
120 epsp = epsp*dtinv
121 epsp = max(epsp ,epdr)
122 epspd(i) = epsp
123 nnu1(i) = nu / (one - nu)
124 nu5(i) = one-nnu1(i)
125C-------------
126C CRITERE
127C-------------
128 yld = ca*(ce+epseq(i))**cn*epsp**cm
129 yld = min(yld ,ymax)
130C------------------------------------------
131C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
132C------------------------------------------
133 seq = sqrt(a11*s11*s11 + a22*s22*s22
134 . -a1122*s11*s22 + a12*s12*s12)
135 scale = min(one,yld /max(seq ,em20))
136 signxx(i)=signxx(i)*scale
137 signyy(i)=signyy(i)*scale
138 signxy(i)=signxy(i)*scale
139 dpla = off(i)* max(zero,(seq -yld )/e)
140 ezz(i) = - nu5(i)*dpla*half*(signxx(i)+signyy(i))/max(em20,yld)
141 epseq(i) = epseq(i) + dpla
142 dpla1(i) = dpla
143 ENDDO
144 ELSEIF (ipla == 2) THEN
145C projection avec p=cste + mise a zero de s33 => sig sur le critere
146C-------------------
147C CONTRAINTE ORTHO
148C-------------------
149 DO i=jft,jlt
150 d11 = dir(i,1)*dir(i,1)
151 d22 = dir(i,2)*dir(i,2)
152 d12 = dir(i,1)*dir(i,2)
153 s11 = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
154 s22 = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
155 s12 = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
156C----------------------------
157C VITESSE DE DEFORMATION
158C----------------------------
159 epsp = max(abs(depsxx(i)),abs(depsyy(i)),half*abs(depsxy(i)))
160 dtinv= dt1c(i)/max(dt1c(i)**2,em20)
161 epsp = epsp*dtinv
162 epsp = max(epsp ,epdr)
163 epspd(i) = epsp
164C-------------
165C CRITERE
166C-------------
167 yld =ca*(ce+epseq(i))**cn*epsp**cm
168 yld = min(yld ,ymax)
169C------------------------------------------
170C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
171C------------------------------------------
172 nu1 = nu/(one - nu)
173 nu5(i) = one-nu1
174 g3(i) = three_half*e/(one + nu)
175 p = -(s11+s22) * third
176 q = (one -nu1)*p
177 s11 = s11+q
178 s22 = s22+q
179 a1s1 = a11*s11
180 a2s2 = a22*s22
181 a = a1s1*s11 + a2s2*s22 - a1122*s11*s22 + a12*s12*s12
182 b = -q*(a1s1 + a2s2 - half*a1122*(s11+s22))
183 c = (a11+a22-a1122)*q*q
184 seq = sqrt(a+b+b+c)
185 c = c - yld*yld
186 scale = min(one,(-b + sqrt(max(zero,b*b-a*c)))/max(a ,em20))
187 umr = one - scale
188 q = q*umr
189 signxx(i) = signxx(i)*scale - q
190 signyy(i) = signyy(i)*scale - q
191 signxy(i) = signxy(i)*scale
192 dpla = off(i)*seq*umr/max(em20,g3(i))
193 ezz(i) = -nu5(i)*dpla*half*(signxx(i)+signyy(i)) / yld
194 epseq(i) = epseq(i) + dpla
195 dpla1(i) = dpla
196 ENDDO
197C Projection iterative
198 ELSEIF (ipla == 1) THEN
199C-- -----------------------
200C CONTRAINTES ORHTO
201C-------------------------
202 DO i=jft,jlt
203 d11 = dir(i,1)*dir(i,1)
204 d22 = dir(i,2)*dir(i,2)
205 d12 = dir(i,1)*dir(i,2)
206 s_11(i) = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
207 s_22(i) = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
208 s_12(i) = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
209 nnu1(i) = nu / (one - nu)
210C----------------------------
211C VITESSE DE DEFORMATION
212C----------------------------
213 epsp = max(abs(depsxx(i)),abs(depsyy(i)),half*abs(depsxy(i)))
214 dtinv= dt1c(i)/max(dt1c(i)**2,em20)
215 epsp = epsp*dtinv
216 epsp = max(epsp ,epdr)
217 epspd(i) = epsp
218C--------------------------------
219C HILL CRITERION
220C--------------------------------
221 s1=a11*s_11(i)*s_11(i)
222 s2=a22*s_22(i)*s_22(i)
223 s3=a1122*s_11(i)*s_22(i)
224 axy(i)=a12*s_12(i)*s_12(i)
225 seqh(i)=sqrt(s1+s2-s3+axy(i))
226 ezz(i) = -(depsxx(i)+depsyy(i))*nnu1(i)
227 g3(i) = three_half*e/(one+nu)
228 yldp(i) = ca*(ce+epseq(i))**cn*epsp**cm
229 yldp(i) = min(yldp(i) ,ymax)
230 IF (yldp(i) >= ymax) THEN
231 h(i)=zero
232 ELSE
233 h(i)=ca*cn*(ce+epseq(i))**(cn-one)*epsp**cm
234 ENDIF
235 ENDDO
236C--------------------------------
237C HARDENING MODULUS
238C--------------------------------
239 DO i=jft,jlt
240 hardm(i) = h(i)
241 ENDDO
242C-------------------------
243C GATHER PLASTIC FLOW
244C-------------------------
245 nindx=0
246 DO i=jft,jlt
247 IF (seqh(i) > yldp(i) .AND. off(i) == one) THEN
248 nindx=nindx+1
249 index(nindx)=i
250 ENDIF
251 ENDDO
252 IF (nindx > 0) THEN
253C---------------------------
254C DEP EN CONTRAINTE PLANE
255C---------------------------
256#include "vectorize.inc"
257 DO j=1,nindx
258 i=index(j)
259 dpla_j(i)= (seqh(i)-yldp(i))/(g3(i)+h(i))
260 etse(i)= h(i)/(h(i)+e)
261 nu2(i) = one-nu*nu
262 nu3(i) = nu*half
263 nu4(i) = half*(one-nu)
264 nu5(i) = one-nnu1(i)
265 s1=a11*nu*two-a1122
266 s2=a22*nu*two-a1122
267 s12=a1122-nu*(a11+a22)
268 s3=sqrt(nu2(i)*(a11-a22)*(a11-a22)+s12*s12)
269 IF (abs(s1) < em20) THEN
270 q12(i)=zero
271 ELSE
272 q12(i)=-(a11-a22+s3)/s1
273 ENDIF
274 IF (abs(s2) < em20) THEN
275 q21(i)=zero
276 ELSE
277 q21(i)=(a11-a22+s3)/s2
278 ENDIF
279 jq(i)=one/(one-q12(i)*q21(i))
280 jq2(i)=jq(i)*jq(i)
281 a=a11*q12(i)
282 b=a22*q21(i)
283 a_1=(a11+a1122*q21(i)+b*q21(i))*jq2(i)
284 a_2=(a22+a1122*q12(i)+a*q12(i))*jq2(i)
285 a_3=(a+b)*jq2(i)*two+a1122*(jq2(i)*two-jq(i))
286 st11(i)=s_11(i)+s_22(i)*q12(i)
287 st22(i)=q21(i)*s_11(i)+s_22(i)
288 axx(i)=a_1*st11(i)*st11(i)
289 ayy(i)=a_2*st22(i)*st22(i)
290 a_xy(i)=a_3*st11(i)*st22(i)
291 a=a1122*nu3(i)
292 b=s3*jq(i)
293 b_1(i)=a22-a-b
294 b_2(i)=a11-a+b
295 b_3(i)=a12*nu4(i)
296 ENDDO ! DO J=1,NINDX
297C
298 DO n=1,nmax
299#include "vectorize.inc"
300 DO j=1,nindx
301 i=index(j)
302 dpla_i(i)=dpla_j(i)
303 IF (dpla_i(i) > zero) THEN
304 yld_i =min(yldp(i)+h(i)*dpla_i(i),ymax)
305 dr =a1*dpla_i(i)/yld_i
306 p_1=one/(one+b_1(i)*dr)
307 pp1=p_1*p_1
308 p_2=one/(one+b_2(i)*dr)
309 pp2=p_2*p_2
310 p_3=one/(one+b_3(i)*dr)
311 pp3=p_3*p_3
312 f = axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
313 . -yld_i*yld_i
314 df = -((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
315 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2(i)+
316 . axy(i)*pp3*p_3*b_3(i))*(a1-dr*h(i))/yld_i
317 . -h(i)*yld_i
318 dpla_j(i)=max(zero,dpla_i(i)-f*half/df)
319 ELSE
320 dpla_j(i)=zero
321 ENDIF !IF (DPLA_I(I) > ZERO)
322 ENDDO ! DO J=1,NINDX
323 ENDDO ! DO N=1,NMAX
324C------------------------------------------
325C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
326C------------------------------------------
327#include "vectorize.inc"
328 DO j=1,nindx
329 i=index(j)
330 epseq(i) = epseq(i) + dpla_j(i)
331 yld_i =yldp(i)+h(i)*dpla_j(i)
332 yld_i =min(yld_i ,ymax)
333 dr =a1*dpla_j(i)/yld_i
334 p_1=one/(one+b_1(i)*dr)
335 p_2=one/(one+b_2(i)*dr)
336 p_3=one/(one+b_3(i)*dr)
337 s1=st11(i)*p_1
338 s2=st22(i)*p_2
339 s_11(i)=jq(i)*(s1-s2*q12(i))
340 s_22(i)=jq(i)*(s2-s1*q21(i))
341 s_12(i)=s_12(i)*p_3
342 s1=a11*s_11(i)+a22*s_22(i)
343 . -a1122*(s_11(i)+s_22(i))*half
344 ezz(i) = - nu5(i)*dpla_j(i)*s1/yld_i
345 s1 =a1122*half
346 p_1=a11*s_11(i)-s1*s_22(i)
347 p_2=a22*s_22(i)-s1*s_11(i)
348 p_3=a12*s_12(i)
349 dpla1(i) = dpla_j(i)
350 ENDDO
351C
352 nindx=0
353 DO i=jft,jlt
354 IF (epseq(i) > epsmax .AND. off(i) == one) THEN
355 nindx=nindx+1
356 indx(nindx)=i
357 off(i)=zero
358 ENDIF
359 ENDDO
360C
361 DO i=jft,jlt
362 sige(i,1) = s_11(i)
363 sige(i,2) = s_22(i)
364 sige(i,3) = s_12(i)
365 sige(i,4) = zero
366 sige(i,5) = zero
367 ENDDO
368C
369 CALL urotov(jft,jlt,sige,dir,nel)
370C
371 DO i=jft,jlt
372 signxx(i)= sige(i,1)
373 signyy(i)= sige(i,2)
374 signxy(i)= sige(i,3)
375 ENDDO
376 ENDIF ! IF (NINDX > 0) THEN
377c---
378 IF (nindx > 0) THEN
379 IF (imconv == 1) THEN
380 DO i = 1, nindx
381#include "lockon.inc"
382 WRITE(iout, 1000) ngl(indx(i))
383 WRITE(istdo,1100) ngl(indx(i)),tt
384#include "lockoff.inc"
385 ENDDO
386 ENDIF
387 ENDIF ! IF (NINDX > 0)
388 ENDIF ! IF (IPLA == 0) THEN
389C
390 1000 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
391 1100 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT :',i10,' AT TIME :',g11.4)
392C
393 RETURN
394 END
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:272
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 min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine urotov(jft, jlt, sig, dir, nel)
Definition uroto.F:79