OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m32plas.F File Reference
#include "implicit_f.inc"
#include "impl1_c.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "com08_c.inc"
#include "units_c.inc"
#include "scr17_c.inc"
#include "vectorize.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ m32plas()

subroutine m32plas ( integer jft,
integer jlt,
pm,
off,
epseq,
integer imat,
dir,
ezz,
integer ipla,
dt1c,
dpla1,
epspd,
integer nel,
integer, dimension(mvsiz) ngl,
hardm,
signxx,
signyy,
signxy,
signyz,
signzx,
depsxx,
depsyy,
depsxy,
depsyz,
depszx )

Definition at line 30 of file m32plas.F.

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
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
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
#define my_real
Definition cppsort.cpp:32
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 urotov(jft, jlt, sig, dir, nel)
Definition uroto.F:79