NOAA GVI GUIDE

Appendix L

Introduction Page, GVI Guide TOC, Acronyms
Previous Section, Next Section

APPENDIX L: Software to Calculate Relative Azimuth from Third Generation Weekly Composite GVI Date

This appendix contains the FORTRAN source code for a subroutine (RELTAZ) which calculates the relative azimuth angle. Two parameters, TIME (time after satellite launch) and DT (equatorial crossing) must be calculated prior to calling subroutine RELTAZ.

To calculate TIME which is a function of a specific satellite, use the following equations:

NOAA-9: TIME = (YR - 1985) x 12 + MON
NOAA-11: TIME = (YR - 1989) x 12 + MON
NOAA-14: TIME = (YR - 1995) x 12 + MON

where, YR is the four digit qualifier for the year and MON is the numerical representation for month (e.g., January would be represented by "1", February would be "2", etc.).

To calculate the equatorial crossing, DT, which is also a function of satellite and node, use the following polynomial:

NOAA-9: DT = 14.13 + 0.0360 x TIME + 0.000229 x TIME2
NOAA-11: DT = 13.69 + 0.0138 x TIME + 0.000510 x TIME2
NOAA-14: DT = 13.60 + 0.00497 x TIME + 0.000480 x TIME2

Note that DT is in hours on a 24-hour clock. The equations given above are for the afternoon crossing. If a user wants to use PM hours on a 12-hour clock, then 12 should be subtracted from the first term of each equation.

Once the other input variables are given (pixel latitude, pixel longitude, the negative of the scan angle, the Julian day, and the actual solar zenith angle), then the function RELTAZ can be called. See the actual source code for details about allowable values.

This function should be called on a pixel by pixel basis.

      SUBROUTINE RELTAZ(YLAT,XLON,XNU,SZA,SUNZ,SUNA,SATZ,SATA,RELA,     
     $YLATS,XLONS,GHR,JDAY,DT,SDEC)                                     
C                                                                       
C****  GIVEN PIXEL LAT/LON AND SCAN ANGLE, COMPUTES SUB-SATELLLITE      
C  GROUND POINT FOR AVHRR.                                              
C
C ** INPUT VARIABLES
C
C   YLAT = THE LATITUDE EXPRESSED AS A VALUE BETWEEN -90 AND 90
C   XLON = THE LONGITUDE EXPRESSED AS A VALUE BETWEEN 0 AND 360
C   XNU  = THE NEGATIVE OF THE SCAN ANGLE                                            
C   JDAY = THE JULIAN DAY, I.E.  001 IS JANUARY 1ST
C   DT   = THE EQUATORIAL CROSSING TIME, A FUNCTION OF SATELLITE
C   SZA  = THE ACTUAL SOLAR ZENITH ANGLE
C
C ** OUTPUT VARIABLES
C
C   SUNZ = THE CALCULATED SOLAR ZENITH ANGLE
C   SUNA = THE SOLAR AZIMUTH ANGLE
C   SATZ = THE SATELLITE ZENITH ANGLE
C   SATA = THE SATELLITE AZIMUTH ANGLE
C   RELA = THE RELATIVE AZIMUTH ANGLE
C   YLATS = THE SUB-SATELLITE LATITUDE
C   XLONS = THE SUB-SATELLITE LONGITUDE
C   GHR = THE GREENWICH MEAN TIME
C   SDEC = THE SOLAR DECLINATION ANGLE, A FUNCTION OF JDAY.
C
      INTEGER*4 JDAY                                                    
      DOUBLE PRECISION RAD                                              
      DATA  RAD /57.29578/                                              
      DATA  RE  /6378.0/                                                
      DATA  HS /850.0/                                                  
C                                                                       
C****  DATA CONSTANTS FOR SCENE                                         
C
      ROLL = 0.0                                                        
      YAW = 0.0                                                         
      TILT = 0.0                                                        
      PERIOD = 101.94*60.0                                              
      EQT = DT                                                    
      ICHECK=0                                                          
      IC = 0                                                            
      ICNT = 7                                                          
      FEQT = 0.33                                                       
        ANOMM = 50.                                                     
C                                                                       
C****  OTHER IMPORTANT DATA                                             
C
      ALTCOR=(RE+HS)/RE                                                 
      XINCLP=9.17                                                       
C                                                                       
C****  PIXEL DATA                                                       
C                                                                       
C**** THIS SUBROUTINE CALCULATES THE SOLAR DECLINATION.                 
C                                                                       
      CALL SUNAG1(RAD,JDAY,SDEC,TC)                                     
