OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sdefo3.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!|| sdefo3 ../engine/source/elements/solid/solide/sdefo3.F
25!||--- called by ------------------------------------------------------
26!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
27!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
28!||--- uses -----------------------------------------------------
29!|| aleanim_mod ../engine/share/modules/aleanim_mod.f
30!||====================================================================
31 SUBROUTINE sdefo3(
32 1 PX1, PX2, PX3, PX4,
33 2 PY1, PY2, PY3, PY4,
34 3 PZ1, PZ2, PZ3, PZ4,
35 4 PX5, PX6, PX7, PX8,
36 5 PY5, PY6, PY7, PY8,
37 6 PZ5, PZ6, PZ7, PZ8,
38 7 VX1, VX2, VX3, VX4,
39 8 VX5, VX6, VX7, VX8,
40 9 VY1, VY2, VY3, VY4,
41 A VY5, VY6, VY7, VY8,
42 B VZ1, VZ2, VZ3, VZ4,
43 C VZ5, VZ6, VZ7, VZ8,
44 D DXX, DXY, DXZ, DYX,
45 E DYY, DYZ, DZX, DZY,
46 F DZZ, D4, D5, D6,
47 G WXX, WYY, WZZ, VXR,
48 H VYR, VZR, NEL,
49 I NFT, ISMSTR, JEUL, JHBE,
50 J JCVT, ISROT)
51C-----------------------------------------------
52C D e s c r i p t i o n
53C-----------------------------------------------
54C This subroutine is computing deformation tensors
55C E = GRAD U
56C D = 1/2 * (E + t(E))
57C W = 1/2 * (E - t(E))
58C-----------------------------------------------
59C M o d u l e s
60C-----------------------------------------------
61 USE aleanim_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "com01_c.inc"
70#include "com04_c.inc"
71#include "com08_c.inc"
72#include "impl1_c.inc"
73#include "scr14_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
77 INTEGER, INTENT(IN) :: NEL
78 INTEGER, INTENT(IN) :: NFT
79 INTEGER, INTENT(IN) :: ISMSTR
80 INTEGER, INTENT(IN) :: JEUL
81 INTEGER, INTENT(IN) :: JHBE
82 INTEGER, INTENT(IN) :: JCVT
83 INTEGER, INTENT(IN) :: ISROT
84 my_real
85 . VX1(*), VX2(*), VX3(*), VX4(*), VX5(*), VX6(*), VX7(*), VX8(*),
86 . VY1(*), VY2(*), VY3(*), VY4(*), VY5(*), VY6(*), VY7(*), VY8(*),
87 . VZ1(*), VZ2(*), VZ3(*), VZ4(*), VZ5(*), VZ6(*), VZ7(*), VZ8(*),
88 . PX1(*), PX2(*), PX3(*), PX4(*),
89 . PY1(*), PY2(*), PY3(*), PY4(*),
90 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
91 . PX5(*), PX6(*), PX7(*), PX8(*),
92 . PY5(*), PY6(*), PY7(*), PY8(*),
93 . PZ5(*), PZ6(*), PZ7(*), PZ8(*),
94 . DXX(*), DXY(*), DXZ(*),
95 . DYX(*), DYY(*), DYZ(*),
96 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
97 . wxx(*), wyy(*), wzz(*), vxr(*),vyr(*),vzr(*)
98C-----------------------------------------------
99C L o c a l V a r i a b l e s
100C-----------------------------------------------
101 INTEGER I, J, IDX
102 my_real
103 . vx17, vy17, vz17,
104 . vx28, vy28, vz28,
105 . vx35, vy35, vz35,
106 . vx46, vy46, vz46, dt1d2, dt1d
107 my_real
108 . pxx2,pyy2,pzz2,pxx2p,pyy2p,pzz2p,aaa,bbb,fac,
109 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
110C-----------------------------------------------
111C S o u r c e L i n e s
112C-----------------------------------------------
113 IF(integ8*jeul==0)THEN
114 DO i=1,nel
115 vx17=vx1(i)-vx7(i)
116 vx28=vx2(i)-vx8(i)
117 vx35=vx3(i)-vx5(i)
118 vx46=vx4(i)-vx6(i)
119 vy17=vy1(i)-vy7(i)
120 vy28=vy2(i)-vy8(i)
121 vy35=vy3(i)-vy5(i)
122 vy46=vy4(i)-vy6(i)
123 vz17=vz1(i)-vz7(i)
124 vz28=vz2(i)-vz8(i)
125 vz35=vz3(i)-vz5(i)
126 vz46=vz4(i)-vz6(i)
127
128 dxx(i)=px1(i)*vx17+px2(i)*vx28+px3(i)*vx35+px4(i)*vx46
129 dyy(i)=py1(i)*vy17+py2(i)*vy28+py3(i)*vy35+py4(i)*vy46
130 dzz(i)=pz1(i)*vz17+pz2(i)*vz28+pz3(i)*vz35+pz4(i)*vz46
131 dxy(i)=py1(i)*vx17+py2(i)*vx28+py3(i)*vx35+py4(i)*vx46
132 dxz(i)=pz1(i)*vx17+pz2(i)*vx28+pz3(i)*vx35+pz4(i)*vx46
133 dyx(i)=px1(i)*vy17+px2(i)*vy28+px3(i)*vy35+px4(i)*vy46
134 dyz(i)=pz1(i)*vy17+pz2(i)*vy28+pz3(i)*vy35+pz4(i)*vy46
135 dzx(i)=px1(i)*vz17+px2(i)*vz28+px3(i)*vz35+px4(i)*vz46
136 dzy(i)=py1(i)*vz17+py2(i)*vz28+py3(i)*vz35+py4(i)*vz46
137 ENDDO
138
139 ELSE
140 DO i=1,nel
141 dxx(i)=px1(i)*vx1(i)+px2(i)*vx2(i)+px3(i)*vx3(i)+px4(i)*vx4(i)+px5(i)*vx5(i)+px6(i)*vx6(i)+px7(i)*vx7(i)+px8(i)*vx8(i)
142 dyy(i)=py1(i)*vy1(i)+py2(i)*vy2(i)+py3(i)*vy3(i)+py4(i)*vy4(i)+py5(i)*vy5(i)+py6(i)*vy6(i)+py7(i)*vy7(i)+py8(i)*vy8(i)
143 dzz(i)=pz1(i)*vz1(i)+pz2(i)*vz2(i)+pz3(i)*vz3(i)+pz4(i)*vz4(i)+pz5(i)*vz5(i)+pz6(i)*vz6(i)+pz7(i)*vz7(i)+pz8(i)*vz8(i)
144 dxy(i)=py1(i)*vx1(i)+py2(i)*vx2(i)+py3(i)*vx3(i)+py4(i)*vx4(i)+py5(i)*vx5(i)+py6(i)*vx6(i)+py7(i)*vx7(i)+py8(i)*vx8(i)
145 dxz(i)=pz1(i)*vx1(i)+pz2(i)*vx2(i)+pz3(i)*vx3(i)+pz4(i)*vx4(i)+pz5(i)*vx5(i)+pz6(i)*vx6(i)+pz7(i)*vx7(i)+pz8(i)*vx8(i)
146 dyx(i)=px1(i)*vy1(i)+px2(i)*vy2(i)+px3(i)*vy3(i)+px4(i)*vy4(i)+px5(i)*vy5(i)+px6(i)*vy6(i)+px7(i)*vy7(i)+px8(i)*vy8(i)
147 dyz(i)=pz1(i)*vy1(i)+pz2(i)*vy2(i)+pz3(i)*vy3(i)+pz4(i)*vy4(i)+pz5(i)*vy5(i)+pz6(i)*vy6(i)+pz7(i)*vy7(i)+pz8(i)*vy8(i)
148 dzx(i)=px1(i)*vz1(i)+px2(i)*vz2(i)+px3(i)*vz3(i)+px4(i)*vz4(i)+px5(i)*vz5(i)+px6(i)*vz6(i)+px7(i)*vz7(i)+px8(i)*vz8(i)
149 dzy(i)=py1(i)*vz1(i)+py2(i)*vz2(i)+py3(i)*vz3(i)+py4(i)*vz4(i)+py5(i)*vz5(i)+py6(i)*vz6(i)+py7(i)*vz7(i)+py8(i)*vz8(i)
150 ENDDO
151 ENDIF
152
153 dt1d2=half*dt1
154 IF(iscau>0 .OR. imp_lr>0)dt1d2=dt1
155
156 IF(jcvt /= 0)THEN
157 IF(ismstr == 11)THEN
158 DO i=1,nel
159 d4(i)=dxy(i)+dyx(i)
160 d5(i)=dyz(i)+dzy(i)
161 d6(i)=dxz(i)+dzx(i)
162 wzz(i)=dt1d2*(dyx(i)-dxy(i))
163 wyy(i)=dt1d2*(dxz(i)-dzx(i))
164 wxx(i)=dt1d2*(dzy(i)-dyz(i))
165 ENDDO
166 ELSE
167 DO i=1,nel
168 wxx(i)=zero
169 wyy(i)=zero
170 wzz(i)=zero
171 ENDDO
172 IF (impl_s == 0 .OR. (idyna > 0 .AND. ismdisp == 0)) THEN
173 DO i=1,nel
174 exx=dxx(i)
175 eyy=dyy(i)
176 ezz=dzz(i)
177 exy=dxy(i)
178 eyx=dyx(i)
179 exz=dxz(i)
180 ezx=dzx(i)
181 eyz=dyz(i)
182 ezy=dzy(i)
183 dxx(i)=dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
184 dyy(i)=dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
185 dzz(i)=dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
186 aaa=dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
187 dxy(i)=dxy(i)-aaa
188 dyx(i)=dyx(i)-aaa
189 d4(i)=dxy(i)+dyx(i)
190 aaa=dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
191 dyz(i)=dyz(i)-aaa
192 dzy(i)=dzy(i)-aaa
193 d5(i)=dyz(i)+dzy(i)
194 aaa=dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
195 dxz(i)=dxz(i)-aaa
196 dzx(i)=dzx(i)-aaa
197 d6(i)=dxz(i)+dzx(i)
198 ENDDO
199 ELSEIF (ismdisp>0.AND.iscau==0) THEN
200 !---------implicit static---------
201 DO i=1,nel
202 d4(i) = dxy(i)+dyx(i)
203 d5(i) = dyz(i)+dzy(i)
204 d6(i) = dxz(i)+dzx(i)
205 ENDDO
206 ELSE
207 dt1d=two*dt1d2
208 DO i=1,nel
209 d4(i)=dxy(i)+dyx(i)-dt1d*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
210 d5(i)=dyz(i)+dzy(i)-dt1d*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
211 d6(i)=dxz(i)+dzx(i)-dt1d*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
212 dxx(i)=dxx(i)-dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
213 dyy(i)=dyy(i)-dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
214 dzz(i)=dzz(i)-dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
215 ENDDO
216 ENDIF ! IF (IMPL_S==0.OR.IDYNA>0)
217 END IF !(ISMSTR == 11) THEN
218
219 ELSEIF (jhbe>=2) THEN
220 DO i=1,nel
221 exx=dxx(i)
222 eyy=dyy(i)
223 ezz=dzz(i)
224 exy=dxy(i)
225 eyx=dyx(i)
226 exz=dxz(i)
227 ezx=dzx(i)
228 eyz=dyz(i)
229 ezy=dzy(i)
230
231 dxx(i) = dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
232 dyy(i) = dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
233 dzz(i) = dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
234 aaa = dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
235 dxy(i) = dxy(i) -aaa
236 dyx(i) = dyx(i) -aaa
237 d4(i) = dxy(i)+dyx(i)
238 aaa = dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
239 dyz(i) = dyz(i) -aaa
240 dzy(i) = dzy(i) -aaa
241 d5(i) = dyz(i)+dzy(i)
242 aaa = dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
243 dxz(i) = dxz(i) -aaa
244 dzx(i) = dzx(i) -aaa
245 d6(i) = dxz(i)+dzx(i)
246
247 pxx2 = px1(i)*px1(i)+px2(i)*px2(i)+px3(i)*px3(i)+px4(i)*px4(i)
248 pyy2 = py1(i)*py1(i)+py2(i)*py2(i)+py3(i)*py3(i)+py4(i)*py4(i)
249 pzz2 = pz1(i)*pz1(i)+pz2(i)*pz2(i)+pz3(i)*pz3(i)+pz4(i)*pz4(i)
250 wzz(i) = dt1*(pyy2*dyx(i)-pxx2*dxy(i))/(pxx2+pyy2)
251 wxx(i) = dt1*(pzz2*dzy(i)-pyy2*dyz(i))/(pyy2+pzz2)
252 wyy(i) = dt1*(pxx2*dxz(i)-pzz2*dzx(i))/(pzz2+pxx2)
253 ENDDO
254
255 ELSE
256 DO i=1,nel
257 d4(i) = dxy(i)+dyx(i)
258 d5(i) = dyz(i)+dzy(i)
259 d6(i) = dxz(i)+dzx(i)
260 dxx(i) = dxx(i)
261 dyy(i) = dyy(i)
262 dzz(i) = dzz(i)
263 wzz(i) = dt1d2*(dyx(i)-dxy(i))
264 wyy(i) = dt1d2*(dxz(i)-dzx(i))
265 wxx(i) = dt1d2*(dzy(i)-dyz(i))
266 ENDDO
267
268 ENDIF
269
270 IF(isrot/=0)THEN
271 DO i=1,nel
272 dxy(i)=dxy(i) + vzr(i)
273 dyx(i)=dyx(i) - vzr(i)
274 dyz(i)=dyz(i) + vxr(i)
275 dzy(i)=dzy(i) - vxr(i)
276 dzx(i)=dzx(i) + vyr(i)
277 dxz(i)=dxz(i) - vyr(i)
278 ENDDO
279 aaa = zero
280 bbb = dt1 - aaa*dt1
281 DO i=1,nel
282 wxx(i) = aaa*wxx(i) + bbb*vxr(i)
283 wyy(i) = aaa*wyy(i) + bbb*vyr(i)
284 wzz(i) = aaa*wzz(i) + bbb*vzr(i)
285 ENDDO
286 ENDIF
287
288 !VORTICITY OUTPUT /ANIM/ELEM/VORTX,VORTY,VORTZ
289 IF(dt1/=zero)THEN
290 fac = four/dt1
291 IF(fani_cell%IS_VORT_X_REQUESTED)THEN
292 DO i=1,nel
293 fani_cell%VORT_X(i+nft) = fac*wxx(i)
294 ENDDO
295 ENDIF
296 IF(fani_cell%IS_VORT_Y_REQUESTED)THEN
297 DO i=1,nel
298 fani_cell%VORT_Y(i+nft) = fac*wyy(i)
299 ENDDO
300 ENDIF
301 IF(fani_cell%IS_VORT_Z_REQUESTED)THEN
302 DO i=1,nel
303 fani_cell%VORT_Z(i+nft) = fac*wzz(i)
304 ENDDO
305 ENDIF
306 ENDIF
307
308C-----------
309 RETURN
310 END
subroutine sdefo3(px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, px5, px6, px7, px8, py5, py6, py7, py8, pz5, pz6, pz7, pz8, 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, vxr, vyr, vzr, nel, nft, ismstr, jeul, jhbe, jcvt, isrot)
Definition sdefo3.F:51
type(fani_cell_) fani_cell
Definition aleanim_mod.F:55