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