5 &( a11 , a12 , a13 , a14 ,
6 & a21 , a22 , a23 , a24 ,
7 & a31 , a32 , a33 , a34 ,
10 & ikle1,ikle2,ikle3,ikle4,
11 & nelem,nelmax,icoord)
91 INTEGER,
INTENT(IN) :: NELEM,NELMAX,ICOORD
92 INTEGER,
INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
93 INTEGER,
INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
95 DOUBLE PRECISION,
INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
96 DOUBLE PRECISION,
INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
97 DOUBLE PRECISION,
INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
99 DOUBLE PRECISION,
INTENT(IN) :: XMUL
100 DOUBLE PRECISION,
INTENT(IN) :: F(*),U(*),V(*)
103 TYPE(bief_obj),
INTENT(IN) :: SF,SU,SV
105 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
106 DOUBLE PRECISION,
INTENT(IN) :: SURFAC(nelmax)
110 INTEGER IELEM,IELMF,IELMU,IELMV
111 DOUBLE PRECISION X2,X3,Y2,Y3,F1,F2,F3
112 DOUBLE PRECISION U1,U2,U3,U4,V1,V2,V3,V4,UX,UY
113 DOUBLE PRECISION XSUR18,XSUR12,XSUR72,XSU144
114 DOUBLE PRECISION AUX18,AUX12,AUX144,AUX72,UNSURF
122 xsur18 = xmul / 18.d0
123 xsur12 = xmul / 12.d0
124 xsur72 = xmul / 72.d0
125 xsu144 = xmul / 144.d0
133 IF(ielmu.EQ.10.AND.ielmv.EQ.10)
THEN 153 f2 = f(ikle2(ielem)) - f1
154 f3 = f(ikle3(ielem)) - f1
159 unsurf= 1.d0 / surfac(ielem)
160 aux12 = xsur12 * unsurf
161 aux18 = xsur18 * unsurf
165 a12(ielem)=-( (y3-y2)*ux+x2*uy-x3*uy )*(y3*f2-y2*f3)*aux18
166 a14(ielem)=-( (y3-y2)*ux+x2*uy-x3*uy )*(y3*f2-y2*f3)*aux12
167 a21(ielem)=-(x3*uy-ux*y3)*(y3*f2-y2*f3)*aux18
168 a24(ielem)=-(x3*uy-ux*y3)*(y3*f2-y2*f3)*aux12
169 a31(ielem)= (x2*uy-ux*y2)*(y3*f2-y2*f3)*aux18
170 a34(ielem)= (x2*uy-ux*y2)*(y3*f2-y2*f3)*aux12
171 a13(ielem)= a12(ielem)
172 a23(ielem)= a21(ielem)
173 a32(ielem)= a31(ielem)
178 a11(ielem) = - a21(ielem) - a31(ielem)
179 a22(ielem) = - a12(ielem) - a32(ielem)
180 a33(ielem) = - a13(ielem) - a23(ielem)
184 ELSEIF(icoord.EQ.2)
THEN 200 f2 = f(ikle2(ielem)) - f1
201 f3 = f(ikle3(ielem)) - f1
206 unsurf= 1.d0 / surfac(ielem)
207 aux12 = xsur12 * unsurf
208 aux18 = xsur18 * unsurf
212 a12(ielem)=-(x2*uy-x3*uy+ux*y3-ux*y2)*(x2*f3-x3*f2)*aux18
213 a14(ielem)=-(x2*uy-x3*uy+ux*y3-ux*y2)*(x2*f3-x3*f2)*aux12
214 a21(ielem)=-(x2*f3-x3*f2)*(x3*uy-ux*y3)*aux18
215 a24(ielem)=-(x2*f3-x3*f2)*(x3*uy-ux*y3)*aux12
216 a31(ielem)= (x2*uy-ux*y2)*(x2*f3-x3*f2)*aux18
217 a34(ielem)= (x2*uy-ux*y2)*(x2*f3-x3*f2)*aux12
218 a13(ielem)= a12(ielem)
219 a23(ielem)= a21(ielem)
220 a32(ielem)= a31(ielem)
225 a11(ielem) = - a21(ielem) - a31(ielem)
226 a22(ielem) = - a12(ielem) - a32(ielem)
227 a33(ielem) = - a13(ielem) - a23(ielem)
239 ELSEIF(ielmu.EQ.12)
THEN 259 f2 = f(ikle2(ielem)) - f1
260 f3 = f(ikle3(ielem)) - f1
271 unsurf= 1.d0 / surfac(ielem)
272 aux144= xsu144 * unsurf
273 aux72 = xsur72 * unsurf
277 a12(ielem)=(-((v3+v4+2*v2)*x2-(v3+v4+2*v2)*x3+(v4+2*v2+
278 & v1)*x2-(v4+2*v2+v1)*x3+(y3-y2)*u3+2*(y3-y2)*u4+4*(y3-
279 & y2)*u2+(y3-y2)*u1)*(y3*f2-y2*f3))*aux144
280 a13(ielem)=(-((2*v3+v4+v2)*x2-(2*v3+v4+v2)*x3+(2*v3+v4+
281 & v1)*x2-(2*v3+v4+v1)*x3+4*(y3-y2)*u3+2*(y3-y2)*u4+(y3-
282 & y2)*u2+(y3-y2)*u1)*(y3*f2-y2*f3))*aux144
283 a14(ielem)=(-(x2*v3+3*x2*v4+x2*v2+x2*v1-x3*v3-3*x3*v4-x3
284 & *v2-x3*v1+u3*y3-u3*y2+3*u4*y3-3*u4*y2+u2*y3-u2*y2+u1*y3
285 & -u1*y2)*(y3*f2-y2*f3))*aux72
286 a21(ielem)=(-(x3*v3+2*x3*v4+x3*v2+4*x3*v1-u3*y3-2*u4*y3
287 & -u2*y3-4*u1*y3)*(y3*f2-y2*f3))*aux144
288 a23(ielem)=(-(4*x3*v3+2*x3*v4+x3*v2+x3*v1-4*u3*y3-2*u4
289 & *y3-u2*y3-u1*y3)*(y3*f2-y2*f3))*aux144
290 a24(ielem)=(-(x3*v3+3*x3*v4+x3*v2+x3*v1-u3*y3-3*u4*y3-u2
291 & *y3-u1*y3)*(y3*f2-y2*f3))*aux72
292 a31(ielem)=((x2*v3+2*x2*v4+x2*v2+4*x2*v1-u3*y2-2*u4*y2-
293 & u2*y2-4*u1*y2)*(y3*f2-y2*f3))*aux144
294 a32(ielem)=((x2*v3+2*x2*v4+4*x2*v2+x2*v1-u3*y2-2*u4*y2-
295 & 4*u2*y2-u1*y2)*(y3*f2-y2*f3))*aux144
296 a34(ielem)=((x2*v3+3*x2*v4+x2*v2+x2*v1-u3*y2-3*u4*y2-u2*
297 & y2-u1*y2)*(y3*f2-y2*f3))*aux72
302 a11(ielem) = - a21(ielem) - a31(ielem)
303 a22(ielem) = - a12(ielem) - a32(ielem)
304 a33(ielem) = - a13(ielem) - a23(ielem)
308 ELSEIF(icoord.EQ.2)
THEN 324 f2 = f(ikle2(ielem)) - f1
325 f3 = f(ikle3(ielem)) - f1
336 unsurf= 1.d0 / surfac(ielem)
337 aux144= xsu144 * unsurf
338 aux72= xsur72 * unsurf
342 a12(ielem)=(-(x2*v3+2*x2*v4+4*x2*v2+x2*v1-x3*v3-2*x3*v4
343 & -4*x3*v2-x3*v1+u3*y3-u3*y2+2*u4*y3-2*u4*y2+4*u2*y3-4
344 & *u2*y2+u1*y3-u1*y2)*(x2*f3-x3*f2))*aux144
345 a13(ielem)=(-(4*x2*v3+2*x2*v4+x2*v2+x2*v1-4*x3*v3-2*x3
346 & *v4-x3*v2-x3*v1+4*u3*y3-4*u3*y2+2*u4*y3-2*u4*y2+u2*y3
347 & -u2*y2+u1*y3-u1*y2)*(x2*f3-x3*f2))*aux144
348 a14(ielem)=(-(x2*v3+3*x2*v4+x2*v2+x2*v1-x3*v3-3*x3*v4-x3
349 & *v2-x3*v1+u3*y3-u3*y2+3*u4*y3-3*u4*y2+u2*y3-u2*y2+u1*y3
350 & -u1*y2)*(x2*f3-x3*f2))*aux72
351 a21(ielem)=(-(x2*f3-x3*f2)*(x3*v3+2*x3*v4+x3*v2+4*x3*v1-
352 & u3*y3-2*u4*y3-u2*y3-4*u1*y3))*aux144
353 a23(ielem)=(-(x2*f3-x3*f2)*(4*x3*v3+2*x3*v4+x3*v2+x3*v1-
354 & 4*u3*y3-2*u4*y3-u2*y3-u1*y3))*aux144
355 a24(ielem)=(-(x2*f3-x3*f2)*(x3*v3+3*x3*v4+x3*v2+x3*v1-u3*
356 & y3-3*u4*y3-u2*y3-u1*y3))*aux72
357 a31(ielem)=((x2*v3+2*x2*v4+x2*v2+4*x2*v1-u3*y2-2*u4*y2-
358 & u2*y2-4*u1*y2)*(x2*f3-x3*f2))*aux144
359 a32(ielem)=((x2*v3+2*x2*v4+4*x2*v2+x2*v1-u3*y2-2*u4*y2-
360 & 4*u2*y2-u1*y2)*(x2*f3-x3*f2))*aux144
361 a34(ielem)=((x2*v3+3*x2*v4+x2*v2+x2*v1-u3*y2-3*u4*y2-u2*
362 & y2-u1*y2)*(x2*f3-x3*f2))*aux72
367 a11(ielem) = - a21(ielem) - a31(ielem)
368 a22(ielem) = - a12(ielem) - a32(ielem)
369 a33(ielem) = - a13(ielem) - a23(ielem)
392 101
FORMAT(1x,
'MT12AB (BIEF) :',/,
393 & 1x,
'DISCRETIZATION OF F : ',1i6,
' NOT AVAILABLE')
398 201
FORMAT(1x,
'MT12AB (BIEF) : IMPOSSIBLE COMPONENT ',
399 & 1i6,
' CHECK ICOORD')
401 301
FORMAT(1x,
'MT12AB (BIEF) :',/,
402 & 1x,
'DISCRETIZATION OF U : ',1i6,
' NOT AVAILABLE')
subroutine mt12ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, SF, SU, SV, F, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)