ISCCP Software

Our software is written and tested on an IBM AIX platform. Users working on other platforms may need to make slight modifications to the code as listed below.


Attention SGI/DEC users: Before compiling any FORTRAN code read the following instructions:

C* SGI users:
C*      change recl=lrecl to recl=lrecl/4 in open statement
C*      SGI ORIGIN users: uncomment SAVE statement in the 
C*      declaration section
C*     
C* DEC users 
C*      change recl=lrecl to recl=lrecl/4 in open statement
C*      add convert='little_endian' to open statement
C*      change each occurrence of chars(4) to chars(1)

For other platforms check the User-Modified ISCCP software page.


The following is a list of software that can be used to read the standard ISCCP data products.

  • This software was updated on 3/31/2003 to contain a function (ICHAR_) to replace the FORTRAN function ichar due to a change in the IBM version 8 xlf compiler which returns a signed integer rather than an unsigned integer as in previous versions. Thanks to Dan Shea at NCAR for pointing out the difference and providing the solution.

    • B3READ
    • This program reads the B3 Reduced Resolution Radiance Dataset described in the B3 Data documentation. The program is composed of two sections: INIT and READ.

      Description:
      The INIT section initializes the data by reading from the image header the image identification record, the location grid record and the calibration records for that image and passing this information to the user through common blocks.
      The sample READ section takes one scan line's worth of information from a data record, unpacks it into various arrays and passes the information through the common block "B3COM". Continue calling B3READ until the end of image is reached.

      Ancillary Files Needed:
      Land/Water map data**

      **NOTE: If you are not interested in Land/Water information comment out lines of code as indicated in the B3READ comments.
    • BTREAD
    • This program reads the ISCCP BT (calibration look up tables) dataset which should be used in combination with the B3 dataset, and is documented in the ISCCP Update of Radiance Calibrations documentation. These tables are the same format as those contained in the B3 dataset, but provide more up-to-date calibration information. Always use the BT dataset with the highest Version number.

      Description:
      BTREAD reads and prints 6 calibration tables for all available channels for a particular B3 image.

      Ancillary Files Needed:
      None
    • TVREAD
    • This program reads The ISCCP TV (TOVS atmospheric temperature and humidity profiles with ozone column abundances) dataset described in the Tovs Atmospheric Gridded Data Product documentation.

      Description:
      The sample program reads an entire TV file by looping over the 72 latitude bands one at a time. For each pass through the loop, TVREAD is called to unpack the data for that latitude band; the data are saved in an equal-area map array. TVPHYS is then called to convert that data to physical units.

      Description (by subroutine):
      TVOPEN: Opens a TV file and initializes data
      TVREAD Unpacks TV data for one latitude band
      TVPHYS: Converts data for a given latitude band into physical units
      RDANC: Reads ancillary data file***
      PRINTI: Prints count values for one grid box
      PRINTR: Prints physical values for one grid box
      CENTER: Calculates center latitude and longitude for one grid box
      EQ2SQ: Converts equal-area map to square map

      Ancillary Files Needed:
      Ancillary Data Table

      ***NOTE: The ancillary table should be read if planning to convert from the original equal area mapping to a square mapping.
    • ISREAD
    • This program reads The ISCCP IS (sea ice and snow information) described in the Ice/Snow data product documentation.

      Description:
      The sample program reads an entire IS file by looping over the 180 latitude bands one at a time. For each pass through the loop, ISREAD is called to unpack the data for that latitude band; the data are saved in an equal-area map array. At the end of the program, the data are converted to a square latitude/longitude map array and written out.

      Description (by subroutine):
      ISOPEN: Opens an IS file and initializes data
      ISREAD: Unpacks IS data for one latitude band
      ISREC: Used by ISREAD to unpack a logical record
      RDANC: Reads ancillary data file***
      CENTER: Calculates center latitude and longitude for one grid box
      EQ2SQ: Converts equal-area map to square map

      Ancillary Files Needed:
      Ancillary Data Table

      ***NOTE: The ancillary table should be read if planning to convert from the original equal area mapping to a square mapping.
    • DXREAD (FORTRAN)
    • This program reads the ISCCP DX (3-hourly, 30-km sampled image pixel) dataset described in the DX Data documentation. The program is composed of three subroutines : DXTABS,DXOPEN and DXREAD. Description:
      DXTABS sets up tables used to unpack bit-packed data. DXOPEN Opens the DX file and reads the header information. Header variables that identify the image are returned in the common block "headER".
      DXREAD reads the data one pixel at a time. The data values for the pixel are returned in common block "DXDATA" as integers. For physical values, apply the appropriate conversion tables to the integer count value. The mapped location and latitude/longitude of the pixel are returned in common block "LOCATE". Continue calling DXREAD until the end of image is reached.

      A DXREAD C-program is also available to read the DX data.

      A DXREAD IDL is also available to read the DX data.

      Ancillary Files Needed:
      None
    • D1READ
    • This program reads the ISCCP D1 (3-hourly, 280-km equal-area grid dataset) described in the D1 Data Documentation.

      Description:
      The sample program reads an entire D1 file by looping over the 72 latitude bands one at a time. For each pass through the loop, D1READ is called to unpack the data for that latitude band, and then D1PHYS is called to convert that data to physical units. Data are saved in an equal-area map array, then at the end of the program, the data are converted to a square latitude/longitude map array and written out.

      Description (by subroutine):
      D1OPEN: Opens a D1 file and initializes data
      D1READ: Unpacks D1 data for one latitude band
      D1REC: Called by D1READ to unpack a logical record
      D1PHYS: Converts data for a given latitude band into physical values
      MIDPRS: Calculates mid-layer pressures for a given grid box
      RDANC: Reads ancillary data file***
      PRINTI: Prints count values for one grid box
      PRINTR: Prints physical values for one grid box
      CENTER: Calculates center latitude and longitude for one grid box
      TOTIR: Calculates total IR radiance
      TOTVIS: Calculates total VIS radiance
      CLDHGT: Calculates cloud top height in meters
      EQ2SQ: Converts equal-area map to square map

      Ancillary Files Needed:
      Ancillary Data Table

      ***NOTE: The ancillary table should be read if planning to use subroutine CLDHGT or EQ2SQ.
    • D2READ
    • This program reads the ISCCP D2 (monthly, 280-km equal area gridded data) described in the D2 Data documentation. D2 Data contain eight files representing the monthly average at each of eight times-of-day and a ninth file representing the monthly average over all times-of-day.

      Description:
      The sample program reads an entire D2 file by looping over the 72 latitude bands one at a time. For each pass through the loop, D2READ is called to unpack the data for that latitude band, and then D2PHYS is called to convert the data to physical values. The data are saved in an equal-area map array; then at the end of the program the data are converted to a square latitude/longitude map array and written out.

      Description (by subroutine):
      D2OPEN: Opens a D2 file and initializes data
      D2READ: Unpacks D2 data for one latitude band
      D2REC: Called by D2READ to unpack a logical record
      D2PHYS: Converts data for a given latitude band into physical values
      MIDPRS: Calculates mid-layer pressures for a given grid box
      RDANC: Reads ancillary data file***
      PRINTI: Prints count values for one grid box
      PRINTR: Prints physical values for one grid box
      CENTER: Calculates center latitude and longitude for one grid box
      CLDHGT: Calculates cloud top height in meters
      EQ2SQ: Converts equal-area map to square map

      Ancillary Files Needed:
      Ancillary Data Table. Use the Save As option from the File menu in your browser in order to get a copy of this file.

      ***NOTE: The ancillary table should be read if planning to convert from equal area to square.
    • C1READ
    • This program reads the old ISCCP C1 (3-hourly, 280-km equal-area grid dataset) described in the C1/C2 Cloud Data Documentation. ***THESE DATA HAVE BEEN REPLACD BY THE D1 DATASET.*** The program requires one argument, a latitude zone number. C1READ then returns all parameters for all longitude boxes within that latitude zone. The data are saved in an equal-area grid. This program maps the data by replication into a square latitude/longitude grid. This version of the code is for the equal-area format, and returns physical values.

      Description:
      Routine C1READ on the first call initializes variables and calls subroutine EQUARE to create the tables representing the equal-area grid map. Subsequent calls to C1READ use routine C1REC to read a data record. This routine calls UNPACK to convert values from C*1 to I*4 and calls PREFIX to decode the record prefix. The latitude window option, set in the sample program, allows for rapid checking of data records until the beginning of the user specified latitude range. All of the data within the specified range are converted to physical units, where appropriate, and replicated into the square map grid. The results are passed back to the main program through common block "C1DATA".

      Ancillary Files Needed:
      None
    • C2READ
    • This program reads the old ISCCP C2 (monthly, 280-km equal area gridded data) dataset described in the C1/C2 Cloud Data Documentation. ***THESE DATA HAVE BEEN REPLACED BY THE D2 DATASET.*** The program requires one argument, a latitude zone number. C2READ then returns all parameters for all longitude boxes within that latitude zone. The data are saved in an equal-area grid. This routine maps the data by replication into a square latitude/longitude grid.

      Description:
      Routine C2READ on the first call initializes variables and calls subroutine EQUARE to create the tables representing the equal-area grid map. Subsequent calls to C2READ use routine C2REC to read a data record. This routine calls UNPACK to convert values from C*1 to I*4 and calls PREFIX to decode the record prefix. The latitude window option, set in the sample program, allows for rapid checking of data records until the beginning of the user specified latitude range. All of the data within the specified range are converted to physical values, where appropriate, and replicated into the square map grid. The results are passed back to the main program through common block "C2DATA".

      Ancillary Files Needed:
      None
    • Cluster Analysis Software: kmeans_D1
    • The program kmeans_D1.f performs a k-means cluster analysis on a set of vectors. The program is currently written to accept a file containing 42-element D1 PC-Tau vectors but can be modified to accept vectors of any length and number (specified by the parameters nelements and nvecotors). The number of clusters is required as an input and is specified by the parameter nclusters.

      Description:
      The analysis is performed as follows. The starting centroids are selected from the database. The Euclidean distance (squared) is computed for each vector from the centroids, and the number of the closest centroid is saved. New centroids are calculated and the process is repeated until either the number of iterations (niter) is reached or the cluster centroids have been moved by less than epsilon. For more information, see the README file.

      Ancillary Files Needed:
      None

    ISCCP On-Line Datasets | Data Product Documentation