44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55#include "com08_c.inc"
56#include "impl1_c.inc"
57
58
59
60 INTEGER, INTENT(IN) :: NEL
61 INTEGER, INTENT(IN) :: JHBE
62 INTEGER, INTENT(IN) :: JCVT
63 INTEGER, INTENT(IN) :: ISROT
65 . vx1(*), vx2(*), vx3(*), vx4(*),
66 . vx5(*), vx6(*), vx7(*), vx8(*),
67 . vy1(*), vy2(*), vy3(*), vy4(*),
68 . vy5(*), vy6(*), vy7(*), vy8(*),
69 . vz1(*), vz2(*), vz3(*), vz4(*),
70 . vz5(*), vz6(*), vz7(*), vz8(*),
71 . px1(*), px2(*), px3(*), px4(*),
72 . py1(*), py2(*), py3(*), py4(*),
73 . pz1(*), pz2(*), pz3(*), pz4(*),
74 . dxx(*), dxy(*), dxz(*),
75 . dyx(*), dyy(*), dyz(*),
76 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
77 . wxx(*), wyy(*), wzz(*), dd(*)
79 . vxr(*),vyr(*),vzr(*)
80
81
82
83 INTEGER I, J
85 . vx17(mvsiz), vy17(mvsiz), vz17(mvsiz),
86 . vx28(mvsiz), vy28(mvsiz), vz28(mvsiz),
87 . vx35(mvsiz), vy35(mvsiz), vz35(mvsiz),
88 . vx46(mvsiz), vy46(mvsiz), vz46(mvsiz),
89 . dt1d2, dt1d
91 . pxx2,pyy2,pzz2,pxx2p,pyy2p,pzz2p
93 . aaa,bbb
94
95 DO i=1,nel
96 vx17(i)=vx1(i)-vx7(i)
97 vx28(i)=vx2(i)-vx8(i)
98 vx35(i)=vx3(i)-vx5(i)
99 vx46(i)=vx4(i)-vx6(i)
100 vy17(i)=vy1(i)-vy7(i)
101 vy28(i)=vy2(i)-vy8(i)
102 vy35(i)=vy3(i)-vy5(i)
103 vy46(i)=vy4(i)-vy6(i)
104 vz17(i)=vz1(i)-vz7(i)
105 vz28(i)=vz2(i)-vz8(i)
106 vz35(i)=vz3(i)-vz5(i)
107 vz46(i)=vz4(i)-vz6(i)
108 ENDDO
109
110 DO i=1,nel
111 dxx(i)=px1(i)*vx17(i)+px2(i)*vx28(i)+
112 . px3(i)*vx35(i)+px4(i)*vx46(i)
113 dyy(i)=py1(i)*vy17(i)+py2(i)*vy28(i)+
114 . py3(i)*vy35(i)+py4(i)*vy46(i)
115 dzz(i)=pz1(i)*vz17(i)+pz2(i)*vz28(i)+
116 . pz3(i)*vz35(i)+pz4(i)*vz46(i)
117 dxy(i)=py1(i)*vx17(i)+py2(i)*vx28(i)+
118 . py3(i)*vx35(i)+py4(i)*vx46(i)
119 dxz(i)=pz1(i)*vx17(i)+pz2(i)*vx28(i)+
120 . pz3(i)*vx35(i)+pz4(i)*vx46(i)
121 dyx(i)=px1(i)*vy17(i)+px2(i)*vy28(i)+
122 . px3(i)*vy35(i)+px4(i)*vy46(i)
123 dyz(i)=pz1(i)*vy17(i)+pz2(i)*vy28(i)+
124 . pz3(i)*vy35(i)+pz4(i)*vy46(i)
125 dzx(i)=px1(i)*vz17(i)+px2(i)*vz28(i)+
126 . px3(i)*vz35(i)+px4(i)*vz46(i)
127 dzy(i)=py1(i)*vz17(i)+py2(i)*vz28(i)+
128 . py3(i)*vz35(i)+py4(i)*vz46(i)
129 ENDDO
130
131
132 dt1d2=half*dt1
133 IF (iscau>0)dt1d2=dt1
134
135 IF (jcvt > 0) THEN
136 IF (impl_s==0.OR.idyna > 0) THEN
137 DO i=1,nel
138 dxx(i) = dxx(i)
139 . -dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
140 dyy(i) = dyy(i)
141 . -dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
142 dzz(i) = dzz(i)
143 . -dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
144 aaa = dt1d2*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
145 dxy(i) = dxy(i) - aaa
146 dyx(i) = dyx(i) - aaa
147 d4(i) = dxy(i)+dyx(i)
148 aaa = dt1d2*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
149 dyz(i) = dyz(i) - aaa
150 dzy(i) = dzy(i) - aaa
151 d5(i) = dyz(i)+dzy(i)
152 aaa = dt1d2*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
153 dxz(i) = dxz(i) - aaa
154 dzx(i) = dzx(i) - aaa
155 d6(i) = dxz(i)+dzx(i)
156 wxx(i)=zero
157 wyy(i)=zero
158 wzz(i)=zero
159 ENDDO
160
161 ELSEIF (iline>0.AND.iscau==0) THEN
162 DO i=1,nel
163 d4(i) = dxy(i)+dyx(i)
164 d5(i) = dyz(i)+dzy(i)
165 d6(i) = dxz(i)+dzx(i)
166 wxx(i)=zero
167 wyy(i)=zero
168 wzz(i)=zero
169 ENDDO
170 ELSE
171 dt1d=two*dt1d2
172 DO i=1,nel
173 d4(i) = dxy(i)+dyx(i)
174 . -dt1d*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
175 d5(i) = dyz(i)+dzy(i)
176 . -dt1d*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
177 d6(i) = dxz(i)+dzx(i)
178 . -dt1d*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
179 dxx(i) = dxx(i)
180 . -dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
181 dyy(i) = dyy(i)
182 . -dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
183 dzz(i) = dzz(i)
184 . -dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
185 wxx(i)=zero
186 wyy(i)=zero
187 wzz(i)=zero
188 ENDDO
189 ENDIF
190
191 ELSEIF (jhbe >= 2) THEN
192 DO i=1,nel
193 dxx(i) = dxx(i)
194 . -dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
195 dyy(i) = dyy(i)
196 . -dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
197 dzz(i) = dzz(i)
198 . -dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
199 aaa = dt1d2*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
200 dxy(i) = dxy(i) - aaa
201 dyx(i) = dyx(i) - aaa
202 d4(i) = dxy(i)+dyx(i)
203 aaa = dt1d2*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
204 dyz(i) = dyz(i) - aaa
205 dzy(i) = dzy(i) - aaa
206 d5(i) = dyz(i)+dzy(i)
207 aaa = dt1d2*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
208 dxz(i) = dxz(i) - aaa
209 dzx(i) = dzx(i) - aaa
210 d6(i) = dxz(i)+dzx(i)
211 pxx2 = px1(i)*px1(i)+px2(i)*px2(i)
212 . +px3(i)*px3(i)+px4(i)*px4(i)
213 pyy2 = py1(i)*py1(i)+py2(i)*py2(i)
214 . +py3(i)*py3(i)+py4(i)*py4(i)
215 pzz2 = pz1(i)*pz1(i)+pz2(i)*pz2(i)
216 . +pz3(i)*pz3(i)+pz4(i)*pz4(i)
217 wzz(i)=dt1*(pyy2*dyx(i)-pxx2*dxy(i))/(pxx2+pyy2)
218 wxx(i)=dt1*(pzz2*dzy(i)-pyy2*dyz(i))/(pyy2+pzz2)
219 wyy(i)=dt1*(pxx2*dxz(i)-pzz2*dzx(i))/(pzz2+pxx2)
220 ENDDO
221
222 ELSE
223 DO i=1,nel
224 d4(i) = dxy(i)+dyx(i)
225 d5(i) = dyz(i)+dzy(i)
226 d6(i) = dxz(i)+dzx(i)
227 dxx(i) = dxx(i)
228 dyy(i) = dyy(i)
229 dzz(i) = dzz(i)
230 wzz(i)=dt1d2*(dyx(i)-dxy(i))
231 wyy(i)=dt1d2*(dxz(i)-dzx(i))
232 wxx(i)=dt1d2*(dzy(i)-dyz(i))
233 ENDDO
234 ENDIF
235
236
237 IF(isrot > 0)THEN
238 DO i=1,nel
239 dxy(i)=dxy(i) + vzr(i)
240 dyx(i)=dyx(i) - vzr(i)
241 dyz(i)=dyz(i) + vxr(i)
242 dzy(i)=dzy(i) - vxr(i)
243 dzx(i)=dzx(i) + vyr(i)
244 dxz(i)=dxz(i) - vyr(i)
245 ENDDO
246 aaa = 0.
247 bbb = dt1 - aaa*dt1
248 DO i=1,nel
249 wxx(i)=aaa*wxx(i) + bbb*vxr(i)
250 wyy(i)=aaa*wyy(i) + bbb*vyr(i)
251 wzz(i)=aaa*wzz(i) + bbb*vzr(i)
252 ENDDO
253 ENDIF
254
255 DO i=1, nel
256 dd(i) = - dxx(i)- dyy(i) - dzz(i)
257 ENDDO
258
259 RETURN