5 &( xmul,sf,sg,sh,su,f,g,h,u,x,y,z,surfac,
6 & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,nelem,nelmax,
7 & w1,w2,w3,w4,w5,w6,formul)
67 INTEGER,
INTENT(IN) :: NELEM,NELMAX
68 INTEGER,
INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
69 INTEGER,
INTENT(IN) :: IKLE4(nelmax),IKLE5(nelmax),IKLE6(nelmax)
71 DOUBLE PRECISION,
INTENT(IN) ::X(nelmax,6),Y(nelmax,6),Z(*)
72 DOUBLE PRECISION,
INTENT(IN) ::SURFAC(*)
73 DOUBLE PRECISION,
INTENT(INOUT)::W1(nelmax),W2(nelmax),W3(nelmax)
74 DOUBLE PRECISION,
INTENT(INOUT)::W4(nelmax),W5(nelmax),W6(nelmax)
75 DOUBLE PRECISION,
INTENT(IN) ::XMUL
77 CHARACTER(LEN=16),
INTENT(IN) :: FORMUL
81 TYPE(bief_obj),
INTENT(IN) :: SU,SF,SG,SH
82 DOUBLE PRECISION,
INTENT(IN) :: U(*),F(*),G(*),H(*)
86 DOUBLE PRECISION NF1,NF2,NF3,NG1,NG2,NG3,NH1,NH2,NH3,XS03
87 DOUBLE PRECISION XS06,X2,X3,Y2,Y3,H1,H2,H3,SOMVX,SOMVY,AUX
88 DOUBLE PRECISION X2X3,Y2Y3,X2AUX,X3AUX,Y2AUX,Y3AUX,GX(3),GY(3)
89 DOUBLE PRECISION NPX,NPY,NUXMOY,NUYMOY,XS24,NPXL,NPXU,NPYL,NPYU
90 DOUBLE PRECISION XM01,XM02,XM03,XM04,XM05,XM06,XM07,XM08,XM09,XM10
91 DOUBLE PRECISION XM11,XM12,XM13,XM14,XM15,XM16,XM17,XM18,XM19,XM20
92 DOUBLE PRECISION XM21,XM22,XM23,XM24,XM25,XM26,XM27,XM28,XM29,XM30
93 DOUBLE PRECISION NPX2,NPY2
94 INTEGER I1,I2,I3,I4,I5,I6,IELEM
97 DOUBLE PRECISION :: CHOUIA = 1.d-4
102 IF(formul(7:7).EQ.
'2') inchyd=.true.
109 IF(sf%ELM.NE.41)
THEN 110 WRITE(
lu,1001) sf%ELM
111 1001
FORMAT(1x,
'VC02PP_STAR (BIEF) : TYPE OF F NOT IMPLEMENTED: ',i6)
115 IF(sg%ELM.NE.41)
THEN 116 WRITE(
lu,2001) sg%ELM
117 2001
FORMAT(1x,
'VC02PP_STAR (BIEF) : TYPE OF G NOT IMPLEMENTED: ',i6)
121 IF(sh%ELM.NE.41)
THEN 122 WRITE(
lu,3001) sh%ELM
123 3001
FORMAT(1x,
'VC02PP_STAR (BIEF) : TYPE OF H NOT IMPLEMENTED: ',i6)
127 IF(su%ELM.NE.41)
THEN 128 WRITE(
lu,4001) su%ELM
129 4001
FORMAT(1x,
'VC02PP_STAR (BIEF) : TYPE OF U NOT IMPLEMENTED: ',i6)
138 IF(formul(14:16).EQ.
'HOR')
THEN 165 IF((inchyd.AND.max(z(i1),z(i2),z(i3)).GT.
166 & min(z(i4),z(i5),z(i6))) .OR.
167 & h1.LT.chouia.OR.h2.LT.chouia.OR.h3.LT.chouia )
THEN 172 aux = xs24 / surfac(ielem)
174 nuxmoy=(f(i1)+f(i2)+f(i3)+f(i4)+f(i5)+f(i6))/6.d0
175 nuymoy=(g(i1)+g(i2)+g(i3)+g(i4)+g(i5)+g(i6))/6.d0
187 somvx = ( f(i1)*h1+f(i2)*h2+f(i3)*h3 ) * aux
188 somvy = ( g(i1)*h1+g(i2)*h2+g(i3)*h3 ) * aux
195 xm01 = - somvy * x3aux - somvx * y3aux
196 xm02 = somvy * x2aux + somvx * y2aux
197 xm06 = - somvy * x2x3 - somvx * y2y3
203 somvx = ( f(i4)*h1+f(i5)*h2+f(i6)*h3 ) * aux
204 somvy = ( g(i4)*h1+g(i5)*h2+g(i6)*h3 ) * aux
211 xm13 = - somvy * x3aux - somvx * y3aux
212 xm14 = somvy * x2aux + somvx * y2aux
213 xm15 = - somvy * x2x3 - somvx * y2y3
222 npxl=-0.5d0*(y2*(z(i1)-z(i3))+y3*(z(i2)-z(i1)))
223 npxu=-0.5d0*(y2*(z(i4)-z(i6))+y3*(z(i5)-z(i4)))
224 npyl=-0.5d0*(x2*(z(i3)-z(i1))+x3*(z(i1)-z(i2)))
225 npyu=-0.5d0*(x2*(z(i6)-z(i4))+x3*(z(i4)-z(i5)))
226 npx=0.5d0*(npxl+npxu)/surfac(ielem)
227 npy=0.5d0*(npyl+npyu)/surfac(ielem)
238 gx(1) = - gx(2) - gx(3)
242 gy(1) = - gy(2) - gy(3)
247 xm01=xm01 +0.5d0*( - ( npx*gx(1)+npy*gy(1)) )
249 xm02=xm02 +0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
251 xm03= +0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
253 xm04= +0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
255 xm05= +0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
257 xm06=xm06 +0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
259 xm07= +0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
261 xm08= +0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
263 xm09= +0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
265 xm10= +0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
267 xm11= +0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
269 xm12= +0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
271 xm13=xm13 +0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
273 xm14=xm14 +0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
275 xm15=xm15 +0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
278 xm16=xm16 +0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
280 xm17=xm17 +0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
282 xm18= 0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
284 xm19= 0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
286 xm20= 0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
288 xm21=xm21 +0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
290 xm22= 0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
292 xm23= 0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
294 xm24= 0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
296 xm25= 0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
298 xm26= 0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
300 xm28=xm28 +0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
302 xm27= 0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
304 xm29=xm29 +0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
306 xm30=xm30 +0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
308 w1(ielem) = + xm01 * ( u(i2)-u(i1) )
309 & + xm02 * ( u(i3)-u(i1) )
310 & + xm03 * ( u(i4)-u(i1) )
311 & + xm04 * ( u(i5)-u(i1) )
312 & + xm05 * ( u(i6)-u(i1) )
313 w2(ielem) = + xm16 * ( u(i1)-u(i2) )
314 & + xm06 * ( u(i3)-u(i2) )
315 & + xm07 * ( u(i4)-u(i2) )
316 & + xm08 * ( u(i5)-u(i2) )
317 & + xm09 * ( u(i6)-u(i2) )
318 w3(ielem) = + xm17 * ( u(i1)-u(i3) )
319 & + xm21 * ( u(i2)-u(i3) )
320 & + xm10 * ( u(i4)-u(i3) )
321 & + xm11 * ( u(i5)-u(i3) )
322 & + xm12 * ( u(i6)-u(i3) )
323 w4(ielem) = + xm18 * ( u(i1)-u(i4) )
324 & + xm22 * ( u(i2)-u(i4) )
325 & + xm25 * ( u(i3)-u(i4) )
326 & + xm13 * ( u(i5)-u(i4) )
327 & + xm14 * ( u(i6)-u(i4) )
328 w5(ielem) = + xm19 * ( u(i1)-u(i5) )
329 & + xm23 * ( u(i2)-u(i5) )
330 & + xm26 * ( u(i3)-u(i5) )
331 & + xm28 * ( u(i4)-u(i5) )
332 & + xm15 * ( u(i6)-u(i5) )
333 w6(ielem) = + xm20 * ( u(i1)-u(i6) )
334 & + xm24 * ( u(i2)-u(i6) )
335 & + xm27 * ( u(i3)-u(i6) )
336 & + xm29 * ( u(i4)-u(i6) )
337 & + xm30 * ( u(i5)-u(i6) )
343 ELSEIF(formul(14:16).EQ.
'VER')
THEN 370 IF((inchyd.AND.max(z(i1),z(i2),z(i3)).GT.
371 & min(z(i4),z(i5),z(i6))) .OR.
372 & h1.LT.chouia.OR.h2.LT.chouia.OR.h3.LT.chouia )
THEN 388 nf1=0.5d0*(f(i1)+f(i4))/h1
389 nf2=0.5d0*(f(i2)+f(i5))/h2
390 nf3=0.5d0*(f(i3)+f(i6))/h3
391 ng1=0.5d0*(g(i1)+g(i4))/h1
392 ng2=0.5d0*(g(i2)+g(i5))/h2
393 ng3=0.5d0*(g(i3)+g(i6))/h3
394 nh1=0.5d0*(h(i1)+h(i4))/h1
395 nh2=0.5d0*(h(i2)+h(i5))/h2
396 nh3=0.5d0*(h(i3)+h(i6))/h3
398 nuxmoy=(f(i1)+f(i2)+f(i3)+f(i4)+f(i5)+f(i6))/6.d0
399 nuymoy=(g(i1)+g(i2)+g(i3)+g(i4)+g(i5)+g(i6))/6.d0
406 npxl=-0.5d0*(y2*(z(i1)-z(i3))+y3*(z(i2)-z(i1)))
407 npxu=-0.5d0*(y2*(z(i4)-z(i6))+y3*(z(i5)-z(i4)))
408 npyl=-0.5d0*(x2*(z(i3)-z(i1))+x3*(z(i1)-z(i2)))
409 npyu=-0.5d0*(x2*(z(i6)-z(i4))+x3*(z(i4)-z(i5)))
410 npx=0.5d0*(npxl+npxu)/surfac(ielem)
411 npy=0.5d0*(npyl+npyu)/surfac(ielem)
424 gx(1) = - gx(2) - gx(3)
428 gy(1) = - gy(2) - gy(3)
434 xm01=0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
436 xm02=0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
438 xm03=0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
440 xm04=0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
442 xm05=0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
444 xm06=0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
446 xm07=0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
448 xm08=0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
450 xm09=0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
452 xm10=0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
454 xm11=0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
456 xm12=0.5d0*( - ( npx*gx(3)+npy*gy(3) ) )
458 xm13=0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
460 xm14=0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
462 xm15=0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
465 xm16=0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
467 xm17=0.5d0*( - ( npx*gx(1)+npy*gy(1) ) )
469 xm18=0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
471 xm19=0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
473 xm20=0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
475 xm21=0.5d0*( - ( npx*gx(2)+npy*gy(2) ) )
477 xm22=0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
479 xm23=0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
481 xm24=0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
483 xm25=0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
485 xm26=0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
487 xm27=0.5d0*( + ( npx*gx(3)+npy*gy(3) ) )
489 xm28=0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
491 xm29=0.5d0*( + ( npx*gx(1)+npy*gy(1) ) )
493 xm30=0.5d0*( + ( npx*gx(2)+npy*gy(2) ) )
497 xm03=xm03-(npx2*nf1+npy2*ng1+nh1)*surfac(ielem)*xs03
498 xm08=xm08-(npx2*nf2+npy2*ng2+nh2)*surfac(ielem)*xs03
499 xm12=xm12-(npx2*nf3+npy2*ng3+nh3)*surfac(ielem)*xs03
500 xm18=xm18-(npx2*nf1+npy2*ng1+nh1)*surfac(ielem)*xs03
501 xm23=xm23-(npx2*nf2+npy2*ng2+nh2)*surfac(ielem)*xs03
502 xm27=xm27-(npx2*nf3+npy2*ng3+nh3)*surfac(ielem)*xs03
504 w1(ielem) = + xm01 * ( u(i2)-u(i1) )
505 & + xm02 * ( u(i3)-u(i1) )
506 & + xm03 * ( u(i4)-u(i1) )
507 & + xm04 * ( u(i5)-u(i1) )
508 & + xm05 * ( u(i6)-u(i1) )
509 w2(ielem) = + xm16 * ( u(i1)-u(i2) )
510 & + xm06 * ( u(i3)-u(i2) )
511 & + xm07 * ( u(i4)-u(i2) )
512 & + xm08 * ( u(i5)-u(i2) )
513 & + xm09 * ( u(i6)-u(i2) )
514 w3(ielem) = + xm17 * ( u(i1)-u(i3) )
515 & + xm21 * ( u(i2)-u(i3) )
516 & + xm10 * ( u(i4)-u(i3) )
517 & + xm11 * ( u(i5)-u(i3) )
518 & + xm12 * ( u(i6)-u(i3) )
519 w4(ielem) = + xm18 * ( u(i1)-u(i4) )
520 & + xm22 * ( u(i2)-u(i4) )
521 & + xm25 * ( u(i3)-u(i4) )
522 & + xm13 * ( u(i5)-u(i4) )
523 & + xm14 * ( u(i6)-u(i4) )
524 w5(ielem) = + xm19 * ( u(i1)-u(i5) )
525 & + xm23 * ( u(i2)-u(i5) )
526 & + xm26 * ( u(i3)-u(i5) )
527 & + xm28 * ( u(i4)-u(i5) )
528 & + xm15 * ( u(i6)-u(i5) )
529 w6(ielem) = + xm20 * ( u(i1)-u(i6) )
530 & + xm24 * ( u(i2)-u(i6) )
531 & + xm27 * ( u(i3)-u(i6) )
532 & + xm29 * ( u(i4)-u(i6) )
533 & + xm30 * ( u(i5)-u(i6) )
544 202
FORMAT(1x,
'VC02PP_STAR (BIEF) :',/,
545 & 1x,
'HOR OR VER LACKING AT THE END OF THE FORMULA : ',a16)
subroutine vc02pp_star(XMUL, SF, SG, SH, SU, F, G, H, U, X, Y, Z, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, IKLE5, IKLE6, NELEM, NELMAX, W1, W2, W3, W4, W5, W6, FORMUL)