5 &(xmul,sf,su,sv,f,u,v,xel,yel,
6 & ikle1,ikle2,ikle3,ikle4,nelem,nelmax,w1,w2,w3,w4,formul)
75 INTEGER,
INTENT(IN) :: NELEM,NELMAX
76 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax*3),YEL(nelmax*3),XMUL
78 DOUBLE PRECISION,
INTENT(INOUT) :: W1(4*nelmax),W2(nelmax)
79 DOUBLE PRECISION,
INTENT(INOUT) :: W3(nelmax),W4(nelmax)
81 INTEGER,
INTENT(IN) :: IKLE1(4*nelmax)
82 INTEGER,
INTENT(IN) :: IKLE2(nelmax),IKLE3(nelmax),IKLE4(nelmax)
83 CHARACTER(LEN=16),
INTENT(IN) :: FORMUL
87 TYPE(bief_obj),
INTENT(IN) :: SF,SU,SV
88 DOUBLE PRECISION,
INTENT(IN) :: F(*),U(*),V(*)
92 INTEGER IELEM,IELMF,IELMU,IELMV
93 INTEGER IG1,IG2,IG3,IT,IAD1,IAD2,IAD3
95 DOUBLE PRECISION K1,K2,K3
99 DOUBLE PRECISION X2,Y2,X3,Y3,F1,F2,F3,F4,U1,U2,U3,U4,V1,V2,V3,V4
100 DOUBLE PRECISION XSUR72,XSU216,X1,Y1,TIERS
101 DOUBLE PRECISION PHIT,SUR6,USUR2,VSUR2
102 DOUBLE PRECISION L12,L13,L21,L23,L31,L32,SIG,BETAN1,BETAN2,BETAN3
104 INTRINSIC max,min,sign
113 parameter( il = reshape( (/
114 & 1,2,3,2,3,1,4,4,4 /), shape=(/ 3,3 /) ) )
131 IF(ielmf.EQ.12.AND.ielmu.EQ.12.AND.ielmv.EQ.12)
THEN 133 IF(formul(14:16).EQ.
'PSI')
THEN 151 iad1= ielem + (il(it,1)-1)*nelmax
152 iad2= ielem + (il(it,2)-1)*nelmax
153 iad3= ielem + (il(it,3)-1)*nelmax
162 x3=tiers*(xel(ielem)+xel(ielem+nelmax)+xel(ielem+2*nelmax))-x1
166 y3=tiers*(yel(ielem)+yel(ielem+nelmax)+yel(ielem+2*nelmax))-y1
172 usur2 = (u(ig1)+u(ig2)+u(ig3))*sur6
173 vsur2 = (v(ig1)+v(ig2)+v(ig3))*sur6
175 k1 = usur2 * (y2-y3) - vsur2 * (x2-x3)
176 k2 = usur2 * (y3 ) - vsur2 * (x3 )
177 k3 = usur2 * ( -y2) - vsur2 * ( -x2)
179 l12 = max( min(k1,-k2) , 0.d0 )
180 l13 = max( min(k1,-k3) , 0.d0 )
181 l21 = max( min(k2,-k1) , 0.d0 )
182 l23 = max( min(k2,-k3) , 0.d0 )
183 l31 = max( min(k3,-k1) , 0.d0 )
184 l32 = max( min(k3,-k2) , 0.d0 )
186 betan1 = l12*(f1-f2) + l13*(f1-f3)
187 betan2 = l21*(f2-f1) + l23*(f2-f3)
188 betan3 = l31*(f3-f1) + l32*(f3-f2)
190 phit = betan1 + betan2 + betan3
191 sig = sign(1.d0,phit)
193 w1(iad1)=w1(iad1)+ xmul * sig * max(min(sig*betan1,sig*phit),0.d0)
194 w1(iad2)=w1(iad2)+ xmul * sig * max(min(sig*betan2,sig*phit),0.d0)
195 w1(iad3)=w1(iad3)+ xmul * sig * max(min(sig*betan3,sig*phit),0.d0)
206 x2 = xel(ielem+nelmax)
207 x3 = xel(ielem+2*nelmax)
208 y2 = yel(ielem+nelmax)
209 y3 = yel(ielem+2*nelmax)
221 f2 = f(ikle2(ielem)) - f1
222 f3 = f(ikle3(ielem)) - f1
223 f4 = f(ikle4(ielem)) - f1
225 w1(ielem)= (((v3+v4+2*v1)*x2+(v3+v4+2*v1)*x3-(y3+y2)*u3-(y3+
226 & y2)*u4-2*(y3+y2)*u1)*f3-3*((v3+v4+2*v1)*x3-(v4+v2+2*
227 & v1)*x2-(y3-y2)*u4-2*(y3-y2)*u1-u3*y3+u2*y2)*f4-((v4+v2+
228 & 2*v1)*x2+(v4+v2+2*v1)*x3-(y3+y2)*u4-(y3+y2)*u2-2*(y3+y2
231 w2(ielem)= (-(((2*v3+3*v4+6*v2+v1)*x3-(v3-v1)*x2-(2*y3-y2)
232 & *u3-(y3+y2)*u1-3*u4*y3-6*u2*y3)*f2-(2*(v3+v4+2*v2)*x2
233 & -(v3+v4+2*v2)*x3+(y3-2*y2)*u3+(y3-2*y2)*u4+2*(y3-2*
234 & y2)*u2)*f3-3*((v3+v4+2*v2)*x3-(v3-v1)*x2-(y3-y2)*u3-u4*
235 & y3-2*u2*y3-u1*y2)*f4))*xsur72
237 w3(ielem)= (((6*v3+3*v4+2*v2+v1)*x2-(v2-v1)*x3-(y3+y2)*u1+(
238 & y3-2*y2)*u2-6*u3*y2-3*u4*y2)*f3+((2*v3+v4+v2)*x2-2*(
239 & 2*v3+v4+v2)*x3+2*(2*y3-y2)*u3+(2*y3-y2)*u4+(2*y3-y2)*
240 & u2)*f2-3*((2*v3+v4+v2)*x2-(v2-v1)*x3+(y3-y2)*u2-2*u3*
241 & y2-u4*y2-u1*y3)*f4)*xsur72
243 w4(ielem)= (((3*v3+6*v4+2*v2+v1)*x2-(v2-v1)*x3-(y3+y2)*u1+(
244 & y3-2*y2)*u2-3*u3*y2-6*u4*y2)*f3-((2*v3+6*v4+3*v2+v1
245 & )*x3-(v3-v1)*x2-(2*y3-y2)*u3-(y3+y2)*u1-6*u4*y3-3*u2*
246 & y3)*f2-3*((v3-v1)*x2-(v2-v1)*x3-(y3-y2)*u1-u3*y2+u2*y3)*
255 ELSEIF(ielmf.EQ.12.AND.ielmu.EQ.11.AND.ielmv.EQ.11)
THEN 257 IF(formul(14:16).EQ.
'PSI')
THEN 260 401
FORMAT(1x,
'VC08BB (BIEF) : PSI NOT IMPLEMENTED FOR QUASI-BUBBLE')
270 x2 = xel(ielem+nelmax)
271 x3 = xel(ielem+2*nelmax)
272 y2 = yel(ielem+nelmax)
273 y3 = yel(ielem+2*nelmax)
283 f2 = f(ikle2(ielem)) - f1
284 f3 = f(ikle3(ielem)) - f1
285 f4 = f(ikle4(ielem)) - f1
287 w1(ielem)=(((4*v3+v2+7*v1)*x2+(4*v3+v2+7*v1)*x3-4*(y3+y2
288 & )*u3-(y3+y2)*u2-7*(y3+y2)*u1)*f3-3*((4*v3+v2+7*v1)*x3
289 & -(v3+4*v2+7*v1)*x2-(4*y3-y2)*u3-7*(y3-y2)*u1-(y3-4*
290 & y2)*u2)*f4-((v3+4*v2+7*v1)*x2+(v3+4*v2+7*v1)*x3-(y3+
291 & y2)*u3-4*(y3+y2)*u2-7*(y3+y2)*u1)*f2)*xsu216
292 w2(ielem)=((2*(4*v3+7*v2+v1)*x2-(4*v3+7*v2+v1)*x3+4*(y3
293 & -2*y2)*u3+7*(y3-2*y2)*u2+(y3-2*y2)*u1)*f3+3*((4*v3+
294 & 7*v2+v1)*x3-3*(v3-v1)*x2-(4*y3-3*y2)*u3-(y3+3*y2)*u1-
295 & 7*u2*y3)*f4-3*((3*v3+7*v2+2*v1)*x3-(v3-v1)*x2-(3*y3-
296 & y2)*u3-(2*y3+y2)*u1-7*u2*y3)*f2)*xsu216
297 w3(ielem)=(((7*v3+4*v2+v1)*x2-2*(7*v3+4*v2+v1)*x3+7*(2
298 & *y3-y2)*u3+4*(2*y3-y2)*u2+(2*y3-y2)*u1)*f2-3*((7*v3+
299 & 4*v2+v1)*x2-3*(v2-v1)*x3-(3*y3+y2)*u1+(3*y3-4*y2)*u2-
300 & 7*u3*y2)*f4+3*((7*v3+3*v2+2*v1)*x2-(v2-v1)*x3-(y3+2*
301 & y2)*u1+(y3-3*y2)*u2-7*u3*y2)*f3)*xsu216
302 w4(ielem)=(((5*v3+4*v2+3*v1)*x2-(v2-v1)*x3-(y3+3*y2)*u1+(
303 & y3-4*y2)*u2-5*u3*y2)*f3-((4*v3+5*v2+3*v1)*x3-(v3-v1)
304 & *x2-(4*y3-y2)*u3-(3*y3+y2)*u1-5*u2*y3)*f2-3*((v3-v1)*
305 & x2-(v2-v1)*x3-(y3-y2)*u1-u3*y2+u2*y3)*f4)*xsur72
317 WRITE(
lu,101) ielmf,sf%NAME
318 WRITE(
lu,201) ielmu,su%NAME
320 101
FORMAT(1x,
'VC08BB (BIEF) :',/,
321 & 1x,
'DISCRETIZATION OF F:',1i6,
322 & 1x,
'REAL NAME: ',a6)
323 201
FORMAT(1x,
'DISCRETIZATION OF U:',1i6,
324 & 1x,
'REAL NAME: ',a6)
325 301
FORMAT(1x,
'CASE NOT IMPLEMENTED')
subroutine vc08bb(XMUL, SF, SU, SV, F, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, W1, W2, W3, W4, FORMUL)