OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m15cplrc.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!|| m15cplrc ../engine/source/materials/mat/mat015/m15cplrc.F
25!||--- called by ------------------------------------------------------
26!|| sigeps15c ../engine/source/materials/mat/mat015/sigeps15c.f
27!||====================================================================
28 SUBROUTINE m15cplrc(NEL ,PM ,WPLA ,
29 2 IMATLY ,DAMT ,SHF ,NGL ,SIGE ,
30 3 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX,
31 4 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX,
32 5 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX,
33 6 EPSD_PG,EPSD ,ISRATE ,ASRATE ,TSAIWU )
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C G l o b a l P a r a m e t e r s
40C-----------------------------------------------
41#include "mvsiz_p.inc"
42
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "com08_c.inc"
47#include "param_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER NGL(MVSIZ)
52 INTEGER NEL, ISRATE
53C REAL
54 my_real
55 . PM(NPROPM,*),WPLA(*),DAMT(NEL,2),SHF(*),
56 . sige(mvsiz,5),
57 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
58 . depszx(mvsiz),
59 . sigoxx(nel),sigoyy(nel),
60 . sigoxy(nel),sigoyz(nel),sigozx(nel),
61 . signxx(nel),signyy(nel),signxy(nel),
62 . signyz(nel),signzx(nel),tsaiwu(nel)
63 my_real, DIMENSION(NEL), INTENT(IN) :: epsd_pg ! global element strain rate
64 my_real, DIMENSION(NEL), INTENT(INOUT) :: epsd ! lbuf%epsd
65 my_real, INTENT(IN) :: asrate
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I,IMATLY,JFLAG,FAIL
70 INTEGER ICC(MVSIZ),IFLAG(MVSIZ),FAIL_OLD(MVSIZ)
71 my_real
72 . DP1(MVSIZ), DP2(MVSIZ), DP3(MVSIZ),CB(MVSIZ),CN(MVSIZ),
73 . E11(MVSIZ), E22(MVSIZ), NU12(MVSIZ), NU21(MVSIZ),
74 . g12(mvsiz), g23(mvsiz), g31(mvsiz), fmax(mvsiz),
75 . s1(mvsiz), s2(mvsiz), s3(mvsiz), s4(mvsiz), s5(mvsiz),
76 . ds1(mvsiz), ds2(mvsiz), ds3(mvsiz), de(mvsiz),
77 . de1(mvsiz), de2(mvsiz), wvec(mvsiz), t1(mvsiz),
78 . t2(mvsiz), t3(mvsiz),lamda(mvsiz), coef(mvsiz),
79 . a11(mvsiz), a12(mvsiz), a22(mvsiz),
80 . so1(mvsiz), so2(mvsiz), so3(mvsiz),wplamx(mvsiz),
81 . eps1t1(mvsiz), eps2t1(mvsiz), sigrst1(mvsiz),
82 . eps1t2(mvsiz), eps2t2(mvsiz), sigrst2(mvsiz),
83 . eps1c1(mvsiz), eps2c1(mvsiz), sigrsc1(mvsiz),
84 . eps1c2(mvsiz), eps2c2(mvsiz), sigrsc2(mvsiz),
85 . eps1t12(mvsiz), eps2t12(mvsiz), sigrst12(mvsiz),
86 . cc(mvsiz),epdr(mvsiz), fyld(mvsiz),
87 . f1(mvsiz), f2(mvsiz), f12(mvsiz), f11(mvsiz), f22(mvsiz),
88 . f33(mvsiz),wplaref(mvsiz),beta(mvsiz),soft(3),
89 . scale, cnn, scale1, scale2, dam1, dam2,sigyt1,sigyt2,sigyc1,
90 . sigyc2,sigyt12,alpha,strp12,coefa,coefb,delta
91C=======================================================================
92 DO i=1,nel
93 de(i) =pm(44,imatly)
94 e11(i) =pm(33,imatly)
95 e22(i) =pm(34,imatly)
96 nu12(i) =pm(35,imatly)
97 nu21(i) =pm(36,imatly)
98 g12(i) =pm(37,imatly)
99 g23(i) =pm(38,imatly)
100 g31(i) =pm(39,imatly)
101 f1(i) =pm(54,imatly)
102 f2(i) =pm(55,imatly)
103 f11(i) =pm(56,imatly)
104 f22(i) =pm(57,imatly)
105 f33(i) =pm(58,imatly)
106 f12(i) =pm(59,imatly)
107 wplamx(i) =pm(41,imatly)
108 wplaref(i)=pm(68,imatly)
109 cb(i) =pm(46,imatly)
110 cn(i) =pm(47,imatly)
111 fmax(i) =pm(49,imatly)
112 cc(i) =pm(50,imatly)
113 epdr(i) =pm(51,imatly)
114 icc(i) =nint(pm(53,imatly))
115 IF (tt == zero) damt(i,1)=one
116 IF (tt == zero) damt(i,2)=one
117 ENDDO
118C-------------------------------------------------------------------
119C REDUCTION DE SIG SUR CRITERE WPLA_OLD >= WPLAMX
120C-------------------------------------------------------------------
121C-------------------------------------------------------------------
122C DEFORMATIONS ELASTIQUES
123C-----------------------------
124 DO i=1,nel
125 de1(i)=one
126 de2(i)=one
127 scale =one
128 IF (damt(i,2) < one) THEN
129 nu12(i)=em20
130 nu21(i)=em20
131 ENDIF
132 s1(i) = sigoxx(i)/de1(i)-nu12(i)*sigoyy(i)*scale
133 s2(i) = sigoyy(i)/de2(i)-nu21(i)*sigoxx(i)*scale
134 s1(i) = s1(i)/e11(i)
135 s2(i) = s2(i)/e22(i)
136 s3(i) = sigoxy(i)/de1(i)/de2(i)/g12(i)
137 s4(i) = sigoyz(i)/max(de2(i)*g23(i)*shf(i),em30)
138 s5(i) = sigozx(i)/max(de1(i)*g31(i)*shf(i),em30)
139 ENDDO
140C
141 DO i=1,nel
142 s1(i)=s1(i)+depsxx(i)
143 s2(i)=s2(i)+depsyy(i)
144 s3(i)=s3(i)+depsxy(i)
145 s4(i)=s4(i)+depsyz(i)
146 s5(i)=s5(i)+depszx(i)
147 ENDDO
148C
149 DO i=1,nel
150 de1(i)=one
151 de2(i)=one
152 scale1=one
153 scale2 = one-nu12(i)*nu21(i)*scale1
154 IF (damt(i,2) < one) THEN
155 e22(i)=em20
156 nu12(i)=em20
157 nu21(i)=em20
158 ENDIF
159 a11(i) = e11(i)*de1(i)/scale2
160 a22(i) = e22(i)*de2(i)/scale2
161 a12(i) = nu21(i)*a11(i)*scale1
162 ENDDO
163C-----------------------------
164C CONTRAINTES ELASTIQUES
165C-----------------------------
166 DO i=1,nel
167 t1(i) = a11(i)*s1(i)+a12(i)*s2(i)
168 t2(i) = a12(i)*s1(i)+a22(i)*s2(i)
169 t3(i) = de1(i)*de2(i)*g12(i)*s3(i)
170 signyz(i)= de2(i)*g23(i)*shf(i)*s4(i)
171 signzx(i)= de1(i)*g31(i)*shf(i)*s5(i)
172 ENDDO
173C-------------------------------------------------------------------
174C STRAIN RATE
175C-------------------------------------------------------------------
176 DO i=1,nel
177 IF (israte == 0) THEN
178 epsd(i) = max(abs(depsxx(i)),abs(depsyy(i)),abs(depsxy(i)),
179 . abs(depsyz(i)),abs(depszx(i))) / max(dt1,em20)
180 ELSE
181 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
182 END IF
183 IF (epsd(i) > epdr(i)) THEN
184 epsd(i)=log(epsd(i)/epdr(i))
185 ELSE
186 epsd(i)=zero
187 ENDIF
188 coef(i)=zero
189 ENDDO
190C
191 DO i=1,nel
192 epsd(i) = one + cc(i) * epsd(i)
193 fyld(i) = (one+cb(i)*wpla(i)**cn(i))*epsd(i)
194 IF (icc(i) == 1 .OR. icc(i) == 3) THEN
195 fmax(i) = fmax(i)*epsd(i)
196 ENDIF
197 IF (icc(i) == 3 .OR. icc(i) == 4) THEN
198 wplamx(i) = wplamx(i)*epsd(i)
199 ENDIF
200 fyld(i)= min(fmax(i),fyld(i))
201 ENDDO
202C-------------------------------------------------------------------
203C PLASTICITE
204C-------------------------------------------------------------------
205 DO i=1,nel
206 wvec(i)=f1(i) *t1(i) + f2(i) *t2(i) +
207 . f11(i)*t1(i)*t1(i) + f22(i)*t2(i)*t2(i) +
208 . f33(i)*t3(i)*t3(i) + two*f12(i)*t1(i)*t2(i)
209 tsaiwu(i) = max(min(wvec(i)/fyld(i),one),tsaiwu(i))
210 ENDDO
211C
212 DO i=1,nel
213 cnn=cn(i)-one
214 wvec(i)=zero
215 IF (wpla(i) > zero .AND. fyld(i) < fmax(i))
216 . wvec(i)=epsd(i)*wpla(i)**cnn
217 ENDDO
218C
219 DO i=1,nel
220 beta(i) = one
221 so1(i)=beta(i)*sigoxx(i)
222 so2(i)=beta(i)*sigoyy(i)
223 so3(i)=beta(i)*sigoxy(i)
224 ENDDO
225C
226 DO i=1,nel
227 dp1(i)=f1(i)+2*f11(i)*so1(i)+2*f12(i)*so2(i)
228 dp2(i)=f2(i)+2*f22(i)*so2(i)+2*f12(i)*so1(i)
229 dp3(i)=2*f33(i)*so3(i)
230 ENDDO
231C
232 DO i=1,nel
233 ds1(i)=t1(i)-so1(i)
234 ds2(i)=t2(i)-so2(i)
235 ds3(i)=t3(i)-so3(i)
236 ENDDO
237C
238 DO i=1,nel
239 lamda(i)=(dp1(i)*ds1(i)+dp2(i)*ds2(i)+dp3(i)*ds3(i))*coef(i)
240 IF (lamda(i) == zero) cycle
241 lamda(i)=lamda(i)*coef(i)/
242 . (dp1(i)*(a11(i)*dp1(i)+a12(i)*dp2(i))+
243 . dp2(i)*(a12(i)*dp1(i)+a22(i)*dp2(i))+
244 . two*dp3(i)*g12(i)*de1(i)*de2(i)*dp3(i) +
245 . (so1(i)*dp1(i)+so2(i)*dp2(i)+2.*so3(i)*dp3(i))
246 . *cn(i)*cb(i)*wvec(i))
247 ENDDO
248C
249 DO i=1,nel
250 dp1(i)=lamda(i)*dp1(i)
251 dp2(i)=lamda(i)*dp2(i)
252 dp3(i)=lamda(i)*dp3(i)
253 ENDDO
254C
255 DO i=1,nel
256 t1(i)=t1(i)-a11(i)*dp1(i)-a12(i)*dp2(i)
257 t2(i)=t2(i)-a12(i)*dp1(i)-a22(i)*dp2(i)
258 t3(i)=t3(i)-g12(i)*de1(i)*de2(i)*dp3(i)*two
259 ENDDO
260C
261 DO i=1,nel
262 wpla(i)=wpla(i)+half*(dp1(i)*(t1(i)+so1(i))+
263 . dp2(i)*(t2(i)+so2(i))+
264 . two*dp3(i)*(t3(i)+so3(i)))
265 wpla(i)= max(wpla(i),zero) / wplaref(i)
266 ENDDO
267C
268 DO i=1,nel
269 signxx(i)=t1(i)
270 signyy(i)=t2(i)
271 signxy(i)=t3(i)
272 ENDDO
273C-------------------
274C PLASTICITY END
275C-------------------
276 DO i=1,nel
277 sige(i,1)=signxx(i)
278 sige(i,2)=signyy(i)
279 sige(i,3)=signxy(i)
280 sige(i,4)=signyz(i)
281 sige(i,5)=signzx(i)
282 ENDDO
283!---
284 RETURN
285 END
#define alpha
Definition eval.h:35
subroutine m15cplrc(nel, pm, wpla, imatly, damt, shf, ngl, sige, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, epsd_pg, epsd, israte, asrate, tsaiwu)
Definition m15cplrc.F:34
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps15c(jft, jlt, pm, damt, imat, shf, ngl, dmg_flag, ilayer, nel, pla, sigdmg, israte, asrate, epsd_pg, epsd, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigr, tsaiwu)
Definition sigeps15c.F:40