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.21 FDLNX9FR

***********************************************************************
* PURPOSE : THIS PROGRAM COMPUTES THE MAGNETIC FIELD IN SPACE.        *
*        THIS IS A MAIN ROUTINE IN A SET OF ROUTINES TO PLOT THE      *
*        PROJECTIONS  OF THE FIELD LINES ON THE XZ PLANE OR THE YZ    *
*        PLANE. THE CHOICE OF THE PLANE DEPENDS UPON THE USER. HE /   *
*        SHE SPECIFIES THE PLANE BY INPUTING THE VALUE OF THE VARIABLE*
*       'NCRS'. NCRS = 1 FOR XZ PLANE;                                *
*                    = 2 FOR YZ PLANE.                                *
* ROUTINES TO BE LINKED : FDLNX9FR, FDLNPLOTBLN5, FDMOD1, PLOTR5BLN   *
* DESCRIPTION : (1) FDLNX9FR:THIS IS THE MAIN ROUTINE TO PLOT THE PROJ*
*              -ECTIONS OF THE FIELD LINES ON THE XZ AND THE YZ PLANE.*
* FOR DETAILED DESCRIPTION, PLEASE SEE THE ROUTINES THEMSELVES.       *
*               (2) FDLNPLOTBLN5:THIS ROUTINE READS THE VALUES TO BE  *
*                PLOTTED FROM THE USER DEFINED FILES AND INITIALISES  *
*                APPROPRIATE ARRAYS TO BE PASSED ON TO THE PLOT ROUTIN*
*               -ES SO THAT THESE CAN BE PLOTTED.                     *
*               (3) FDMOD1:ROUTINE TO COMPUTE FIELD COMPONENTS Bx, By *
*                AND Bz AT THE GIVEN POINT (X,Y,Z) IN SPACE.          *
*               (4) PLOTR5BLN:PLOT ROUTINE TO PLOT THE PROJECTION OF  *
*                THE FIELD LINES ON THE REQUIRED PLANE.               *
***********************************************************************
       IMPLICIT NONE
       REAL*8 X0,Y0,Z0,X,Y,Z
       REAL*8 BOUND,DS,FINT,UP
       INTEGER J,K,NCRS
 02    PRINT *,'ENTER THE CHOICE OF THE PLANE OF PROJECTION'
       PRINT *,'FOR XZ PLANE:1; FOR YZ PLANE:2 '
       READ *,NCRS
 
       IF (NCRS .EQ. 1) THEN
        OPEN (UNIT=1,FILE='FDLNXZ.DAT',STATUS='NEW')
       ELSE 
        IF (NCRS .EQ. 2) THEN
         OPEN (UNIT=1,FILE='FDLNYZ.DAT',STATUS='NEW')
        ELSE 
         PRINT *,'ERROR IN THE CHOICE OF THE PROJECTION PLANE'
         PRINT *,'NO SUCH PLANE-PLEASE TRY AGAIN'
         GO TO 2
        END IF
       END IF
 
       WRITE(1,20)
    
       PRINT *,'ENTER THE INTIAL POINT X0,Y0,Z0'
       READ *, X0,Y0,Z0
   
       PRINT *,'ENTER THE INTERVAL BETWEEN THE FIELD LINES'
       READ *, FINT
 
       PRINT *,'ENTER THE INCREMENT IN SPACE FOR A FIELD LINE'
       READ *,DS
 
       X = X0 
       Y = Y0
       Z = Z0
       CALL MFRAME(NCRS,X,Y,Z)       
       CALL BOUNDCAL(BOUND,FINT,NCRS,UP,X,Y,Z)
       J = 2      
       DO WHILE (((FINT .GT. 0.0D0) .AND. (UP .LE. BOUND)) .OR.
     &     ((FINT .LT. 0.0D0) .AND. (UP .GE. BOUND)))
          
         J = J + 1
         
         DO K=-1,1,2
          CALL FDLINE(J,K,DS,X,Y,Z)
         END DO
  
         IF (NCRS .EQ. 1) THEN
          X = X + FINT
          Y = Y 
          Z = Z
          UP = X
         ELSE
          X = X
          Y = Y + FINT
          Z = Z
          UP = Y
         END IF
       END DO
        
       CLOSE(1)
 20    FORMAT(X,9X,'X',10X,9X,'Y',19X,'Z',19X,'BX',19X,
     1             'BY',15X,'BZ')
   
       STOP
       END