C                                                                       
C**** THIS SUBROUTINE CALCULATES THE SATELLITE ZENITH AND AZIMUTH       
C     ANGLES.                                                           
C                                                                      
      CALL SUBSAT(RAD,ALTCOR,XINCLP,PITCH,ROLL,YAW,TILT,XNU,            
     $XLON,YLAT,XLONS,YLATS,SATCA,SCZ)
       SATA = SATCA                                                     
       SATZ = SCZ                                                       
C                                                                       
C**** THIS SUBROUTINE CALCULATES THE TIME ELAPSED SINCE EQUATORIAL     
C     CROSSING.                                                         
C                                                                       
      CALL SATEQT(RAD,PERIOD,XINCLP,XLONS,YLATS,                        
     * XLON0S,TM) 
 99    GHR = (EQT - XLON0S/15.0) + TM/60.0                              
       RLHR = GHR + XLON/15.0                                           
C                                                                       
C**** THIS SUBROUTINE CALCULATES THE SUN ZENITH AND AZIMUTH ANGLES.   
C                                                              
      CALL SUNAG2(RAD,GHR,SDEC,TC,XLON,YLAT,SUNZ,SUNA)             
      IF(SUNZ.GE.SZA-1..AND.SUNZ.LE.SZA+1.) THEN                        
        RELA = ABS(SUNA-SATA)                                           
C        IF(RELA.GT.180) RELA = 360. - RELA                              
        GO TO 100                                                       
      ENDIF                                                             
      IF(SUNZ.NE.SZA) THEN                                              
        IC = IC + 1                                                     
C                                                                       
C**** MATCH UP CALCULATED SOLAR ZENITH WITH SATELLITE-GIVEN SOLAR      
C     ZENITH TO WITHIN +/- 1 DEGREE.                                    
C                                                                       
          RELA = ABS(SUNA-SATA)                                         
          IF(ABS(SUNZ-SZA).LT.ANOMM) THEN                               
            SAVSZ = SUNZ                                                
            SAVSA = SUNA                                                
            SAVRH = RLHR                                                
            SAVGH = GHR                                                 
            SAVRE = RELA                                                
            ANOMM = ABS(SUNZ-SZA)                                       
          ENDIF                                                         
        ENDIF                                                           
          IF(SUNZ.GT.SZA) THEN                                          
            IF(IC.EQ.1) THEN                                            
              SUNZ = SZA                                                
              GO TO 100                                                 
            ENDIF                                                       
           SUNZ = SAVSZ                                                 
           SUNA = SAVSA                                                 
           RLHR = SAVRH                                                 
           GHR = SAVGH                                                  
           RELA = SAVRE                                                 
           GO TO 100                                                    
         ENDIF                                                          
       FEQT = FEQT + 0.1                                                
       IHOUR = EQT                                                      
       HOUR = IHOUR                                                     
       IF(FEQT.LE.0.59) THEN                                            
         EQT = HOUR + FEQT                                              
         GO TO 99                                                       
       ELSE                                                             
         FEQT = FEQT - 0.6                                              
        EQT = HOUR + 1.0 + FEQT                                         
        GO TO 99                                                        
       ENDIF                                                            
 100   CONTINUE                                                         
       RETURN                                                           
      END                                                               



 
     SUBROUTINE SATEQT(RAD,PERIOD,XINCLP,XLONS,YLATS,XLON0S,TM)        
C                                                                       
C  GIVEN SATELLITE GROUND POINT (NADIR) LATITUDE AND LONGITUDE,         
C  COMPUTES TIME TRAVELLED (IN MINUTES) FROM LAST EQUATOR CROSSING    
 
C  AND LONGITUDE OF EQUATOR CROSSING.                                   
C  ONLY GOOD FOR ASCENDING NODE -- DO NOT EXCEED N OR S POLE.           
C                                                                       
      DOUBLE PRECISION RAD                                              
C                                                                       
      RINCLP = XINCLP/RAD                                               
      RLATS = YLATS/RAD                                                 
C                                                                       
C  CALCULATE  degrees TRAVELED AND TRAVEL TIME
      X = SIN(RLATS)/COS(RINCLP)
      IF (X.GT.1.0) X = 1.0
      IF (X.LT.-1.0) X = -1.0                           
      RT = ASIN(X)                                 
      RT = ABS(RT)                                                     
      DT = RT*RAD                                                       
      TS = DT*PERIOD/360.0                                              
