TABLE OF CONTENTS

1. MLT_RSS/AMSU_zonal.f90 [ Programs ]

[ Top ] [ Programs ]

NAME

    module amsu_zonal

PURPOSE

    psuedoclass that defines and manipulates zonal means of AMSU data

DESCRIPTION

    psuedoclass that defines and manipulates zonal means of AMSU data
    
  Components
    the pseudoclass defines a zonal average type

       type amsu_zonal_ave_rec
               type (date_str)                                 :: begin_date
               type (date_str)                                 :: end_date
               type(ave),dimension(NUM_ZONES,NUM_AMSU_FOVS,NUM_NODES,NUM_SURFACES+1)   :: dat
       end type amsu_zonal_ave_rec

       and a second type that contains the same information, but with the date in rd2000 form.
       This is easier to write directly to a binary file.

       type amsu_zonal_output_structure 
               integer(4)                      :: pentad_num
               real(8)                         :: begin_rd
               real(8)                         :: end_rd
               real(4),dimension(4,NUM_ZONES,NUM_AMSU_FOVS,NUM_NODES,NUM_SURFACES+1) :: dat
       end type amsu_zonal_output_structure

ROUTINES

    zero_zonal_ave_rec(z)
        fills zonal average record z with initial values.
    put_in_zone(x,lon,lat,date,zone,fov,node,surf,z)  
        adds a single observation to a zonal average record z

INPUTS

           lon         longitude of observation
           lat         latitude of observation
           date        date of observation, in data_str form
           fov         field of view
           node        ascending or descending
           z           zonal average record to add to

OUTPUTS

           zone        zonal index of choosen zone
           surf        surface type (land or ocean) of location
           z           updated zonal average record

    put_scan_in_zone(scan,ok,z,chan,corr_level)
        adds a single MSU scan to a zonal average record

INPUTS

           scan        MSU scan structure
           ok          array of fov quality flags
           z           zonal average record to add to
           chan        msu_channel
           corr_level  msu correction level

OUTPUTS

           z           updated zonal average record
    put_scan_in_zone_xswath(scan,ok,z,chan,corr_level)
        adds a single cross-swath difference to a zonal average.  deprecated.
        adds a single MSU scan to a zonal average record

INPUTS

           scan        MSU scan structure
           ok          array of fov quality flags
           z           zonal average record to add to
           chan        msu_channel
           corr_level  msu correction level

OUTPUTS

           z           updated zonal average record

    update_zonal_ave_rec(z)
        updates a zonal average record  -- i.e computed averages from totals so they are consistent

INPUTS

           z           zonal average record to add to

OUTPUTS

           z           updated zonal average record
    write_zonal_ave_rec(z,lu,full,error)
        writes a zonal average record in standard binary form.

INPUTS

           z           zonal average record to write
           lu          logical unit to write to
           full        set to true to write "full" set of data

OUTPUTS

           error       error flag -- if non zero, write was not successful
    write_zonal_ave_rec_direct(pentad,offset,z,lu,error)
        writes a zonal average record in standard binary form to fortran direct access file.

INPUTS

           pentad      pentad number to write data to.
           offset      beginning pentad number in file
           z           zonal average record to write
           lu          logical unit to write to

OUTPUTS

           error       error flag -- if non zero, write was not successful

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    use zonal

2. MLT_RSS/AMSU_zonal.f90/amsu_put_in_zone [ Programs ]

[ Top ] [ Programs ]

NAME

      amsu_put_in_zone

PURPOSE

        adds a single observation to a zonal average record

INPUTS

       real(4) ::      x               ! The number to be added to average
       real(4) ::      lon             ! The longitude of the observation
       real(4) ::      lat             ! The latitude of the observation
       type(date_str) ::       date    ! Time and Date of the observation
       integer(4) :: zone              ! zonal index
       integer(4) ::   fov     ! field of view index
       integer(4) :: node      ! nodal index (asc = 1, desc = 2)
       integer(4) :: surf      ! surface type index (1 = sea, 2 = land 3 = both)
       integer(4) :: lu_lug    ! logical unit of log file

INPUTS_OUTPUTS

       type(amsu_zonal_ave_rec),intent(INOUT)          ::      z   ! zonal everage record to be added to

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call amsu_put_in_zone(x,lon,lat,date,zone,fov,node,surf,z,lu_log)

3. MLT_RSS/AMSU_zonal.f90/amsu_update_zonal_ave_rec [ Programs ]

[ Top ] [ Programs ]

NAME

      amsu_update_zonal_ave_rec

PURPOSE

        updates average values in zonal average rec to reflect new total values

INPUTS_OUTPUTS

       type(amsu_zonal_ave_rec),intent(INOUT)          ::      z   ! zonal everage record to be updated

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call amsu_update_zonal_ave_rec(z)

4. MLT_RSS/AMSU_zonal.f90/amsu_update_zonal_ave_rec [ Programs ]

[ Top ] [ Programs ]

NAME

      amsu_write_zonal_ave_rec

PURPOSE

        writes data in a zonal average record to logical unit lu.  

INPUTS

       type(amsu_zonal_ave_rec),intent(INOUT)          ::      z   ! zonal everage record to be written
       integer(4)  :: lu  ! logical unit to write to
       logical(4)  :: full  ! flag is true then write a more complete record, otherwise, write num,mean,stddev,loc_time only

OUTPUTS

       integer(4)  :: error ! error flag, if 0, everything is OK

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call amsu_write_zonal_ave_rec(z,lu,.true.,error)

5. MLT_RSS/AMSU_zonal.f90/amsu_update_zonal_ave_rec_direct [ Programs ]

[ Top ] [ Programs ]

NAME

      amsu_write_zonal_ave_rec_direct

PURPOSE

        writes data in a zonal average record to direct access file at logical unit lu.  

INPUTS

       integer(4)  :: pentad
       integer(4)  :: offset
       type(amsu_zonal_ave_rec)  ::    z   ! zonal everage record to be written
       integer(4)  :: lu  ! logical unit to write to

OUTPUTS

       integer(4)  :: error ! error flag, if 0, everything is OK

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call amsu_write_zonal_ave_rec(pentad_number,offset,z,lu,error)

6. MLT_RSS/AMSU_zonal.f90/zero_zonal_ave_rec [ Programs ]

[ Top ] [ Programs ]

NAME

      zero_zonal_ave_rec

PURPOSE

        fills zonal average record z with initial values.

INPUTS_OUTPUTS

        type(amsu_zonal_ave_rec),intent(INOUT)         ::      z   ! zonal everage record to be zeroed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call zero_zonal_ave_rec(z)

7. MLT_RSS/logging.f90 [ Programs ]

[ Top ] [ Programs ]

NAME

    logging

PURPOSE

    pseudoclass for producing log files

DESCRIPTION

    pseudoclass for producing log files.

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    use logging

8. MLT_RSS/msu_date.f90/convert_date [ Programs ]

[ Top ] [ Programs ]

NAME

    module convert_date

PURPOSE

    converts raw MSU data to type date_str

DESCRIPTION

     converts raw MSU data to type date_str

INPUT

     scan    = type(msu_scan)

OUTPUT

    scan    = type(msu_scan)

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call convert_date(scan)

9. MLT_RSS/zonal.f90 [ Programs ]

[ Top ] [ Programs ]

NAME

    module zonal

PURPOSE

    psuedoclass that defines and manipulates zonal means of MSU/AMSU data

DESCRIPTION

    psuedoclass that defines and manipulates zonal means of MSU/AMSU data
    
  Components
    the pseudoclass defines a zonal average type

               type zonal_ave_rec
               type (date_str)                                                                                                         :: begin_date
               type (date_str)                                                                                                         :: end_date
               type(ave),dimension(NUM_ZONES,NUM_FOVS,NUM_NODES,NUM_SURFACES+1)        :: dat
       end type zonal_ave_rec
  
 explanation of the grid type flag:

ROUTINES

    zero_zonal_ave_rec(z)
        fills zonal average record z with initial values.
    put_in_zone(x,lon,lat,date,zone,fov,node,surf,z)  
        adds a single observation to a zonal average record z

INPUTS

           lon         longitude of observation
           lat         latitude of observation
           date        date of observation, in data_str form
           fov         field of view
           node        ascending or descending
           z           zonal average record to add to

OUTPUTS

           zone        zonal index of choosen zone
           surf        surface type (land or ocean) of location
           z           updated zonal average record

    put_scan_in_zone(scan,ok,z,chan,corr_level)
        adds a single MSU scan to a zonal average record

