Fundamental Technologies

Voyager LECP Pages

An Analysis of the Performance of the Magnetic Deflection System in the Voyager Low Energy Charged Particle Experiment

by Sheela Shodhan

E.10 POLY1

****************************************************************************
*                       PROGRAM POLYIN                                     *
* PURPOSE : THIS PROGRAM READS THE COORDINATES OF THE PLANES THAT ARE TO BE*
*          TESTED FROM A FILE AND COMPUTES THE COEFFICIENTS A,B,C,D OF THE *
*          CORRESPONDING PLANE BY CALLING THE ROUTINE 'PLANECOEFF'. THESE  *
*          PLANES FORM THE GEOMETRY OF THE SENSOR SUBSYSTEM.               *
* VARIABLES :                                                              *
* INPUT :                                                                  *
* *.DAT : THE NAME OF THE FILE OF COORDINATES OF THE VERTICES OF THE POLYGO*
*       -NS OF THE MODELLED SENSOR SUBSYSTEM. FOR GAMMA DETECTOR,*=COORGAM1*
*       AND FOR BETA DETECTOR, *=COORBET1.                                 *
* OUTPUT :                                                                 *
* COEFF.DAT : FILE OF THE COEFFICIENTS A,B,C, AND D OF THE PLANES OF THE   *
*            POLYGONS OF THE MODELLED SENSOR SUBSYSTEM.                    *
* OTHERS :                                                                 *
* A, B, C, D : COEFFICIENTS OF THE EQUATION Ax + By + Cz + D = 0 OF THE    *
*             PLANE OF THE POLYGON  OF THE MODELLED SENSOR SUBSYSTEM.      *
* CHAN : 2-D ARRAY WHOSE                                                   *
*       EACH ROW CORRESPONDS TO A PARTICULAR PLANE SURFACE;                *
*       COL. 1:NO. OF VERTICES OF THAT PLANE POLYGON  AND                  *
*       COL. 2>>>COL. NVERT*3+1 :ALL THE COORDINATES OF THE VERTICES OF    *
*                                THAT POLYGON.                             *
* COEFF : 2-D ARRAY WHOSE                                                  *
*       EACH ROW CORRESPONDS TO A PARTICULAR PLANE SURFACE;                *
*       COL. 1>>>COL. 4 :A,B,C,D  COEFFICIENTS OF THE EQUATION OF THE PLANE*
*                       FORMED BY THAT POLYGON.                            *
* NVERT : NUMBER OF VERTICES OF A POLYGON OF THE MODELLED SENSOR SUBSYSTEM.*
* VERT : 2-D ARRAY WHOSE                                                   *
*      EACH ROW CORRESPONDS TO A PARTICULAR VERTEX OF A POLYGON;           *
*      COL. 1>>>COL.3 : COORDINATES (X,Y,Z) OF A VERTEX OF A POLYGON.      *
****************************************************************************
      PROGRAM POLYIN
      IMPLICIT NONE
      CHARACTER*72 FNAME
      INTEGER I,I1,I2,J,K,MAXCOO,MAXSURF,NCOL,NERR,NVERT,NTY
      PARAMETER (MAXCOO=95,MAXSURF=50)
      REAL*8 A,B,C,CHAN(MAXSURF,MAXCOO),COEFF(MAXSURF,4),D,VERT(35,3)
      INTEGER NV(MAXSURF)
      OPEN (UNIT=2,STATUS='NEW',FILE='COEFF.DAT')
      WRITE(6,*) 'ENTER THE NAME OF THE FILE OF COORDINATES'
      READ(5,10) FNAME
      OPEN (UNIT=1,STATUS='OLD',FILE=FNAME)  
      READ (1,*)
2     READ(1,*,END=70) NTY
      READ(1,*) NVERT
      CHAN(NTY,1) = DFLOAT(NVERT)
      I1=2
3     READ(1,20,ERR=2) (CHAN(NTY,K),K=I1,I1+2)
      I1=K
      GO TO 3
70    CLOSE(1)
C  TO INITIALISE THE ARRAY WITH THE COORDINATES TO FIND THE COEFFICIENTS
      DO I=1,NTY
       I1 = 2 
       NVERT = IDINT(CHAN(I,1))
       NCOL = NVERT*3 + 1
       J = 1
       DO I2=1,NVERT
        DO WHILE ((J .LE. 3) .AND. (I1 .LE. NCOL))
         VERT(I2,J) = CHAN(I,I1)
         J = J+1
         I1 = I1+1
        END DO
        J = 1
       END DO
       CALL PLANECOEFF(VERT,NVERT,A,B,C,D,NERR)
