Emissivity Introduction Page

Emissivity files and data structures contain emissivity data as spectra or listed by channel for various sensors. The Emissivity 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.


Spectral Emissivity Data Contents

Spectral emissivity files and data structures contain the following data,

Name Description
Release Emissivity data release number. This value is an indicator of the data file and structure format.
Version Emissivity data version number. This value is an indicator of the age or methodology used to produce the data values.
n_Frequencies Size of the frequency dimension of the spectral emissivity data.
n_Wind_Speeds Size of the wind speed dimension of the emissivity data.
n_View_Angles Size of the view angle dimension of the emissivity data.
Frequency Array of frequency values corresponding to the frequency dimension.
Wind_Speed Array of wind speed values corresponding to the wind speed dimension.
View_Angle Array of view angle values corresponding to the view angle dimension.
Emissivity Array of sea surface emissivity values for each frequency, wind speed, and view angle listed.


Spectral Emissivity Structure Defintion

The Emissivity structure is defined in the Emissivity_Define module.

  TYPE, PUBLIC :: Spectral_Emissivity_type
    INTEGER :: n_Allocates

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

    INTEGER( Long ) :: n_Frequencies   ! L dimension
    INTEGER( Long ) :: n_Wind_Speeds   ! N dimension
    INTEGER( Long ) :: n_View_Angles   ! I dimension

    REAL( Double ),  POINTER, DIMENSION( : ) :: Frequency          ! L x 1
    REAL( Double ),  POINTER, DIMENSION( : ) :: Wind_Speed         ! N x 1
    REAL( Double ),  POINTER, DIMENSION( : ) :: View_Angle         ! I x 1
    REAL( Double ),  POINTER, DIMENSION( :, :, : ) :: Emissivity   ! L x N x I
  END TYPE Spectral_Emissivity_type

Note that Spectral_Emissivity_type is PUBLIC and its members are not encapsulated; that is, they can be fully accessed outside the scope of the Emissivity_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 Emissivity_Define module where possible to eliminate -- or at least minimise -- the possibility of memory leakage since most of the structure members are pointers.

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.

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.


Spectral Emissivity File Format

Spectral emissivity data is created in netCDF format only. 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 Emissivity_netCDF_IO module.

Below is the CDL representation of a netCDF spectral emissivity data file,

netcdf SpectralEmissivity {
dimensions:
        n_frequencies = 153 ;
        n_wind_speeds = 13 ;
        n_view_angles = UNLIMITED ; // (37 currently)
variables:
        int Release ;
                Release:long_name = "Release number of Emissivity data file" ;
                Release:_FillValue = -1 ;
        int Version ;
                Version:long_name = "Version number of Emissivity data file" ;
                Version:_FillValue = -1 ;
        double frequency(n_frequencies) ;
                frequency:long_name = "Frequency values associated with the spectral emissivity data." ;
                frequency:units = "Inverse centimetres (cm^-1)" ;
                frequency:_FillValue = -999.9 ;
        double wind_speed(n_wind_speeds) ;
                wind_speed:long_name = "Wind speed values associated with the emissivity data." ;
                wind_speed:units = "Metres per second (m/s)" ;
                wind_speed:_FillValue = -999.9 ;
        double view_angle(n_view_angles) ;
                view_angle:long_name = "View angle values associated with the emissivity data." ;
                view_angle:units = "Degrees from vertical" ;
                view_angle:_FillValue = -999.9 ;
        double emissivity(n_view_angles, n_wind_speeds, n_frequencies) ;
                emissivity:long_name = "Spectral emissivity data." ;
                emissivity:units = "None" ;
                emissivity:_FillValue = -1. ;

// global attributes:
                :write_module_history = "$Id: Emissivity_netCDF_IO.f90,v 1.9 2003/09/15 16:33:22 paulv Exp $" ;
                :creation_date_and_time = "2003/10/03, 11:45:36 -0400UTC" ;
                :reflectivity_type = "Average. rho = 0.5 * ( |rho(vertical)|^2 + |rho(horizontal)|^2 )" ;
                :title = "Computed IR sea surface emissivity using the Wu-Smith model" ;
                :history = "$Id: Assemble_Emissivity_File.f90,v 2.0 2003/10/01 13:51:56 paulv Exp $; $Id: Sea_Surface_Emissivity.f90,v 1.6 2003/09/23 12:40:42 paulv Exp $;$Id: RefIndex_ASC2NC.f90,v 1.3 2003/06/16 15:09:40 paulv Exp $" ;
                :comment = "Value at 880.01420cm-1, 6ms-1, and 65deg replaced with value computed using an integration accuracy of 1.0e-07 to remove anomaly in emissivity; Data concatenated from separate files.; Maximum integration error = 1.0e-06; Spline interpolation used between ReflEmission view angle data.;Refractive index of sea water from Hale and Querry (1973) (real part), Segelstein (1981) (imaginary part), and Friedman (1969) (corrections)" ;
                :reference = "Wu, X. and W.L. Smith \"Emissivity of rough sea surface for 8-13um: modeling and verification\", Applied Optics, v36, pp2609-2619, 1997;Hale, G.M. and M.R. Querry, \"Optical constants of water in the 200nm to 200um wavelength region\", Applied Optics, v12, pp555-563, 1973.: Segelstein, D.J. \"The complex refractive index of water\", MS Thesis (University of Missouri, Kansas City, Missouri, 1981): Friedman, D. \"Infrared characteristics of ocean water\", Applied Optics, v8, pp2073-2078, 1969." ;
                :type = 1 ;
}


