OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sdefo3.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "impl1_c.inc"
#include "scr14_c.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ sdefo3()

subroutine sdefo3 ( type(fani_cell_), intent(inout) 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,
integer, intent(in) nel,
integer, intent(in) nft,
integer, intent(in) ismstr,
integer, intent(in) jeul,
integer, intent(in) jhbe,
integer, intent(in) jcvt,
integer, intent(in) isrot )

Definition at line 31 of file sdefo3.F.

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
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
#define my_real
Definition cppsort.cpp:32