40
41
42
43
44
45
46
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57#include "com01_c.inc"
58#include "com04_c.inc"
59#include "vect01_c.inc"
60#include "param_c.inc"
61
62
63
64 INTEGER IXS(NIXS,NUMELS)
65 my_real pm(npropm,nummat),flux(mvsiz,6), flu1(*),
66 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
67 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
68 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*),
70 . vdx1(*),vdx2(*),vdx3(*),vdx4(*),vdx5(*),vdx6(*),vdx7(*),vdx8(*),
71 . vdy1(*),vdy2(*),vdy3(*),vdy4(*),vdy5(*),vdy6(*),vdy7(*),vdy8(*),
72 . vdz1(*),vdz2(*),vdz3(*),vdz4(*),vdz5(*),vdz6(*),vdz7(*),vdz8(*)
73 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
74
75
76
77 INTEGER MAT(MVSIZ), I,II,ICLOS,IAD2
78 my_real n1x(mvsiz), n2x(mvsiz), n3x(mvsiz), n4x(mvsiz), n5x(mvsiz),
79 . n6x(mvsiz), n1y(mvsiz), n2y(mvsiz), n3y(mvsiz), n4y(mvsiz),
80 . n5y(mvsiz), n6y(mvsiz), n1z(mvsiz), n2z(mvsiz), n3z(mvsiz),
81 . n4z(mvsiz), n5z(mvsiz), n6z(mvsiz),
82 . flux1(mvsiz),flux2(mvsiz), flux3(mvsiz), flux4(mvsiz),
83 . flux5(mvsiz),flux6(mvsiz), vx1(mvsiz),
84 . vx2(mvsiz), vx3(mvsiz), vx4(mvsiz), vx5(mvsiz), vx6(mvsiz),
85 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz), vy5(mvsiz),
86 . vy6(mvsiz), vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
87 . vz5(mvsiz), vz6(mvsiz),
88 . upwl(mvsiz,6),xc(mvsiz),yc(mvsiz),
89 . zc(mvsiz) ,xf1(mvsiz),yf1(mvsiz),zf1(mvsiz),xf2(mvsiz),
90 . yf2(mvsiz),zf2(mvsiz), xf3(mvsiz),yf3(mvsiz),zf3(mvsiz),
91 . xf4(mvsiz),yf4(mvsiz),zf4(mvsiz),xf5(mvsiz),yf5(mvsiz),
92 . zf5(mvsiz), xf6(mvsiz),yf6(mvsiz),zf6(mvsiz),test
93
94 INTEGER MA
95
96
97
98 mat(1) = zero
99
100
101
102 DO i=lft,llt
103 ii=i+nft
104 mat(i)=ixs(1,ii)
105 vx1(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx3(i)+vdx4(i))
106 vx2(i)=one_over_8*(vdx3(i)+vdx4(i)+vdx8(i)+vdx7(i))
107 vx3(i)=one_over_8*(vdx5(i)+vdx6(i)+vdx7(i)+vdx8(i))
108 vx4(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx6(i)+vdx5(i))
109 vx5(i)=one_over_8*(vdx2(i)+vdx3(i)+vdx7(i)+vdx6(i))
110 vx6(i)=one_over_8*(vdx1(i)+vdx4(i)+vdx8(i)+vdx5(i))
111
112 vy1(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy3(i)+vdy4(i))
113 vy2(i)=one_over_8*(vdy3(i)+vdy4(i)+vdy8(i)+vdy7(i))
114 vy3(i)=one_over_8*(vdy5(i)+vdy6(i)+vdy7(i)+vdy8(i))
115 vy4(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy6(i)+vdy5(i))
116 vy5(i)=one_over_8*(vdy2(i)+vdy3(i)+vdy7(i)+vdy6(i))
117 vy6(i)=one_over_8*(vdy1(i)+vdy4(i)+vdy8(i)+vdy5(i))
118
119 vz1(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz3(i)+vdz4(i))
120 vz2(i)=one_over_8*(vdz3(i)+vdz4(i)+vdz8(i)+vdz7(i))
121 vz3(i)=one_over_8*(vdz5(i)+vdz6(i)+vdz7(i)+vdz8(i))
122 vz4(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz6(i)+vdz5(i))
123 vz5(i)=one_over_8*(vdz2(i)+vdz3(i)+vdz7(i)+vdz6(i))
124 vz6(i)=one_over_8*(vdz1(i)+vdz4(i)+vdz8(i)+vdz5(i))
125 ENDDO
126
127
128
129 DO i=lft,llt
130 n1x(i)=(y3(i)-y1(i))*(z2(i)-z4(i)) - (z3(i)-z1(i))*(y2(i)-y4(i))
131 n1y(i)=(z3(i)-z1(i))*(x2(i)-x4(i)) - (x3(i)-x1(i))*(z2(i)-z4(i))
132 n1z(i)=(x3(i)-x1(i))*(y2(i)-y4(i)) - (y3(i)-y1(i))*(x2(i)-x4(i))
133
134 n2x(i)=(y7(i)-y4(i))*(z3(i)-z8(i)) - (z7(i)-z4(i))*(y3(i)-y8(i))
135 n2y(i)=(z7(i)-z4(i))*(x3(i)-x8(i)) - (x7(i)-x4(i))*(z3(i)-z8(i))
136 n2z(i)=(x7(i)-x4(i))*(y3(i)-y8(i)) - (y7(i)-y4(i))*(x3(i)-x8(i))
137
138 n3x(i)=(y6(i)-y8(i))*(z7(i)-z5(i)) - (z6(i)-z8(i))*(y7(i)-y5(i))
139 n3y(i)=(z6(i)-z8(i))*(x7(i)-x5(i)) - (x6(i)-x8(i))*(z7(i)-z5(i))
140 n3z(i)=(x6(i)-x8(i))*(y7(i)-y5(i)) - (y6(i)-y8(i))*(x7(i)-x5(i))
141
142 n4x(i)=(y2(i)-y5(i))*(z6(i)-z1(i)) - (z2(i)-z5(i))*(y6(i)-y1(i))
143 n4y(i)=(z2(i)-z5(i))*(x6(i)-x1(i)) - (x2(i)-x5(i))*(z6(i)-z1(i))
144 n4z(i)=(x2(i)-x5(i))*(y6(i)-y1(i)) - (y2(i)-y5(i))*(x6(i)-x1(i))
145
146 n5x(i)=(y7(i)-y2(i))*(z6(i)-z3(i)) - (z7(i)-z2(i))*(y6(i)-y3(i))
147 n5y(i)=(z7(i)-z2(i))*(x6(i)-x3(i)) - (x7(i)-x2(i))*(z6(i)-z3(i))
148 n5z(i)=(x7(i)-x2(i))*(y6(i)-y3(i)) - (y7(i)-y2(i))*(x6(i)-x3(i))
149
150 n6x(i)=(y8(i)-y1(i))*(z4(i)-z5(i)) - (z8(i)-z1(i))*(y4(i)-y5(i))
151 n6y(i)=(z8(i)-z1(i))*(x4(i)-x5(i)) - (x8(i)-x1(i))*(z4(i)-z5(i))
152 n6z(i)=(x8(i)-x1(i))*(y4(i)-y5(i)) - (y8(i)-y1(i))*(x4(i)-x5(i))
153 ENDDO
154
155
156
157 IF(iclose == 1) THEN
158 DO i=lft,llt
159
160 xc(i)=one_over_8*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i))
161 yc(i)=one_over_8*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i))
162 zc(i)=one_over_8*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i))
163 xf1(i)=fourth*(x1(i)+x2(i)+x3(i)+x4(i))
164 xf2(i)=fourth*(x3(i)+x4(i)+x8(i)+x7(i))
165 xf3(i)=fourth*(x5(i)+x6(i)+x7(i)+x8(i))
166 xf4(i)=fourth*(x1(i)+x2(i)+x6(i)+x5(i))
167 xf5(i)=fourth*(x2(i)+x3(i)+x7(i)+x6(i))
168 xf6(i)=fourth*(x1(i)+x4(i)+x8(i)+x5(i))
169
170 yf1(i)=fourth*(y1(i)+y2(i)+y3(i)+y4(i))
171 yf2(i)=fourth*(y3(i)+y4(i)+y8(i)+y7(i))
172 yf3(i)=fourth*(y5(i)+y6(i)+y7(i)+y8(i))
173 yf4(i)=fourth*(y1(i)+y2(i)+y6(i)+y5(i))
174 yf5(i)=fourth*(y2(i)+y3(i)+y7(i)+y6(i))
175 yf6(i)=fourth*(y1(i)+y4(i)+y8(i)+y5(i))
176
177 zf1(i)=fourth*(z1(i)+z2(i)+z3(i)+z4(i))
178 zf2(i)=fourth*(z3(i)+z4(i)+z8(i)+z7(i))
179 zf3(i)=fourth*(z5(i)+z6(i)+z7(i)+z8(i))
180 zf4(i)=fourth*(z1(i)+z2(i)+z6(i)+z5(i))
181 zf5(i)=fourth*(z2(i)+z3(i)+z7(i)+z6(i))
182 zf6(i)=fourth*(z1(i)+z4(i)+z8(i)+z5(i))
183 ENDDO
184 DO i=lft,llt
185 test=(xf1(i)-xc(i))*n1x(i)+
186 . (yf1(i)-yc(i))*n1y(i)+
187 . (zf1(i)-zc(i))*n1z(i)
188 IF(test <= 0)THEN
189 n1x(i)=zero
190 n1y(i)=zero
191 n1z(i)=zero
192 ENDIF
193 ENDDO
194 DO i=lft,llt
195 test=(xf2(i)-xc(i))*n2x(i)+
196 . (yf2(i)-yc(i))*n2y(i)+
197 . (zf2(i)-zc(i))*n2z(i)
198 IF(test <= 0)THEN
199 n2x(i)=zero
200 n2y(i)=zero
201 n2z(i)=zero
202 ENDIF
203 ENDDO
204 DO i=lft,llt
205 test=(xf3(i)-xc(i))*n3x(i)+
206 . (yf3(i)-yc(i))*n3y(i)+
207 . (zf3(i)-zc(i))*n3z(i)
208 IF(test <= 0)THEN
209 n3x(i)=zero
210 n3y(i)=zero
211 n3z(i)=zero
212 ENDIF
213 ENDDO
214 DO i=lft,llt
215 test=(xf4(i)-xc(i))*n4x(i)+
216 . (yf4(i)-yc(i))*n4y(i)+
217 . (zf4(i)-zc(i))*n4z(i)
218 IF(test <= zero)THEN
219 n4x(i)=zero
220 n4y(i)=zero
221 n4z(i)=zero
222 ENDIF
223 ENDDO
224 DO i=lft,llt
225 test=(xf5(i)-xc(i))*n5x(i)+
226 . (yf5(i)-yc(i))*n5y(i)+
227 . (zf5(i)-zc(i))*n5z(i)
228 IF(test <= zero)THEN
229 n5x(i)=zero
230 n5y(i)=zero
231 n5z(i)=zero
232 ENDIF
233 ENDDO
234 DO i=lft,llt
235 test=(xf6(i)-xc(i))*n6x(i)+
236 . (yf6(i)-yc(i))*n6y(i)+
237 . (zf6(i)-zc(i))*n6z(i)
238 IF(test <= zero)THEN
239 n6x(i)=zero
240 n6y(i)=zero
241 n6z(i)=zero
242 ENDIF
243 ENDDO
244 ENDIF
245
246
247
248 DO i=lft,llt
249 flux1(i)=(vx1(i)*n1x(i)+vy1(i)*n1y(i)+vz1(i)*n1z(i))
250 flux2(i)=(vx2(i)*n2x(i)+vy2(i)*n2y(i)+vz2(i)*n2z(i))
251 flux3(i)=(vx3(i)*n3x(i)+vy3(i)*n3y(i)+vz3(i)*n3z(i))
252 flux4(i)=(vx4(i)*n4x(i)+vy4(i)*n4y(i)+vz4(i)*n4z(i))
253 flux5(i)=(vx5(i)*n5x(i)+vy5(i)*n5y(i)+vz5(i)*n5z(i))
254 flux6(i)=(vx6(i)*n6x(i)+vy6(i)*n6y(i)+vz6(i)*n6z(i))
255
256 flux1(i)=
alpha(i,1)*flux1(i)
257 flux2(i)=
alpha(i,2)*flux2(i)
258 flux3(i)=
alpha(i,3)*flux3(i)
259 flux4(i)=
alpha(i,4)*flux4(i)
260 flux5(i)=
alpha(i,5)*flux5(i)
261 flux6(i)=
alpha(i,6)*flux6(i)
262 ENDDO
263
264
265
266 ma = mat(lft)
267 DO i=lft,llt
268 upwl(i,1)=pm(16,ma)
269 upwl(i,2)=pm(16,ma)
270 upwl(i,3)=pm(16,ma)
271 upwl(i,4)=pm(16,ma)
272 upwl(i,5)=pm(16,ma)
273 upwl(i,6)=pm(16,ma)
274 ENDDO
275
276 iclos = nint(pm(198, mat(1)))
277 IF(iclos == 1) THEN
278 DO i=lft,llt
279 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
280 ii=ale_connect%ee_connect%connected(iad2 + 1 - 1)
281 IF(ii == 0) flux1(i)= zero
282
283 ii=ale_connect%ee_connect%connected(iad2 + 2 - 1)
284 IF(ii == 0) flux2(i)= zero
285
286 ii=ale_connect%ee_connect%connected(iad2 + 3 - 1)
287 IF(ii == 0)flux3(i)= zero
288
289 ii=ale_connect%ee_connect%connected(iad2 + 4 - 1)
290 IF(ii == 0)flux4(i)= zero
291
292 ii=ale_connect%ee_connect%connected(iad2 + 5 - 1)
293 IF(ii == 0) flux5(i)=zero
294
295 ii=ale_connect%ee_connect%connected(iad2 + 6 - 1)
296 IF(ii == 0) flux6(i)= zero
297
298 ENDDO
299 ENDIF
300
301 DO i=lft,llt
302
303 flux(i,1)=flux1(i)-upwl(i,1)*abs(flux1(i))
304 flux(i,2)=flux2(i)-upwl(i,2)*abs(flux2(i))
305 flux(i,3)=flux3(i)-upwl(i,3)*abs(flux3(i))
306 flux(i,4)=flux4(i)-upwl(i,4)*abs(flux4(i))
307 flux(i,5)=flux5(i)-upwl(i,5)*abs(flux5(i))
308 flux(i,6)=flux6(i)-upwl(i,6)*abs(flux6(i))
309
310 flu1(i) =flux1(i)+upwl(i,1)*abs(flux1(i))
311 . +flux2(i)+upwl(i,2)*abs(flux2(i))
312 . +flux3(i)+upwl(i,3)*abs(flux3(i))
313 . +flux4(i)+upwl(i,4)*abs(flux4(i))
314 . +flux5(i)+upwl(i,5)*abs(flux5(i))
315 . +flux6(i)+upwl(i,6)*abs(flux6(i))
316
317 ENDDO
318
319 RETURN