Sensor Emissivity Data Contents

Sensor emissivity files and data structures contain the following data,

Name Description
Release Emissivity data release number. This value is an indicator of the data file and structure format.
Version Emissivity data version number. This value is an indicator of the age or methodology used to produce the data values.
n_Channels Size of the channel dimension of the sensor emissivity data.
n_Wind_Speeds Size of the wind speed dimension of the emissivity data.
n_View_Angles Size of the view angle dimension of the emissivity data.
n_Sensors Number of different satellite/sensors represented in the data file and structure.
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 Array of sensor channel numbers. May not contain contiguous values.
Wind_Speed Array of wind speed values corresponding to the wind speed dimension.
View_Angle Array of view angle values corresponding to the view angle dimension.
Emissivity Array of sea surface emissivity values for each channel, wind speed, and view angle listed.


Sensor Emissivity Structure Defintion

The Sensor Emissivity structure is defined in the Emissivity_Define module.

  TYPE, PUBLIC :: Sensor_Emissivity_type
    INTEGER :: n_Allocates

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

    INTEGER( Long ) :: n_Channels      ! L dimension
    INTEGER( Long ) :: n_Wind_Speeds   ! N dimension
    INTEGER( Long ) :: n_View_Angles   ! I dimension

    INTEGER( Long ) :: n_Sensors

    INTEGER( Long ), POINTER, DIMENSION( : ) :: NCEP_Sensor_ID     ! L x 1
    INTEGER( Long ), POINTER, DIMENSION( : ) :: WMO_Satellite_ID   ! L x 1
    INTEGER( Long ), POINTER, DIMENSION( : ) :: WMO_Sensor_ID      ! L x 1
    INTEGER( Long ), POINTER, DIMENSION( : ) :: Sensor_Channel     ! L x 1
    REAL( Double ),  POINTER, DIMENSION( : ) :: Wind_Speed         ! N x 1
    REAL( Double ),  POINTER, DIMENSION( : ) :: View_Angle         ! I x 1
    REAL( Double ),  POINTER, DIMENSION( :, :, : ) :: Emissivity   ! L x N x I
  END TYPE Sensor_Emissivity_type

Note that, as with the Spectral_Emissivity_type, Sensor_Emissivity_type is PUBLIC and its members are not encapsulated; that is, they can be fully accessed outside the scope of the Emissivity_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 Emissivity_Define module where possible to eliminate -- or at least minimise -- the possibility of memory leakage since most of the structure members are pointers.

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.

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.


Sensor Emissivity File Format

Sensor emissivity data is created in netCDF format only. 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 Emissivity_netCDF_IO module.

Below is the CDL representation of a netCDF sensor emissivity data file for NOAA-18 HIRS/3,

