38
39
40
41
42
43
44
45
46
47
48
49
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "mvsiz_p.inc"
60
61
62
63#include "vect01_c.inc"
64#include "com01_c.inc"
65#include "com06_c.inc"
66#include "com08_c.inc"
67#include "param_c.inc"
68#include "comlock.inc"
69
70
71
72
73
74
75
76
77
78
79
80 INTEGER :: IXS(NIXS,*),NV46,IPM(NPROPMI,*),NALE(*),NEL
81 my_real :: sig(nel,6),x(3,*),w(3,*),p(mvsiz)
82 my_real :: n1x(*), n2x(*), n3x(*), n4x(*), n5x(*), n6x(*),
83 . n1y(*), n2y(*), n3y(*), n4y(*), n5y(*), n6y(*),
84 . n1z(*), n2z(*), n3z(*), n4z(*), n5z(*), n6z(*)
85 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
86 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
87
88
89
90 INTEGER :: I, II, IV, J, MT, IALEFVM_FLG, ICF(4,6),IX(4)
91 INTEGER :: NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),NC4(MVSIZ),NC5(MVSIZ),NC6(MVSIZ),NC7(MVSIZ),NC8(MVSIZ)
92 my_real :: x1(mvsiz), x2(mvsiz), x3(mvsiz) , x4(mvsiz), x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
93 . y1(mvsiz), y2(mvsiz), y3(mvsiz) , y4(mvsiz), y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz),
94 . z1(mvsiz), z2(mvsiz), z3(mvsiz) , z4(mvsiz), z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),
95 . swn(6) , wface(3,6,mvsiz), wfext_add, wfextt
96
97 DATA icf/1,4,3,2,3,4,8,7,5,6,7,8,1,2,6,5,2,3,7,6,1,5,8,4/
98 INTEGER :: IAD2
99
100
101
103 mt = ixs(1,nft+lft)
104 ialefvm_flg = ipm(251,mt)
105 IF(ialefvm_flg <= 1)RETURN
106
107 IF(jale == 0)RETURN
108
109
110
111
112
113
114
115 IF(jale==1)THEN
116 DO i=lft,llt
117 ii = i + nft
118
119 nc1(i)=ixs(2,ii)
120 nc2(i)=ixs(3,ii)
121 nc3(i)=ixs(4,ii)
122 nc4(i)=ixs(5,ii)
123 nc5(i)=ixs(6,ii)
124 nc6(i)=ixs(7,ii)
125 nc7(i)=ixs(8,ii)
126 nc8(i)=ixs(9,ii)
127
128
129 x1(i)=x(1,nc1(i))
130 y1(i)=x(2,nc1(i))
131 z1(i)=x(3,nc1(i))
132
133 x2(i)=x(1,nc2(i))
134 y2(i)=x(2,nc2(i))
135 z2(i)=x(3,nc2(i))
136
137 x3(i)=x(1,nc3(i))
138 y3(i)=x(2,nc3(i))
139 z3(i)=x(3,nc3(i))
140
141 x4(i)=x(1,nc4(i))
142 y4(i)=x(2,nc4(i))
143 z4(i)=x(3,nc4(i))
144
145 x5(i)=x(1,nc5(i))
146 y5(i)=x(2,nc5(i))
147 z5(i)=x(3,nc5(i))
148
149 x6(i)=x(1,nc6(i))
150 y6(i)=x(2,nc6(i))
151 z6(i)=x(3,nc6(i))
152
153 x7(i)=x(1,nc7(i))
154 y7(i)=x(2,nc7(i))
155 z7(i)=x(3,nc7(i
156
157 x8(i)=x(1,nc8(i))
158 y8(i)=x(2,nc8(i))
159 z8(i)=x(3,nc8(i))
160 ENDDO
161 DO i=lft,llt
162
163 n1x(i)=(y3(i)-y1(i))*(z2(i)-z4(i)) - (z3(i)-z1(i))*(y2(i)-y4(i))
164 n1y(i)=(z3(i)-z1(i))*(x2(i)-x4(i)) - (x3(i)-x1(i))*(z2(i)-z4(i))
165 n1z(i)=(x3(i)-x1(i))*(y2(i)-y4(i)) - (y3(i)-y1(i))*(x2(i)-x4(i))
166
167 n2x(i)=(y7(i)-y4(i))*(z3(i)-z8(i)) - (z7(i)-z4(i))*(y3(i)-y8(i))
168 n2y(i)=(z7(i)-z4(i))*(x3(i)-x8(i)) - (x7(i)-x4(i))*(z3(i)-z8(i))
169 n2z(i)=(x7(i)-x4(i))*(y3(i)-y8(i)) - (y7(i)-y4(i))*(x3(i)-x8(i))
170
171 n3x(i)=(y6(i)-y8(i))*(z7(i)-z5(i)
172 n3y(i)=(z6(i)-z8(i))*(x7(i)-x5(i)) - (x6(i)-x8(i))*(z7(i)-z5(i))
173 n3z(i)=(x6(i)-x8(i))*(y7(i)-y5(i)) - (y6(i)-y8(i))*(x7(i)-x5(i))
174
175 n4x(i)=(y2(i)-y5(i))*(z6(i)-z1(i)) - (z2(i)-z5(i))*(y6(i)-y1(i))
176 n4y(i)=(z2(i)-z5(i))*(x6(i)-x1(i)) - (x2(i)-x5(i))*(z6(i)-z1(i))
177 n4z(i)=(x2(i)-x5(i))*(y6(i)-y1(i)) - (y2(i)-y5(i))*(x6(i)-x1(i))
178
179 n5x(i)=(y7(i)-y2(i))*(z6(i)-z3(i)) - (z7(i)-z2(i))*(y6(i)-y3(i))
180 n5y(i)=(z7(i)-z2(i))*(x6(i)-x3(i)) - (x7(i)-x2(i))*(z6(i)-z3(i))
181 n5z(i)=(x7(i)-x2(i))
182
183 n6x(i)=(y8(i)-y1(i))*(z4(i)-z5(i)) - (z8(i)-z1(i))*(y4(i)-y5(i))
184 n6y(i)=(z8(i)-z1(i))*(x4(i)-x5
185 n6z(i)=(x8(i)-x1(i))*(y4(i)-y5(i)) - (y8(i)-y1(i))*(x4(i)-x5(i))
186 ENDDO
187
188 DO i=lft,llt
189 wface(1,1,i) = fourth*(w(1,nc1(i))+w(1,nc2(i))+w(1,nc3(i))+w(1,nc4(i)))
190 wface(2,1,i) = fourth*(w(2,nc1(i))+w(2,nc2(i))+w(2,nc3(i))+w(2,nc4(i)))
191 wface(3,1,i) = fourth*(w(3,nc1(i))+w(3,nc2(i))+w(3,nc3(i))+w(3,nc4(i)))
192
193 wface(1,2,i) = fourth*(w(1,nc3(i))+w(1,nc4(i))+w(1,nc7(i))+w(1,nc8(i)))
194 wface(2,2,i) = fourth*(w(2,nc3(i))+w(2,nc4(i))+w(2,nc7(i))+w(2,nc8(i)))
195 wface(3,2,i) = fourth*(w(3,nc3(i))+w(3,nc4(i))+w(3,nc7(i))+w(3,nc8(i)))
196
197 wface(1,3,i) = fourth*(w(1,nc5(i))+w(1,nc6(i))+w(1,nc7(i))+w(1,nc8(i)))
198 wface(2,3,i) = fourth*(w(2,nc5(i))+w(2,nc6(i))+w(2,nc7(i))+w(2,nc8(i)))
199 wface(3,3,i) = fourth*(w
200
201 wface(1,4,i) = fourth*(w(1,nc1(i))+w(1,nc2(i))+w(1,nc5(i))+w(1,nc6(i)))
202 wface(2,4,i) = fourth*(w(2,nc1(i))+w(2,nc2(i))+w(2,nc5(i))+w(2,nc6(i)))
203 wface(3,4,i) = fourth*(w(3,nc1(i))+w(3,nc2(i))+w(3,nc5(i))+w(3,nc6(i)))
204
205 wface(1,5,i) = fourth*(w(1,nc2(i))+w(1,nc3(i))+w(1,nc6(i))+w(1,nc7(i)))
206 wface(2,5,i) = fourth*(w(2,nc2(i))+w(2,nc3(i))+w(2,nc6(i))+w(2,nc7(i)))
207 wface(3,5,i) = fourth*(w(3,nc2(i))+w(3,nc3(i))+w(3,nc6(i))+w(3,nc7(i)))
208
209 wface(1,6,i) = fourth*(w(1,nc1(i))+w(1,nc4(i))+w(1,nc5(i))+w(1,nc8(i)))
210 wface(2,6,i) = fourth*(w(2,nc1(i))+w(2,nc4(i))+w(2,nc5(i))+w(2,nc8(i)))
211 wface(3,6,i) = fourth*(w(3,nc1(i))+w(3,nc4(i))+w(3,nc5(i))+w(3,nc8(i)))
212 ENDDO
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243 ENDIF
244
245
246
247
249 wfextt = zero
250 DO i=lft,llt
251 ii = i + nft
252 iad2 = ale_connect%ee_connect%iad_connect(ii)
253
254 swn(1) = wface(1,1,i)*n1x(i) + wface(2,1,i)*n1y
255 swn(2) = wface(1,2,i)*n2x(i) + wface(2,2,i)*n2y(i) + wface(3,2,i)*n2z(i)
256 swn(3) = wface(1,3,i)*n3x(i) + wface(2,3
257 swn(4) = wface(1,4,i)*n4x(i) + wface(2,4,i)*n4y(i) + wface(3,4,i)*n4z(i)
258 swn(5) = wface(1,5,i)*n5x(i) + wface(2,5,i
259 swn(6) = wface(1,6,i)*n6x(i) + wface(2,6,i)*n6y(i) + wface(3,6,i)*n6z
260 wfext_add = zero
261 Do j=1,nv46
262 iv = ale_connect%ee_connect%connected(iad2 + j - 1)
263
264 ix(1) = ixs(icf(1,j)+1,ii)
265 ix(2) = ixs(icf(2,j)+1,ii)
266 ix(3) = ixs(icf(3,j)+1,ii)
267 ix(4) = ixs(icf(4,j)+1,ii)
268 IF(sum(iabs(nale(ix(1:4))))==4)cycle
269
270 wfext_add = wfext_add - dt1*third*(sig(i,1)+sig(i,2)+sig(i,3))*swn(j)*half
271 ENDDO
273 wfextt = wfextt + wfext_add
274 ENDDO
275
276#include "lockon.inc"
277 wfext = wfext + wfextt
278#include "lockoff.inc"
279
280
281
283 IF(wfextt /= zero)THEN
284
285 print *, " |----alefvm_tfext.F------|"
286 print *, " | THREAD INFORMATION |"
287 print *, " |------------------------|"
288 print *, " NCYCLE =", ncycle
289 do i=lft,llt
290 ii = nft + i
292 write(*,fmt='(A,I10,A,F30.16,A,F30.16,A,6F30.16)') " brique="" Wfext="
293 .
alefvm_buffer%WFEXT_CELL(ii),
"P(I)=", p(i),
"SWn(1:6)=",swn(1:6)
294 enddo
295 ENDIF
296
297 endif
298
299
300 RETURN
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param