5 &(xmul,sf,f,x,y,z,surfac,
6 & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,nelem,nelmax,
7 & w1,w2,w3,w4,w5,w6,icoord,formul)
88 INTEGER,
INTENT(IN) :: NELEM,NELMAX,ICOORD
89 INTEGER,
INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
90 INTEGER,
INTENT(IN) :: IKLE4(nelmax),IKLE5(nelmax),IKLE6(nelmax)
92 DOUBLE PRECISION,
INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
93 DOUBLE PRECISION,
INTENT(IN) :: SURFAC(nelmax)
94 DOUBLE PRECISION,
INTENT(INOUT) ::W1(nelmax),W2(nelmax),W3(nelmax)
95 DOUBLE PRECISION,
INTENT(INOUT) ::W4(nelmax),W5(nelmax),W6(nelmax)
96 DOUBLE PRECISION,
INTENT(IN) :: XMUL
100 TYPE(bief_obj),
INTENT(IN) :: SF
101 DOUBLE PRECISION,
INTENT(IN) :: F(*)
102 CHARACTER(LEN=16),
INTENT(IN) :: FORMUL
106 DOUBLE PRECISION XS24,XS144,F1,F2,F3,F4,F5,F6,XMU
107 DOUBLE PRECISION X2,X3,Y2,Y3,Z1,Z2,Z3,Z4,Z5,Z6
108 INTEGER I1,I2,I3,I4,I5,I6,IELEM,IELMF
162 w1(ielem)=( (2*f1-f6)*y2*( z5+3*z4-3*z3 -z2)
163 & +(2*f1-f5)*y3*(-z6-3*z4 +z3+3*z2)
164 & +f2*y3*(2*z6+3*z5+3*z4-2*z3)
165 & +f3*y2*(-3*z6-2*z5-3*z4+2*z2)
166 & +(f3-f6)*y3*(z5-z4+2*z2)
167 & +f4*y2*(3*z6+z5+3*z3-z2)
168 & +f4*y3*(-z6-3*z5+z3-3*z2)
169 & +(f5-f2)*y2*(z6-z4+2*z3) )*xs144
170 w2(ielem)=( f1*y2*(z6+4*z5+3*z4-4*z3-4*z2)
171 & +f1*y3*(-2*z6-3*z5-3*z4+2*z3+6*z2)
172 & +(2*f2-f4)*y3*(z6+3*z5-z3)
173 & +f3*y2*(-3*z6-4*z5-z4+4*z2)
174 & +f4*y2*(2*z6+2*z5+z3-2*z2)
175 & +2*(f5-f2)*y2*(z6-z4+2*z3)
176 & +f5*y3*(z6+3*z4-z3-6*z2)
177 & +f6*y2*(-2*z5-2*z4+3*z3+2*z2)
178 & +(f6-f3)*y3*(-z5+z4-2*z2) )*xs144
179 w3(ielem)=( f1*y2*(3*z6+2*z5+3*z4-6*z3-2*z2)
180 & +f1*y3*(-4*z6-z5-3*z4+4*z3+4*z2)
181 & +f2*y3*(4*z6+3*z5+z4-4*z3)
182 & +(2*f3-f4)*y2*(-3*z6-z5+z2)
183 & +f4*y3*(-2*z6-2*z5+2*z3-z2)
184 & +(f5-f2)*y2*(z6-z4+2*z3)
185 & +f5*y3*(2*z6+2*z4-2*z3-3*z2)
186 & +f6*y2*(-z5-3*z4+6*z3+z2)
187 & +2*(f6-f3)*y3*(-z5+z4-2*z2) )*xs144
188 w4(ielem)=( f1*y2*(-3*z6+z5+6*z4-3*z3-z2)
189 & +f1*y3*(-z6+3*z5-6*z4+z3+3*z2)
190 & +f2*y3*(z6+3*z5-z3)
191 & +(2*f4-f3)*y2*(3*z6+z5-z2)
192 & +2*f4*y3*(-z6-3*z5+z3)
193 & +(f5-f2)*y2*(2*z6-2*z4+z3)
194 & +f5*y3*(2*z6+6*z4-2*z3-3*z2)
195 & +f6*y2*(-2*z5-6*z4+3*z3+2*z2)
196 & +(f6-f3)*y3*(-2*z5+2*z4-z2) )*xs144
197 w5(ielem)=( f1*y2*(-z6+2*z5+3*z4-2*z3-2*z2)
198 & +f2*y3*(z6+6*z5-3*z4-z3)
199 & +f3*y2*(-3*z6-2*z5+z4+2*z2)
200 & +f4*y2*(4*z6+4*z5-z3-4*z2)
201 & +f4*y3*(-2*z6-6*z5+2*z3+3*z2)
202 & +2*(f5-f2)*y2*(2*z6-2*z4+z3)
203 & +(2*f5-f1)*y3*(z6+3*z4-z3-3*z2)
204 & +f6*y2*(-4*z5-4*z4+3*z3+4*z2)
205 & +(f6-f3)*y3*(-2*z5+2*z4-z2) )*xs144
206 w6(ielem)=( +f1*y3*(-2*z6+z5-3*z4+2*z3+2*z2)
207 & +f2*y3*(2*z6+3*z5-z4-2*z3)
208 & +f3*y2*(-6*z6-z5+3*z4+z2)
209 & +f4*y2*(6*z6+2*z5-3*z3-2*z2)
210 & +f4*y3*(-4*z6-4*z5+4*z3+z2)
211 & +(f5-f2)*y2*(2*z6-2*z4+z3)
212 & +f5*y3*(4*z6+4*z4-4*z3-3*z2)
213 & +(2*f6-f1)*y2*(-z5-3*z4+3*z3+z2)
214 & +2*(f6-f3)*y3*(-2*z5+2*z4-z2) )*xs144
218 ELSEIF(icoord.EQ.2)
THEN 253 w1(ielem)=( (2*f1-f6)*x2*(-z5-3*z4+3*z3+z2)
254 & +2*f1*x3*(z6+3*z4-z3-3*z2)
255 & +f2*x3*(-2*z6-3*z5-3*z4+2*z3)
256 & +f3*x2*(3*z6+2*z5+3*z4-2*z2)
257 & +f4*x2*(-3*z6-z5-3*z3+z2)
258 & +f4*x3*(z6+3*z5-z3+3*z2)
259 & +(f5-f2)*x2*(-z6+z4-2*z3)
260 & +f5*x3*(-z6-3*z4+z3+3*z2)
261 & +(f6-f3)*x3*(z5-z4+2*z2) )*xs144
262 w2(ielem)=( f1*x2*(-z6-4*z5-3*z4+4*z3+4*z2)
263 & +f1*x3*(2*z6+3*z5+3*z4-2*z3-6*z2)
264 & +(2*f2-f4)*x3*(-z6-3*z5+z3)
265 & +f3*x2*(3*z6+4*z5+z4-4*z2)
266 & +f4*x2*(-2*z6-2*z5-z3+2*z2)
267 & +2*(f5-f2)*x2*(-z6+z4-2*z3)
268 & +f5*x3*(-z6-3*z4+z3+6*z2)
269 & +f6*x2*(2*z5+2*z4-3*z3-2*z2)
270 & +(f6-f3)*x3*(z5-z4+2*z2) )*xs144
271 w3(ielem)=( f1*x2*(-3*z6-2*z5-3*z4+6*z3+2*z2)
272 & +f1*x3*(4*z6+z5+3*z4-4*z3-4*z2)
273 & +f2*x3*(-4*z6-3*z5-z4+4*z3)
274 & +(2*f3-f4)*x2*(3*z6+z5-z2)
275 & +f4*x3*(2*z6+2*z5-2*z3+z2)
276 & +(f5-f2)*x2*(-z6+z4-2*z3)
277 & +f5*x3*(-2*z6-2*z4+2*z3+3*z2)
278 & +f6*x2*(z5+3*z4-6*z3-z2)
279 & +2*(f6-f3)*x3*(z5-z4+2*z2) )*xs144
280 w4(ielem)=( f1*x2*(3*z6-z5-6*z4+3*z3+z2)
281 & +f1*x3*(z6-3*z5+6*z4-z3-3*z2)
282 & +(2*f4-f3)*x2*(-3*z6-z5+z2)
283 & +(2*f4-f2)*x3*(z6+3*z5-z3)
284 & +(f5-f2)*x2*(-2*z6+2*z4-z3)
285 & +f5*x3*(-2*z6-6*z4+2*z3+3*z2)
286 & +f6*x2*(2*z5+6*z4-3*z3-2*z2)
287 & +(f6-f3)*x3*(2*z5-2*z4+z2) )*xs144
288 w5(ielem)=( f1*x2*(z6-2*z5-3*z4+2*z3+2*z2)
289 & +f2*x3*(-z6-6*z5+3*z4+z3)
290 & +f3*x2*(3*z6+2*z5-z4-2*z2)
291 & +f4*x2*(-4*z6-4*z5+z3+4*z2)
292 & +f4*x3*(2*z6+6*z5-2*z3-3*z2)
293 & +2*(f5-f2)*x2*(-2*z6+2*z4-z3)
294 & +(2*f5-f1)*x3*(-z6-3*z4+z3+3*z2)
295 & +f6*x2*(4*z5+4*z4-3*z3-4*z2)
296 & +(f6-f3)*x3*(2*z5-2*z4+z2) )*xs144
297 w6(ielem)=(+f1*x3*(2*z6-z5+3*z4-2*z3-2*z2)
298 & +f2*x3*(-2*z6-3*z5+z4+2*z3)
299 & +f3*x2*(6*z6+z5-3*z4-z2)
300 & +f4*x2*(-6*z6-2*z5+3*z3+2*z2)
301 & +f4*x3*(4*z6+4*z5-4*z3-z2)
302 & +(f5-f2)*x2*(-2*z6+2*z4-z3)
303 & +f5*x3*(-4*z6-4*z4+4*z3+3*z2)
304 & +(2*f6-f1)*x2*(z5+3*z4-3*z3-z2)
305 & +2*(f6-f3)*x3*(2*z5-2*z4+z2) )*xs144
310 ELSEIF(icoord.EQ.3)
THEN 340 xmu = xs24*surfac(ielem)
349 w1(ielem)=4*(f4-f1)*xmu
350 w2(ielem)=4*(f5-f2)*xmu
351 w3(ielem)=4*(f6-f3)*xmu
364 201
FORMAT(1x,
'VC13PP (BIEF) : IMPOSSIBLE COMPONENT ',
365 & 1i6,
' CHECK ICOORD')
377 WRITE(
lu,102) ielmf,sf%NAME
378 102
FORMAT(1x,
'VC13PP (BIEF) :',/,
379 & 1x,
'DISCRETISATION OF F : ',1i6,
' NOT IMPLEMENTED',/,
380 & 1x,
'REAL NAME OF F: ',a6)
392 IF(formul(6:6).EQ.
'2'.OR.formul(6:6).EQ.
'3'.OR.
393 & formul(6:6).EQ.
'4' )
THEN 404 IF(max(z(i1),z(i2),z(i3)).GT.min(z(i4),z(i5),z(i6)))
THEN 419 IF(formul(6:6).EQ.
'3'.AND.(icoord.EQ.1.OR.icoord.EQ.2))
THEN 440 IF( min(max(f1,f4),max(f2,f5),max(f3,f6)).GE.
441 & max(min(f1,f4),min(f2,f5),min(f3,f6)) )
THEN 456 IF(formul(6:6).EQ.
'4'.AND.(icoord.EQ.1.OR.icoord.EQ.2))
THEN 485 IF(z1.GE.z3.AND.z1.LE.z6)
THEN 486 IF(f1.LT.min(f3,f6).OR.f1.GT.max(f3,f6))
GO TO 1000
489 IF(z1.GE.z2.AND.z1.LE.z5)
THEN 490 IF(f1.LT.min(f2,f5).OR.f1.GT.max(f2,f5))
GO TO 1000
493 IF(z2.GE.z1.AND.z2.LE.z4)
THEN 494 IF(f2.LT.min(f1,f4).OR.f2.GT.max(f1,f4))
GO TO 1000
497 IF(z2.GE.z3.AND.z2.LE.z6)
THEN 498 IF(f2.LT.min(f3,f6).OR.f2.GT.max(f3,f6))
GO TO 1000
501 IF(z3.GE.z1.AND.z3.LE.z4)
THEN 502 IF(f3.LT.min(f1,f4).OR.f3.GT.max(f1,f4))
GO TO 1000
505 IF(z3.GE.z2.AND.z3.LE.z5)
THEN 506 IF(f3.LT.min(f2,f5).OR.f3.GT.max(f2,f5))
GO TO 1000
509 IF(z4.GE.z2.AND.z4.LE.z5)
THEN 510 IF(f4.LT.min(f2,f5).OR.f4.GT.max(f2,f5))
GO TO 1000
513 IF(z4.GE.z3.AND.z4.LE.z6)
THEN 514 IF(f4.LT.min(f3,f6).OR.f4.GT.max(f3,f6))
GO TO 1000
517 IF(z5.GE.z1.AND.z5.LE.z4)
THEN 518 IF(f5.LT.min(f1,f4).OR.f5.GT.max(f1,f4))
GO TO 1000
521 IF(z5.GE.z3.AND.z5.LE.z6)
THEN 522 IF(f5.LT.min(f3,f6).OR.f5.GT.max(f3,f6))
GO TO 1000
525 IF(z6.GE.z1.AND.z6.LE.z4)
THEN 526 IF(f6.LT.min(f1,f4).OR.f6.GT.max(f1,f4))
GO TO 1000
529 IF(z6.GE.z2.AND.z6.LE.z5)
THEN 530 IF(f6.LT.min(f2,f5).OR.f6.GT.max(f2,f5))
GO TO 1000
551 IF(formul(7:7).EQ.
'2')
THEN 560 IF(z(i4)-z(i1).LT.1.d-3.OR.
561 & z(i5)-z(i2).LT.1.d-3.OR.
562 & z(i6)-z(i3).LT.1.d-3 )
THEN
subroutine vc13pp(XMUL, SF, F, X, Y, Z, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, W1, W2, W3, W4, W5, W6, ICOORD, FORMUL)