C----------------------------------------------------------------------
C----------------------------------------------------------------------
       SUBROUTINE FDLINE(J,K,DS,X1,Y1,Z1)
*                                                                     *
* PURPOSE : THIS SUBROUTINE COMPUTES THE MAGNETIC FIELD AT POINTS IN  *
*          SPACE GIVEN THE INITIAL POINT. THIS INITIAL POINT IS A POIN*
*         -T IN THE MIDDLE PLANE Z=0.0. THEN STARTING FROM THIS MID-  *
*         -PLANE, CALCULATION CONTINUES UNTIL THE SIGN OF Z/Bz REVERSE*
*         -S.                                                         *
* VARIABLES :                                                         *
* INPUT :                                                             *
* X1,Y1,Z1 : INITIAL POINT ON THE MIDDLE PLANE FROM WHICH THE COMPUTAT*
*           - ION STARTS.                                             *
* J : NUMBER OF THE FIELD LINE.                                       *
* K : INDICATES WHETHER THE COMPUTATION IS TOWARDS THE RIGHT MAGNET OR*
*    THE LEFT MAGNET.                                                 *
* OUTPUT :                                                            *
* *.DAT : FILE ON WHICH THE POSITION COORDINATES (X,Y,Z) AND THE FIELD*
*        COMPONENTS Bx, By AND Bz ARE RECORDED.                       *
* OTHERS :                                                            *
* Bx, By, Bz : FIELD COMPONENTS AT A POINT (X,Y,Z) IN SPACE.          *
* HIT : INDICATES WHETHER THE SIGN OF Z-COORDINATE HAS REVERSED OR NOT*
*      =0 NOT REVERSED SO CONTINUE WITH THE COMPUTATION,              *
*      =1 REVERSED, SO STOP COMPUTATON FOR THIS SIDE OF THE MID-PLANE.*
* X, Y, Z : 1-D ARRAYS OF POSITION COORDINATES OF THE POINT IN SPACE. *     
***********************************************************************
       IMPLICIT NONE
       INTEGER I,J,K,NPT,HIT,MNPT
       REAL*8 X1,Y1,Z1
       REAL*8 DS,DIST,ZB
  
       PARAMETER (MNPT=300)
       REAL*8 X(MNPT),Y(MNPT),Z(MNPT),BX(MNPT),BY(MNPT),BZ(MNPT)
       REAL*8 B,DX,DY,DZ
       X(1) = X1
       Y(1) = Y1
       Z(1) = Z1
       NPT = 250
       HIT = 0
       I = 0
       DIST = DFLOAT(K) * DS
D       PRINT *,'K: ',K,'  DIST: ',DIST
  
       DO WHILE ((HIT .EQ. 0) .AND. (I .LE. NPT)) 
        I = I+1
        CALL FDMOD(X(I),Y(I),Z(I),BX(I),BY(I),BZ(I))
D        PRINT *,'X(I),Y(I),Z(I): ',X(I),Y(I),Z(I)
D        PRINT *,'BX,BY,BZ: ',BX(I),BY(I),BZ(I)
        B = DSQRT(BX(I)**2 + BY(I)**2 + BZ(I)**2)
        DX = BX(I) * DIST/B
        DY = BY(I) * DIST/B
        DZ = BZ(I) * DIST/B
D        WRITE(1,*) 'DX: ',DX,' DY: ',DY,' DZ: ',DZ
D        PRINT *,'DX,DY,DZ: ',DX,DY,DZ
D        PRINT *,' '
        X(I+1) = X(I) + DX
        Y(I+1) = Y(I) + DY
        Z(I+1) = Z(I) + DZ
                   
        IF (K .EQ. -1) THEN
          IF (Z(I+1) .LE. Z(I)) HIT=1
        ELSE
          IF (Z(I+1) .GE. Z(I)) HIT=1
        END IF
       END DO
   
D       PRINT *,'HI, I AM ABOUT TO WRITE ON FILE(?)'
       NPT = I-1
       IF (K .EQ. -1) THEN
         WRITE(1,05) J
         DO I=NPT,1,-1
          WRITE(1,10) X(I),Y(I),Z(I),BX(I),BY(I),BZ(I)          
         END DO
        ELSE
         DO I=2,NPT
          WRITE(1,10) X(I),Y(I),Z(I),BX(I),BY(I),BZ(I)
         END DO
         WRITE(1,15) 
       END IF
 05    FORMAT(X,I3)
 10    FORMAT(X,6(2X,D18.11))
 15    FORMAT(X,'****** END OF A FIELD LINE ******')
       RETURN
       END