C  TO INITIALISE THE ARRAY COEFF WITH THE COEFFICIENTS OF THE PLANE
       COEFF(I,1) = A
       COEFF(I,2) = B
       COEFF(I,3) = C
       COEFF(I,4) = D
       WRITE(2,30) I,NVERT,(COEFF(I,J),J=1,4)
       DO J=1,3
        VERT(I,J) = 0.0D0
       END DO
      END DO
  
 10   FORMAT(A72)
 20   FORMAT(3(X,F9.6))
 30   FORMAT(1X,I3,1X,I3,4(1X,D13.6))
      STOP
      END
C---------------------------------------------------------------------------
C---------------------------------------------------------------------------
      SUBROUTINE PLANECOEFF(VE,NVERT,A,B,C,D,NERR)
* PURPOSE : THIS ROUTINE DETERMINES THE COEFFICIENTS A, B, C, AND D OF THE *
*          EQUATION Ax + By + Cz + D = 0 OF THE PLANE OF THE POLYGON OF THE*
*          MODELLED SENSOR SUBSYSTEM. IT SOLVES THE COFACTORS OF A DETERMIN*
*         -ANT FORMED BY THE FIRST THREE VERTICES OF THE POLYGON TO FIND A,*
*          B, C AND D. THEN, IT CHECKS WHETHER THE REST OF THE VERTICES OF *
*          THE POLYGON SATISFIES THIS EQUATION OF THE PLANE WITHIN A CERTAI*
*         -N TOLERANCE OR NOT.                                             * 
* VARIABLES :                                                              *
* INPUT :                                                                  *
* NVERT : NUMBER OF VERTICES OF THE POLYGON.                               *
* VE : 2-D ARRAY WHOSE                                                     *
*      EACH ROW CORRESPONDS TO A PARTICULAR VERTEX OF A POLYGON;           *
*      COL. 1>>>COL.3 : COORDINATES (X,Y,Z) OF A VERTEX OF A POLYGON.      *
* OUTPUT :                                                                 *
* A, B, C, D : COEFFICIENTS OF THE EQUATION Ax + By + Cz + D = 0 OF THE    *
*             PLANE OF THE POLYGON.                                        *
* OTHERS :                                                                 *
* NERR : ERROR INDICATOR                                                   *
*       =1 INDICATES THAT ONE OF THE VERTICES OF THE POLYGON DOES NOT SATIS*
*          -FY THE EQUATION OF THE PLANE WITHIN THE SPECIFIED TOLERANCE.   *
*       =0 NO ERROR.                                                       *
* TOL : TOLERANCE TO WITHIN WHICH ALL THE OTHER VERTICES SATISFY THE EQUATI*
*      -ON OF THE PLANE.                                                   *
****************************************************************************
      IMPLICIT NONE
      INTEGER I,I2,J,NERR,NVERT
      REAL*8 A,B,C,D,DIF,TOL,VE(35,3)
      DATA TOL/1.0D-05/
      
      A=0.D0
      B=0.D0
      C=0.D0
      D=0.D0
C     SOLVE THE COFACTORS OF A DETERMINANT TO GET A,B,C,D
      DO I=1,3
         IF (I.NE.3) THEN
            J=I+1
         ELSE
            J=1
         END IF
         A=A+(VE(I,2)*VE(J,3)-VE(I,3)*VE(J,2))
         B=B+(VE(I,3)*VE(J,1)-VE(I,1)*VE(J,3))
         C=C+(VE(I,1)*VE(J,2)-VE(I,2)*VE(J,1))
      END DO
      D=VE(1,1)*(VE(2,3)*VE(3,2)-VE(3,3)*VE(2,2))
      D=D+VE(1,2)*(VE(2,1)*VE(3,3)-VE(3,1)*VE(2,3))
      D=D+VE(1,3)*(VE(2,2)*VE(3,1)-VE(2,1)*VE(3,2))
C     TEST IF THE REST OF THE VERTICES LIE IN THE PLANE
C
      I=4
      DO WHILE (I.LE.NVERT.AND.DIF.LE.TOL)
         DIF=DABS(A*VE(I,1)+B*VE(I,2)+C*VE(I,3)+D)
D        WRITE(6,*) ' I: ',I,' DIF: ',DIF
         I=I+1
      END DO
      IF (DIF.LE.TOL) THEN
         NERR=0
      ELSE
         NERR=1
         PRINT *,'ERROR IN THE COEFFICIENTS OF PLANE:',I
      END IF
      RETURN
      END
C---------------------------------------------------------------------------
C---------------------------------------------------------------------------

Return to thesis table of contents.

Return to Voyager LECP Data Analysis Handbook Table of Contents.
Return to Fundamental Technologies Home Page.

Last modified 12/9/02, Tizby Hunt-Ward
tizby@ftecs.com