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 ../common_source/modules/aleanim_mod.f
30!||====================================================================
31 SUBROUTINE sdefo3(FANI_CELL,
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, only : fani_cell_
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 TYPE(fani_cell_), intent(inout) :: FANI_CELL
78 INTEGER, INTENT(IN) :: NEL
79 INTEGER, INTENT(IN) :: NFT
80 INTEGER, INTENT(IN) :: ISMSTR
81 INTEGER, INTENT(IN) :: JEUL
82 INTEGER, INTENT(IN) :: JHBE
83 INTEGER, INTENT(IN) :: JCVT
84 INTEGER, INTENT(IN) :: ISROT
85 my_real
86 . VX1(*), VX2(*), VX3(*), VX4(*), VX5(*), VX6(*), VX7(*), VX8(*),
87 . VY1(*), VY2(*), VY3(*), VY4(*), VY5(*), VY6(*), VY7(*), VY8(*),
88 . VZ1(*), VZ2(*), VZ3(*), VZ4(*), VZ5(*), VZ6(*), VZ7(*), VZ8(*),
89 . PX1(*), PX2(*), PX3(*), PX4(*),
90 . PY1(*), PY2(*), PY3(*), PY4(*),
91 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
92 . PX5(*), PX6(*), PX7(*), PX8(*),
93 . PY5(*), PY6(*), PY7(*), PY8(*),
94 . PZ5(*), PZ6(*), PZ7(*), PZ8(*),
95 . DXX(*), DXY(*), DXZ(*),
96 . dyx(*), dyy(*), dyz(*),
97 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
98 . wxx(*), wyy(*), wzz(*), vxr(*),vyr(*),vzr(*)
99C-----------------------------------------------
100C L o c a l V a r i a b l e s
101C-----------------------------------------------
102 INTEGER I
103 my_real
104 . vx17, vy17, vz17,
105 . vx28, vy28, vz28,
106 . vx35, vy35, vz35,
107 . vx46, vy46, vz46, dt1d2, dt1d
108 my_real
109 . pxx2,pyy2,pzz2,aaa,bbb,fac,
110 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
111C-----------------------------------------------
112C S o u r c e L i n e s
113C-----------------------------------------------
114 IF(integ8*jeul==0)THEN
115 DO i=1,nel
116 vx17=vx1(i)-vx7(i)
117 vx28=vx2(i)-vx8(i)
118 vx35=vx3(i)-vx5(i)
119 vx46=vx4(i)-vx6(i)
120 vy17=vy1(i)-vy7(i)
121 vy28=vy2(i)-vy8(i)
122 vy35=vy3(i)-vy5(i)
123 vy46=vy4(i)-vy6(i)
124 vz17=vz1(i)-vz7(i)
125 vz28=vz2(i)-vz8(i)
126 vz35=vz3(i)-vz5(i)
127 vz46=vz4(i)-vz6(i)
128
129 dxx(i)=px1(i)*vx17+px2(i)*vx28+px3(i)*vx35+px4(i)*vx46
130 dyy(i)=py1(i)*vy17+py2(i)*vy28+py3(i)*vy35+py4(i)*vy46
131 dzz(i)=pz1(i)*vz17+pz2(i)*vz28+pz3(i)*vz35+pz4(i)*vz46
132 dxy(i)=py1(i)*vx17+py2(i)*vx28+py3(i)*vx35+py4(i)*vx46
133 dxz(i)=pz1(i)*vx17+pz2(i)*vx28+pz3(i)*vx35+pz4(i)*vx46
134 dyx(i)=px1(i)*vy17+px2(i)*vy28+px3(i)*vy35+px4(i)*vy46
135 dyz(i)=pz1(i)*vy17+pz2(i)*vy28+pz3(i)*vy35+pz4(i)*vy46
136 dzx(i)=px1(i)*vz17+px2(i)*vz28+px3(i)*vz35+px4(i)*vz46
137 dzy(i)=py1(i)*vz17+py2(i)*vz28+py3(i)*vz35+py4(i)*vz46
138 ENDDO
139
140 ELSE
141 DO i=1,nel
142 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)
143 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)
144 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)
145 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)
146 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)
147 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)
148 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)
149 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)
150 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)
151 ENDDO
152 ENDIF
153
154 dt1d2=half*dt1
155 IF(iscau>0 .OR. imp_lr>0)dt1d2=dt1
156
157 IF(jcvt /= 0)THEN
158 IF(ismstr == 11)THEN
159 DO i=1,nel
160 d4(i)=dxy(i)+dyx(i)
161 d5(i)=dyz(i)+dzy(i)
162 d6(i)=dxz(i)+dzx(i)
163 wzz(i)=dt1d2*(dyx(i)-dxy(i))
164 wyy(i)=dt1d2*(dxz(i)-dzx(i))
165 wxx(i)=dt1d2*(dzy(i)-dyz(i))
166 ENDDO
167 ELSE
168 DO i=1,nel
169 wxx(i)=zero
170 wyy(i)=zero
171 wzz(i)=zero
172 ENDDO
173 IF (impl_s == 0 .OR. (idyna > 0 .AND. ismdisp == 0)) THEN
174 DO i=1,nel
175 exx=dxx(i)
176 eyy=dyy(i)
177 ezz=dzz(i)
178 exy=dxy(i)
179 eyx=dyx(i)
180 exz=dxz(i)
181 ezx=dzx(i)
182 eyz=dyz(i)
183 ezy=dzy(i)
184 dxx(i)=dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
185 dyy(i)=dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
186 dzz(i)=dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
187 aaa=dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
188 dxy(i)=dxy(i)-aaa
189 dyx(i)=dyx(i)-aaa
190 d4(i)=dxy(i)+dyx(i)
191 aaa=dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
192 dyz(i)=dyz(i)-aaa
193 dzy(i)=dzy(i)-aaa
194 d5(i)=dyz(i)+dzy(i)
195 aaa=dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
196 dxz(i)=dxz(i)-aaa
197 dzx(i)=dzx(i)-aaa
198 d6(i)=dxz(i)+dzx(i)
199 ENDDO
200 ELSEIF (ismdisp>0.AND.iscau==0) THEN
201 !---------implicit static---------
202 DO i=1,nel
203 d4(i) = dxy(i)+dyx(i)
204 d5(i) = dyz(i)+dzy(i)
205 d6(i) = dxz(i)+dzx(i)
206 ENDDO
207 ELSE
208 dt1d=two*dt1d2
209 DO i=1,nel
210 d4(i)=dxy(i)+dyx(i)-dt1d*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
211 d5(i)=dyz(i)+dzy(i)-dt1d*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
212 d6(i)=dxz(i)+dzx(i)-dt1d*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
213 dxx(i)=dxx(i)-dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
214 dyy(i)=dyy(i)-dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
215 dzz(i)=dzz(i)-dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
216 ENDDO
217 ENDIF ! IF (IMPL_S==0.OR.IDYNA>0)
218 END IF !(ISMSTR == 11) THEN
219
220 ELSEIF (jhbe>=2) THEN
221 DO i=1,nel
222 exx=dxx(i)
223 eyy=dyy(i)
224 ezz=dzz(i)
225 exy=dxy(i)
226 eyx=dyx(i)
227 exz=dxz(i)
228 ezx=dzx(i)
229 eyz=dyz(i)
230 ezy=dzy(i)
231
232 dxx(i) = dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
233 dyy(i) = dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
234 dzz(i) = dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
235 aaa = dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
236 dxy(i) = dxy(i) -aaa
237 dyx(i) = dyx(i) -aaa
238 d4(i) = dxy(i)+dyx(i)
239 aaa = dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
240 dyz(i) = dyz(i) -aaa
241 dzy(i) = dzy(i) -aaa
242 d5(i) = dyz(i)+dzy(i)
243 aaa = dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
244 dxz(i) = dxz(i) -aaa
245 dzx(i) = dzx(i) -aaa
246 d6(i) = dxz(i)+dzx(i)
247
248 pxx2 = px1(i)*px1(i)+px2(i)*px2(i)+px3(i)*px3(i)+px4(i)*px4(i)
249 pyy2 = py1(i)*py1(i)+py2(i)*py2(i)+py3(i)*py3(i)+py4(i)*py4(i)
250 pzz2 = pz1(i)*pz1(i)+pz2(i)*pz2(i)+pz3(i)*pz3(i)+pz4(i)*pz4(i)
251 wzz(i) = dt1*(pyy2*dyx(i)-pxx2*dxy(i))/(pxx2+pyy2)
252 wxx(i) = dt1*(pzz2*dzy(i)-pyy2*dyz(i))/(pyy2+pzz2)
253 wyy(i) = dt1*(pxx2*dxz(i)-pzz2*dzx(i))/(pzz2+pxx2)
254 ENDDO
255
256 ELSE
257 DO i=1,nel
258 d4(i) = dxy(i)+dyx(i)
259 d5(i) = dyz(i)+dzy(i)
260 d6(i) = dxz(i)+dzx(i)
261 dxx(i) = dxx(i)
262 dyy(i) = dyy(i)
263 dzz(i) = dzz(i)
264 wzz(i) = dt1d2*(dyx(i)-dxy(i))
265 wyy(i) = dt1d2*(dxz(i)-dzx(i))
266 wxx(i) = dt1d2*(dzy(i)-dyz(i))
267 ENDDO
268
269 ENDIF
270
271 IF(isrot/=0)THEN
272 DO i=1,nel
273 dxy(i)=dxy(i) + vzr(i)
274 dyx(i)=dyx(i) - vzr(i)
275 dyz(i)=dyz(i) + vxr(i)
276 dzy(i)=dzy(i) - vxr(i)
277 dzx(i)=dzx(i) + vyr(i)
278 dxz(i)=dxz(i) - vyr(i)
279 ENDDO
280 aaa = zero
281 bbb = dt1 - aaa*dt1
282 DO i=1,nel
283 wxx(i) = aaa*wxx(i) + bbb*vxr(i)
284 wyy(i) = aaa*wyy(i) + bbb*vyr(i)
285 wzz(i) = aaa*wzz(i) + bbb*vzr(i)
286 ENDDO
287 ENDIF
288
289 !VORTICITY OUTPUT /ANIM/ELEM/VORTX,VORTY,VORTZ
290 IF(dt1/=zero)THEN
291 fac = four/dt1
292 IF(fani_cell%IS_VORT_X_REQUESTED)THEN
293 DO i=1,nel
294 fani_cell%VORT_X(i+nft) = fac*wxx(i)
295 ENDDO
296 ENDIF
297 IF(fani_cell%IS_VORT_Y_REQUESTED)THEN
298 DO i=1,nel
299 fani_cell%VORT_Y(i+nft) = fac*wyy(i)
300 ENDDO
301 ENDIF
302 IF(fani_cell%IS_VORT_Z_REQUESTED)THEN
303 DO i=1,nel
304 fani_cell%VORT_Z(i+nft) = fac*wzz(i)
305 ENDDO
306 ENDIF
307 ENDIF
308
309C-----------
310 RETURN
311 END
subroutine sdefo3(fani_cell, 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
subroutine sforc3(timers, output, elbuf_tab, ng, pm, geo, ixs, x, nv46, a, v, ms, w, flux, flu1, veul, fv, ale_connect, iparg, tf, npf, bufmat, partsav, itab, dt2t, neltst, ityptst, stifn, fsky, iads, offset, eani, iparts, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nel, fskym, msnf, isky, fskyi, nvc, ipm, igeo, ar, vr, in, fr_wave, dr, bufvois, itask, qmv, istrain, temp, fthe, fthesky, iexpan, gresav, grth, igrth, mssa, dmels, table, phi1, phi2, vf, af, df, wf, ffsky, afglob, msf, iparg1, xdp, por, icontact, ifoam, voln, condn, condnsky, agrav, igrv, lgrav, sensors, skew, nale, d, ioutprt, nloc_dmg, mat_elem, h3d_strain, dt, idel7nok, nsvois, sz_bufvois, snpc, stf, sbufmat, svis, idtmins, iresp, idel7ng, maxfunc, userl_avail, glob_therm, impl_s, idyna, wfext)
Definition sforc3.F:157