35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46#include "impl1_c.inc"
47
48
49
50 INTEGER JFT, JLT,IHBE
51
53 . vl1(mvsiz,3),vl2(mvsiz,3),vl3(mvsiz,3),vl4(mvsiz,3),dt1c(*),
54 . px1(mvsiz), px2(mvsiz), py1(mvsiz), py2(mvsiz),
55 . exx(mvsiz),
area(mvsiz),
56 . eyy(mvsiz), exy(mvsiz), exz(mvsiz), eyz(mvsiz),
57 . x2(mvsiz), x3(mvsiz), x4(mvsiz),
58 . y2(mvsiz), y3(mvsiz), y4(mvsiz), z2(mvsiz),
59 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
60 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
61 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
62 . vx13(mvsiz), vx24(mvsiz), vy13(mvsiz), vy24(mvsiz),
63 . vz13(mvsiz), vz24(mvsiz),
64 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz), e2x(mvsiz),
65 . e2y(mvsiz), e2z(mvsiz), e3x(mvsiz), e3y(mvsiz), e3z(mvsiz)
66
67
68
69 INTEGER I, J
71 . zz2(mvsiz), exzz2(mvsiz), eyzz2(mvsiz), exz2py2(mvsiz),
72 . exz2py1(mvsiz), eyz2px2(mvsiz), eyz2px1(mvsiz),zzz(mvsiz),
73 . exz2(mvsiz),eyz2(mvsiz),
74 . dt1v4, tmp1a(mvsiz), tmp2a(mvsiz), tmp3a(mvsiz),
75 . tmp1b(mvsiz), tmp2b(mvsiz), tmp3b(mvsiz),gzx(mvsiz),
76 . gzy(mvsiz)
77
78
79 DO i=jft,jlt
80 vx1(i)=e1x(i)*vl1(i,1)+e1y(i)*vl1(i,2)+e1z(i)*vl1(i,3)
81 vx2(i)=e1x(i)*vl2(i,1)+e1y(i)*vl2(i,2)+e1z(i)*vl2(i,3)
82 vx3(i)=e1x(i)*vl3(i,1)+e1y(i)*vl3(i,2)+e1z(i)*vl3(i,3)
83 vx4(i)=e1x(i)*vl4(i,1)+e1y(i)*vl4(i,2)+e1z(i)*vl4(i,3)
84
85 vy4(i)=e2x(i)*vl4(i,1)+e2y(i)*vl4(i,2)+e2z(i)*vl4(i,3)
86 vy3(i)=e2x(i)*vl3(i,1)+e2y(i)*vl3(i,2)+e2z(i)*vl3(i,3)
87 vy2(i)=e2x(i)*vl2(i,1)+e2y(i)*vl2(i,2)+e2z(i)*vl2(i,3)
88 vy1(i)=e2x(i)*vl1(i,1)+e2y(i)*vl1(i,2)+e2z(i)*vl1(i,3)
89
90 vz1(i)=e3x(i)*vl1(i,1)+e3y(i)*vl1(i,2)+e3z(i)*vl1(i,3)
91 vz2(i)=e3x(i)*vl2(i,1)+e3y(i)*vl2(i,2)+e3z(i)*vl2(i,3)
92 vz3(i)=e3x(i)*vl3(i,1)+e3y(i)*vl3(i,2)+e3z(i)*vl3(i,3)
93 vz4(i)=e3x(i)*vl4(i,1)+e3y(i)*vl4(i,2)+e3z(i)*vl4(i,3)
94
95 vz13(i)=vz1(i)-vz3(i)
96 vz24(i)=vz2(i)-vz4(i)
97
98 eyz(i)=py1(i)*vz13(i)+py2(i)*vz24(i)
99 exz(i)=px1(i)*vz13(i)+px2(i)*vz24(i)
100
101 ENDDO
102
103 IF(ihbe<=1)THEN
104 DO i=jft,jlt
105
106 z2(i) = zero
107 dt1v4 = fourth*dt1c(i)
108 IF(impl_s>0) dt1v4=zero
109 tmp2a(i)=py2(i)+py1(i)
110 tmp3a(i)=sign(
max(abs(tmp2a(i)),em20),tmp2a(i))
111 tmp1a(i)=dt1v4*(vz13(i)-vz24(i))*(vz13(i)-vz24(i))/tmp3a(i)
112 vx13(i)=vx1(i)-vx3(i)
113 vx24(i)=vx2(i)-vx4(i)
114 vx13(i)=vx13(i)-tmp1a(i)
115 vx24(i)=vx24(i)+tmp1a(i)
116
117 exx(i)=px1(i)*vx13(i)+px2(i)*vx24(i)
118 exy(i)=py1(i)*vx13(i)+py2(i)*vx24(i)
119
120 tmp1b(i)=px2(i)-px1(i)
121 tmp3b(i)=sign(
max(abs(tmp1b(i)),em20),tmp1b(i))
122 tmp2b(i)=dt1v4*(vz13(i)+vz24(i))*(vz13(i)+vz24(i))/tmp3b(i)
123 vy13(i)=vy1(i)-vy3(i)
124 vy24(i)=vy2(i)-vy4(i)
125 vy13(i)=vy13(i)+tmp2b(i)
126 vy24(i)=vy24(i)+tmp2b(i)
127
128 exy(i)=exy(i)+px1(i)*vy13(i)+px2(i)*vy24(i)
129 eyy(i)=py1(i)*vy13(i)+py2(i)*vy24(i)
130 ENDDO
131
132 ELSEIF(ihbe==2.OR.ihbe==3)THEN
133
134 DO i=jft,jlt
135 dt1v4 = half*dt1c(i)
136 IF(impl_s>0) dt1v4=zero
137
138 gzx(i) = exz(i)/
area(i)
139 exzz2(i)= gzx(i)*z2(i)
140 exz2(i) = gzx(i)*gzx(i)*dt1v4
141 vx3(i)=vx3(i) -exz2(i)*x3(i)-vx1(i)
142 vx2(i)=vx2(i)+exzz2(i)-exz2(i)*x2(i)-vx1(i)
143 vx4(i)=vx4(i)+exzz2(i)-exz2(i)*x4(i)-vx1(i)
144 vx1(i)=zero
145
146 gzy(i) = eyz(i)/
area(i)
147 eyzz2(i)= gzy(i)*z2(i)
148 eyz2(i) = gzy(i)*gzy(i)*dt1v4
149 vy3(i)=vy3(i) -eyz2(i)*y3(i)-vy1(i)
150 vy2(i)=vy2(i)+eyzz2(i)-eyz2(i)*y2(i)-vy1(i)
151 vy4(i)=vy4(i)+eyzz2(i)-eyz2(i)*y4(i)-vy1(i)
152 vy1(i)=zero
153
154 zzz(i)= (exz2(i)+eyz2(i))*z2(i)
155 vz3(i)=vz3(i)-gzy(i)*y3(i)-gzx(i)*x3(i) -vz1(i)
156 vz2(i)=vz2(i)-gzy(i)*y2(i)-gzx(i)*x2(i)-zzz(i)-vz1(i)
157 vz4(i)=vz4(i)-gzy(i)*y4(i)-gzx(i)*x4(i)-zzz(i)-vz1(i)
158 vz1(i)=zero
159
160 vx13(i)=-vx3(i)
161 vx24(i)=vx2(i)-vx4(i)
162
163 exx(i)=px1(i)*vx13(i)+px2(i)*vx24(i)
164 exy(i)=py1(i)*vx13(i)+py2(i)*vx24(i)
165
166 vy13(i)=-vy3(i)
167 vy24(i)=vy2(i)-vy4(i)
168
169 exy(i)=exy(i)+px1(i)*vy13(i)+px2(i)*vy24(i)
170 eyy(i)=py1(i)*vy13(i)+py2(i)*vy24(i)
171 ENDDO
172
173 ELSEIF(ihbe==4)THEN
174
175 DO i=jft,jlt
176 dt1v4 = half*dt1c(i)
177 IF(impl_s>0) dt1v4=zero
178
179 zz2(i)=half*z2(i)
180
181 gzx(i) = exz(i)/
area(i)
182 exzz2(i) = gzx(i)*zz2(i)
183 exz2(i) = gzx(i)*gzx(i)*dt1v4
184 exz2py2(i) = exz2(i)*py2(i)
185 exz2py1(i) = exz2(i)*py1(i)
186 vx1(i)=vx1(i)-exzz2(i)-exz2py2(i)
187 vx3(i)=vx3(i)-exzz2(i)+exz2py2(i)
188 vx2(i)=vx2(i)+exzz2(i)+exz2py1(i)
189 vx4(i)=vx4(i)+exzz2(i)-exz2py1(i)
190
191 gzy(i) = eyz(i)/
area(i)
192 eyzz2(i) = gzy(i)*zz2(i)
193 eyz2(i) = gzy(i)*gzy(i)*dt1v4
194 eyz2px2(i) = eyz2(i)*px2(i)
195 eyz2px1(i) = eyz2(i)*px1(i)
196 vy1(i)=vy1(i)-eyzz2(i)+eyz2px2(i)
197 vy3(i)=vy3(i)-eyzz2(i)-eyz2px2(i)
198 vy2(i)=vy2(i)+eyzz2(i)-eyz2px1(i)
199 vy4(i)=vy4(i)+eyzz2(i)+eyz2px1(i)
200
201 vx13(i)=vx1(i)-vx3(i)
202 vx24(i)=vx2(i)-vx4(i)
203
204 exx(i)=px1(i)*vx13(i)+px2(i)*vx24(i)
205 exy(i)=py1(i)*vx13(i)+py2(i)*vx24(i)
206
207 vy13(i)=vy1(i)-vy3(i)
208 vy24(i)=vy2(i)-vy4(i)
209
210 exy(i)=exy(i)+px1(i)*vy13(i)+px2(i)*vy24(i)
211 eyy(i)=py1(i)*vy13(i)+py2(i)*vy24(i)
212 ENDDO
213 ENDIF
214
215 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)