5 &(xmul,su,sv,u,v,xel,yel,
6 & ikle1,ikle2,ikle3,nelem,nelmax,w1,w2,w3,specad)
82 INTEGER,
INTENT(IN) :: NELEM,NELMAX
83 INTEGER,
INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
85 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
86 DOUBLE PRECISION,
INTENT(INOUT):: W1(nelmax),W2(nelmax),W3(nelmax)
87 DOUBLE PRECISION,
INTENT(IN) :: XMUL
91 TYPE(bief_obj),
INTENT(IN) :: SU,SV
92 DOUBLE PRECISION,
INTENT(IN) :: U(*),V(*)
94 LOGICAL,
INTENT(IN) :: SPECAD
98 INTEGER IELEM,IELMU,IELMV
99 DOUBLE PRECISION XSUR6,X2,Y2,X3,Y3,U1,U2,U3,V1,V2,V3
100 DOUBLE PRECISION GRADVX,GRADVY,DET
115 IF(ielmu.NE.11.OR.ielmv.NE.11)
THEN 116 WRITE(
lu,201) ielmu,su%NAME
117 201
FORMAT(1x,
'VC04AA: DISCRETIZATION OF U:',1i6,
118 & 1x,
'REAL NAME: ',a6)
119 301
FORMAT(1x,
'CASE NOT IMPLEMENTED')
135 w1(ielem) = (u3*y2-u3*y3-v3*x2+v3*x3+u2*y2-u2*y3
136 & -v2*x2+v2*x3+u1*y2-u1*y3-v1*x2+v1*x3)*xsur6
137 w2(ielem) = (u1*y3+u2*y3-v1*x3-v2*x3+u3*y3-v3*x3)*xsur6
138 w3(ielem) = (-u1*y2-u2*y2+v1*x2+v2*x2-u3*y2+v3*x2)*xsur6
161 gradvx=((v2-v1)*y3-(v3-v1)*y2)/det
162 gradvy=(x2*(v3-v1)-x3*(v2-v1))/det
163 u1 = u(ikle1(ielem))*gradvx
164 u2 = u(ikle2(ielem))*gradvx
165 u3 = u(ikle3(ielem))*gradvx
166 v1 = u(ikle1(ielem))*gradvy
167 v2 = u(ikle2(ielem))*gradvy
168 v3 = u(ikle3(ielem))*gradvy
169 w1(ielem) = (u3*y2-u3*y3-v3*x2+v3*x3+u2*y2-u2*y3
170 & -v2*x2+v2*x3+u1*y2-u1*y3-v1*x2+v1*x3)*xsur6
171 w2(ielem) = (u1*y3+u2*y3-v1*x3-v2*x3+u3*y3-v3*x3)*xsur6
172 w3(ielem) = (-u1*y2-u2*y2+v1*x2+v2*x2-u3*y2+v3*x2)*xsur6
174 ELSEIF(ielmu.EQ.10)
THEN 185 gradvx=((v2-v1)*y3-(v3-v1)*y2)/det
186 gradvy=(x2*(v3-v1)-x3*(v2-v1))/det
193 w1(ielem) = (u3*y2-u3*y3-v3*x2+v3*x3+u2*y2-u2*y3
194 & -v2*x2+v2*x3+u1*y2-u1*y3-v1*x2+v1*x3)*xsur6
195 w2(ielem) = (u1*y3+u2*y3-v1*x3-v2*x3+u3*y3-v3*x3)*xsur6
196 w3(ielem) = (-u1*y2-u2*y2+v1*x2+v2*x2-u3*y2+v3*x2)*xsur6
199 WRITE(
lu,*)
'WRONG DISCRETISATION OF U IN VC04AA' 204 ELSEIF(ielmv.EQ.15)
THEN 215 v2 = v(ielem+ nelmax)
216 v3 = v(ielem+2*nelmax)
217 gradvx=((v2-v1)*y3-(v3-v1)*y2)/det
218 gradvy=(x2*(v3-v1)-x3*(v2-v1))/det
219 u1 = u(ikle1(ielem))*gradvx
220 u2 = u(ikle2(ielem))*gradvx
221 u3 = u(ikle3(ielem))*gradvx
222 v1 = u(ikle1(ielem))*gradvy
223 v2 = u(ikle2(ielem))*gradvy
224 v3 = u(ikle3(ielem))*gradvy
225 w1(ielem) = (u3*y2-u3*y3-v3*x2+v3*x3+u2*y2-u2*y3
226 & -v2*x2+v2*x3+u1*y2-u1*y3-v1*x2+v1*x3)*xsur6
227 w2(ielem) = (u1*y3+u2*y3-v1*x3-v2*x3+u3*y3-v3*x3)*xsur6
228 w3(ielem) = (-u1*y2-u2*y2+v1*x2+v2*x2-u3*y2+v3*x2)*xsur6
230 ELSEIF(ielmu.EQ.10)
THEN 239 v2 = v(ielem+ nelmax)
240 v3 = v(ielem+2*nelmax)
241 gradvx=((v2-v1)*y3-(v3-v1)*y2)/det
242 gradvy=(x2*(v3-v1)-x3*(v2-v1))/det
249 w1(ielem) = (u3*y2-u3*y3-v3*x2+v3*x3+u2*y2-u2*y3
250 & -v2*x2+v2*x3+u1*y2-u1*y3-v1*x2+v1*x3)*xsur6
251 w2(ielem) = (u1*y3+u2*y3-v1*x3-v2*x3+u3*y3-v3*x3)*xsur6
252 w3(ielem) = (-u1*y2-u2*y2+v1*x2+v2*x2-u3*y2+v3*x2)*xsur6
255 WRITE(
lu,*)
'WRONG DISCRETISATION OF U IN VC04AA' 261 WRITE(
lu,501) sv%DIMDISC
263 501
FORMAT(1x,
'VC04AA: V%DIMDISC=',1i6)
subroutine vc04aa(XMUL, SU, SV, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, W1, W2, W3, SPECAD)