C                                                                       
C  CALCULATE DELTA LONGITUDE                                            
       IF(YLATS.GE.0.) THEN
       X = (SIN(RT)*SIN(RINCLP))/(COS(RLATS))
       IF (X.GT.1.0) X = 1.0
       IF (X.LT.-1.0) X = -1.0                                                                         
                               RLAM=ASIN(X)                    
       ELSE
       X = (SIN(RT)*SIN(RINCLP))/(COS(RLATS))
       IF (X.GT.1.0) X = 1.0
       IF (X.LT.-1.0) X = -1.0                                                                         
                              RLAM=-ASIN(X)                   
       ENDIF                                                            
C                                                                       
C  CALCULATE EQUATOR CROSSING LONGITUDE                                 
      DLAM = RLAM*RAD                                                   
      TTS = TS*4.167E-3                                                 
      IF (YLATS .GE. 0.0)THEN                                           
       XLON0S = XLONS + DLAM + TTS                                      
      ELSE                                                              
       XLON0S = XLONS - DLAM + TTS                                      
      ENDIF                                                             
C                                                                       
C  QUADRANT FIXUP                                                       
      IF (XLON0S .GT. 180.0 .OR. XLON0S .LT. -180.0)THEN                
       IF (YLATS .GT. 0.0)THEN                                          
        XLON0S = XLON0S - 360.0                                         
       ELSE                                                             
        XLON0S = XLON0S + 360.0                                         
       ENDIF                                                            
      ENDIF                                                             
      TM = TS/60.0                                                      
C                                                                       
      RETURN                                                            
      END                                                               

      SUBROUTINE SUBSAT(RAD,ALTCOR,XINCLP,PITCH,ROLL,YAW,TILT,          
     * XNU,XLONP,YLATP,XLONS,YLATS,SCA,SCZ)                             
C                                                                       
C  PURPOSE:  THIS ROUTINE CALCULATES THE SATELLITE GROUND POINT         
C             LATITUDE AND LONGITUDE PLUS THE SPACECRAFT ZENITH         
C             AND THE TRUE BEARING FROM THE SATELLITE TO THE            
C             PIXEL.                                                    
C                                                                       
C  FORTRAN CALLING PROCEDURE:                                           
C                                                                       
C  CALL SUBSAT (RAD,ALTCOR,XINCLP,PITCH,ROLL,YAW,TILT,XNU,              
C                XLONP,YLATP,XLONS,YLATS,SCA,SCZ)                       
C                                                                       
C  INPUT PARAMETERS:                                                    
C   RAD           =  degrees/RADIANS CONVERSION FACTOR                   
C   ALTCOR = ALTITUDE CORRECTION FACTOR= (R+H)/R = 1.149                
C   XINCLP = EQUATORIAL TRACKLINE INCLINATION = 9.28  DEGREES            
C   PITCH  = PITCH ANGLE OF SPACECRAFT                                  
C   ROLL   = ROLL ANGLE OF SPACECRAFT                                   
C   YAW           = YAW OF SPACECRAFT                                   
C   TILT   = SCAN MIRROR TILT ANGLE                                     
C   XNU           = SCAN ANGLE TO PIXEL FOR ZERO TILT                   
C   XLONP  = LONGITUDE OF THE PIXEL                                     
C   YLATP  = LATITUDE OF THE PIXEL                                      
C                                                                       
C  OUTPUT PARAMETERS:                                                   
C   YLATS  = LATITUDE OF SPACECRAFT (SUB-SATELLITE POINT)               
C   XLONS  = LONGITUDE OF SPACECRAFT                                    
C   SCA           = AZIMUTH FROM NORTH SPACECRAFT TO PIXEL              
C   SCZ           = SPACECRAFT ZENITH ANGLE                             
C                                                                       
C  CALLED BY:         ATMO                                              
C                                                                       
C  SUBROUTINES CALLED:        CZSUBA                                    
C                                                                       
C  VARIABLE LIST:                                                       
C   RPSI   = TRACKLINE RELATIVE BEARING TO PIXEL IN RADIANS             
C   RTHS   = EFFECTIVE SCAN ANGLE MODIFIED BY TILT IN RADIANS           
C   RTH           = EARTH SURFACE DISTANCE IN RADIANS FROM THE          
C             SATELLITE G. P. TO THE PIXEL.                             
C                                                                       
C******************************************************************     
C                                                                       
C  THE FIRST CALL IS TO CZSUBA FOR VARIOUS NAVIGATION PARAMETERS        
      DOUBLE PRECISION RAD                                              
      DATA  RAD /57.29578/                                              
                                             
      CALL CZSUBA(RAD,ALTCOR,PITCH,ROLL,YAW,TILT,XNU,RPSI,RTHS,RTH)     
      RLATP = YLATP/RAD                                                 
      RLONP = XLONP/RAD                                                 
      RINCLP = XINCLP/RAD                                       