INPUTS

           scan        MSU scan structure
           ok          array of fov quality flags
           z           zonal average record to add to
           chan        msu_channel
           corr_level  msu correction level

OUTPUTS

           z           updated zonal average record
    put_scan_in_zone_xswath(scan,ok,z,chan,corr_level)
        adds a single cross-swath difference to a zonal average.  deprecated.
        adds a single MSU scan to a zonal average record

INPUTS

           scan        MSU scan structure
           ok          array of fov quality flags
           z           zonal average record to add to
           chan        msu_channel
           corr_level  msu correction level

OUTPUTS

           z           updated zonal average record

    update_zonal_ave_rec(z)
        updates a zonal average record  -- i.e computed averages from totals so they are consistent

INPUTS

           z           zonal average record to add to

OUTPUTS

           z           updated zonal average record
    write_zonal_ave_rec(z,lu,full,error)
        writes a zonal average record in standard binary form.

INPUTS

           z           zonal average record to write
           lu          logical unit to write to
           full        set to true to write "full" set of data

OUTPUTS

           error       error flag -- if non zero, write was not successful
    write_zonal_ave_rec_direct(pentad,offset,z,lu,error)
        writes a zonal average record in standard binary form to fortran direct access file.

INPUTS

           pentad      pentad number to write data to.
           offset      beginning pentad number in file
           z           zonal average record to write
           lu          logical unit to write to

OUTPUTS

           error       error flag -- if non zero, write was not successful

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    use zonal

10. MLT_RSS/AMSU_Constants.f90 [ Constants ]

[ Top ] [ Constants ]

NAME

    AMSU_Constants.f90

PURPOSE

    Module containing constants for AMSU processing

DESCRIPTION

    Module containing constants for AMSU processing.
    Contains physical constants, file unit numbers, and constant related to satellite operation

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_Constants

11. MLT_RSS/AMSU_Diurnal.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_Diurnal.f90

PURPOSE

    Module for performing diurnal adjustment to AMSU measurements

DESCRIPTION

    Module for performing diurnal adjustment to AMSU measurements
    Uses a model derived diurnal climatology to make the adjustment

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_Diurnal