C----------------------------------------------------------------------
C----------------------------------------------------------------------
       SUBROUTINE BOUNDCAL(BOUND,FINT,NCRS,UP,X,Y,Z)
*                                                                     *
* PURPOSE : THIS  SUBROUTINE CALCULATES THE BOUND ON THE INITIAL VALUE*
*         OF THE FIELD LINE. THIS BOUND IS NECESSARY SINCE ONLY LINES *
*         NEAR THE MAGNETS ARE TO BE DRAWN.                           *
***********************************************************************        
       IMPLICIT NONE
       REAL * 8 BOUND,FINT,UP,X,Y,Z
       REAL * 8 XS1,XS2,YS1,YS2
       INTEGER NCRS
  
       DATA XS1,XS2,YS1,YS2/0.0D0,1.8D0,-0.8D0,0.0D0/
       IF (NCRS .EQ. 1) THEN
        IF (FINT .GT. 0.0D0) BOUND = XS1+XS2+X
        IF (FINT .LT. 0.0D0) BOUND = XS1+X-XS2
        UP = X
       ELSE
        IF (FINT .GT. 0.0D0) BOUND = YS2+(YS1-Y)
        IF (FINT .LT. 0.0D0) BOUND = YS1-(Y-YS2)
        UP = Y
       END IF
       RETURN
       END    
C----------------------------------------------------------------------
C----------------------------------------------------------------------
       SUBROUTINE MFRAME(NCRS,X,Y,Z)
*                                                                     *
* PURPOSE : THIS ROUTINE PLOTS THE PROJECTIONS OF THE MAGNETS ON THE  *
*           REQUIRED PLANE. 
*           FOR NCRS=1, PROJECTION ON THE XZ PLANE,                   *
*                   =2, PROJECTION ON THE YZ PLANE.                   *
***********************************************************************
         
       REAL*8 X,XM(2),Y,YL,YM(2),YYZ1,YYZ2,Z,ZCR,ZM(2)
       REAL*8 BX,BY,BZ
       INTEGER J,NCRS
       DATA BX,BY,BZ/0.0D0,0.0D0,0.0D0/
       DATA XM(1),XM(2)/0.40D0,-0.4D0/
       DATA YL/0.4698463104D0/
       DATA YYZ1,YYZ2/-0.187938520D0,-0.7517541D0/
       DATA ZYZ1,ZYZ2/0.540106043,0.3348939570D0/      
       DO J=1,2
         WRITE(1,05)J
         IF (NCRS .EQ. 1) THEN
            ZCR = 0.43750D0 + ((YL - DABS(Y))*DTAN(0.3490658504D0))
            WRITE(6,*)' NCRS ',NCRS,' ZCR ',ZCR
            IF (J .EQ. 1) THEN
               WRITE(1,10) XM(1),Y,ZCR,BX,BY,BZ
               WRITE(1,10) XM(2),Y,ZCR,BX,BY,BZ
            ELSE
               WRITE(1,10) XM(1),Y,-ZCR,BX,BY,BZ
               WRITE(1,10) XM(2),Y,-ZCR,BX,BY,BZ
            ENDIF 
   
        ELSE
           IF (NCRS .EQ. 2) THEN
              IF (J .EQ. 1) THEN
                 WRITE(1,10) X,YYZ1,ZYZ1,BX,BY,BZ
                 WRITE(1,10) X,YYZ2,ZYZ2,BX,BY,BZ
              ELSE
                 WRITE(1,10) X,YYZ1,-ZYZ1,BX,BY,BZ
                 WRITE(1,10) X,YYZ2,-ZYZ2,BX,BY,BZ
              ENDIF
           ELSE
                 WRITE(6,*) 'THERE IS EN ERROR IN THE PLANE DESIRED'
           END IF
        END IF
       WRITE(1,15)
       END DO
 05    FORMAT(X,I3)   
 10    FORMAT(X,6(2X,D18.11))     
 15    FORMAT(X,'****** END OF A FIELD LINE ******')
       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