EmisCoeff Introduction Page

EmisCoeff files and data structures contain Emissivity Coefficient data about particular sensors. The EmisCoeff files/structures are used in the infrared sea surface emissivity (IRSSE) model available on this site. This page describes the data structure and data file formats.


EmisCoeff Data Contents

EmisCoeff files and data structures contain the following data,

Name Description
Release EmisCoeff data release number. This value is an indicator of the data file and structure format.
Version EmisCoeff data version number. This value is an indicator of the age or methodology used to produce the data values.
n_IntCoeffs Number of wind speed interpolating coefficients.
n_ThetaCoeffs Number of coefficients required to compute the view angle dependent emissivity.
n_Channels Total number of spectral channels for which there is data.
n_Wind_Speeds Number of wind speeds used to generate the emissivity fit coefficients.
n_Sensors Number of different satellite/sensors represented in the data file and structure.
Theta_Offset Offset applied to view angles in the emissivity model.
Theta_Max Maximum valid view angle in emissivity model. Used to normalise the view angle inputs.
NCEP_Sensor_ID An array of "in-house" values used at NOAA/NCEP/EMC to identify a satellite/sensor combination. Each sensor channel in the file and structure has a value.
WMO_Satellite_ID An array of WMO code values identifying satelite platforms. Taken from the WMO common code tables. The Satellite ID is from Common Code table C-5, or code table 0 01 007 in BUFR. Each sensor channel in the file and structure has a value.
WMO_Sensor_ID An array of WMO code values identifying a satelite sensor. Taken from the WMO common code tables. The Sensor ID is from Common Code table C-8, or code table 0 02 019 in BUFR. Each sensor channel in the file and structure has a value.
Sensor_Channel An array of sensor channel numbers. May not contain contiguous values.
Wind_Speed Array of wind speed values corresponding to the wind speed dimension (m/s).
C Array of the emissivity model coefficients.


EmisCoeff Structure Defintion

The EmisCoeff structure is defined in the EmisCoeff_Define module.

  TYPE, PUBLIC :: EmisCoeff_type
    INTEGER :: n_Allocates

    INTEGER( Long ) :: Release
    INTEGER( Long ) :: Version

    INTEGER( Long ) :: n_IntCoeffs
    INTEGER( Long ) :: n_ThetaCoeffs
    INTEGER( Long ) :: n_Channels
    INTEGER( Long ) :: n_Wind_Speeds
    INTEGER( Long ) :: n_Sensors
    REAL( Double )  :: Theta_Offset
    REAL( Double )  :: Theta_Max

    INTEGER( Long ), POINTER, DIMENSION( : ) :: NCEP_Sensor_ID
    INTEGER( Long ), POINTER, DIMENSION( : ) :: WMO_Satellite_ID
    INTEGER( Long ), POINTER, DIMENSION( : ) :: WMO_Sensor_ID
    INTEGER( Long ), POINTER, DIMENSION( : ) :: Sensor_Channel
    REAL( Double ),  POINTER, DIMENSION( : ) :: Wind_Speed

    REAL( Double ),  POINTER, DIMENSION( :, :, :, : ) :: C
  END TYPE EmisCoeff_type

Note that EmisCoeff_type is PUBLIC and its members are not encapsulated; that is, they can be fully accessed outside the scope of the EmisCoeff_Define module. This makes it possible to manipulate the structure and its data directly rather than, for e.g., via get() and set() functions. This was done to eliminate the overhead of the get/set type of access in using the structure. But, it is recommended that the user initialize, destroy, allocate, assign, and concatenate the structure using the routines in EmisCoeff_Define module where possible to eliminate -- or at least minimise -- the possibility of memory leakage since most of the structure members are pointers.

The n_Sensors value is not stored in the EmisCoeff datafiles, but is computed during datafile reads from the sensor/satellite ID values.

Also note that the floating point components are defined with the Double kind type rather than the generic fp_kind kind type and the integer components are explicitly type as Long. This is done to ensure the binary datafiles are read and written consistently.

The n_Allocates structure component is only used internally in the structure allocation and destruction functions to keep track of the current allocation status of the structure.


EmisCoeff File Formats


netCDF Format

This is the default format for EmisCoeff data files. Using netCDF allows users to track the history, release, and version of the data file relatively easily via global attributes, as well as the attributes of the contents themselves.

These datafiles are read and written using the functions in the EmisCoeff_netCDF_IO module.

Below is the CDL representation of the netCDF format EmisCoeff data file for NOAA-17 HIRS/3,

