OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m22cplr.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine m22cplr (jft, jlt, ezz, off, epseq, ipla, gs, yld, a1, ca, cb, cn, ymax, nu, dpla, epchk, young, cc, epdr, epsl, hl, ym, yldl, alpe, icc, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, nel)

Function/Subroutine Documentation

◆ m22cplr()

subroutine m22cplr ( integer jft,
integer jlt,
ezz,
off,
epseq,
integer ipla,
gs,
yld,
a1,
ca,
cb,
cn,
ymax,
nu,
dpla,
epchk,
young,
cc,
epdr,
epsl,
hl,
ym,
yldl,
alpe,
integer, dimension(mvsiz) icc,
depsxx,
depsyy,
depsxy,
depsyz,
depszx,
sigoxx,
sigoyy,
sigoxy,
sigoyz,
sigozx,
signxx,
signyy,
signxy,
signyz,
signzx,
integer nel )

Definition at line 28 of file m22cplr.F.

37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.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 D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER JFT,JLT,IPLA,NEL
49C REAL
51 . ezz(*),off(*),epseq(*),gs(*),dpla(*)
53 . yld(mvsiz),a1(mvsiz),nu(mvsiz),ymax(mvsiz),
54 . cn(mvsiz),young(mvsiz),epchk(mvsiz),cc(mvsiz),epdr(mvsiz),
55 . epsl(mvsiz),hl(mvsiz),ym(mvsiz),yldl(mvsiz),alpe(mvsiz),
56 . ca(mvsiz),cb(mvsiz),
57 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),sigozx(nel),
58 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
59 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),depszx(mvsiz)
60 INTEGER ICC(MVSIZ)
61C-----------------------------------------------
62C L o c a l V a r i a b l e s
63C-----------------------------------------------
64 INTEGER I,J,N,NINDX,INDEX(MVSIZ),NMAX
65C REAL
67 . a(mvsiz),b(mvsiz),dpla_i(mvsiz),dpla_j(mvsiz),dr(mvsiz),
68 . h(mvsiz),nu1(mvsiz),nu2(mvsiz),p(mvsiz),q(mvsiz),
69 . svm(mvsiz),dk(mvsiz),ff(mvsiz),g(mvsiz),
70 . plaef(mvsiz),plaxx(mvsiz),playy(mvsiz),plaxy(mvsiz),
71 . epmax(mvsiz),depsl,alpei,gi,a1i,a2i,epsp,s11,s22,s12,
72 . s1s2,s122,vm2,pla_i,yld_i,f,df,p2,q2,nnu1,
73 . nnu2,nu3,nu4,nu5,nu6,r,umr,aa,bb,c,ee,sigz,pp,qq,s1,s2,s3,
74 . small
75 DATA nmax/3/
76C-----------------------------------------------
77 small = em7
78 DO i=jft,jlt
79 signxx(i)=sigoxx(i)
80 signyy(i)=sigoyy(i)
81 signxy(i)=sigoxy(i)
82 signyz(i)=sigoyz(i)
83 signzx(i)=sigozx(i)
84 ENDDO
85C
86#include "vectorize.inc"
87 DO i=jft,jlt
88 yld(i) = (ca(i)+cb(i)*epseq(i)**cn(i))
89 yld(i) = min(yld(i),ymax(i))
90 depsl = max(zero,epseq(i)-epsl(i))
91 yld(i) = min(yld(i),yldl(i)+hl(i)*depsl)
92 yld(i) = max(yld(i),em30)
93 alpei = min(one,yld(i)/(yld(i)+ym(i)*depsl))
94 alpei = max(em30,alpei)
95 young(i)= alpei*ym(i)
96 gi = half*young(i)/(one +nu(i))
97 g(i) = gi
98 a1i = young(i)/(one -nu(i)**2)
99 alpe(i) = max(alpe(i),a1i/a1(i))
100 a2i = nu(i)*a1i
101 signxx(i)= signxx(i)+a1i*depsxx(i)+a2i*depsyy(i)
102 signyy(i)= signyy(i)+a2i*depsxx(i)+a1i*depsyy(i)
103 signxy(i)= signxy(i)+gi *depsxy(i)
104 signyz(i)= signyz(i)+alpei*gs(i)*depsyz(i)
105 signzx(i)= signzx(i)+alpei*gs(i)*depszx(i)
106 ENDDO
107C-------------------
108C CONTRAINTE VM
109C-------------------
110#include "vectorize.inc"
111 DO i=jft,jlt
112 svm(i) = sqrt(signxx(i)*signxx(i)
113 . +signyy(i)*signyy(i)
114 . -signxx(i)*signyy(i)
115 . + three*signxy(i)*signxy(i))
116 ENDDO
117C----------------------------
118C VITESSE DE DEFORMATION
119C----------------------------
120 DO i=jft,jlt
121 epsp = max( abs(depsxx(i)), abs(depsyy(i)), half*abs(depsxy(i)))
122 epsp = max(epsp,epdr(i))
123 yld(i)= yld(i)*(one +cc(i) * log(epsp/epdr(i)))
124 IF (icc(i) == 2) yld(i) = min(yld(i),ymax(i))
125 ENDDO
126C------------------------------------------
127C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
128C------------------------------------------
129 IF (ipla == 0) THEN
130C projection radiale
131#include "vectorize.inc"
132 DO i=jft,jlt
133 dk(i) = min(one,yld(i)/max(svm(i),em30))
134 signxx(i) = signxx(i)*dk(i)
135 signyy(i) = signyy(i)*dk(i)
136 signxy(i) = signxy(i)*dk(i)
137 dpla(i) = off(i) * max(zero,(svm(i)-yld(i))/young(i))
138 s1 = half*(signxx(i)+signyy(i))
139 ezz(i) = dpla(i) * s1 /yld(i)
140 epseq(i) = epseq(i) + dpla(i)
141 epchk(i) = max(epseq(i),epchk(i))
142 ENDDO
143C------------------------------------------------------------------------
144 ELSEIF (ipla == 1) THEN
145C-------------------------
146C CRITERE DE VON MISES
147C-------------------------
148#include "vectorize.inc"
149 DO i=jft,jlt
150 s1 = signxx(i) + signyy(i)
151 s2 = signxx(i) - signyy(i)
152 s3 = signxy(i)
153 a(i) = fourth*s1*s1
154 b(i) = three_over_4*s2*s2 + three*s3*s3
155 svm(i) = sqrt(a(i) + b(i))
156 ENDDO
157C-------------------------
158C GATHER PLASTIC FLOW
159C-------------------------
160 nindx=0
161C
162 DO i=jft,jlt
163 dpla(i) = zero
164 IF (svm(i) > yld(i) .AND. off(i) == one) THEN
165 nindx = nindx + 1
166 index(nindx) = i
167 ENDIF
168 ENDDO
169C
170 IF (nindx == 0) GOTO 800
171C---------------------------
172C DEP EN CONTRAINTE PLANE
173C---------------------------
174#include "vectorize.inc"
175 DO j=1,nindx
176 i = index(j)
177 nu1(i) = one/(one-nu(i))
178 nu2(i) = one/(one+nu(i))
179 h(i) = cn(i)*cb(i)*exp((cn(i)-one)*log(epseq(i)+small))
180 IF (yld(i) >= ymax(i)) h(i) = zero
181 dpla_j(i) = (svm(i)-yld(i))/(three*g(i)+h(i))
182 ENDDO
183C
184 DO n=1,nmax
185#include "vectorize.inc"
186 DO j=1,nindx
187 i = index(j)
188 dpla_i(i) = dpla_j(i)
189 dpla(i) = dpla_j(i)
190 pla_i = epseq(i)+dpla_i(i)
191 yld_i = min(ymax(i),ca(i)+cb(i)*pla_i**cn(i))
192 dr(i) = half*young(i)*dpla_i(i)/yld_i
193 p(i) = one/(one+dr(i)*nu1(i))
194 q(i) = one/(one+three*dr(i)*nu2(i))
195 p2 = p(i)*p(i)
196 q2 = q(i)*q(i)
197 f = a(i)*p2+b(i)*q2-yld_i*yld_i
198 df = -(a(i)*nu1(i)*p2*p(i)+three*b(i)*nu2(i)*q2*q(i))
199 . *(young(i)-two*dr(i)*h(i))/yld_i
200 . -two*h(i)*yld_i
201 IF (dpla_i(i) > zero) THEN
202 dpla_j(i) = max(zero,dpla_i(i)-f/df)
203 ELSE
204 dpla_j(i) = zero
205 ENDIF
206 ENDDO
207 ENDDO
208C------------------------------------------
209C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
210C------------------------------------------
211#include "vectorize.inc"
212 DO j=1,nindx
213 i = index(j)
214 dpla(i) = dpla_i(i)
215 epseq(i)= epseq(i) + dpla_i(i)
216 epchk(i)= max(epseq(i),epchk(i))
217 s1 = (signxx(i)+signyy(i))*p(i)
218 s2 = (signxx(i)-signyy(i))*q(i)
219 signxx(i) = half*(s1+s2)
220 signyy(i) = half*(s1-s2)
221 signxy(i) = signxy(i)*q(i)
222 ezz(i) = dr(i)*s1/young(i)
223 ENDDO
224 ELSEIF (ipla == 2) THEN
225C---
226C projection radial sur le deviateur sur un critere reduit
227C projection elastique en z => sig33 = 0
228C le coef. de reduction du critere est tel que
229C l'on se trouve sur le critere apres les 2 projections
230C---
231#include "vectorize.inc"
232 DO i=jft,jlt
233 pp = -(signxx(i)+signyy(i))*third
234 s11 = signxx(i)+pp
235 s22 = signyy(i)+pp
236C s33 = p = -(S11 + S22)
237 s12 = signxy(i)
238 p2 = pp*pp
239 s1s2 = s11*s22
240 s122 = s12*s12
241 nnu1 = nu(i) / (one - nu(i))
242 nnu2 = nnu1*nnu1
243 nu4 = one + nnu2 + nnu1
244 nu6 = half - nnu2 + half*nnu1
245 qq = (one - nnu1)*pp
246 aa = p2*nu4 + three*(s122 - s1s2)
247 bb = p2*nu6
248 c = qq*qq
249 vm2= aa+bb+bb+c
250 c = c - yld(i)*yld(i)
251 r = min(one,(-bb+ sqrt(max(zero,bb*bb-aa*c)))/max(aa ,em20))
252 umr = one - r
253 qq = qq*umr
254 signxx(i) = signxx(i)*r - qq
255 signyy(i) = signyy(i)*r - qq
256 signxy(i) = s12*r
257 dpla(i) = off(i)*sqrt(vm2)*umr/(three*g(i))
258 s1 = half*(signxx(i)+signyy(i))
259 ezz(i) = dpla(i) * s1 / yld(i)
260 epseq(i) = epseq(i) + dpla(i)
261 epchk(i) = max(epseq(i),epchk(i))
262 ENDDO
263 ENDIF ! IF (IPLA == 0) THEN
264C
265 800 CONTINUE
266C
267 DO i=jft,jlt
268 IF (alpe(i) < zep999) THEN
269 r = one - young(i)*dpla(i)/max(em20,yld(i))
270 r = max(zero,r)
271 signyz(i) = signyz(i)*r
272 signzx(i) = signzx(i)*r
273 ENDIF
274 ENDDO
275C
276 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