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 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
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(*)
98
99
100
101 INTEGER I, J, IDX
103 . vx17, vy17, vz17,
104 . vx28, vy28, vz28,
105 . vx35, vy35, vz35,
106 . vx46, vy46, vz46, dt1d2, dt1d
108 . pxx2,pyy2,pzz2,pxx2p,pyy2p,pzz2p,aaa,bbb,fac,
109 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
110
111
112
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
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
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
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
217 END IF
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
289 IF(dt1/=zero)THEN
290 fac = four/dt1
292 DO i=1,nel
294 ENDDO
295 ENDIF
297 DO i=1,nel
299 ENDDO
300 ENDIF
302 DO i=1,nel
304 ENDDO
305 ENDIF
306 ENDIF
307
308
309 RETURN
type(fani_cell_) fani_cell