C                                                                       
C  SET UP QUADRATIC VARIABLES FROM SCRIPPS ALGORITHM REPORT             
C  WILSON, ET AL. CZCS GEOLOCATION ALGORITHMS.                           
      A = SIN(RLATP)-SIN(RTH)*SIN(RPSI)*SIN(RINCLP)                     
      B = COS(RTH)                                                      
      C = SIN(RTH) * COS(RPSI)                                            
      D = COS(RINCLP)**2                                                
      AB = A*B                                                          
      XD = B*B+C*C                                                      
      X = AB*AB-XD*(A*A-D*C*C)                                          
      XP = 0.0                                                     
      IF (X.GT.1.0E-10)XP=SQRT(X)                                       
C                                                                       
C  GET THE +/- VALUES FROM THE QUADRATIC AND                            
C  IF TILT IS POSITIVE USE THE NEGATIVE QUADRATIC                       
C  AND VICE VERSA                                                       
      IF (TILT .LT. 0.0)THEN                                            
       XVAL = (AB+XP)/XD                                                
      ELSE                                                              
       XVAL = (AB-XP)/XD                                                
      ENDIF
      IF (XVAL.GT.1.0) XVAL = 1.0 
      IF (XVAL.LT.-1.0) XVAL = -1.0                                                            
      RLATS = ASIN(XVAL)                                                
      YLATS = RLATS*RAD                                                 
C                                                                       
C  CALCULATE TRUE BEARING FROM NORTH TO PIXEL
C
      X = SIN(RINCLP)/COS(RLATS)
      IF (X.GT.1.0) X = 1.0
      IF (X.LT.-1.0) X = -1.0                           
      RINCLO = ASIN(X)                             
      RPSIP = RPSI-RINCLO                                               
      TBEAR = RPSIP*RAD                                                 
      IF (RPSI .LE. RINCLO)TBEAR = TBEAR+360.0                          
C                                                                       
C  RE-ORIENT SPACECRAFT AZIMUTH WITH RESPECT PIXEL                      
      PI = 180.0/RAD                                                    
      IF (RTH .NE. 0.0)THEN                                             
       COSCA = (SIN(RLATS)-COS(RTH)*SIN(RLATP))/(SIN(RTH)*COS(RLATP))   
       EPS = ABS(COSCA)                                                 
       IF (EPS .GT. 1.0)THEN                                       
        IF (COSCA .LT. -1.0)COSCA=-1.0                                   
        IF (COSCA .GT. 1.0)COSCA=1.0                                    
       ENDIF                                                            
       SCA = ACOS(COSCA)*RAD                                            
       IF (TBEAR .LE. 180.0)SCA = 360.0 - SCA                           
      ELSE                                                              
       IF (RPSI .LT. PI)SCA = RPSIP*RAD+180.0                           
       IF (RPSI .GE. PI)SCA = RPSIP*RAD-180.0                           
      ENDIF                                                             
C                                                                       
C  CALCULATE DELTA LONGITUDE                                            
      X = (COS(RTH)-SIN(RLATS)*SIN(RLATP))/(COS(RLATS)*COS(RLATP))      
      EPS = ABS(X)                                                      
      IF (EPS .GE. 1.0)THEN                                        
        IF (X .LT. 0.0)X=-1.0                                           
        IF (X .GT. 1.0)X=1.0                                            
      ENDIF                                                             
      DLAM = ACOS(X)                                                    
      XDLAM = DLAM*RAD                                                  
C                                                                       
C  PIXEL LONGITUDE                                                      
      IF (TBEAR .LE. 180.0)THEN                                         
        XVAL = XLONP - XDLAM                                            
      ELSE                                                              
        XVAL = XLONP + XDLAM                                            
      ENDIF                                                             
      IF (XVAL .LT. -180.0)THEN                                         
        XLONS = 360.0 + XVAL                                            
      ELSE IF (XVAL .GT. 180.0)THEN                                     
        XLONS = XVAL - 360.0                                            
      ELSE                                                              
        XLONS = XVAL                                                    
      ENDIF                                                             
                                                                        