netcdf hirs3_n17.EmisCoeff {
dimensions:
        n_IntCoeffs = 4 ;
        n_ThetaCoeffs = 5 ;
        n_Channels = 19 ;
        n_Wind_Speeds = 13 ;
variables:
        int Release ;
                Release:long_name = "Release number of EmisCoeff data file" ;
        int Version ;
                Version:long_name = "Version number of EmisCoeff data file" ;
        double Theta_Offset ;
                Theta_Offset:long_name = "Offset applied to zenith angle" ;
                Theta_Offset:units = "degrees" ;
        double Theta_Max ;
                Theta_Max:long_name = "Maximum zenith angle used in emissivity fit." ;
                Theta_Max:units = "degrees" ;
        int NCEP_Sensor_ID(n_Channels) ;
                NCEP_Sensor_ID:long_name = "ID used at NOAA/NCEP/EMC to identify a satellite/sensor" ;
        int WMO_Satellite_ID(n_Channels) ;
                WMO_Satellite_ID:long_name = "WMO code for identifying satellite platforms" ;
        int WMO_Sensor_ID(n_Channels) ;
                WMO_Sensor_ID:long_name = "WMO code for identifying a satellite sensor" ;
        int Sensor_Channel(n_Channels) ;
                Sensor_Channel:long_name = "List of sensor channel numbers associated with the SpcCoeff data" ;
        double Wind_Speed(n_Wind_Speeds) ;
                Wind_Speed:long_name = "Wind speed values for emissivity fit coefficients." ;
                Wind_Speed:units = "metres per second (m/s)" ;
        double Emis_Coefficients(n_Wind_Speeds, n_Channels, n_ThetaCoeffs, n_IntCoeffs) ;
                Emis_Coefficients:long_name = "Emissivity model fit coefficients." ;
                Emis_Coefficients:units = "None." ;

// global attributes:
                :write_module_history = "$Id: write_emiscoeff_netcdf.pro,v 2.0 2003/06/10 00:15:20 paulv Exp $" ;
                :creation_date_and_time = "Tue Sep 16 16:49:03 2003" ;
                :title = "Emissivity fit coefficients for NOAA-17 HIRS/3" ;
                :history = "$Id: compute_emissivity_coefficients.pro,v 2.3 2003/06/10 00:13:31 paulv Exp $; $Id: Create_Sensor_E
missivity.f90,v 2.4 2003/09/15 16:35:07 paulv Exp $$Id: Assemble_Emissivity_File.f90,v 1.2 2003/08/11 17:20:50 paulv Exp $:$Id: 
Sea_Surface_Emissivity.f90,v 1.5 2003/08/08 18:27:27 paulv Exp $;$Id: RefIndex_ASC2NC.f90,v 1.3 2003/06/16 15:09:40 paulv Exp $"
 ;
                :sensor_name = "HIRS/3" ;
                :platform_name = "NOAA-17" ;
                :comment = "Sensor emissivity created by Convolution:Spectral-Data concatenated along view angle dimension from 
separate files.Linear interpolation used between ReflEmission view angle data.;Refractive index of sea water from Hale and Querr
y (1973) (real part), Segelstein (1981) (imaginary part), and Friedman (1969) (corrections)" ;
}


Binary (sequential, unformatted) Format

This is the data file format used in operational applications that require the EmisCoeff data, e.g. the Raditive Transfer Model in the Global Data Assimilation System at NCEP/EMC.

These datafiles are read and written using the functions in the EmisCoeff_Binary_IO module. They are created from the netCDF format data files via the EmisCoeff_NC2BIN conversion program.

The contents of the binary format datafiles are effectively the same as the netCDF datafiles but with no attribute data and some extra header data to check the variable definitions and endian-ness of the files.

Record Number Record Contents Record Length (bytes) Record Description
1 INTEGER( Long ) :: Magic_Number 4 Value used to check endian-ness
2 INTEGER( Long ) :: Release
INTEGER( Long ) :: Version
8 Values used to check data format and history
3 INTEGER( Long ) :: n_IntCoeffs
INTEGER( Long ) :: n_ThetaCoeffs
INTEGER( Long ) :: n_Channels
INTEGER( Long ) :: n_Wind_Speeds
16 Dimensions of all the sensor data.
4 INTEGER( Long ) :: n_Items 4 Number of components in the EmisCoeff structure. This value is only used internally to the binary I/O software for verification purposes.
5 INTEGER( Long ), DIMENSION( n_Items ) :: Data_Type n_Items * 4 The data types of each component of the EmisCoeff structure. These values are only used internally to the binary I/O software for verification purposes.
6 REAL( Double ) :: Theta_Offset
REAL( Double ) :: Theta_Max
16 The offset applied to the zenith angle, and the maximum value accepted for the zenith angle in the emissivity model.
7 INTEGER( Long ) :: NCEP_Sensor_ID
INTEGER( Long ) :: WMO_Satellite_ID
INTEGER( Long ) :: WMO_Sensor_ID
INTEGER( Long ) :: Sensor_Channel
n_Channels * 4 Sensor/satellite ID and channel numbers for each channel entry.
8 REAL( Double ) :: Wind_Speed n_Wind_Speeds * 8 The wind speed values associated with the emissivity model coefficient data.
9 REAL( Double ) :: C n_IntCoeffs * n_ThetaCoeffs * n_Channels * n_Wind_Speeds * 8 The emissivity model coefficients.


This page maintained by Paul van Delst

Last updated Jan 20, 2004