C COPLAN    SOURCE    CB215821  16/11/21    21:15:00     9196           
      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 DE L'ELEMENT)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
-INC CCREEL
      DIMENSION XO(3),XA(3),XB(3),XC(3),XX(3,3),XV(3),YV(3),ZV(3)
      
      IFLIG=0
      ZERO =REAL(XZERO)
      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)
      
      IF (DNORM .GE. XPETIT) THEN
        XNORM=XNORM/DNORM
        YNORM=YNORM/DNORM
        ZNORM=ZNORM/DNORM
      ELSE
        XATA = ZERO
      ENDIF

      ANG=ZERO
      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.ZERO.AND.YATA.EQ.ZERO) GOTO 100

         IF (ABS(ABS(ATAN2(XATA,YATA))-XPI).LT.REAL(1D-3)) GOTO 100
         ANG=ANG+ATAN2(XATA,YATA)
         XV1=XV2
         YV1=YV2
         ZV1=ZV2
 63   CONTINUE
      IF (ABS(ABS(ANG)-XPI).LT.REAL(1D-3)) GOTO 100
      IF (ABS(ANG).GT.XPI) GOTO 100
      RETURN
 100  IFLIG=1
      RETURN
      END

 
