9 & xel,yel,ikle,nelem,nelmax,formul)
82 INTEGER,
INTENT(IN) :: NELEM,NELMAX
83 INTEGER,
INTENT(IN) :: IKLE(nelmax,*)
84 DOUBLE PRECISION,
INTENT(INOUT) :: A11(*),A12(*),A13(*)
85 DOUBLE PRECISION,
INTENT(INOUT) :: A21(*),A22(*),A23(*)
86 DOUBLE PRECISION,
INTENT(INOUT) :: A31(*),A32(*),A33(*)
87 DOUBLE PRECISION,
INTENT(IN) :: XMUL,U(*),V(*)
88 TYPE(bief_obj),
INTENT(IN) :: SU,SV
89 CHARACTER(LEN=16) :: FORMUL
90 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
96 INTEGER IELMU,IELMV,IELEM
98 DOUBLE PRECISION SUR24,SUR120,SUR216
99 DOUBLE PRECISION X2,X3,Y2,Y3
100 DOUBLE PRECISION U1,U2,U3,U4,U5,U6,V1,V2,V3,V4,V5,V6
101 DOUBLE PRECISION U123,V123,COU1,COV1,COU2,COV2,COU3,COV3
102 DOUBLE PRECISION QUATRU,QUATRV,SUR6,USUR2,VSUR2
103 DOUBLE PRECISION K1,K2,K3,L12,L13,L21,L23,L31,L32
123 IF(ielmu.EQ.10.AND.ielmv.EQ.10)
THEN 129 x2 = xel(ielem,2) * sur24
130 x3 = xel(ielem,3) * sur24
131 y2 = yel(ielem,2) * sur24
132 y3 = yel(ielem,3) * sur24
134 quatru = 4 * u(ielem)
135 quatrv = 4 * v(ielem)
139 a11(ielem) = (x3-x2) * quatrv + (y2-y3) * quatru
140 a22(ielem) = -x3 * quatrv +y3 * quatru
141 a33(ielem) = x2 * quatrv - y2 * quatru
145 a12(ielem) = -x3 * quatrv + y3 * quatru
146 a13(ielem) = x2 * quatrv - y2 * quatru
147 a23(ielem) = x2 * quatrv - y2 * quatru
148 a21(ielem) = (x3-x2) * quatrv + (y2-y3) * quatru
149 a31(ielem) = (x3-x2) * quatrv + (y2-y3) * quatru
150 a32(ielem) = -x3 * quatrv + y3 * quatru
158 ELSEIF(formul(16:16).EQ.
'N' .AND.
159 & ( (ielmu.EQ.11.AND.ielmv.EQ.11).OR.
160 & (ielmu.EQ.12.AND.ielmv.EQ.12).OR.
161 & (ielmu.EQ.13.AND.ielmv.EQ.13) ) )
THEN 172 u1 = u(ikle(ielem,1))
173 u2 = u(ikle(ielem,2))
174 u3 = u(ikle(ielem,3))
175 v1 = v(ikle(ielem,1))
176 v2 = v(ikle(ielem,2))
177 v3 = v(ikle(ielem,3))
179 usur2 = (u1+u2+u3)*sur6
180 vsur2 = (v1+v2+v3)*sur6
182 k1 = usur2 * (y2-y3) - vsur2 * (x2-x3)
183 k2 = usur2 * (y3 ) - vsur2 * (x3 )
184 k3 = usur2 * ( -y2) - vsur2 * ( -x2)
186 l12 = max( min(k1,-k2) , 0.d0 )
187 l13 = max( min(k1,-k3) , 0.d0 )
188 l21 = max( min(k2,-k1) , 0.d0 )
189 l23 = max( min(k2,-k3) , 0.d0 )
190 l31 = max( min(k3,-k1) , 0.d0 )
191 l32 = max( min(k3,-k2) , 0.d0 )
195 a11(ielem) = l12 + l13
196 a22(ielem) = l21 + l23
197 a33(ielem) = l31 + l32
210 ELSEIF(ielmu.EQ.11.AND.ielmv.EQ.11)
THEN 218 x2 = xel(ielem,2) * sur24
219 x3 = xel(ielem,3) * sur24
220 y2 = yel(ielem,2) * sur24
221 y3 = yel(ielem,3) * sur24
223 u1 = u(ikle(ielem,1))
224 u2 = u(ikle(ielem,2))
225 u3 = u(ikle(ielem,3))
226 v1 = v(ikle(ielem,1))
227 v2 = v(ikle(ielem,2))
228 v3 = v(ikle(ielem,3))
235 a11(ielem) = (x3-x2) * (v123+v1) + (y2-y3) * (u123+u1)
236 a22(ielem) = -x3 * (v123+v2) +y3 * (u123+u2)
237 a33(ielem) = x2 * (v123+v3) - y2 * (u123+u3)
241 a12(ielem) = -x3 * (v123+v1) + y3 * (u123+u1)
242 a13(ielem) = x2 * (v123+v1) - y2 * (u123+u1)
243 a23(ielem) = x2 * (v123+v2) - y2 * (u123+u2)
244 a21(ielem) = (x3-x2) * (v123+v2) + (y2-y3) * (u123+u2)
245 a31(ielem) = (x3-x2) * (v123+v3) + (y2-y3) * (u123+u3)
246 a32(ielem) = -x3 * (v123+v3) + y3 * (u123+u3)
252 ELSEIF(ielmu.EQ.12.AND.ielmv.EQ.12)
THEN 265 u1 = u(ikle(ielem,1))
266 u2 = u(ikle(ielem,2))
267 u3 = u(ikle(ielem,3))
268 u4 = u(ikle(ielem,4))
269 v1 = v(ikle(ielem,1))
270 v2 = v(ikle(ielem,2))
271 v3 = v(ikle(ielem,3))
272 v4 = v(ikle(ielem,4))
274 cov1 = 5*v3+12*v4+5*v2+14*v1
275 cou1 = 5*u3+12*u4+5*u2+14*u1
276 cov2 = 5*v3+12*v4+14*v2+5*v1
277 cou2 = 5*u3+12*u4+14*u2+5*u1
278 cov3 = 14*v3+12*v4+5*v2+5*v1
279 cou3 = 14*u3+12*u4+5*u2+5*u1
283 a12(ielem) = ( -x3*cov1 + y3*cou1 )*sur216
284 a13(ielem) = ( x2*cov1 - y2*cou1 )*sur216
285 a21(ielem) = ( (x3-x2)*cov2 + (y2-y3)*cou2 )*sur216
286 a23(ielem) = ( x2*cov2 - y2*cou2 )*sur216
287 a31(ielem) = ( (x3-x2)*cov3 + (y2-y3)*cou3 )*sur216
288 a32(ielem) = ( -x3*cov3 + y3*cou3 )*sur216
292 a11(ielem) = - a12(ielem) - a13(ielem)
293 a22(ielem) = - a21(ielem) - a23(ielem)
294 a33(ielem) = - a31(ielem) - a32(ielem)
300 ELSEIF(ielmu.EQ.13.AND.ielmv.EQ.13)
THEN 313 u1 = u(ikle(ielem,1))
314 u2 = u(ikle(ielem,2))
315 u3 = u(ikle(ielem,3))
316 u4 = u(ikle(ielem,4))
317 u5 = u(ikle(ielem,5))
318 u6 = u(ikle(ielem,6))
319 v1 = v(ikle(ielem,1))
320 v2 = v(ikle(ielem,2))
321 v3 = v(ikle(ielem,3))
322 v4 = v(ikle(ielem,4))
323 v5 = v(ikle(ielem,5))
324 v6 = v(ikle(ielem,6))
328 a12(ielem) = ((v3+v2-2.d0*v1-4.d0*v5-8.d0*(v4+v6)) * x3
329 & - (u2-4.d0*u5-8.d0*(u4+u6)-2.d0*u1+u3) * y3) * sur120
330 a13(ielem) = ((2.d0*v1-v3-v2+4.d0*v5+8.d0*(v4+v6)) * x2
331 & + (u2-4.d0*u5-8.d0*(u4+u6)-2.d0*u1+u3) * y2) * sur120
332 a21(ielem) = ((v1-8.d0*(v4+v5)-4.d0*v6+v3-2.d0*v2) * (x2-x3)
333 & + (2.d0*u2-u3-u1+8.d0*(u5+u4)+4.d0*u6) * (y2-y3))
335 a23(ielem) = ((8.d0*(v4+v5)-v1+4.d0*v6-v3+2.d0*v2) * x2
336 & - (2.d0*u2-u3-u1+8.d0*(u5+u4)+4.d0*u6) * y2) * sur120
337 a31(ielem) = ((v1+v2-4.d0*v4-2.d0*v3-8.d0*(v6+v5)) * (x2-x3)
338 & + (4.d0*u4-u2+8.d0*(u6+u5)+2.d0*u3-u1) * (y2-y3))
340 a32(ielem) = ((v1+v2-4.d0*v4-2.d0*v3-8.d0*(v6+v5)) * x3
341 & + (4.d0*u4-u2+8.d0*(u6+u5)+2.d0*u3-u1) * y3) * sur120
345 a11(ielem) = - a12(ielem) - a13(ielem)
346 a22(ielem) = - a21(ielem) - a23(ielem)
347 a33(ielem) = - a31(ielem) - a32(ielem)
357 IF(ielmu.EQ.ielmv)
THEN 359 101
FORMAT(1x,
'MT05AA (BIEF) :',/,
360 & 1x,
'DISCRETIZATION OF U AND V : ',1i6,
' NOT AVAILABLE')
362 WRITE(
lu,201) ielmu,ielmv
363 201
FORMAT(1x,
'MT05AA (BIEF) :',/,
364 & 1x,
'U AND V OF A DIFFERENT DISCRETISATION:',1i6,3x,1i6)
subroutine mt05aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SU, SV, U, V, XEL, YEL, IKLE, NELEM, NELMAX, FORMUL)