12. MLT_RSS/AMSU_Diurnal.f90/amsu_ccm3_diurnal_tb [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

       amsu_ccm3_diurnal_tb

PURPOSE

       calculates diurnal value from diurnal climatology for given channel,fov,location,date and local_time

INPUTS

       chan    AMSU_CHANNEL
       fov     AMSU Field of View
       lon     longitude
       lat     latitude
       date    date, to find time of year, in date structure (date_str) defined in date_and_time.f90
       local_time  local time, defined in time structure (time_str) defined in date_and_time.f90

RETURNED VALUE

       diur_tb  interpolated value of dirunal Tb

USAGE

       tb_diurnal = amsu_ccm3_diurnal_tb(chan,fov,lon,lat,date,local_time)

13. MLT_RSS/AMSU_Diurnal.f90/calculate_diurnal_correction [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      calculate_diurnal_correction

PURPOSE

      Calculate Diurnal Correction for a single AMSU scan line

INPUTS

      channel     AMSU channel number

INPUTS_OUTPUTS

      L2A_Scan    Structure containing AMSU L2A Scan data

OUTPUTS

      Error       Error Flag.  0 if everything OK, not zero otherwise

USAGE

      Call calculate_diurnal_correction(L2A_scan,channel,error)

14. MLT_RSS/AMSU_Diurnal.f90/read_amsu_ccm3_diurnal [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

        read_amsu_ccm3_diurnal

PURPOSE

        reads CCM3-derived AMSU Diurnal Climatology for the given AMSU channel

INPUTS

        chan    AMSU channel

OUTPUTS

        error   error flag.  0 if everything OK, -1 if invalid channel passed

REMARKS

        loads climatology into the module variable diur_tb_sim. The number of the channel currently loaded is contained in channel_loaded

USAGE

        call read_amsu_ccm3_diurnal(5,error)

15. MLT_RSS/AMSU_equator_crossing_times.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_equator_crossing_times.f90

PURPOSE

    Module for finding ascending node equator crossing times for NOAA and EUMETSAT satellites

DESCRIPTION

    Module for finding ascending node equator crossing times for NOAA and EUMETSAT satellites

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_equator_crossing_times

16. MLT_RSS/AMSU_equator_crossing_times.f90/AMSU_rev_num_from_rd_2000 [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      AMSU_rev_num_from_rd_2000

PURPOSE

      Calculates AMSU rev num from time in rd_2000 format

INPUTS

       sat_num     AMSU satellite number (10 = NOAA-15, 11 = NOAA-16, etc)
       rd_2000     Time in rd_2000 format 

OUTPUTS

       Error       Error Flag.  0 if everything OK, not zero otherwise

RETURNED VALUE

       AMSU orbit number corresponding to given time

USAGE

      orbit_num = AMSU_rev_num_from_rd_2000(sat_num,rd_2000,error)

17. MLT_RSS/AMSU_equator_crossing_times.f90/equator_crossing_rd_2000_from_AMSU_rev_num [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      equator_crossing_rd_2000_from_AMSU_rev_num

PURPOSE

      Calculate Diurnal Correction for a single AMSU scan line

INPUTS

       sat_num     AMSU satellite number (10 = NOAA-15, 11 = NOAA-16, etc)
       rev_num     AMSU orbit number.    

OUTPUTS

       Error       Error Flag.  0 if everything OK, not zero otherwise

RETURNED VALUE

       ascending node eqaotor crossing time in rd_2000 format (days since midnight, jan 1, 2000) (real*8)

USAGE

      crossing_time = equator_crossing_rd_2000_from_AMSU_rev_num(sat_num,rev_num,error)

18. MLT_RSS/AMSU_equator_crossing_times.f90/load_NOAA_15_eqx_data [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

        load_NOAA_15_eqx_data

PURPOSE

        reads equator crossing time data for NOAA-15
     SIDE EFFECTS
        loads climatology into the module variable eq_x_time_NOAA_15, and the equator crossing longitude into eq_x_longitude_NOAA_15. 

REMARKS

        exactly analogous routines exist for the other NOAA and EUMETSAT satellites. (NOAA-16, etc.)  These are:
        - load_NOAA_16_eqx_data
        - load_NOAA_17_eqx_data
        - load_NOAA_18_eqx_data
        - load_NOAA_19_eqx_data
        - load_METOP_A_eqx_data

USAGE

        load_NOAA_15_eqx_data

19. MLT_RSS/AMSU_File_Locations.f90 [ Constants ]

[ Top ] [ Constants ]

NAME

    AMSU_File_Locations.f90

PURPOSE

    Module containing file locations for AMSU processing

DESCRIPTION

    Module containing file locations for AMSU processing

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_File_Locations

20. MLT_RSS/AMSU_inventory.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_inventory

PURPOSE

    AMSU_inventory psuedoclass

DESCRIPTION

    pseudoclass for reading and writing AMSU orbit inventories

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use msu_L2A_inventory

21. MLT_RSS/AMSU_inventory.f90/read_amsu_l1b_inventory_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      read_amsu_l1b_inventory_file(sat_num,inv,error)

PURPOSE

    reads AMSU L1B Inventory file

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)

OUTPUTS

    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.
    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    read_amsu_l1b_inventory_file(sat_num,inv,error)

22. MLT_RSS/AMSU_inventory.f90/read_amsu_l1b_inventory_file_text [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      read_amsu_l1b_inventory_file_text

PURPOSE

    reads AMSU L1B Inventory file from text format

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)

OUTPUTS

    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.
    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_amsu_l1b_inventory_file_text(sat_num,inv,error)

23. MLT_RSS/AMSU_inventory.f90/read_amsu_L2A_inventory_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      read_amsu_L2A_inventory_file(sat_num,inv,error)

PURPOSE

    reads AMSU L1B Inventory file in binary form

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    channel    AMSU channel number

OUTPUTS

    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.
    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_amsu_L2A_inventory_file(sat_num,channel,inv,error)

24. MLT_RSS/AMSU_inventory.f90/read_amsu_L2A_inventory_file_text [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      read_amsu_L2A_inventory_file_text

PURPOSE

    reads AMSU L1B Inventory file in text form

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    channel    AMSU channel number

OUTPUTS

    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.
    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_amsu_L2A_inventory_file_text(sat_num,channel,inv,error)

25. MLT_RSS/AMSU_inventory.f90/update_amsu_inventory_data [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      update_amsu_inventory_data

PURPOSE

    updates an amsu L1B inventory data record using data from AMSU L1A orbit structure

INPUTS

    type(amsu_inventory_str)              :: inv   ! inventory of AMSU orbits in structured variable.
    type(amsu_L1A_orbit_data)                     :: L1A_orbit_data  !L1A orbit data
    sat_num    AMSU satellite number (10 = NOAA-15, etc)  ! satellite number (10 == NOAA-15, etc)
    integer(4) :: orbit_num   ! orbit numbers

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call update_amsu_inventory_data(amsu_inventory,L1A_orbit_data,sat_num,orbit_num)

26. MLT_RSS/AMSU_inventory.f90/update_AMSU_L2A_inventory [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      update_amsu_L2A_inventory

PURPOSE

    updates an amsu L2A inventory data record using data from AMSU L2A orbit structure

INPUTS

    type(amsu_inventory_str)              :: L2A_inventory   ! inventory of AMSU orbits in structured variable.
    type(amsu_L1A_orbit_data)                     :: L2A_orbit       ! L2A orbit data
    sat_num    AMSU satellite number (10 = NOAA-15, etc)  ! satellite number (10 == NOAA-15, etc)
    integer(4) :: orbit_num   ! orbit numbers

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call update_AMSU_L2A_inventory(amsu_inventory,L2A_orbit,sat_num,orbit_num)

27. MLT_RSS/AMSU_inventory.f90/write_amsu_l1b_inventory_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      write_amsu_l1b_inventory_file

PURPOSE

    writes AMSU L1B Inventory file in binary format

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    write_amsu_l1b_inventory_file(sat_num,inv,error)

28. MLT_RSS/AMSU_inventory.f90/write_amsu_l1b_inventory_file_text [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      write_amsu_l1b_inventory_file_text

PURPOSE

    writes AMSU L1B Inventory file in text format

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    write_amsu_l1b_inventory_file_text(sat_num,inv,error)

29. MLT_RSS/AMSU_inventory.f90/write_amsu_L2A_inventory_file_text [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      write_amsu_L2A_inventory_file_text

PURPOSE

    reads AMSU L1B Inventory file in text form

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    channel    AMSU channel number
    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call write_amsu_L2A_inventory_file_text(sat_num,channel,inv,error)

30. MLT_RSS/AMSU_inventory.f90/writes_amsu_L2A_inventory_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      write_amsu_L2A_inventory_file(sat_num,inv,error)

PURPOSE

    writes AMSU L1B Inventory file in binary form

INPUTS

    sat_num    AMSU satellite number (10 = NOAA-15, etc)
    channel    AMSU channel number
    type(amsu_inventory_str)   :: inv   ! inventory of AMSU orbits in structured variable.

OUTPUTS

    integer(4) :: error                 ! error flag.  0 if all OK, -1 if out of bounds satellite number passed

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call write_amsu_L2A_inventory_file(sat_num,channel,inv,error)

31. MLT_RSS/AMSU_Level_1B.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_Level_1B.f90

PURPOSE

    Module for read, writing and storing AMSU L1B data

DESCRIPTION

    Module for read, writing and storing AMSU L1B data

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_Level_1B

32. MLT_RSS/AMSU_Level_1B.f90/compare_header_calibration_data_for_critical_changes [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    compare_header_calibration_data_for_critical_changes

PURPOSE

    compares two sets of header data for important (i.e. calibration related) changes 

INPUTS

       type(AMSU_A_Data_to_Keep_from_Header)                                           :: calibration_data           ! calibration data from new file    
               type(AMSU_A_Data_to_Keep_from_Header)                                           :: calibration_data_last_file ! calibration data from last file  
               logical                                                                                                         :: write_log  ! set to true to write results to log file

OUTPUTS

               logical                                                                                                         :: change_critical   ! set to true if important change is detected
               logical                                                                                                         :: header_is_nonsense ! set to true if new header is garbled

USAGE

     call compare_header_calibration_data_for_critical_changes(calibration_data,calibration_data_last_file,change_critical,header_is_nonsense,write_log)

33. MLT_RSS/AMSU_Level_1B.f90/decode_amsu_l1b_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_amsu_l1b_orbit_file_header

PURPOSE

    Decodes header data from binary form to structured form

INPUTS

    character(len=2560)                                :: header             ! orbit header data in binary form

OUTPUTS

    type(amsu_L1B_orbit_header)                :: amsu_orbit_header  ! orbit header data in structured form

USAGE

     call encode_amsu_l1b_orbit_file_header(header,amsu_orbit_header)

34. MLT_RSS/AMSU_Level_1B.f90/decode_amsu_l1b_orbit_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_amsu_l1b_orbit_scan

PURPOSE

    Decodes scan data from binary form to structured form

INPUTS

    character(len = AMSU_LEVEL_1_RECORD_LENGTH) :: raw_scan      ! orbit scan data in binary form

OUTPUTS

    type(AMSU_A_L1B_swath_Data)                                 :: AMSU_L1B_scan ! orbit scan data in structured form
    integer(4)                                  :: error         1 error flag, set to 0 if all OK

USAGE

     call decode_amsu_L1B_orbit_scan(raw_scan,AMSU_L1B_scan,error)

35. MLT_RSS/AMSU_Level_1B.f90/decode_calibration_data [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_calibration_data

PURPOSE

    Decodes AMSU calibration data from binary form to structured form

INPUTS

    character(len = 462)                               :: calibration_data       ! calibration data in binary form

OUTPUTS

    type(AMSU_A_L1B_Calibration_Data)  :: decoded_calibration_data ! calibration data in structured form

USAGE

     call decode_calibration_data(calibration_data,decoded_calibration_data)

36. MLT_RSS/AMSU_Level_1B.f90/encode_amsu_l1b_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    encode_amsu_l1b_orbit_file_header

PURPOSE

    Encodes header data into binary form for writing

INPUTS

    type(amsu_L1B_orbit_header)                :: amsu_orbit_header  ! orbit header data in structured form

OUTPUTS

    character(len=2560)                                :: header             ! orbit header data in binary form

USAGE

     call encode_amsu_l1b_orbit_file_header(amsu_orbit_header,header)

37. MLT_RSS/AMSU_Level_1B.f90/get_temps_from_L1B_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    get_temps_from_L1B_scan

PURPOSE

    extracts intrument temperature data from L1B scan

INPUTS

     type(AMSU_A_L1B_Swath_Data)                               :: L1B_scan
         type(AMSU_A_Data_to_Keep_from_Header) :: calibration_data                                                                                                             :: write_log  ! set to true to write results to log file

OUTPUTS

               real(4),dimension(45)                                   :: instrument_temperatures   ! array of instrument temperatures
               integer(4)                                                              :: error                     ! error flag

USAGE

     call get_temps_from_L1B_scan(     L1B_scan,Calibration_data,instrument_temperatures,error)

38. MLT_RSS/AMSU_Level_1B.f90/read_AMSU_Header_Data_List [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_Header_Data_List

PURPOSE

    reads list of unique header data (includes calibration data) 

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)

OUTPUTS

    integer(4)                     :: num_in_list     ! number of unique headers
        type(AMSU_A_Data_to_Keep_from_Header),dimension(15)    :: AMSU_header_data_list  ! list of header data, including calibration data

USAGE

     read_AMSU_Header_Data_List(satellite_name,num_in_list,header_list)

39. MLT_RSS/AMSU_Level_1B.f90/read_AMSU_L1A_orbit_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_L1A_orbit_file

PURPOSE

    reads AMSU_L1A_orbit_file

INPUTS

    character(len=7)                                                                   :: satellite_name
    integer(4)                                                                                 :: orbit_number

OUTPUTS

        type(amsu_L1B_orbit_header)                                            :: amsu_orbit_header ! AMSU L1B header in structured form
        type(amsu_L1A_orbit_data)                                                  :: amsu_orbit_data   ! AMSU L1A orbit data 
    integer(4)                                         :: error       ! error flag

USAGE

     call read_AMSU_L1A_orbit_file(satellite_name,orbit_number,amsu_orbit_header,amsu_orbit_data,error)

40. MLT_RSS/AMSU_Level_1B.f90/read_AMSU_L1B_orbit_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_L1B_orbit_file

PURPOSE

    reads AMSU_L1B_orbit_file

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number

OUTPUTS

         type(amsu_L1B_orbit_header)   :: amsu_orbit_header ! orbit header in structured form 
     type(amsu_L1B_orbit_data)     :: amsu_orbit_data   ! orbit data in structured form 
     integer(4)                    :: error             ! error flag

USAGE

     call read_AMSU_L1A_orbit_file(satellite_name,orbit_number,amsu_orbit_header,amsu_orbit_data,error)

41. MLT_RSS/AMSU_Level_1B.f90/read_AMSU_L1B_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_L1B_orbit_file_header

PURPOSE

    reads header from AMSU_L1B_orbit_file

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number

OUTPUTS

         type(amsu_L1B_orbit_header)   :: amsu_orbit_header ! orbit header in structured form 
     integer(4)                    :: error             ! error flag

USAGE

     call read_AMSU_L1A_orbit_file_header(satellite_name,orbit_number,amsu_orbit_header,error)

42. MLT_RSS/AMSU_Level_1B.f90/write_AMSU_Header_Data_List [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    write_AMSU_Header_Data_List

PURPOSE

    writes list of unique header data (includes calibration data) 

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                     :: num_in_list     ! number of unique headers
        type(AMSU_A_Data_to_Keep_from_Header),dimension(15)    :: AMSU_header_data_list  ! list of header data, including calibration data

USAGE

     write_AMSU_Header_Data_List(satellite_name,num_in_list,header_list)

43. MLT_RSS/AMSU_Level_1B.f90/write_AMSU_L1B_orbit_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    write_AMSU_L1B_orbit_file

PURPOSE

    writes AMSU_L1B_orbit_file

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number
    type(amsu_L1B_orbit_data)      :: amsu_orbit_data   ! orbit data in structured form 
        integer(4)                                             :: num_scans    ! number of scans (not used)
        real(8)                                                :: eqx_rd_2000  ! ascending node crossing time
        type(AMSU_A_Data_to_Keep_from_Header),dimension(15)    :: AMSU_header_data_list  ! list of header data, including calibration data

OUTPUTS

         integer(4),dimension(10)      :: tot_err           ! accumulated errors, sorted by type.
     integer(4)                    :: error             ! error flag

USAGE

     call write_AMSU_L1A_orbit_file(   satellite_name,orbit_number,amsu_orbit_data,num_scans,eqx_rd_2000,AMSU_header_data_list,tot_err,error)

44. MLT_RSS/AMSU_Level_1B.f90/zero_amsu_l1b_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    zero_amsu_l1b_orbit_file_header

PURPOSE

    Zeros header data from binary form to structured form

INPUTS_OUTPUTS

    type(amsu_L1B_orbit_header)                :: amsu_orbit_header  ! orbit header data in structured form

USAGE

     call zero_amsu_l1b_orbit_file_header(amsu_orbit_header)

45. MLT_RSS/AMSU_Level_1B.f90/zero_amsu_l1b_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    zero_amsu_l1b_scan

PURPOSE

    Zeros AMSU L1B scan data

INPUTS_OUTPUTS

    type(AMSU_A_L1B_Swath_Data)        :: amsu_L1B_scan  ! L1B scan data in structured form

USAGE

     zero_amsu_l1b_scan(amsu_L1B_scan)

46. MLT_RSS/AMSU_Level_2A.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_Level_2A.f90

PURPOSE

    Module for reading, writing and storing AMSU L2A data

DESCRIPTION

    Module for reading, writing and storing AMSU L2A data.  L2A files are stored in flat binary form,
    so there is quite a bit of code that converts from the flat binary form to easier to understand
    fortran structures.  Structures are defined in AMSU_types.f90

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_Level_2A

47. MLT_RSS/AMSU_Level_2A.f90/decode_AMSU_L2A_Header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_AMSU_L2A_Header

PURPOSE

    decodes AMSU L2A Header in binary form to structured form

INPUTS

    character(len = AMSU_LEVEL_2A_RECORD_LENGTH)               :: scan_string    ! header and scan valid data in bianry form for writing to L2A file

OUTPUTS

    type(AMSU_L2A_orbit_header)                     :: L2A_orbit_header  ! in structured from
    integer(4),dimension(AMSU_MAX_SCANS_PER_ORBIT)      :: scan_valid        ! positive value means scan is valid

USAGE

     call decode_AMSU_L2A_Header(scan_string,L2A_orbit_header,scan_valid)

48. MLT_RSS/AMSU_Level_2A.f90/decode_AMSU_L2A_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_AMSU_L2A_scan

PURPOSE

    decodes AMSU L2A scan to structured from binary form

INPUTS

    character(len = AMSU_LEVEL_2A_RECORD_LENGTH)               :: scan_string    ! header and scan valid data in bianry form for writing to L2A file

OUTPUTS

    type(AMSU_A_L2A_Swath_Data)                                                :: AMSU_L2A_scan

USAGE

     call encode_AMSU_L2A_scan(AMSU_L2A_scan,scan_string)

49. MLT_RSS/AMSU_Level_2A.f90/encode_AMSU_L2A_Header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    encode_AMSU_L2A_Header

PURPOSE

    encodes AMSU L2A Header from structured to binary form

INPUTS

    type(AMSU_L2A_orbit_header)                     :: L2A_orbit_header  ! in structured from
    integer(4),dimension(AMSU_MAX_SCANS_PER_ORBIT)      :: scan_valid        ! positive value means scan is valid
    integer(4)                     :: channel         ! AMSU channel

OUTPUTS

    character(len = AMSU_LEVEL_2A_RECORD_LENGTH)               :: scan_string    ! header and scan valid data in bianry form for writing to L2A file

USAGE

     call encode_AMSU_L2A_Header(      L2A_orbit_header,scan_valid,scan_string) 

50. MLT_RSS/AMSU_Level_2A.f90/encode_AMSU_L2A_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    encode_AMSU_L2A_scan

PURPOSE

    encodes AMSU L2A scan from structured to binary form

INPUTS

    type(AMSU_A_L2A_Swath_Data)                                                :: AMSU_L2A_scan

OUTPUTS

    character(len = AMSU_LEVEL_2A_RECORD_LENGTH)               :: scan_string    ! header and scan valid data in bianry form for writing to L2A file

USAGE

     call encode_AMSU_L2A_scan(AMSU_L2A_scan,scan_string)

51. MLT_RSS/AMSU_Level_2A.f90/ero_amsu_L2A_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    zero_amsu_L2A_orbit_file_header

PURPOSE

    zeros AMSU L2A scan in structured form

INPUTS_OUTPUTS

               type(AMSU_L2A_orbit_header)                     :: L2A_orbit_header

USAGE

     callzero_amsu_L2A_orbit_file_header(L2A_orbit_header)

52. MLT_RSS/AMSU_Level_2A.f90/read_AMSU_L2A_orbit_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_L2A_orbit_file

PURPOSE

    reads AMSU_L2A_orbit_file

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number
    integer(4)                     :: channel         ! AMSU channel

OUTPUTS

    type(AMSU_L2A_orbit_header)    :: L2A_orbit_header  ! in structured from
        type(AMSU_L2A_orbit_data)              :: L2A_orbit         ! in structured from
    integer(4)                    :: error             ! error flag

USAGE

     call write_AMSU_L1A_orbit_file(   satellite_name,orbit_num,channel,L2A_orbit_header,L2A_orbit,error)

53. MLT_RSS/AMSU_Level_2A.f90/read_AMSU_L2A_orbit_file_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_AMSU_L2A_orbit_file_header 

PURPOSE

    reads AMSU_L2A orbit file header

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number
    integer(4)                     :: channel         ! AMSU channel

OUTPUTS

    type(AMSU_L2A_orbit_header)    :: L2A_orbit_header  ! in structured from
    integer(4)                    :: error             ! error flag

USAGE

     call write_AMSU_L1A_orbit_file_header(satellite_name,orbit_num,channel,L2A_orbit_header,error)

54. MLT_RSS/AMSU_Level_2A.f90/write_AMSU_L2A_orbit_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    write_AMSU_L2A_orbit_file

PURPOSE

    writes AMSU_L2A_orbit_file

INPUTS

    character(len=7)                           :: satellite_name  ! satellite name (NOAA-15, etc)
    integer(4)                                         :: orbit_number    ! AMSU orbit number
    integer(4)                     :: channel         ! AMSU channel
    type(AMSU_L2A_orbit_header)    :: L2A_orbit_header  ! in structured from
        type(AMSU_L2A_orbit_data)              :: L2A_orbit         ! in structured from

OUTPUTS

     integer(4)                    :: error             ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

     call write_AMSU_L1A_orbit_file(   satellite_name,orbit_num,channel,L2A_orbit_header,L2A_orbit,error)

55. MLT_RSS/AMSU_Level_2A.f90/zero_amsu_L2A_scan [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    zero_amsu_L2A_scan

PURPOSE

    zeros AMSU L2A scan in structured form

INPUTS_OUTPUTS

    type(AMSU_A_L2A_Swath_Data)                                                :: AMSU_L2A_scan

USAGE

     call zero_amsu_L2A_scan(L2A_Scan)

56. MLT_RSS/AMSU_Nadir.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_Nadir.f90

PURPOSE

    Module for performing incidence angle adjustments to AMSU measurements

DESCRIPTION

    Module for performing incidence angle adjustments to AMSU measurements
    Uses a model derived fov and angle perturbation climatology for the calculations.
    The climatology is caclulated separately for each AMSU channel

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_Nadir

57. MLT_RSS/AMSU_nadir.f90/amsu_simulated_tb [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      amsu_simulated_tb

PURPOSE

      Calculates simulated AMSU Tb for a given channel, incidence angle, field of view, latitude, longitude and date.

INPUTS

               integer(4)                              :: chan    ! AMSU channel
               integer(4)                              :: fov     ! field of view index
               real(4)                                 :: theta   ! earth incidence angle (degrees)
               real(4)                                 :: lon     ! longitude
               real(4)                                 :: lat     ! latitude
               type(date_Str)                  :: date    ! date, in date structure form

OUTPUTS

       Error       Error Flag.  0 if everything OK, not zero otherwise

RETURNED VALUE

       climatological Tb value for the given parameters

USAGE

      Tb = amsu_simulated_tb(chan,fov,theta,lon,lat,date,error)

58. MLT_RSS/AMSU_nadir.f90/calculate_nadir_correction [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      calculate_nadir_correction

PURPOSE

      Calculate nadir and incidence angle Corrections for a single AMSU scan line

INPUTS

      channel     AMSU channel number

INPUTS_OUTPUTS

      L2A_Scan    Structure containing AMSU L2A Scan data

OUTPUTS

      Error       Error Flag.  0 if everything OK, not zero otherwise

USAGE

      Call calculate_nadir_correction(L2A_scan,channel,error)

59. MLT_RSS/AMSU_nadir.f90/geometry [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      geometry

PURPOSE

       calculates EIA tht for given nadir looking angle tht_nadir 

DESCRIPTION

       calculates EIA tht for given nadir looking angle tht_nadir
           at geodesic latitude xlat and height z above ground
               approximates the surface of the earth by a sphere with
           radius of curvature rho (c.f. RSS SSM/I Users Manual, DEC1, 1991)

INPUTS

               real(4)     tht_nadir   ! look angle
       real(4)     xlat        ! latitude of point on surface
       real(4)     z           ! height of satellite above surface

OUTPUTS

       real(4)     tht         ! earth incidence angle

USAGE

      call geometry (tht_nadir,xlat,z,tht)

60. MLT_RSS/AMSU_nadir.f90/read_amsu_tb_sim [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

      read_amsu_tb_sim

PURPOSE

      reads in climatological Tb data for a given channel and month and year

INPUTS

               integer(4)                                                              :: chan
               integer(4)                                                              :: month
               integer(4)                                                              :: year

OUTPUTS

       Error       Error Flag.  0 if everything OK, not zero otherwise

REMARKS

       loads climatological Tb value into module variable tb_sim

USAGE

      call read_amsu_tb_sim(chan,month,year,error)

61. MLT_RSS/AMSU_Quality.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    AMSU_Quality.f90

PURPOSE

    Module for performing rudimentary quality control for AMSU brightness temperatures

DESCRIPTION

    Module for performing rudimentary quality control for AMSU brightness temperatures

ROUTINES

     subroutine evaluate_amsu_quality_indicator(quality_indicator,scan_ok)  ! evaluates NOAA quality bits for fatal problems
     subrouinte check_tbs_against_bounds(Tbs,chan,fov_qual)                 ! checks TBs against reasonableness bounds for each channel

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    use AMSU_quality

62. MLT_RSS/AMSU_Quality.f90/check_tbs_against_bounds [ Modules ]

[ Top ] [ Modules ]

NAME

    check_tbs_against_bounds

PURPOSE

    Checks brightness temperatures agains reasonableness bounds.

DESCRIPTION

    Checks brightness temperatures agains reasonableness bounds.

INPUTS

    integer(4)   :: quality indicator   ! 4 byte integer of quality indicator flags

OUTPUTS

    integer(1),dimension(30)        :: fov_qual           !  field of view flag -- set to negative number if out of bounds
                                                          !  or not finite

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    call check_tbs_against_bounds(Tbs,chan,fov_qual)

63. MLT_RSS/AMSU_Quality.f90/evaluate_amsu_quality_indicator [ Modules ]

[ Top ] [ Modules ]

NAME

    evaluate_amsu_quality_indicator

PURPOSE

    Evaluates NOAA provided quality flags for fatal errors

DESCRIPTION

    Evaluates NOAA provided quality flags for fatal errors

INPUTS

    integer(4)   :: quality indicator   ! 4 byte integer of quality indicator flags

OUTPUTS

    logical(4)   :: scan_ok  !  flag -- set true of scan appears to be OK

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    8/15/2012 Initial Version prepared for NCDC

USAGE

    call evaluate_amsu_quality_indicator(quality_indicator,scan_ok)

64. MLT_RSS/AMSU_SAA.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    module AMSU_SAA

PURPOSE

    module containing routines for reading and decoding AMSU L1A files from
    CLASS

DESCRIPTION

    module containing routines for reading and decoding AMSU L1A files from
    CLASS.  

ROUTINES

      read_SAA_AMSU_archive_header
      read_raw_AMSU_header
      get_AMSU_calibration_data_from_header
      read_SAA_AMSU_header
      read_SAA_AMSU_swath
      decode_SAA_AMSU_swath
      find_rd_2000_from_AMSU_L1A_Swath

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    use msu_date

65. MLT_RSS/AMSU_SAA.f90/decode_date_and_earth_loc_from_SAA_AMSU_swath [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_date_and_earth_loc_from_SAA_AMSU_swath

PURPOSE

    decodes earth location data from AMSU L1A swath

DESCRIPTION

    decodes earth location data from AMSU L1A swath

INPUT

    character(len = AMSU_LEVEL_1_RECORD_LENGTH) :: raw_scan

OUTPUT

    real(8)                                                            :: scan_rd_2000    !time of scan, in RD2000 format
    real(4)                                                            :: nadir_latitude  !nadir lat of scan
    real(4)                                                            :: nadir_longitude !nadir lon of scan
    integer(4)                                                     :: quality_indicator ! scan quality flag
    integer(4)                                             :: error  ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call rdecode_date_and_earth_loc_from_SAA_AMSU_swath(raw_scan,scan_rd_2000, nadir_latitude,nadir_longitude,quality_indicator, error)

66. MLT_RSS/AMSU_SAA.f90/decode_SAA_AMSU_swath [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    decode_SAA_AMSU_swath

PURPOSE

    fully decodes AMSU L1A swath

DESCRIPTION

     fully decodes AMSU L1A swath

INPUT

    character*1,dimension(2560)                        :: raw_swath

OUTPUT

    type(AMSU_A_L1B_Swath_Data)                        :: AMSU_L1A_Swath
    integer(4)                                             :: error  ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call decode_SAA_AMSU_swath(raw_swath,AMSU_L1A_Swath,error)                                 

67. MLT_RSS/AMSU_SAA.f90/find_rd_2000_from_AMSU_L1A_Swath [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    find_rd_2000_from_AMSU_L1A_Swath

PURPOSE

    calculates scan time in RD2000 format from decoded AMSU L1A swath

DESCRIPTION

    calculates scan time in RD2000 format from decoded AMSU L1A swath

INPUT

    type(AMSU_A_L1B_Swath_Data)                        :: AMSU_L1A_Swath

OUTPUT

    real(8)                                                            :: amsu_rd_2000
    integer(4)                                                     :: error

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call find_rd_2000_from_AMSU_L1A_Swath(AMSU_L1A_Swath,amsu_rd_2000,error)

68. MLT_RSS/AMSU_SAA.f90/get_AMSU_calibration_data_from_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    get_AMSU_calibration_data_from_header

PURPOSE

    parses calibration data out of header

DESCRIPTION

    parses calibration data out of header

INPUT

    character(len = AMSU_LEVEL_1_RECORD_LENGTH) :: raw_header

OUTPUT

    type(AMSU_A_Data_to_Keep_from_Header)              :: AMSU_header_data

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call get_AMSU_calibration_data_from_header(raw_Header,AMSU_header_data)

69. MLT_RSS/AMSU_SAA.f90/read_raw_AMSU_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_raw_AMSU_header

PURPOSE

    reads header on raw AMSU files

DESCRIPTION

    reads header on raw AMSU files

INPUT

     AMSU_SAA_LU   logical unit number for AMSU SAA file

OUTPUT

    character(len = AMSU_LEVEL_1_RECORD_LENGTH) :: raw_header
    integer(4)                   :: error

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_raw_AMSU_header(AMSU_SAA_LU,raw_Header,error)

70. MLT_RSS/AMSU_SAA.f90/read_SAA_AMSU_archive_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_SAA_AMSU_archive_header

PURPOSE

    reads SAA Archive header on AMSU files

DESCRIPTION

    reads SAA Archive header on AMSU files

INPUT

     AMSU_SAA_LU   logical unit number for AMSU SAA file

OUTPUT

    character(len = 42)  :: file_name  ! file name from header
    integer(4)                   :: error

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_SAA_AMSU_archive_header(AMSU_SAA_LU,file_name,error)

71. MLT_RSS/AMSU_SAA.f90/read_SAA_AMSU_header [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    read_SAA_AMSU_header

PURPOSE

    reads and decodes AMSU L1A header

DESCRIPTION

    reads and decodes AMSU L1A header

INPUT

     AMSU_SAA_LU   !logical unit number for AMSU SAA file

OUTPUT

     type(AMSU_A_L1A_File_Header)              :: AMSU_L1A_Header  ! decoded header info
     integer(4)                                            :: error  ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call read_SAA_AMSU_header(AMSU_SAA_LU,AMSU_L1A_Header,error)

72. MLT_RSS/byte_swapping.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    byte_swapping

PURPOSE

    module containing a number of routines that perform byte swapping

DESCRIPTION

    module containing a number of routines that perform byte swapping.  The function "byte_swap" is overloaded
    and calls the appropriate of the 4 routines below to perfrom a big endian to little endian byte swap.

ROUTINES

      real(4) function real_4_byte_swap(x)
      real(8) function real_8_byte_swap(x)
      integer(4) function int_4_byte_swap(x)
      integer(2) function int_2_byte_swap(x)

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use byte_swap
    j = byte_swap(i)

73. MLT_RSS/date_and_time.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    module date_and_time

PURPOSE

    pseudoclass for date and time calculations

DESCRIPTION

    pseudoclass for date and time calculations.

VARIABLES

    the pseudoclass has two important types defined

               type time_str
                       real(8)         :: m_secs               ! seconds since midnight
                       integer(4)      :: hour                 ! hour of day
                       integer(4)      :: minute               ! minute of hour
                       real(8)         :: sec                  ! second of minute
                       logical         :: updated              ! true if m_secs agree with hours,minute and second
               end type time_str
               type date_str
                       real(8)                 :: r_d      ! days since Jan 1, 1, gregorian calender
                       real(8)                 :: rd_2000  ! days since Jan 1, 2000
                       integer(4)              :: year         ! year
                       integer(4)              :: oday         ! ordinal day in the given year
                       integer(4)              :: month        ! month in year
                       integer(4)              :: day          ! day in month
                       type(time_str)  :: time         ! time of day
                       logical                 :: updated  ! true if Jul_day agrees with other info
               end type date_str

REMARKS

       There are 3 overloaded subroutines for setting the date and time
       set_date
       set_date_2000
       set_time

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES,
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use date_and_time

74. MLT_RSS/date_and_time.f90/set_date [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

             set_date

PURPOSE

             set_date sets the date and time using 6 different methods.  The method is choosen automatically depending on the

DESCRIPTION

             set_date sets the date and time using 6 different methods.  The method is choosen automatically depending on the
             number and type of the arguments.
             here is a list of the methods:
                   -module procedure set_date_int_r_d          !(r_d,error)   2 integer(4)'s
                           -module procedure set_date_real_r_d         !(r_d,error)   1 real(8) and 1 integer(4)
                           -module procedure set_date_m_d_y                    !(month,day,year,error) 4 integer(4)'s
                           -module procedure set_date_m_d_y_int_t      !(month,day,year,hour,minute,second,error) 7 integer(4)'s
                           -module procedure set_date_m_d_y_real_t     !(month,day,year,hour,minute,second,error) 5 integer(4)'s, 1 real(8), 1 integer(4)
                           -module procedure set_date_m_d_y_m_secs     !(month,day,year,secs_since_midnight,error) 3 integer(4)'s, 1 real(8), 1 integer(4)
                           -module procedure set_date_od_y_msecs       !(secs_since_midnight,ordinal_day#,year,error) 1 real(8), 3 integer(4)'s          !

RETURN VALUE

               type(date_str)       :: date

USAGE

               date = set_date(month,day,year,hour,minutes,second,error)

75. MLT_RSS/date_and_time.f90/set_date_2000 [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

             set_date_2000

PURPOSE

             set_date sets the from the date in rd_2000 format.  The method is choosen automatically depending on the

DESCRIPTION

             set_date sets the date and time using 4 different methods.  The method is choosen automatically depending on the
             type of the argument.
             here is a list of the methods:
                   module procedure set_date_2000_real4
                           module procedure set_date_2000_real8
                           module procedure set_date_2000_int4         
                           module procedure set_date_2000_int2

RETURN VALUE

               type(date_str)       :: date

USAGE

               date = set_date(rd_2000)

76. MLT_RSS/date_and_time.f90/set_time [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

         set_time 

PURPOSE

            sets the time of day using two different methods.  The method is chosen
            automatically depending on the number and type of arguments

INPUT

               real(8),intent(IN)                      :: msecs   !seconds since midnight

OUTPUT

                           integer(4),intent(OUT)              :: error   !set to zero if no error

RETURN VALUE

               type(time_str)              :: time

USAGE

               time = set_time(msecs,error)\

                   NAME
              type(time_str) function set_time_hms(hours,minutes,secs,error)

INPUTS

               integer(4)                                      :: hours    !hour of day (0 - 23)
                       integer(4)                                      :: minutes  !minutes in hour
                       real(8),intent(IN)                      :: secs     !seconds in minute

OUTPUT

                       integer(4),intent(OUT)          :: error    !set to zero if no error

RETURN VALUE

               type(time_str)              :: time

USAGE

               time =set_time(hour,minutes,secs,error)

77. MLT_RSS/logging.f90/init_log_file [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    init_log_file

PURPOSE

    Opens log file with name file

DESCRIPTION

    Opens log file with name "file".  This file is accessible to any routine that includes logging, simplifying
    log file writing. 

INPUTS

    character(len = 120)    :: file    ! file name to open as log file

OUTPUTS

    integer(4)              :: error   ! error flag.  0 mean everything OK

USAGE

     call init_log_file(file,error)

78. MLT_RSS/logging.f90/log [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    log

PURPOSE

    write a message to the open log file.

INPUTS

    character*(*)    :: a       ! message to write to log file

OUTPUTS

    integer(4)              :: error   ! error flag.  0 mean everything OK

USAGE

     call log(file,error)

79. MLT_RSS/maps.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    module maps

PURPOSE

    psuedoclass that defines and manipulates a rectangular gridded map type

DESCRIPTION

    psuedoclass that defines and manipulates a rectangular gridded map type

VARIABLES

    the pseudoclass defines a map type

       type map_str
               real(4)                                                 :: min_x                 ! minimum x value
               real(4)                                                 :: max_x         ! maximum x value
               real(4)                                                 :: delta_x       ! spacing points in x direction
               integer(4)                                              :: num_x                 ! number of x points
               integer(4)                                              :: type_x        ! type of grid in x direction (see explantion below)
               real(4)                                                 :: min_y                 ! minimum y value
               real(4)                                                 :: max_y                 ! maximum x value
               real(4)                                                 :: delta_y               ! spacing points in x direction
               integer(4)                                              :: num_y                 ! number of x points
               integer(4)                                              :: type_y                ! type of grid in x direction (see explantion below)
               integer(4)                                              :: type_bc               ! type of boundary conditions
               real(4),dimension(:,:),pointer  :: dat               ! map data
       end type map_str

REMARKS

  explanation of the grid type flag:

  There are basically two types of evenly spaced rectangular gridded map --

               1. Those for which the value represents the value in a cell - I'll call this cell_centered
                     for these maps, the lower left value represents the value in the cell defined
             by long = (0.0:delta_x), lat = (-90,-90+delta_y), and is associated with at point at
                         (delta_x/2.0, -90+delta_x/2.0)
               2. Those for which the value represents the value on the vertex between cells - I'll call this edge_centered
                         for these maps, the lower left value represents the value at the point 
                         by long = 0.0, lat = (-90).  A peculiar feature of this sort of grid is
                         that the row at -90.0 must be identical, since it all refers to the same point!
               For now, all routines in the module assume that maps obey spherical boundary conditions
               For now, all maps are not redundant at the vertical edges
               
               This means that for both types of grids, 360.0/(delta_x) longitude points are needed, and the only different is
               whether the values are offset by 0.5*delta_x

               For cell_centered grids, 180/(delta_y) latitude points are needed, and for 
               Edge centered grids 180/(delta_y) + 1 latitude points are needed

               note that mixed grid types are allowed, with the lat and long grids being different types

ROUTINES

    set_up_map(min_x,delta_x,num_x,type_x,min_y,delta_y,num_y,type_y,type_bc,mp,error)
    zero_map(mp,error)
    deallocate_map(mp,error)
    get_map_value(mp,xx,yy,value,error)
    get_map_value_no_interp(mp,xx,yy,value,error)
    wrap_indices(mp,ix,iy,ix_wrapped,iy_wrapped,error)
    map_value(mp,ix,iy,error)
    get_grid_location(mp,ix,iy,x,y,error)
    get_vertex_location(mp,x,y,ix,iy,error)
    get_grid_indices(mp,x,y,ix,iy,error)
    get_vertex_indices(mp,x,y,ix,iy,error)

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use maps

80. MLT_RSS/maps.f90/calc_relative_position [ Modules ]

[ Top ] [ Modules ]

NAME

   calc_relative_position

PURPOSE

 calculates the relative positon of the point x,y relative to the
 vertex ix,iy.  

DESCRIPTION

 calculates the relative positon of the point x,y relative to the
 vertex ix,iy.  Since x, y is constrained to be within the
 bounds of the map, the modulo arithmatic is relatively simple,
 as long as x,y id within half a delta of the vertex.  This is
 assumed to be the case here

INPUTS

   mp       ! map to be sampled
   x       ! x location in real space
   y       ! x location in real space
   ix       ! x index
   iy       ! y index

OUTPUTS

   x_rel   ! relative x distance to vertex
   y_rel   ! relative y distance to vertex
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call calc_relative_position(mp,x,y,ix,iy,x_rel,y_rel,error)

81. MLT_RSS/maps.f90/deallocate_map [ Modules ]

[ Top ] [ Modules ]

NAME

    deallocate_map

PURPOSE

    deallocates data space in variable of map type

DESCRIPTION

    deallocates data space in variable of map type

INPUTS

   mp       ! map to be deallocated

OUTPUTS

   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call deallocate_map(mp,error)

82. MLT_RSS/maps.f90/get_grid_indices [ Modules ]

[ Top ] [ Modules ]

NAME

   get_grid_indices

PURPOSE

 returns the indices of the grid point in whose cell the
 point x,y is located

DESCRIPTION

 returns the indices of the grid point in whose cell the
 point x,y is located

INPUTS

   mp       ! map to be sampled
   x       ! x location in real space
   y       ! x location in real space

OUTPUTS

   ix       ! x index
   iy       ! y index
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_grid_indices(mp,x,y,ix,iy,error)

83. MLT_RSS/maps.f90/get_grid_location [ Modules ]

[ Top ] [ Modules ]

NAME

    get_grid_location

PURPOSE

 this subroutine returns the location in real map space of
 the grid point ix,iy

DESCRIPTION

 this subroutine returns the location in real map space of
 the grid point ix,iy

INPUTS

   mp       ! map to be sampled
   ix       ! x index
   iy       ! y index

OUTPUTS

   x       ! x location in real space
   y       ! x location in real space
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_grid_location(mp,ix,iy,x,y,error)

84. MLT_RSS/maps.f90/get_map_value [ Modules ]

[ Top ] [ Modules ]

NAME

    get_map_value

PURPOSE

    this subroutine returns the interpolated value at a point x,y

DESCRIPTION

    this subroutine returns the interpolated value at a point x,y
    note that the interpolation is somewhat different depending on 
    what type of grid is used for the map structure

INPUTS

   mp       ! map to be sampled
   xx       ! x location
   yy       ! y location

OUTPUTS

   value    ! interpolated value
   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_map_value(mp,xx,yy,value,error)

85. MLT_RSS/maps.f90/get_map_value_no_interp [ Modules ]

[ Top ] [ Modules ]

NAME

    get_map_value_no_interp

PURPOSE

    this subroutine returns the non-interpolated value at grid point closest to xx,yy

DESCRIPTION

    this subroutine returns the non-interpolated value at grid point closest to xx,yy

INPUTS

   mp       ! map to be sampled
   xx       ! x location
   yy       ! y location

OUTPUTS

   value    ! interpolated value
   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_map_value_no_interp(mp,xx,yy,value,error)

86. MLT_RSS/maps.f90/get_vertex_indices [ Modules ]

[ Top ] [ Modules ]

NAME

   get_vertex_indices

PURPOSE

 returns the indices of the vertex point nearest x,y.  The vertex point is
 where the edges of the cells cross

DESCRIPTION

 returns the indices of the vertex point nearest x,y.  The vertex point is
 where the edges of the cells cross

INPUTS

   mp       ! map to be sampled
   x       ! x location in real space
   y       ! x location in real space

OUTPUTS

   ix       ! x index
   iy       ! y index
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_vertex_indices(mp,x,y,ix,iy,error)

87. MLT_RSS/maps.f90/get_vertex_location [ Modules ]

[ Top ] [ Modules ]

NAME

   get_vertex_location

PURPOSE

 this subroutine returns the location in real map space of
 the vertex point ix,iy

DESCRIPTION

 this subroutine returns the location in real map space of
 the vertex point ix,iy

INPUTS

   mp       ! map to be sampled
   ix       ! x index
   iy       ! y index

OUTPUTS

   x       ! x location in real space
   y       ! x location in real space
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call get_vertex_location(mp,ix,iy,x,y,error)

88. MLT_RSS/maps.f90/map_value [ Modules ]

[ Top ] [ Modules ]

NAME

    map_value

PURPOSE

 this subroutine returns the value of the map at xi,yi even
 if xi and yi are out of range by applying the appropriate
 boundary conditions

DESCRIPTION

 this subroutine returns the value of the map at xi,yi even
 if xi and yi are out of range by applying the appropriate
 boundary conditions

INPUTS

   mp       ! map to be sampled
   ix       ! x index
   iy       ! y index

OUTPUTS

   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    z = map_value(mp,ix,iy,error)

89. MLT_RSS/maps.f90/read_map [ Modules ]

[ Top ] [ Modules ]

NAME

   read_map

PURPOSE

    reads in map from a standard, self describing format

DESCRIPTION

    reads in map from a standard, self describing format
    allocated map structure according to description in file

INPUTS

   unit_num ! logical unit to write to

OUTPUTS

   mp       ! map variable to be read into
   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call ead_map(unit_num,mp,error)

90. MLT_RSS/maps.f90/set_up_map [ Modules ]

[ Top ] [ Modules ]

NAME

    set_up_map

PURPOSE

    sets up an instance of the map type

DESCRIPTION

    sets up an instance of the map type

INPUTS

   min_x    ! minimum value of x (longitude) coordinate
   delta_x  ! size of grid cell in longitude direction (degrees)
   num_x    ! number of grid cells in longitude direction
   type_x   ! type of grid in x direction(cell centered or edge defined)
   min_y    ! minimum value of y (latitude) coordinate
   delta_y  ! size of grid cell in latitude direction (degrees)
   num_y    ! number of grid cells in latitude direction
   type_y   ! type of grid in x direction(cell centered or edge defined)
   type_bc, ! type of boundary conditions (spherical, cylindrical, or no wrapping)

OUTPUTS

   mp       ! new instance of map type
   error    ! error flag

REMARKS

  explanation of the grid type flag:

  There are basically two types of evenly spaced rectangular gridded map --

               1. Those for which the value represents the value in a cell - I'll call this cell_centered
                     for these maps, the lower left value represents the value in the cell defined
             by long = (0.0:delta_x), lat = (-90,-90+delta_y), and is associated with at point at
                         (delta_x/2.0, -90+delta_x/2.0)
               2. Those for which the value represents the value on the vertex between cells - I'll call this edge_centered
                         for these maps, the lower left value represents the value at the point 
                         by long = 0.0, lat = (-90).  A peculiar feature of this sort of grid is
                         that the row at -90.0 must be identical, since it all refers to the same point!
               For now, all routines in the module assume that maps obey spherical boundary conditions
               For now, all maps are not redundant at the vertical edges
               
               This means that for both types of grids, 360.0/(delta_x) longitude points are needed, and the only different is
               whether the values are offset by 0.5*delta_x

               For cell_centered grids, 180/(delta_y) latitude points are needed, and for 
               Edge centered grids 180/(delta_y) + 1 latitude points are needed

               note that mixed grid types are allowed, with the lat and long grids being different types

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call set_up_map(min_x,delta_x,num_x,type_x,min_y,delta_y,num_y,type_y,type_bc,mp,error)

91. MLT_RSS/maps.f90/wrap_indices [ Modules ]

[ Top ] [ Modules ]

NAME

    wrap_indices

PURPOSE

    wraps map indiced according to boundary conditions

DESCRIPTION

    wraps map indiced according to boundary conditions

INPUTS

   mp       ! map to be sampled
   ix       ! x index
   iy       ! y index

OUTPUTS

   ix_wrapped       ! x index, wrapped
   iy_wrapped       ! y index, wrapped
   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call wrap_indices(mp,ix,iy,ix_wrapped,iy_wrapped,error)

92. MLT_RSS/maps.f90/write_map [ Modules ]

[ Top ] [ Modules ]

NAME

   write_map

PURPOSE

    writes out map in a standard, self describing format

DESCRIPTION

    writes out map in a standard, self describing format

INPUTS

   mp       ! map to be written
   unit_num ! logical unit to write to

OUTPUTS

   error   ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    10/21/2012 Initial Version prepared for NCDC

USAGE

    call write_map(mp,unit_num,error)

93. MLT_RSS/maps.f90/zero_map [ Modules ]

[ Top ] [ Modules ]

NAME

    zero_map

PURPOSE

    zeros data in variable of map type

DESCRIPTION

    zeros data in variable of map type

INPUTS

   mp       ! map to be zeroed

OUTPUTS

   error    ! error flag

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    call zero_map(mp,error)

94. MLT_RSS/mcs.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    mcs

PURPOSE

    psuedoclass that reads and write "mcs" self-describing array type

DESCRIPTION

    psuedoclass that reads and write "mcs" self-describing array type

ROUTINES

    subroutine read_real_4_mcs(lu,mat,error)
    subroutine write_real_4_mcs(lu,mat,error)
    deallocate_mcs(mat,error)

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use mcs

95. MLT_RSS/MSU_calibration.f90 [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

    module MSU_calibration

PURPOSE

    psuedoclass for laoding and applying NOAA-supplied MSU calibration parameters

DESCRIPTION

    psuedoclass for laoding and applying NOAA-supplied MSU calibration parameters
    performs MSU counts to antenna temperature conversion step.

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    use MSU_calibration

96. MLT_RSS/MSU_calibration.f90/ [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

           calc_raw_TBs

DESCRIPTION

           calculates MSU Raw brightness temperatures from thermistor temperature and
           corrected radiometer counts

INPUTS

           type(msu_L2A_scan)  :: L2A_scan
               

OUTPUTS

           type(msu_L2A_scan)  :: L2A_scan

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

           call calc_raw_TBs(L2A_scan)

97. MLT_RSS/MSU_calibration.f90/calc_resistances [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

           calc_resistances

DESCRIPTION

           calculates MSU hot load thermistor resistances from instrument counts

INPUTS

           type(msu_raw)               :: L1b_scan
               

OUTPUTS

           type(msu_L2A_scan)  :: L2A_scan

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

           calc_resistances(L1B_scan,L2A_scan)

98. MLT_RSS/MSU_calibration.f90/calc_target_temps [ Subroutines ]

[ Top ] [ Subroutines ]

DESCRIPTION

           calculates MSU hot load thermistor temperatures from thermistor resistance

INPUTS

           type(msu_L2A_scan)  :: L2A_scan
               

OUTPUTS

           type(msu_L2A_scan)  :: L2A_scan

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

           call calc_target_temps(L2A_scan)

99. MLT_RSS/MSU_calibration.f90/get_Mo_1995_NL_Coeff [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

       get_Mo_1995_NL_Coeff

DESCRIPTION

       This reads in the Mo 1995 version of the NOAA operational
       non-linearity corrections.  Values are stored in module variables.

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call get_Mo_1995_NL_Coeff

100. MLT_RSS/MSU_calibration.f90/get_Mo_2001_NL_Coeff [ Subroutines ]

[ Top ] [ Subroutines ]

NAME

       get_Mo_2001_NL_Coeff

DESCRIPTION

       This reads in the Mo 2001 version of the NOAA operational
       non-linearity corrections.  Values are stored in module variables.

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

    call get_Mo_2001_NL_Coeff

101. MLT_RSS/MSU_calibration.f90/msu_non_linearity_correction [ Subroutines ]

[ Top ] [ Subroutines ]

DESCRIPTION

           calculates corrected instrument counts after applying NOAA operational non-linearity correction

INPUTS

           integer(4) :: channel     ! msu channel number
           integer(4) :: sat_num     ! satellite index (TIROS-N = 1, NOO-06 = 1, etc.)
           integer(4) :: version     ! flag -- which version of NL correction to use.
           integer(2) :: counts_raw  ! raw instrument counts

OUTPUTS

           real(8) :: counts_corr    ! adjusted counts
           integer(4) :: error       ! error flag == 0 means all OK

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

    THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND
    THUS ARE AVAILABLE FOR UNRESTRICTED PUBLIC USE.  THEY ARE FURNISHED "AS IS." THE 
    AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
    AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
    SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
    THE USE OF THE SOFTWARE AND DOCUMENTATION!  OR (2) TO PROVIDE TECHNICAL SUPPORT 
    TO USERS.

HISTORY

    9/21/2012 Initial Version prepared for NCDC

USAGE

           call msu_non_linearity_correction(channel,sat_num,version,counts_raw,counts_corr,error)

102. MLT_RSS/NAN_support_intel.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    module NAN_Support

PURPOSE

    module containing Not-A-Number wrapper routines for intel compiler and
    constant parameter NAN valued set equal to 1.0/0.0
    emulates behavior of early module for a compiler that did not explicitly
    support ieee not-a-numbers

DESCRIPTION

     module Not-A-Numbers Wrapper routines for intel compiler 

ROUTINES

      logical function finite(x), overloaded to accept both real(4) and real(8) arguaments

INPUTS

       x    real   number to be tested

OUTPUTS

       returns logical true if number is finite, false if number in any type of non-finite number

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use NAN_Support

103. MLT_RSS/type_conversion.f90 [ Modules ]

[ Top ] [ Modules ]

NAME

    module NAN_Support

PURPOSE

    module containing a number of routines that convert between various fortran types.

DESCRIPTION

    module containing a number of routines that convert between various fortran types.
    it is somewhat mind-boggling that these are not intrinsic functions, at least for
    our compiler.  Used to read and write flat binary files.

ROUTINES

      integer(1) function char_to_int_1(a)
      character(len = 1) function int_1_to_char(i)
      integer(2) function      char_arr_to_int_2(a)
      integer(2) function string_to_int_2(a)
      integer(2) function string_to_int_2(a)
      character(len=2) function int_2_to_string(i)
      integer(4) function string_to_int_4(a)
      integer(4) function string_to_int_4(a)
      real(4) function char_arr_to_real_4(a)
      real(4) function string_to_real_4(a)
      character(len=4) function real_4_to_string(x)
      real(8) function string_to_real_8(a)
      real(8) function char_arr_to_real_8(a)
      character(len=8) function real_8_to_string(x)

AUTHOR

    Carl Mears, Remote Sensing Systems

COPYRIGHT

   THIS SOFTWARE AND ITS DOCUMENTATION ARE COPYRIGHT 2012 REMOTE SENSING SYSTEMS.  
   THEY ARE PROVIDED FOR INFORMATIONAL AND ALGORITHM VERIFICATION PURPOSES ONLY 
   AND MAY NOT BE USED IN WHOLE OR IN PART FOR ANY OTHER PURPOSE WITHOUT WRITTEN
   PERMISSION FROM REMOTE SENSING SYSTEMS.  THEY ARE FURNISHED "AS IS." THE 
   AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, 
   AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE 
   SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE. THEY ASSUME NO RESPONSIBILITY (1) FOR
   THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT 
   TO USERS.

HISTORY

    2/21/2012 Initial Version prepared for NCDC

USAGE

    use type_conversion