37
38
39
40
41
42
43
44
45
46
47
48
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "mvsiz_p.inc"
61
62
63
64#include "vect01_c.inc"
65#include "inter22.inc"
66#include "param_c.inc"
67
68
69
70
71
72
73
74
75
76
77
78 INTEGER NEL
79 INTEGER :: IXS(,*),NV46,IALEFVM_FLG, IPM(NPROPMI,*),IPARG(NPARG,*),NG
82 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
83
84
85
86 INTEGER :: IAD2, IAD3
87 INTEGER :: I, II, IV, J, JV, IMAT, ILAW,IFLG_ALE,IFLG_EUL
88 INTEGER :: NIN, IB, IPRES_MOM
89 INTEGER :: NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8
90 my_real :: f0(3,mvsiz), fface(3,nv46,mvsiz)
91 my_real :: nx(6,mvsiz), ny(6,mvsiz), nz(6,mvsiz), p1,p2,denom,pf
94 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz), x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
95 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz), y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz),
96 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz), z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),
97 . z_1, z_2, u1n1, u2n1
98
99
100
101
103 imat = ixs(1,1+nft)
104 ilaw = ipm(2,imat)
105 ialefvm_flg = ipm(251,imat)
106 IF(ialefvm_flg <= 1)RETURN
107 IF(ilaw==11) RETURN
108 iflg_ale = iparg(7,ng)
109 iflg_eul = iparg(11,ng)
110
111
112
113
114 nin = 1
115
116
117
118
119
120 DO i=1,nel
121 ii = i + nft
122
123 nc1=ixs(2,ii)
124 nc2=ixs(3,ii)
125 nc3=ixs(4,ii)
126 nc4=ixs(5,ii)
127 nc5=ixs(6,ii)
128 nc6=ixs(7,ii)
129 nc7=ixs(8,ii)
130 nc8=ixs(9,ii)
131
132
133 x1(i)=x(1,nc1)
134 y1(i)=x(2,nc1)
135 z1(i)=x(3,nc1)
136
137 x2(i)=x(1,nc2)
138 y2(i)=x(2,nc2)
139 z2(i)=x(3,nc2)
140
141 x3(i)=x(1,nc3)
142 y3(i)=x(2,nc3)
143 z3(i)=x(3,nc3)
144
145 x4(i)=x(1,nc4)
146 y4(i)=x(2,nc4)
147 z4(i)=x(3,nc4)
148
149 x5(i)=x(1,nc5)
150 y5(i)=x(2,nc5)
151 z5(i)=x(3,nc5)
152
153 x6(i)=x(1,nc6)
154 y6(i)=x(2,nc6)
155 z6(i)=x(3,nc6)
156
157 x7(i)=x(1,nc7)
158 y7(i)=x(2,nc7)
159 z7(i)=x(3,nc7)
160
161 x8(i)=x(1,nc8)
162 y8(i)=x(2,nc8)
163 z8(i)=x(3,nc8)
164 ENDDO
165 DO i=1,nel
166
167 nx(1,i)=(y3(i)-y1(i))*(z2(i)-z4(i)) - (z3(i)-z1(i))*(y2(i)-y4(i))
168 ny(1,i)=(z3(i)-z1(i))*(x2(i)-x4(i)) - (x3(i
169 nz(1,i)=(x3(i)-x1(i))*(y2(i)-y4(i)) - (y3(i)-y1(i
170
171 nx(2,i)=(y7(i)-y4(i))*(z3(i)-z8(i)) - (z7(i)-z4
172 ny(2,i)=(z7(i)-z4(i))*(x3(i)-x8(i)) - (x7(i)-x4(i))*(z3(i)-z8(i))
173 nz(2,i)=(x7(i)-x4(i))*(y3(i)-y8(i)) - (y7(i)-y4(i))*(x3(i)-x8(i))
174
175 nx(3,i)=(y6(i)-y8(i))*(z7(i)-z5(i)) - (z6(i)-z8(i))*(y7(i
176 ny(3,i)=(z6(i)-z8(i))*(x7(i)-x5(i)) - (x6(i)-x8(i))*(z7(i)-z5(i))
177 nz(3,i)=(x6(i)-x8(i))*(y7(i)-y5(i)) - (y6(i)-y8(i))*(x7(i)-x5(i))
178
179 nx(4,i)=(y2(i)-y5(i))*(z6(i)-z1(i)) - (z2(i)-z5(i))*(y6(i)-y1(i))
180 ny(4,i)=(z2(i)-z5(i))*(x6(i)-x1(i)) - (x2(i)-x5(i))*(z6(i)-z1(i))
181 nz(4,i)=(x2(i)-x5(i))*(y6(i)-y1(i)) - (y2(i)-y5(i))*(x6(i)-x1(i))
182
183 nx(5,i)=(y7(i)-y2(i))*(z6(i)-z3(i)) - (z7(i)-z2(i))*(y6(i)-y3(i))
184 ny(5,i)=(z7(i)-z2(i))*(x6(i)-x3(i)) - (x7(i)-x2
185 nz(5,i)=(x7(i)-x2(i))*(y6(i)-y3(i)) - (y7(i)-y2(i))*(x6(i)-x3(i))
186
187 nx(6,i)=(y8(i)-y1(i))*(z4(i)-z5(i)) - (z8(i)-z1(i))*(y4(i)-y5(i))
188 ny(6,i)=(z8(i)-z1(i))*(x4(i)-x5(i)) - (x8(i)-x1(i))*(z4(i)-z5(i))
189 nz(6,i)=(x8(i)-x1(i))*(y4(i)-y5(i)) - (y8(i)-y1(i))*(x4(i)-x5(i))
190 ENDDO
191
192
193
194
195
196
197
198
199
201
202
203
204 SELECT CASE (ipres_mom)
205 CASE(5)
206 DO i=1,nel
207 ii = i + nft
208 iad2 = ale_connect%ee_connect%iad_connect(ii)
212 DO j=1,nv46
213 iv = ale_connect%ee_connect%connected(iad2 + j - 1)
214 IF(iv > 0)THEN
215
216 iad3 = ale_connect%ee_connect%iad_connect(iv)
217 DO jv=1,nv46
218 IF(ale_connect%ee_connect%connected(iad3 + jv - 1)==ii)EXIT
219 ENDDO
225 denom = z_1 + z_2
228 pf = (z_1*p2 + z_2*p1)/denom + theta*(z_1*z_2*(u1n1-u2n1)/denom)
229 ELSE
230
231
233
234 mf = m1
236 pf = p1 + theta*half*z_1*u1n1
237
238 ENDIF
239 fface(1,j,i) = -half*pf*nx(j,i)
240
241 fface(3,j,i) = -half*pf*nz(j,i)
242 enddo
243 enddo
244 CASE DEFAULT
245 DO i=1,nel
246 ii = i + nft
247 iad2 = ale_connect%ee_connect%iad_connect(ii)
249 DO j=1,nv46
250 iv = ale_connect%ee_connect%connected(iad2 + j - 1)
251 IF(iv > 0)THEN
252
253 iad3 = ale_connect%ee_connect%iad_connect(iv)
254 DO jv=1,nv46
255 IF(ale_connect%ee_connect%connected(iad3 + jv - 1)==ii)EXIT
256 ENDDO
258 pf = half*(p1+p2)
259 ELSE
260
261
262 pf = p1
263 ENDIF
264
265 fface(2,j,i) = -half*pf*ny(j,i
266 fface(3,j,i) = -half*pf*nz(j,i)
267
268
269
270
271 enddo
272 enddo
273 END SELECT
274
275
276
277
278 DO i=1,nel
279 ii = i + nft
280 IF(int22/=0)THEN
281 ib = nint(iad22(i))
282 IF(ib>0) cycle
283 ENDIF
284 f0(1,i) = sum(fface(1,1:nv46,i))
285 f0(2,i) = sum(fface(2,1:nv46,i))
286 f0(3,i) = sum(fface(3,1:nv46,i))
287
288
289
290
294
295
299 enddo
300
301
302
303
304
305 !-------------------------------------------------------------
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334 RETURN
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param