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