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