C  CALCULATE SPACECRAFT ZENITH ANGLE                                    
      R=ALTCOR*SIN(ABS(RTHS))
      IF (R.GT.1.0) R = 1.0
      IF (R.LT.-1.0) R = -1.0                                           
      TEMP=ASIN(R)                                                      
      SCZ=TEMP*RAD                                                 
      RETURN                                                            
      END                                                               



C*****************************************************************      
      SUBROUTINE CZSUBA(RAD,ALTCOR,PITCH,ROLL,YAW,TILT,XNU,             
     * RPSI,RTHS,RTH)                                                   
C                                                                       
C  PURPOSE: THIS IS AN INTERNAL NAVIGATION SUBROUTINE CALLED            
C            MAINLY BY OTHER SUBROUTINES                                
C                                                                       
C  FORTRAN CALLING PROCEDURE:                                           
C   CALL CZSUBA(RAD,ALTCOR,PITCH,ROLL,YAW,TILT,XNU,RPSI,RTHS,RTH)       
C                                                                       
C  INPUT PARAMETERS:                                                    
C   RAD            =  DEGREES/RADIANS CONVERSION FACTOR                  
C   ALTCOR           = ALTITUDE CORRECTION FACTOR= (RE+HS)/RE=1.149     
C   ROLL,PITCH,YAW = ROLL,PITCH,YAW ANGLES OF SPACECRAFT                
C   TILT           = MIRROR SHAFT TILT ANGLE                            
C   XNU            = SCAN ANGLE TO PIXEL FOR 0 TILT                     
C                                                                       
C  OUTPUT PARAMETERS:                                                   
C   RPSI = TRACKLINE RELATIVE BEARING TO PIXEL IN RADIANS               
C   RTHS = EFFECTIVE SCAN ANGLE MODIFIED BY TILT                        
C   RTH  = EARTH SURFACE DISTANCE IN RADIANS G.P. TO PIXEL              
C                                                                       
C  CALLED BY: SUBSAT                                                    
C                                                                       
C **************************************************************        
      DOUBLE PRECISION RAD                                              
      DATA  RAD /57.29578/                                              
      PID2 = ATAN(1.0)*2.0                                              
      PI = PID2*2.0                                                     
      PI3D2 = PID2*3.0                                                  
      RNU = XNU/RAD                                   
      T = TILT/2.0                                                      
      RT = T/RAD                                                        
      IF (TILT.NE.0.0) GOTO 1                                           
      RPSI = PID2                                                       
      IF (XNU.LT.0.0) RPSI=PI3D2                                        
      RTHS = ABS(RNU)                                                   
      GOTO 2                                                            
 1     CONTINUE                                                          
C                                                                       
 2     CONTINUE                                                          
      SINA = ALTCOR*SIN(RTHS)
      IF(SINA.GT.1.0) SINA = 1.0
      IF(SINA.LT.-1.0) SINA = -1.0                                           
      A = ASIN(SINA)                                                    
      RTH = A-RTHS                                  
      RETURN                                                            
      END                                                               



      SUBROUTINE SUNAG1(RAD,IDAY,SDEC,TC)                               
C                                                                       
C  COMPUTES SOLAR DECLINATION AND TIME CORRECTION GIVEN                 
C  JULIAN DAY.        THIS IS TO BREAK UP THE SUNANG SUBROUTINE         
C  FOR BETTER COMPUTATIONAL EFFICIENCY.  MUST BE COMBINED               
C  WITH SUNANG2 TO COMPUTE SOLAR ZENITH AND AZIMUTH.                    
C                                                                       
C   IDAY = JULIAN DAY                                                   
C   SDEC = SOLAR DECLINATION ANGLE IN DEGREES                           
C   THEZ = THETA ZERO ORBITAL POSITION IN DEGREES                       
C   TC = TIME CORRECTION                                                
C                                                                       
C  COMPUTE SOLAR DECLINATION ANGLE                                      
      DOUBLE PRECISION RAD                                              
      THEZ = 360.0*(IDAY-1)/365.0                                       
      RTHEZ = THEZ/RAD                                                  
      SDEC = 0.396372-22.91327*COS(RTHEZ) + 4.02543*SIN(RTHEZ)          
     *   - 0.387205*COS(2.0*RTHEZ) + 0.051967*SIN(2.0*RTHEZ)            
     *         - 0.154527*COS(3.0*RTHEZ) + 0.084798*SIN(3.0*RTHEZ)      
      RSDEC = SDEC/RAD                                                  
