C COPLAN SOURCE CHAT 05/01/12 22:20:28 5004 SUBROUTINE COPLAN(XO,XA,XB,XC,IFLIG) C NORA DAVIDOVICH JUIN 89- C FORTRAN PUR. APPELE PAR ANGSOL. SERVE A TROUVER LES POINTS C SUR LA FRONTIERE DES ELEMENTS MASSIVES 3-DIM (SI IFLIG=1 LE POINT A C SE TROUVE SUR LA FRONTIERE DU ELEMENT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C Include contenant quelques constantes dont XPI : -INC CCREEL DIMENSION XO(3),XA(3),XB(3),XC(3),XX(3,3),XV(3),YV(3),ZV(3) IFLIG=0 X1=XA(1) X2=XB(1) X3=XC(1) Y1=XA(2) Y2=XB(2) Y3=XC(2) Z1=XA(3) Z2=XB(3) Z3=XC(3) DO 1 J=1,3 XX(1,J)=XA(J) XX(2,J)=XB(J) XX(3,J)=XC(J) 1 CONTINUE XNORM=(Y2-Y1)*(Z2-Z3)-(Z2-Z1)*(Y2-Y3) YNORM=(Z2-Z1)*(X2-X3)-(X2-X1)*(Z2-Z3) ZNORM=(X2-X1)*(Y2-Y3)-(Y2-Y1)*(X2-X3) DNORM=SQRT(XNORM**2+YNORM**2+ZNORM**2) XNORM=XNORM/DNORM YNORM=YNORM/DNORM ZNORM=ZNORM/DNORM ANG=0.D0 XV1=X1-XO(1) YV1=Y1-XO(2) ZV1=Z1-XO(3) DO 63 IS=1,3 XV(IS)=XX(IS,1)-XO(1) YV(IS)=XX(IS,2)-XO(2) ZV(IS)=XX(IS,3)-XO(3) XV2=XV(IS) YV2=YV(IS) ZV2=ZV(IS) XATA=XNORM*(YV1*ZV2-ZV1*YV2)+YNORM*(ZV1*XV2-XV1*ZV2)+ # ZNORM*(XV1*YV2-YV1*XV2) YATA=XV1*XV2+YV1*YV2+ZV1*ZV2 IF (XATA.EQ.0.D0.AND.YATA.EQ.0.D0) GOTO 100 IF (ABS(ABS(ATAN2(XATA,YATA))-XPI).LT.0.001D0) GOTO 100 ANG=ANG+ATAN2(XATA,YATA) XV1=XV2 YV1=YV2 ZV1=ZV2 63 CONTINUE IF (ABS(ABS(ANG)-XPI).LT.0.001D0) GOTO 100 IF (ABS(ANG).GT.XPI) GOTO 100 RETURN 100 IFLIG=1 RETURN END