FUNCTION VIIRS_BRIGHT, RAD, BAND, UNITS ;+ ; DESCRIPTION: ; Compute brightness temperature for a NPP VIIRS infrared band. ; Note: I4 and I5 are bands 4 and 5, and M12-M16 are bands 12-16. ; ; Spectral responses for each band were obtained from Chris Moeller: ; NG_VIIRS_NPP_RSR_filtered_Oct2011_BA.tar.gz ; ; The band-averaged spectral response data were used ; to compute the effective central wavenumbers and temperature ; correction coefficients included in this module. ; ; USAGE: ; RESULT = VIIRS_BRIGHT(RAD, BAND, UNITS) ; ; INPUT PARAMETERS: ; RAD Planck radiance (units are determined by UNITS) ; BAND VIIRS IR band number (4-5, 12-16) ; UNITS Flag defining radiance units ; 0 => milliWatts per square meter per steradian per ; inverse centimeter ; 1 => Watts per square meter per steradian per micron ; ; OUTPUT PARAMETERS: ; MODIS_BRIGHT Brightness temperature (Kelvin) ; Note that a value of -1.0 is returned if ; BAND is not in the range 4-5 or 12-16. ; ; MODIFICATION HISTORY: ; Liam.Gumley@ssec.wisc.edu 2012/02/29 ;- Check input parameters if (n_params() ne 3) then message, 'Usage: RESULT = VIIRS_BRIGHT(RAD, BAND, UNITS)' if (n_elements(rad) eq 0) then message, 'Argument RAD is undefined' if (n_elements(band) eq 0) then message, 'Argument BAND is undefined' if (n_elements(units) eq 0) then message, 'Argument UNITS is undefined' ;- Get band index and check band number band_list = [4, 5, 12, 13, 14, 15, 16] index = where(long(band) eq band_list, count) if (count eq 0) then message, 'Argument BAND must be in the range [4-5, 12-16] index = index[0] ; BAND-AVERAGED VIIRS SPECTRAL RESPONSE FUNCTIONS FOR NPP ; BAND 4 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 5 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 12 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 13 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 14 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 15 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ; BAND 16 TEMPERATURE RANGE WAS 180.00 K TO 340.00 K ;- Effective central wavenumber (inverse centimenters) cwn = [2.675413E+03, 8.767064E+02, 2.707706E+03, 2.460210E+03, 1.165972E+03, 9.346943E+02, 8.462825E+02] ;- Temperature correction slope (no units) tcs = [9.976984E-01, 9.959489E-01, 9.992083E-01, 9.995182E-01, 9.996862E-01, 9.981278E-01, 9.985471E-01] ;- Temperature correction intercept (Kelvin) tci = [1.740727E+00, 1.115936E+00, 5.858082E-01, 3.256637E-01, 1.116244E-01, 5.592915E-01, 4.020620E-01] ;- Compute brightness temperature if (units eq 1) then begin ;- Radiance units are Watts per square meter per steradian per micron result = (bright_m(1.0e+4 / cwn[index], rad) - tci[index]) / tcs[index] endif else begin ;- Radiance units milliWatts per square meter per steradian per wavenumber result = (brite_m(cwn[index], rad) - tci[index]) / tcs[index] endelse ;- Return result to caller return, result END