C                                                                       
C  TIME CORRECTION FOR SOLAR HOUR ANGLE, AND SOLAR HOUR ANGLE           
      TC = 0.004297 + 0.107029*COS(RTHEZ) - 1.837877*SIN(RTHEZ)         
     *         - 0.837378*COS(2.0*RTHEZ) - 2.340475*SIN(2.0*RTHEZ)      
C                                                                       
      RETURN                                                            
      END                                                               



C ***************************************************************       
      SUBROUTINE SUNAG2(RAD,HR,SDEC,TC,XLON,YLAT,SUNZ,SUNA)             
C                                                                       
C  COMPUTES SUN AZIMUTH AND ZENITH ANGLES FOR A GIVEN                   
C  TIME, DATE, LATITUDE AND LONGITUDE.  THIS PROGRAM                    
C  IS FROM THE NMFS ELAS COMPUTER CODE.  MODIFIED FOR                   
C  STANDARD COORDINATES (W LONG. NEGATIVE), AND TO CORRECT              
C  FOR DATELINE PROBLEM.  THIS IS PART 2 OF THE FORMER                  
C  SUNANG SUBROUTINE.  THIS REQUIRES DECLINATION AND TIME               
C  CORRECTION COMPUTED FROM SUNANG1.                                    
C                                                                       
C   TIME = TIME OF DAY IN SECONDS                                       
C   YLAT = LATITUDE OF PIXEL                                            
C   XLON = LONGITUDE OF PIXEL                                           
C   SUNZ = SOLAR ZENITH IN DEGREES                                     
C   SUNA = SOLAR AZIMUTH ANGLE (FROM NORTH) IN DEGREES                 
C   SDEC = SOLAR DECLINATION ANGLE IN DEGREES                         
C   THEZ = THETA ZERO ORBITAL POSITION IN DEGREES                       
C   TC = TIME CORRECTION                                                
C   XHA = SOLAR HOUR ANGLE IN DEGREES                                   
C                                                                       
      DOUBLE PRECISION RAD                                              
      RSDEC = SDEC/RAD                                                  
C                                                                       
C  SOLAR HOUR ANGLE                                                     
      XHA = (HR-12.0)*15.0 + XLON + TC                                  
      IF (XHA .GT.  180.0)XHA = XHA-360.0                               
      IF (XHA .LT. -180.0)XHA = XHA+360.0                               
      RLAT = YLAT/RAD                                                   
      RLON = XLON/RAD                                                   
      RHA = XHA/RAD                                                     
C                                                                       
C  SUN ZENITH                                                           
      COSTMP = SIN(RLAT)*SIN(RSDEC) +                                   
     *               COS(RLAT)*COS(RSDEC)*COS(RHA)                      
      EPS = ABS(COSTMP)                                                 
      IF (EPS .GT. 1.1)THEN                                             
      ELSE IF (EPS .GT. 1.0)THEN                                        
       IF (COSTMP .GT. 0.0)COSTMP=1.0                                   
       IF (COSTMP .LT. 0.0)COSTMP=-1.0                                  
      ENDIF                                                             
      RSUNZ = ACOS(COSTMP)                                              
C                                                                       
C  SUN AZIMUTH                                                          
      COSAZ = (SIN(RSDEC)-SIN(RLAT)*COS(RSUNZ))/(COS(RLAT)*SIN(RSUNZ))  
      EPS = ABS(COSAZ)                                                  
      IF (EPS .GT. 1.1)THEN                                             
      ELSE IF (EPS .GT. 1.0)THEN                                        
       IF (COSAZ .GT. 0.0)COSAZ=1.0                                     
       IF (COSAZ .LT. 0.0)COSAZ=-1.0                                    
      ENDIF                                                             
      RSUNA = ACOS(COSAZ)                                               
      IF (XHA .GT. 0.0)RSUNA=360.0/RAD-RSUNA                            
C                                                                       
C  CONVERT TO DEGREES                                                   
      SUNZ = RSUNZ*RAD                                                  
      SUNA = RSUNA*RAD                                                  
C                                                                       
      RETURN                                                            
      END                                                               

Amended June 6, 2002


Previous Section Top of Page Next Section