51
52
53
54
55
56
57
58
59
60
62
63
64
65#include "implicit_f.inc"
66
67
68
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"
74
75
76
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(*)
99
100
101
102 INTEGER I
104 . vx17, vy17, vz17,
105 . vx28, vy28, vz28,
106 . vx35, vy35, vz35,
107 . vx46, vy46, vz46, dt1d2, dt1d
109 . pxx2,pyy2,pzz2,aaa,bbb,fac,
110 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
111
112
113
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
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
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
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)
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
149 dzx(i)=px1(i)*vz1(i)+px2(i)*vz2(i)+px3(i)*vz3(i)+px4(i)*vz4(i
150 dzy(i)=py1(i)*vz1(i)+py2(i)*vz2(i)+py3(i)*vz3(i)+py4(i)*vz4(i)+py5(i)*vz5
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)
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
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
218 END IF
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
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
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
309
310 RETURN