5 &( a11 , a12 , a13 , a14 , a15, a16,
6 & a22 , a23 , a24 , a25, a26,
7 & a33 , a34 , a35, a36,
11 & xmul,su,u,xel,yel,surfac,ikle1,ikle2,ikle3,nelem,nelmax)
83 INTEGER,
INTENT(IN) :: NELEM,NELMAX
84 INTEGER,
INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
85 DOUBLE PRECISION,
INTENT(INOUT) :: A11(*),A12(*),A13(*)
86 DOUBLE PRECISION,
INTENT(INOUT) :: A14(*),A15(*),A16(*)
87 DOUBLE PRECISION,
INTENT(INOUT) :: A22(*),A23(*)
88 DOUBLE PRECISION,
INTENT(INOUT) :: A24(*),A25(*),A26(*)
89 DOUBLE PRECISION,
INTENT(INOUT) :: A33(*),A34(*)
90 DOUBLE PRECISION,
INTENT(INOUT) :: A35(*),A36(*)
91 DOUBLE PRECISION,
INTENT(INOUT) :: A44(*),A45(*),A46(*)
92 DOUBLE PRECISION,
INTENT(INOUT) :: A55(*),A56(*)
93 DOUBLE PRECISION,
INTENT(INOUT) :: A66(*)
94 DOUBLE PRECISION,
INTENT(IN) :: XMUL,U(*)
96 TYPE(bief_obj),
INTENT(IN) :: SU
98 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
99 DOUBLE PRECISION,
INTENT(IN) :: SURFAC(nelmax)
105 INTEGER IELMNU,IELEM,ISO,IAD2,IAD3
107 DOUBLE PRECISION X2,X3,Y2,Y3,AUX1,AUX2,AUX3,AUX4
108 DOUBLE PRECISION NUX1,NUX2,NUX3
109 DOUBLE PRECISION NUY1,NUY2,NUY3
110 DOUBLE PRECISION NUZ1,NUZ2,NUZ3
127 IF(ielmnu.EQ.11.AND.iso.EQ.1)
THEN 143 nux1 = u(ikle1(ielem))
144 nux2 = u(ikle2(ielem))
145 nux3 = u(ikle3(ielem))
147 aux1 = xmul/(60.d0*surfac(ielem))
154 a12(ielem)= -(-y3**2+y3*y2-x3**2+x3*x2) *
155 & (2.d0*nux1+2.d0*nux2+nux3) * aux1
157 a13(ielem)= (-y3*y2+y2**2-x3*x2+x2**2) *
158 & (2.d0*nux1+nux2+2.d0*nux3) * aux1
160 a14(ielem)= ((-11.d0*nux1-4.d0*nux3-5.d0*nux2) * (y3**2+x3**2)
161 & + (3.d0*nux1-nux3-2.d0*nux2 ) * (y2**2+x2**2)
162 & + (8.d0*nux1+7.d0*nux2+5.d0*nux3 ) * (x3*x2+y3*y2))
165 a15(ielem)=-((3.d0*nux1-2.d0*nux3-nux2 ) * (y3**2+x3**2)
166 & + (3.d0*nux1-nux3-2.d0*nux2 ) * (y2**2+x2**2)
167 & + (-6.d0*nux1+3.d0*nux2+3.d0*nux3 ) * (x3*x2+y3*y2))
170 a16(ielem)=-((-3.d0*nux1+2.d0*nux3+nux2 ) * (y3**2+x3**2)
171 & + (11.d0*nux1+5.d0*nux3+4.d0*nux2 ) * (y2**2+x2**2)
172 & + (-8.d0*nux1-5.d0*nux2-7.d0*nux3 ) * (x3*x2+y3*y2))
175 a23(ielem)= (y3*y2+x3*x2) * (nux1+2.d0*nux3+2.d0*nux2) * aux1
177 a24(ielem)= ((-5.d0*nux1-4.d0*nux3-11.d0*nux2) * (y3**2+x3**2)
178 & + (3.d0*nux1+14.d0*nux2+3.d0*nux3 ) * (x3*x2+y3*y2))
181 a25(ielem)=-((nux1+2.d0*nux3-3.d0*nux2 ) * (y3**2+x3**2)
182 & + (3.d0*nux1+3.d0*nux3+14.d0*nux2 ) * (y3*y2+x3*x2))
185 a26(ielem)= ((nux1+2.d0*nux3-3.d0*nux2 ) * (y3**2+x3**2)
186 & + (nux1-nux3) * (x3*x2+y3*y2))
189 a34(ielem)= ((nux1-3.d0*nux3+2.d0*nux2 ) * (y2**2+x2**2)
190 & + (nux1-nux2) * (x3*x2+y3*y2))
193 a35(ielem)=-((nux1-3.d0*nux3+2.d0*nux2 ) * (y2**2+x2**2)
194 & + (3.d0*nux1+3.d0*nux2+14.d0*nux3) * (x3*x2+y3*y2))
197 a36(ielem)=-((5.d0*nux1+11.d0*nux3+4.d0*nux2) * (y2**2+x2**2)
198 & + (-3.d0*(nux1+nux2)-14.d0*nux3 ) * (x3*x2+y3*y2))
201 a45(ielem)=-((-nux1+nux2 ) * (y3**2+x3**2)
202 & + (-nux1-6.d0*nux2-3.d0*nux3 ) * (x3*x2+y3*y2)
203 & + (6.d0*nux2+2.d0*nux1+2.d0*nux3 ) * (y2**2+x2**2))
206 a46(ielem)=-((nux1-nux2 ) * (y3**2+x3**2)
207 & + (nux1-nux3 ) * (y2**2+x2**2)
208 & + (4.d0*nux1+3.d0*nux2+3.d0*nux3 ) * (x3*x2+y3*y2))
211 a56(ielem)= ((-2.d0*nux1-2.d0*nux2-6.d0*nux3) * (y3**2+x3**2)
212 & + (nux1-nux3 ) * (y2**2+x2**2)
213 & + (nux1+3.d0*nux2+6.d0*nux3 ) * (x3*x2+y3*y2))
218 a11(ielem)= ((y3-y2)**2+(x3-x2)**2)
219 & * (3.d0*nux1+nux2+nux3) * aux2
221 a22(ielem)= (y3**2+x3**2) * (nux1+3.d0*nux2+nux3) * aux2
223 a33(ielem)= (y2**2+x2**2) * (nux1+nux2+3.d0*nux3) * aux2
225 a44(ielem)= ((2.d0*nux1+nux3+2.d0*nux2) * (y3**2+x3**2)
226 & + (nux1+nux3+3.d0*nux2 ) * (y2**2+x2**2)
227 & + (-4.d0*nux2-nux3 ) * (x3*x2+y3*y2))
230 a55(ielem)= ((nux1+nux2+3.d0*nux3 ) * (y3**2+x3**2)
231 & + (nux1+nux3+3.d0*nux2 ) * (y2**2+x2**2)
232 & + (-nux1-2.d0*nux2-2.d0*nux3) * (x3*x2+y3*y2))
235 a66(ielem) = ((nux1+3.d0*nux3+nux2 ) * (y3**2+x3**2)
236 & + (2.d0*nux1+2.d0*nux3+nux2 ) * (y2**2+x2**2)
237 & + (-nux2-4.d0*nux3 ) * (x3*x2+y3*y2))
244 ELSEIF(ielmnu.EQ.11.AND.iso.EQ.3)
THEN 262 nux1 = u(ikle1(ielem))
263 nux2 = u(ikle2(ielem))
264 nux3 = u(ikle3(ielem))
265 nuy1 = u(ikle1(ielem) + iad2)
266 nuy2 = u(ikle2(ielem) + iad2)
267 nuy3 = u(ikle3(ielem) + iad2)
268 nuz1 = u(ikle1(ielem) + iad3)
269 nuz2 = u(ikle2(ielem) + iad3)
270 nuz3 = u(ikle3(ielem) + iad3)
272 aux1 = xmul/(60.d0 * surfac(ielem))
279 & ((nuy3+2.d0*nuy1+2.d0*nuy2) * (x3**2-x3*x2 ) +
280 & (nuz3+2.d0*nuz1+2.d0*nuz2) * (y2*x3+y3*x2-2.d0*y3*x3) +
281 & (nux3+2.d0*nux2+2.d0*nux1) * (y3**2-y3*y2 ) ) * aux1
284 & ((2.d0*nuy1+2.d0*nuy3+nuy2) * (x2**2-x3*x2 ) +
285 & (2.d0*nuz1+2.d0*nuz3+nuz2) * (y3*x2+y2*x3-2.d0*y2*x2) +
286 & (2.d0*nux1+nux2+2.d0*nux3) * (y2**2-y3*y2 ) ) * aux1
289 & -((- 3.d0*nux1+ 2.d0*nux2+ nux3) * y2**2 +
290 & (- 8.d0*nux1- 7.d0*nux2- 5.d0*nux3) * y3*y2 +
291 & ( 11.d0*nux1+ 5.d0*nux2+ 4.d0*nux3) * y3**2 +
292 & (- 3.d0*nuy1+ 2.d0*nuy2+ nuy3) * x2**2 +
293 & (- 8.d0*nuy1- 7.d0*nuy2- 5.d0*nuy3) * x3*x2 +
294 & ( 11.d0*nuy1+ 5.d0*nuy2+ 4.d0*nuy3) * x3**2 +
295 & ( 6.d0*nuz1- 4.d0*nuz2- 2.d0*nuz3) * y2*x2 +
296 & ( 8.d0*nuz1+ 7.d0*nuz2+ 5.d0*nuz3) * (y3*x2+y2*x3) +
297 & (-22.d0*nuz1-10.d0*nuz2- 8.d0*nuz3) * y3*x3 ) * aux1
300 & -(( 3.d0*nux1- 2.d0*nux2- nux3) * y2**2 +
301 & (- 6.d0*nux1+ 3.d0*nux2+ 3.d0*nux3) * y3*y2 +
302 & ( 3.d0*nux1- nux2- 2.d0*nux3) * y3**2 +
303 & ( 3.d0*nuy1- 2.d0*nuy2- nuy3) * x2**2 +
304 & (- 6.d0*nuy1+ 3.d0*nuy2+ 3.d0*nuy3) * x3*x2 +
305 & ( 3.d0*nuy1- nuy2- 2.d0*nuy3) * x3**2 +
306 & (- 6.d0*nuz1+ 4.d0*nuz2+ 2.d0*nuz3) * y2*x2 +
307 & ( 6.d0*nuz1- 3.d0*nuz2- 3.d0*nuz3) * (y3*x2+y2*x3) +
308 & (- 6.d0*nuz1+ 2.d0*nuz2+ 4.d0*nuz3) * y3*x3 ) * aux1
311 & ((-11.d0*nux1- 4.d0*nux2- 5.d0*nux3) * y2**2 +
312 & ( 8.d0*nux1+ 5.d0*nux2+ 7.d0*nux3) * y3*y2 +
313 & ( 3.d0*nux1- nux2- 2.d0*nux3) * y3**2 +
314 & (-11.d0*nuy1- 4.d0*nuy2- 5.d0*nuy3) * x2**2 +
315 & (+ 8.d0*nuy1+ 5.d0*nuy2+ 7.d0*nuy3) * x3*x2 +
316 & ( 3.d0*nuy1- nuy2- 2.d0*nuy3) * x3**2 +
317 & ( 22.d0*nuz1+ 8.d0*nuz2+10.d0*nuz3) * y2*x2 +
318 & (- 8.d0*nuz1- 5.d0*nuz2- 7.d0*nuz3) * (y3*x2+y2*x3) +
319 & (- 6.d0*nuz1+ 2.d0*nuz2+ 4.d0*nuz3) * y3*x3 ) * aux1
322 & (( nuy1+2.d0*nuy2+2.d0*nuy3) * x3*x2 +
323 & (-nuz1-2.d0*nuz2-2.d0*nuz3) * (y3*x2+y2*x3) +
324 & ( nux1+2.d0*nux2+2.d0*nux3) * y3*y2 ) * aux1
327 & -((- 3.d0*nux1-14.d0*nux2- 3.d0*nux3) * y3*y2 +
328 & ( 5.d0*nux1+11.d0*nux2+ 4.d0*nux3) * y3**2 +
329 & (- 3.d0*nuy1-14.d0*nuy2- 3.d0*nuy3) * x3*x2 +
330 & ( 5.d0*nuy1+11.d0*nuy2+ 4.d0*nuy3) * x3**2 +
331 & ( 3.d0*nuz1+14.d0*nuz2+ 3.d0*nuz3) * (y3*x2+y2*x3) +
332 & (-10.d0*nuz1-22.d0*nuz2- 8.d0*nuz3) * y3*x3 ) * aux1
335 & -(( 3.d0*nux1+14.d0*nux2+ 3.d0*nux3) * y3*y2 +
336 & ( nux1- 3.d0*nux2+ 2.d0*nux3) * y3**2 +
337 & ( 3.d0*nuy1+14.d0*nuy2+ 3.d0*nuy3) * x3*x2 +
338 & ( nuy1- 3.d0*nuy2+ 2.d0*nuy3) * x3**2 +
339 & (- 3.d0*nuz1-14.d0*nuz2- 3.d0*nuz3) * (y3*x2+y2*x3) +
340 & (- 2.d0*nuz1+ 6.d0*nuz2- 4.d0*nuz3) * y3*x3 ) * aux1
343 & (( nux1-nux3) * y3*y2 + (-nuy3+nuy1) * x3*x2 +
344 & ( nuz3-nuz1) * (y3*x2+x3*y2) +
345 & (2.d0*nuy3+nuy1-3.d0*nuy2) * x3**2 +
346 & (6.d0*nuz2-4.d0*nuz3-2.d0*nuz1) * y3*x3 +
347 & (2.d0*nux3-3.d0*nux2+ nux1) * y3**2 ) * aux1
350 & (( nuy1-3.d0*nuy3+2.d0*nuy2) * x2**2 +
351 & (-2.d0*nuz1+6.d0*nuz3-4.d0*nuz2) * y2*x2 +
352 & ( nux1+2.d0*nux2-3.d0*nux3) * y2**2 +
353 & (nuy1-nuy2) * x3*x2 + (nux1-nux2) * y3*y2 +
354 & (nuz2-nuz1) * (y3*x2+y2*x3) )*aux1
357 & -(( nux1+ 2.d0*nux2- 3.d0*nux3) * y2**2 +
358 & ( 3.d0*nux1+ 3.d0*nux2+14.d0*nux3) * y3*y2 +
359 & ( nuy1+ 2.d0*nuy2- 3.d0*nuy3) * x2**2 +
360 & ( 3.d0*nuy1+ 3.d0*nuy2+14.d0*nuy3) * x3*x2 +
361 & (- 3.d0*nuz1- 3.d0*nuz2-14.d0*nuz3) * (y3*x2+y2*x3) +
362 & (- 2.d0*nuz1- 4.d0*nuz2+ 6.d0*nuz3) * y2*x2 ) * aux1
365 & ((- 5.d0*nux1- 4.d0*nux2-11.d0*nux3) * y2**2 +
366 & ( 3.d0*nux1+3.d0*nux2+ 14.d0*nux3) * y3*y2 +
367 & (- 5.d0*nuy1- 4.d0*nuy2-11.d0*nuy3) * x2**2 +
368 & ( 3.d0*nuy1+ 3.d0*nuy2+14.d0*nuy3) * x3*x2 +
369 & ( 10.d0*nuz1+ 8.d0*nuz2+22.d0*nuz3) * y2*x2 +
370 & (- 3.d0*nuz1- 3.d0*nuz2-14.d0*nuz3) * (y3*x2+y2*x3) ) * aux1
373 & ((- 2.d0*nuy1- 6.d0*nuy2- 2.d0*nuy3) * x2**2 +
374 & ( nuy1+ 6.d0*nuy2+ 3.d0*nuy3) * x3*x2 +
375 & ( 4.d0*nuz1+12.d0*nuz2+ 4.d0*nuz3) * y2*x2 +
376 & (- nuz1- 6.d0*nuz2- 3.d0*nuz3) * (y3*x2+y2*x3) +
377 & (nuy1-nuy2)*x3**2 + (nux1-nux2)*y3**2 +
378 & (- 2.d0*nuz1+ 2.d0*nuz2 ) * y3*x3 +
379 & (- 2.d0*nux1- 2.d0*nux3- 6.d0*nux2) * y2**2 +
380 & ( 6.d0*nux2+ 3.d0*nux3+ nux1) * y3*y2 ) * aux2
383 & -((-nuy3+nuy1)*x2**2 + (nux1-nux2) * y3**2 +
384 & ( nux1-nux3)*y2**2 + (nuy1-nuy2) * x3**2 +
385 & ( 4.d0*nuy1+ 3.d0*nuy3+ 3.d0*nuy2) * x3*x2 +
386 & ( 2.d0*nuz3- 2.d0*nuz1 ) * y2*x2 +
387 & ( -3.d0*nuz3- 4.d0*nuz1- 3.d0*nuz2) * (y3*x2+y2*x3) +
388 & (- 2.d0*nuz1+ 2.d0*nuz2 ) * y3*x3 +
389 & ( 3.d0*nux2+ 4.d0*nux1+ 3.d0*nux3) * y3*y2 ) * aux2
392 & -(( nuy3-nuy1)*x2**2 + (nux3-nux1) * y2**2 +
393 & (- 3.d0*nuy2- 6.d0*nuy3- nuy1) * x3*x2 +
394 & ( 2.d0*nuz1- 2.d0*nuz3 ) * y2*x2 +
395 & ( 3.d0*nuz2+ nuz1+ 6.d0*nuz3) * (y3*x2+y2*x3) +
396 & ( 6.d0*nuy3+ 2.d0*nuy1+ 2.d0*nuy2) * x3**2 +
397 & (-12.d0*nuz3- 4.d0*nuz2- 4.d0*nuz1) * y3*x3 +
398 & (- 6.d0*nux3- 3.d0*nux2- nux1) * y3*y2 +
399 & ( 2.d0*nux2+ 2.d0*nux1+ 6.d0*nux3) * y3**2 ) * aux2
404 a11(ielem) = - a12(ielem) - a13(ielem) - a14(ielem)
405 & - a15(ielem) - a16(ielem)
406 a22(ielem) = ((nuy1+nuy3+3.d0*nuy2) * x3**2 +
407 & (-6.d0*nuz2-2.d0*nuz1-2.d0*nuz3) * y3*x3 +
408 & (nux3+nux1+3.d0*nux2) * y3**2 ) * aux3
409 a33(ielem) = ((nuy1+3.d0*nuy3+nuy2) * x2**2 +
410 & (-6.d0*nuz3-2.d0*nuz1-2.d0*nuz2) * y2*x2 +
411 & ( 3.d0*nux3+nux1+nux2 ) * y2**2 ) * aux3
412 a44(ielem) = - a14(ielem) - a24(ielem) - a34(ielem)
413 & - a45(ielem) - a46(ielem)
414 a55(ielem) = - a15(ielem) - a25(ielem) - a35(ielem)
415 & - a45(ielem) - a56(ielem)
416 a66(ielem) = - a16(ielem) - a26(ielem) - a36(ielem)
417 & - a46(ielem) - a56(ielem)
425 WRITE(
lu,11) ielmnu,iso
426 11
FORMAT(1x,
'MT02CC (BIEF) :TYPE OF VISCOSITY NOT AVAILABLE: ',2i6)
subroutine mt02cc(A11, A12, A13, A14, A15, A16, A22, A23, A24, A25, A26, A33, A34, A35, A36, A44, A45, A46, A55, A56, A66, XMUL, SU, U, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)