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 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. | |
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 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 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. | |
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 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 ;
}