OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s8cdefo3.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!|| s8cdefo3 ../engine/source/elements/thickshell/solide8c/s8cdefo3.F
25!||--- called by ------------------------------------------------------
26!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
27!||====================================================================
28 SUBROUTINE s8cdefo3(
29 1 PXC1, PXC2, PXC3, PXC4,
30 2 PYC1, PYC2, PYC3, PYC4,
31 3 PZC1, PZC2, PZC3, PZC4,
32 4 PX1, PX2, PX3, PX4,
33 5 PX5, PX6, PX7, PX8,
34 6 PY1, PY2, PY3, PY4,
35 7 PY5, PY6, PY7, PY8,
36 8 PZ1, PZ2, PZ3, PZ4,
37 9 PZ5, PZ6, PZ7, PZ8,
38 A PXY1, PXY2, PXY3, PXY4,
39 B PXY5, PXY6, PXY7, PXY8,
40 C PYX1, PYX2, PYX3, PYX4,
41 D PYX5, PYX6, PYX7, PYX8,
42 E PXZ1, PXZ2, PXZ3, PXZ4,
43 F PXZ5, PXZ6, PXZ7, PXZ8,
44 G PZX1, PZX2, PZX3, PZX4,
45 H PZX5, PZX6, PZX7, PZX8,
46 I PYZ1, PYZ2, PYZ3, PYZ4,
47 J PYZ5, PYZ6, PYZ7, PYZ8,
48 K PZY1, PZY2, PZY3, PZY4,
49 L PZY5, PZY6, PZY7, PZY8,
50 M BXY1, BXY2, BXY3, BXY4,
51 N BXY5, BXY6, BXY7, BXY8,
52 O BYX1, BYX2, BYX3, BYX4,
53 P BYX5, BYX6, BYX7, BYX8,
54 Q BXZ1, BXZ2, BXZ3, BXZ4,
55 R BXZ5, BXZ6, BXZ7, BXZ8,
56 S BZX1, BZX2, BZX3, BZX4,
57 T BZX5, BZX6, BZX7, BZX8,
58 U BYZ1, BYZ2, BYZ3, BYZ4,
59 V BYZ5, BYZ6, BYZ7, BYZ8,
60 W BZY1, BZY2, BZY3, BZY4,
61 X BZY5, BZY6, BZY7, BZY8,
62 Y VX1, VX2, VX3, VX4,
63 Z VX5, VX6, VX7, VX8,
64 1 VY1, VY2, VY3, VY4,
65 2 VY5, VY6, VY7, VY8,
66 3 VZ1, VZ2, VZ3, VZ4,
67 4 VZ5, VZ6, VZ7, VZ8,
68 5 DXX, DXY, DXZ, DYX,
69 6 DYY, DYZ, DZX, DZY,
70 7 DZZ, D4, D5, D6,
71 8 WXX, WYY, WZZ, VOLO,
72 9 OFF, EINT, OFFS, DSV,
73 A ICP, ICR, ICS, ICT,
74 B DTI, DSR, DSS, DST,
75 C NGL, IDEG, VOL0DP, NEL,
76 D ISMSTR, IPRES)
77C 12
78C-----------------------------------------------
79C I m p l i c i t T y p e s
80C-----------------------------------------------
81#include "implicit_f.inc"
82C-----------------------------------------------
83C G l o b a l P a r a m e t e r s
84C-----------------------------------------------
85#include "mvsiz_p.inc"
86C-----------------------------------------------
87C C o m m o n B l o c k s
88C-----------------------------------------------
89#include "com08_c.inc"
90#include "impl1_c.inc"
91#include "scr05_c.inc"
92C-----------------------------------------------
93C D u m m y A r g u m e n t s
94C-----------------------------------------------
95 INTEGER, INTENT(IN) :: NEL,ISMSTR,IPRES
96 INTEGER, INTENT(IN) :: ICP,ICR,ICS,ICT
97 INTEGER, DIMENSION(MVSIZ), INTENT(IN) :: NGL,IDEG
98C REAL
99 my_real, DIMENSION(MVSIZ), INTENT(IN) ::
100 . VX1, VX2, VX3, VX4, VX5, VX6, VX7, VX8,
101 . VY1, VY2, VY3, VY4, VY5, VY6, VY7, VY8,
102 . VZ1, VZ2, VZ3, VZ4, VZ5, VZ6, VZ7, VZ8,
103 . PXC1, PXC2, PXC3, PXC4,
104 . PYC1, PYC2, PYC3, PYC4,
105 . PZC1, PZC2, PZC3, PZC4,
106 . PX1, PX2, PX3, PX4,
107 . PX5, PX6, PX7, PX8,
108 . PY1, PY2, PY3, PY4,
109 . PY5, PY6, PY7, PY8,
110 . PZ1, PZ2, PZ3, PZ4,
111 . PZ5, PZ6, PZ7, PZ8,
112 . PXY1,PXY2,PXY3,PXY4,
113 . PXY5,PXY6,PXY7,PXY8,
114 . PYX1,PYX2,PYX3,PYX4,
115 . PYX5,PYX6,PYX7,PYX8,
116 . PXZ1,PXZ2,PXZ3,PXZ4,
117 . PXZ5,PXZ6,PXZ7,PXZ8,
118 . PZX1,PZX2,PZX3,PZX4,
119 . PZX5,PZX6,PZX7,PZX8,
120 . PYZ1,PYZ2,PYZ3,PYZ4,
121 . PYZ5,PYZ6,PYZ7,PYZ8,
122 . PZY1,PZY2,PZY3,PZY4,
123 . PZY5,PZY6,PZY7,PZY8,
124 . BXY1,BXY2,BXY3,BXY4,
125 . BXY5,BXY6,BXY7,BXY8,
126 . BYX1,BYX2,BYX3,BYX4,
127 . BYX5,BYX6,BYX7,BYX8,
128 . BXZ1,BXZ2,BXZ3,BXZ4,
129 . BXZ5,BXZ6,BXZ7,BXZ8,
130 . BZX1,BZX2,BZX3,BZX4,
131 . BZX5,BZX6,BZX7,BZX8,
132 . BYZ1,BYZ2,BYZ3,BYZ4,
133 . BYZ5,BYZ6,BYZ7,BYZ8,
134 . BZY1,BZY2,BZY3,BZY4,
135 . BZY5,BZY6,BZY7,BZY8,
136 . OFF,DSR,DSS,DST
137 my_real, DIMENSION(MVSIZ), INTENT(OUT) ::
138 . DXX, DXY, DXZ,
139 . DYX, DYY, DYZ,
140 . DZX, DZY, DZZ, D4, D5, D6,
141 . DSV,WXX,WYY,WZZ
142 my_real, INTENT(IN) :: DTI
143 my_real, DIMENSION(NEL), INTENT(IN) :: offs
144 my_real, DIMENSION(NEL), INTENT(INOUT) :: volo,eint
145 DOUBLE PRECISION, DIMENSION(NEL), INTENT(INOUT) :: VOL0DP
146C-----------------------------------------------
147C L o c a l V a r i a b l e s
148C-----------------------------------------------
149 INTEGER I, ICOR
150C REAL
151 my_real
152 . DVC(MVSIZ),DVCA(MVSIZ),DT1D2,TOL,DT1D
153 DOUBLE PRECISION
154 . DVP,DV,DV1
155C 12
156C-----------------------------------------------
157 TOL = one-em20
158 dxx(1:nel) =px1(1:nel)*vx1(1:nel)+px2(1:nel)*vx2(1:nel)+px3(1:nel)*vx3(1:nel)+px4(1:nel)*vx4(1:nel)
159 . +px5(1:nel)*vx5(1:nel)+px6(1:nel)*vx6(1:nel)+px7(1:nel)*vx7(1:nel)+px8(1:nel)*vx8(1:nel)
160 dyy(1:nel) =py1(1:nel)*vy1(1:nel)+py2(1:nel)*vy2(1:nel)+py3(1:nel)*vy3(1:nel)+py4(1:nel)*vy4(1:nel)
161 . +py5(1:nel)*vy5(1:nel)+py6(1:nel)*vy6(1:nel)+py7(1:nel)*vy7(1:nel)+py8(1:nel)*vy8(1:nel)
162 dzz(1:nel) =pz1(1:nel)*vz1(1:nel)+pz2(1:nel)*vz2(1:nel)+pz3(1:nel)*vz3(1:nel)+pz4(1:nel)*vz4(1:nel)
163 . +pz5(1:nel)*vz5(1:nel)+pz6(1:nel)*vz6(1:nel)+pz7(1:nel)*vz7(1:nel)+pz8(1:nel)*vz8(1:nel)
164 dxy(1:nel) =pxy1(1:nel)*vx1(1:nel)+pxy2(1:nel)*vx2(1:nel)
165 + +pxy3(1:nel)*vx3(1:nel)+pxy4(1:nel)*vx4(1:nel)
166 + +pxy5(1:nel)*vx5(1:nel)+pxy6(1:nel)*vx6(1:nel)
167 + +pxy7(1:nel)*vx7(1:nel)+pxy8(1:nel)*vx8(1:nel)
168 dxz(1:nel) =pxz1(1:nel)*vx1(1:nel)+pxz2(1:nel)*vx2(1:nel)
169 + +pxz3(1:nel)*vx3(1:nel)+pxz4(1:nel)*vx4(1:nel)
170 + +pxz5(1:nel)*vx5(1:nel)+pxz6(1:nel)*vx6(1:nel)
171 + +pxz7(1:nel)*vx7(1:nel)+pxz8(1:nel)*vx8(1:nel)
172 dyx(1:nel) =pyx1(1:nel)*vy1(1:nel)+pyx2(1:nel)*vy2(1:nel)
173 + +pyx3(1:nel)*vy3(1:nel)+pyx4(1:nel)*vy4(1:nel)
174 + +pyx5(1:nel)*vy5(1:nel)+pyx6(1:nel)*vy6(1:nel)
175 + +pyx7(1:nel)*vy7(1:nel)+pyx8(1:nel)*vy8(1:nel)
176 dyz(1:nel) =pyz1(1:nel)*vy1(1:nel)+pyz2(1:nel)*vy2(1:nel)
177 + +pyz3(1:nel)*vy3(1:nel)+pyz4(1:nel)*vy4(1:nel)
178 + +pyz5(1:nel)*vy5(1:nel)+pyz6(1:nel)*vy6(1:nel)
179 + +pyz7(1:nel)*vy7(1:nel)+pyz8(1:nel)*vy8(1:nel)
180 dzx(1:nel) =pzx1(1:nel)*vz1(1:nel)+pzx2(1:nel)*vz2(1:nel)
181 + +pzx3(1:nel)*vz3(1:nel)+pzx4(1:nel)*vz4(1:nel)
182 + +pzx5(1:nel)*vz5(1:nel)+pzx6(1:nel)*vz6(1:nel)
183 + +pzx7(1:nel)*vz7(1:nel)+pzx8(1:nel)*vz8(1:nel)
184 dzy(1:nel) =pzy1(1:nel)*vz1(1:nel)+pzy2(1:nel)*vz2(1:nel)
185 + +pzy3(1:nel)*vz3(1:nel)+pzy4(1:nel)*vz4(1:nel)
186 + +pzy5(1:nel)*vz5(1:nel)+pzy6(1:nel)*vz6(1:nel)
187 + +pzy7(1:nel)*vz7(1:nel)+pzy8(1:nel)*vz8(1:nel)
188 dvc(1:nel) =(dxx(1:nel)+dyy(1:nel)+dzz(1:nel))*dt1
189C
190 IF (icp ==1) THEN
191 dvca(1:nel)=pxc1(1:nel)*(vx1(1:nel)-vx7(1:nel))+pxc2(1:nel)*(vx2(1:nel)-vx8(1:nel))
192 . +pxc3(1:nel)*(vx3(1:nel)-vx5(1:nel))+pxc4(1:nel)*(vx4(1:nel)-vx6(1:nel))
193 . +pyc1(1:nel)*(vy1(1:nel)-vy7(1:nel))+pyc2(1:nel)*(vy2(1:nel)-vy8(1:nel))
194 . +pyc3(1:nel)*(vy3(1:nel)-vy5(1:nel))+pyc4(1:nel)*(vy4(1:nel)-vy6(1:nel))
195 . +pzc1(1:nel)*(vz1(1:nel)-vz7(1:nel))+pzc2(1:nel)*(vz2(1:nel)-vz8(1:nel))
196 . +pzc3(1:nel)*(vz3(1:nel)-vz5(1:nel))+pzc4(1:nel)*(vz4(1:nel)-vz6(1:nel))
197 dvca(1:nel)=dvca(1:nel)*dt1
198 ELSE
199 dyy(1:nel) =dyy(1:nel)+bxy1(1:nel)*vx1(1:nel)+bxy2(1:nel)*vx2(1:nel)
200 + +bxy3(1:nel)*vx3(1:nel)+bxy4(1:nel)*vx4(1:nel)
201 + +bxy5(1:nel)*vx5(1:nel)+bxy6(1:nel)*vx6(1:nel)
202 + +bxy7(1:nel)*vx7(1:nel)+bxy8(1:nel)*vx8(1:nel)
203 dzz(1:nel) =dzz(1:nel)+bxz1(1:nel)*vx1(1:nel)+bxz2(1:nel)*vx2(1:nel)
204 + +bxz3(1:nel)*vx3(1:nel)+bxz4(1:nel)*vx4(1:nel)
205 + +bxz5(1:nel)*vx5(1:nel)+bxz6(1:nel)*vx6(1:nel)
206 + +bxz7(1:nel)*vx7(1:nel)+bxz8(1:nel)*vx8(1:nel)
207 dxx(1:nel) =dxx(1:nel)+byx1(1:nel)*vy1(1:nel)+byx2(1:nel)*vy2(1:nel)
208 + +byx3(1:nel)*vy3(1:nel)+byx4(1:nel)*vy4(1:nel)
209 + +byx5(1:nel)*vy5(1:nel)+byx6(1:nel)*vy6(1:nel)
210 + +byx7(1:nel)*vy7(1:nel)+byx8(1:nel)*vy8(1:nel)
211 dzz(1:nel) =dzz(1:nel)+byz1(1:nel)*vy1(1:nel)+byz2(1:nel)*vy2(1:nel)
212 + +byz3(1:nel)*vy3(1:nel)+byz4(1:nel)*vy4(1:nel)
213 + +byz5(1:nel)*vy5(1:nel)+byz6(1:nel)*vy6(1:nel)
214 + +byz7(1:nel)*vy7(1:nel)+byz8(1:nel)*vy8(1:nel)
215 dxx(1:nel) =dxx(1:nel)+bzx1(1:nel)*vz1(1:nel)+bzx2(1:nel)*vz2(1:nel)
216 + +bzx3(1:nel)*vz3(1:nel)+bzx4(1:nel)*vz4(1:nel)
217 + +bzx5(1:nel)*vz5(1:nel)+bzx6(1:nel)*vz6(1:nel)
218 + +bzx7(1:nel)*vz7(1:nel)+bzx8(1:nel)*vz8(1:nel)
219 dyy(1:nel) =dyy(1:nel)+bzy1(1:nel)*vz1(1:nel)+bzy2(1:nel)*vz2(1:nel)
220 + +bzy3(1:nel)*vz3(1:nel)+bzy4(1:nel)*vz4(1:nel)
221 + +bzy5(1:nel)*vz5(1:nel)+bzy6(1:nel)*vz6(1:nel)
222 + +bzy7(1:nel)*vz7(1:nel)+bzy8(1:nel)*vz8(1:nel)
223 dvca(1:nel) =(dxx(1:nel)+dyy(1:nel)+dzz(1:nel))*dt1
224 ENDIF
225C-------------Constant stress traitement------
226 dsv(1:nel) = zero
227 IF (ipres==1) THEN
228C-------------R,S,T--direction------
229 IF (icr==1) THEN
230 DO i=1,nel
231 dxx(i)= dxx(i)-dsr(i)*dti
232 IF(ismdisp==0.AND.offs(i)/=two)dvca(i)= dvca(i)-dsr(i)
233 ENDDO
234 ENDIF
235 IF (ics==1) THEN
236 DO i=1,nel
237 dyy(i)= dyy(i)-dss(i)*dti
238 IF(ismdisp==0.AND.offs(i)/=two)dvca(i)= dvca(i)-dss(i)
239 ENDDO
240 ENDIF
241 IF (ict==1) THEN
242 DO i=1,nel
243 dzz(i)= dzz(i)-dst(i)*dti
244 IF(ismdisp==0.AND.offs(i)/=two)dvca(i)= dvca(i)-dst(i)
245 ENDDO
246 ENDIF
247C-------------Volume traitement------
248 DO i=1,nel
249 dvp=dvca(i)-dvc(i)
250 dv =dvp*off(i)
251 IF(ideg(i)>10) dv = zero
252 dsv(i) = dv
253 ENDDO
254 DO i=1,nel
255 IF(offs(i)==two.OR.ismstr==11) THEN
256 IF (icp==1) THEN
257 dsv(i) =dvca(i)-(dxx(i)+dyy(i)+dzz(i))*dt1
258 ELSE
259 dsv(i) = zero
260 END IF
261 END IF
262 ENDDO
263 DO i=1,nel
264 IF(offs(i)==two.OR.ismstr==11) cycle
265 dv=dsv(i)
266 IF (abs(dv)>tol.AND.off(i)/=zero) THEN
267 dv =zero
268 ELSEIF(abs(dv)>tol)THEN
269 dv =zero
270 ENDIF
271 IF(ismdisp==0) THEN
272 dv1 = one-dv
273 volo(i) = volo(i)*dv1
274 IF (iresp==1) vol0dp(i) = vol0dp(i)*dv1
275 eint(i) = eint(i)/dv1
276 ENDIF
277 ENDDO
278 END IF !(IPRES==1) THEN
279C
280 dt1d2=half*dt1
281 IF (iscau>0 )dt1d2=dt1
282 dt1d=two*dt1d2
283 IF (ismdisp>0.AND.iscau==0) THEN
284 d4(1:nel) = dxy(1:nel)+dyx(1:nel)
285 d5(1:nel) = dyz(1:nel)+dzy(1:nel)
286 d6(1:nel) = dxz(1:nel)+dzx(1:nel)
287 wxx(1:nel)=zero
288 wyy(1:nel)=zero
289 wzz(1:nel)=zero
290 ELSE
291 d4(1:nel) = dxy(1:nel)+dyx(1:nel)
292 . -dt1d*(dxx(1:nel)*dxy(1:nel)+dyx(1:nel)*dyy(1:nel)+dzx(1:nel)*dzy(1:nel))
293 d5(1:nel) = dyz(1:nel)+dzy(1:nel)
294 . -dt1d*(dyy(1:nel)*dyz(1:nel)+dzy(1:nel)*dzz(1:nel)+dxy(1:nel)*dxz(1:nel))
295 d6(1:nel) = dxz(1:nel)+dzx(1:nel)
296 . -dt1d*(dzz(1:nel)*dzx(1:nel)+dxz(1:nel)*dxx(1:nel)+dyz(1:nel)*dyx(1:nel))
297 dxx(1:nel) = dxx(1:nel)
298 . -dt1d2*(dxx(1:nel)*dxx(1:nel)+dyx(1:nel)*dyx(1:nel)+dzx(1:nel)*dzx(1:nel))
299 dyy(1:nel) = dyy(1:nel)
300 . -dt1d2*(dyy(1:nel)*dyy(1:nel)+dzy(1:nel)*dzy(1:nel)+dxy(1:nel)*dxy(1:nel))
301 dzz(1:nel) = dzz(1:nel)
302 . -dt1d2*(dzz(1:nel)*dzz(1:nel)+dxz(1:nel)*dxz(1:nel)+dyz(1:nel)*dyz(1:nel))
303 wxx(1:nel)=zero
304 wyy(1:nel)=zero
305 wzz(1:nel)=zero
306 ENDIF
307C
308 RETURN
309 END
subroutine s8cdefo3(pxc1, pxc2, pxc3, pxc4, pyc1, pyc2, pyc3, pyc4, pzc1, pzc2, pzc3, pzc4, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, pxy1, pxy2, pxy3, pxy4, pxy5, pxy6, pxy7, pxy8, pyx1, pyx2, pyx3, pyx4, pyx5, pyx6, pyx7, pyx8, pxz1, pxz2, pxz3, pxz4, pxz5, pxz6, pxz7, pxz8, pzx1, pzx2, pzx3, pzx4, pzx5, pzx6, pzx7, pzx8, pyz1, pyz2, pyz3, pyz4, pyz5, pyz6, pyz7, pyz8, pzy1, pzy2, pzy3, pzy4, pzy5, pzy6, pzy7, pzy8, bxy1, bxy2, bxy3, bxy4, bxy5, bxy6, bxy7, bxy8, byx1, byx2, byx3, byx4, byx5, byx6, byx7, byx8, bxz1, bxz2, bxz3, bxz4, bxz5, bxz6, bxz7, bxz8, bzx1, bzx2, bzx3, bzx4, bzx5, bzx6, bzx7, bzx8, byz1, byz2, byz3, byz4, byz5, byz6, byz7, byz8, bzy1, bzy2, bzy3, bzy4, bzy5, bzy6, bzy7, bzy8, vx1, vx2, vx3, vx4, vx5, vx6, vx7, vx8, vy1, vy2, vy3, vy4, vy5, vy6, vy7, vy8, vz1, vz2, vz3, vz4, vz5, vz6, vz7, vz8, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, d4, d5, d6, wxx, wyy, wzz, volo, off, eint, offs, dsv, icp, icr, ics, ict, dti, dsr, dss, dst, ngl, ideg, vol0dp, nel, ismstr, ipres)
Definition s8cdefo3.F:77