netcdf hirs3_n18.SensorEmissivity {
dimensions:
        n_channels = 19 ;
        n_wind_speeds = 13 ;
        n_view_angles = UNLIMITED ; // (37 currently)
variables:
        int Release ;
                Release:long_name = "Release number of Emissivity data file" ;
                Release:_FillValue = -1 ;
        int Version ;
                Version:long_name = "Version number of Emissivity data file" ;
                Version:_FillValue = -1 ;
        int NCEP_Sensor_ID(n_channels) ;
                NCEP_Sensor_ID:long_name = "ID used at NOAA/NCEP/EMC to identify a satellite/sensor" ;
                NCEP_Sensor_ID:_FillValue = -1 ;
        int WMO_Satellite_ID(n_channels) ;
                WMO_Satellite_ID:long_name = "WMO code for identifying satellite platforms" ;
                WMO_Satellite_ID:_FillValue = -1 ;
        int WMO_Sensor_ID(n_channels) ;
                WMO_Sensor_ID:long_name = "WMO code for identifying a satellite sensor" ;
                WMO_Sensor_ID:_FillValue = -1 ;
        int Sensor_Channel(n_channels) ;
                Sensor_Channel:long_name = "List of sensor channel numbers associated with the emissivity data" ;
                Sensor_Channel:_FillValue = -1 ;
        double wind_speed(n_wind_speeds) ;
                wind_speed:long_name = "Wind speed values associated with the emissivity data." ;
                wind_speed:units = "Metres per second (m/s)" ;
                wind_speed:_FillValue = -999.9 ;
        double view_angle(n_view_angles) ;
                view_angle:long_name = "View angle values associated with the emissivity data." ;
                view_angle:units = "Degrees from vertical" ;
                view_angle:_FillValue = -999.9 ;
        double emissivity(n_view_angles, n_wind_speeds, n_channels) ;
                emissivity:long_name = "Sensor channel emissivity data." ;
                emissivity:units = "None" ;
                emissivity:_FillValue = -1. ;

// global attributes:
                :write_module_history = "$Id: Emissivity_netCDF_IO.f90,v 1.9 2003/09/15 16:33:22 paulv Exp $" ;
                :creation_date_and_time = "2003/10/03, 14:46:52 -0400UTC" ;
                :reflectivity_type = "Average. rho = 0.5 * ( |rho(vertical)|^2 + |rho(horizontal)|^2 )" ;
                :title = "Sensor emissivity for NOAA-18 HIRS/3:Spectral-Computed IR sea surface emissivity using the Wu-Smith model" ;
                :history = "$Id: Create_Sensor_Emissivity.f90,v 3.0 2003/10/03 17:58:35 paulv Exp $$Id: Assemble_Emissivity_File.f90,v 2.0 2003/10/01 13:51:56 paulv Exp $; $Id: Sea_Surface_Emissivity.f90,v 1.6 2003/09/23 12:40:42 paulv Exp $;$Id: RefIndex_ASC2NC.f90,v 1.3 2003/06/16 15:09:40 paulv Exp $" ;
                :comment = "Sensor emissivity created by convolution: Spectral-Data concatenated from separate files.; Maximum integration error = 1.0e-06; Spline interpolation used between ReflEmission view angle data.;Refractive index of sea water from Hale and Querry (1973) (real part), Segelstein (1981) (imaginary part), and Friedman (1969) (corrections)" ;
                :reference = "Wu, X. and W.L. Smith \"Emissivity of rough sea surface for 8-13um: modeling and verification\", Applied Optics, v36, pp2609-2619, 1997;Hale, G.M. and M.R. Querry, \"Optical constants of water in the 200nm to 200um wavelength region\", Applied Optics, v12, pp555-563, 1973.: Segelstein, D.J. \"The complex refractive index of water\", MS Thesis (University of Missouri, Kansas City, Missouri, 1981): Friedman, D. \"Infrared characteristics of ocean water\", Applied Optics, v8, pp2073-2078, 1969." ;
                :sensor_name = "HIRS/3" ;
                :platform_name = "NOAA-18" ;
                :type = 2 ;
}

This page maintained by Paul van Delst

Last updated Jan 21, 2004