Last modified: Fri Apr 19 10:48:08 2002.
NAME: tangent_linear_rtm PURPOSE: PUBLIC function that calculates top-of-atmosphere (TOA) tangent-linear radiances and brightness temperatures for an input atmospheric profile set and user specified satellites/channels. CATEGORY: NCEP RTM CALLING SEQUENCE: result = tangent_linear_rtm( & ! Forward inputs level_p, layer_p, layer_t, layer_w, layer_o, & ! Input, K x M surface_temperature, & ! Input, M surface_emissivity, & ! Input, L*M surface_reflectivity, & ! Input, L*M absorber, & ! Input, 0:K x J x M tau_layer_index, & ! Input, K x J x M flux_tau_layer_index, & ! Input, K x J x M solar_tau_layer_index, & ! Input, K x J x M tau_predictor, & ! Input, Imax x K x M flux_tau_predictor, & ! Input, Imax x K x M solar_tau_predictor, & ! Input, Imax x K x M tau, & ! Input, K x L*M flux_tau, & ! Input, K x L*M solar_tau, & ! Input, K x L*M layer_radiance, & ! Input, K x L*M downwelling_radiance, & ! Input, L*M upwelling_radiance, & ! Input, L*M ! -- Tangent-linear inputs level_p_TL, layer_p_TL, layer_t_TL, layer_w_TL, layer_o_TL, & ! Input, K x M surface_temperature_TL, & ! Input, M surface_emissivity_TL, & ! Input, L*M surface_reflectivity_TL, & ! Input, L*M ! -- Other inputs secant_view_angle, & ! Input, M secant_solar_angle, & ! Input, M n_channels_per_profile, & ! Input, M channel_index, & ! Input, L*M ! -- Tangent-linear outputs tau_TL, & ! Output, K x L*M flux_tau_TL, & ! Output, K x L*M solar_tau_TL, & ! Output, K x L*M layer_radiance_TL, & ! Output, K x L*M downwelling_radiance_TL, & ! Output, L*M upwelling_radiance_TL, & ! Output, L*M brightness_temperature_TL, & ! Output, L*M ! Optional inputs message_log = message_log ) INPUT ARGUMENTS: level_p: Profile set layer interface pressure array. The TOA pressure is not included. TOA pressure is parameterised in the PARAMETERS module. UNITS: hPa TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_p: Profile set layer average pressure array. UNITS: hPa TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_t: Profile set layer average temperature array. UNITS: Kelvin TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_w: . Profile set layer average water vapor mixing ratio array UNITS: g/kg TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_o: Profile set layer average ozone mixing ratio array. UNITS: ppmv TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) surface_temperature: Profile set surface temperature array. UNITS: Kelvin TYPE: Real DIMENSION: M; M > or = 1 (i.e. scalar) ATTRIBUTES: INTENT( IN ) surface_emissivity: Profile set surface emissivity array UNITS: None TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) surface_reflectivity: Profile set surface reflectivity array UNITS: None TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) absorber: Array of absorber amount for nadir view. UNITS: Absorber dependent. TYPE: Real DIMENSION: 0:K x J x M ATTRIBUTES: INTENT( IN ) tau_layer_index: Array of absorber space layer indices of the input absorber amounts at the satellite view angle. UNITS: None. TYPE: Integer DIMENSION: K x J x M ATTRIBUTES: INTENT( IN ) flux_tau_layer_index: Array of absorber space layer indices of the input absorber amounts at the default diffusivity angle. UNITS: None. TYPE: Integer DIMENSION: K x J x M ATTRIBUTES: INTENT( IN ) solar_tau_layer_index: Array of absorber space layer indices of the input absorber amounts at the solar zenith angle. UNITS: None. TYPE: Integer DIMENSION: K x J x M ATTRIBUTES: INTENT( IN ) tau_predictor: Predictor profiles for the layer->TOA transmittance. UNITS: None. TYPE: Real DIMENSION: I x K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) flux_tau_predictor: Predictor profiles for the thermal flux transmittance. UNITS: None. TYPE: Real DIMENSION: I x K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) solar_tau_predictor: Predictor profiles for the solar transmittance. UNITS: None. TYPE: Real DIMENSION: I x K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) tau: Layer->TOA transmittance for the satellite view angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) flux_tau: Layer->SFC transmittance for the default diffusivity angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) solar_tau: Layer->SFC transmittance for the solar zenith angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_radiance: Layer Planck radiances at every layer for each channel/profile. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) downwelling_radiance: TOA->SFC radiances for each channel/profile due to thermal flux and solar components. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) upwelling_radiance: TOA radiances for each channel/profile. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) level_p_TL: Profile set layer interface pressure tangent-linear array. UNITS: hPa TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_p_TL: Profile set layer average pressure tangent-linear array. UNITS: hPa TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_t_TL: Profile set layer average temperature tangent-linear array. UNITS: Kelvin TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_w_TL: . Profile set layer average water vapor mixing ratio tangent-linear array. UNITS: g/kg TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) layer_o_TL: Profile set layer average ozone mixing ratio tangent-linear array. UNITS: ppmv TYPE: Real DIMENSION: K x M; K > 1, and M > or = 1 ATTRIBUTES: INTENT( IN ) surface_temperature_TL: Profile set surface temperature tangent-linear array. UNITS: Kelvin TYPE: Real DIMENSION: M; M > or = 1 (i.e. scalar) ATTRIBUTES: INTENT( IN ) surface_emissivity_TL: Profile set surface emissivity tangent-linear array UNITS: None TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) surface_reflectivity_TL: Profile set surface reflectivity tangent-linear array UNITS: None TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) secant_view_angle: Secant of the satellite view angle measured from nadir for each profile in the set. UNITS: None TYPE: Real DIMENSION: M; M > or = 1 (i.e. scalar) ATTRIBUTES: INTENT( IN ) secant_solar_angle: Secant of the solar zenith angle for each profile in the set. UNITS: None TYPE: Real DIMENSION: M; M > or = 1 (i.e. scalar) ATTRIBUTES: INTENT( IN ) n_channels_per_profile: The number of channels for each profile in the set for which radiances are required. UNITS: None TYPE: Integer DIMENSION: M; M > or = 1 (i.e. scalar) ATTRIBUTES: INTENT( IN ) channel_index: Channel index id array. Each element is a unique index to a (supported) sensor channel. UNITS: None TYPE: Integer DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( IN ) OPTIONAL INPUT ARGUMENTS: message_log: Character string specifying a filename in which any messages will be logged. If not specified, or if an error occurs opening the log file, the default action is to output messages to the screen. UNITS: None TYPE: Character DIMENSION: Scalar ATTRIBUTES: INTENT( IN ), OPTIONAL OUTPUT ARGUMENTS: tau_TL: Layer->TOA tangent-linear transmittance for the satellite view angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( OUT ) flux_tau_TL: Layer->SFC tangent-linear transmittance for the default diffusivity angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( OUT ) solar_tau_TL: Layer->SFC tangent-linear transmittance for the solar zenith angle. UNITS: None. TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( OUT ) layer_radiance_TL: Layer Planck tangent-linear radiances at every layer for each channel/profile. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: K x L*M; K > 1, L > 1, and M > or = 1 ATTRIBUTES: INTENT( OUT ) downwelling_radiance_TL: TOA->SFC tangent-linear radiances for each channel/profile due to thermal flux and solar components. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( OUT ) upwelling_radiance_TL: TOA tangent-linear radiances for each channel/profile. UNITS: mW/(m^2.sr.cm^-1) TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( OUT ) brightness_temperature_TL: Tangent-linear temperatures corresponding to the TOA tangent-linear radiances. UNITS: Kelvin TYPE: Real DIMENSION: L*M; L > 1, and M > or = 1 NB: This is a 1-D array. ATTRIBUTES: INTENT( OUT ) OPTIONAL OUTPUT ARGUMENTS: None. FUNCTION RESULT: Result = SUCCESS => Calculation was successful = FAILURE => Error occurred checking input arguments CALLS: display_message: Subroutine to output messages SOURCE: error_handler module get_max_n_channels: Routine to retrieve the value of the MAX_N_CHANNELS "pseudo-parameter". SOURCE: parameters module compute_absorber_amount_TL: Subroutine to integrate the tangent-linear absorber profiles SOURCE: absorber_profile module compute_predictors_TL: Subroutine to compute the tangent-linear transmittance predictor profiles. SOURCE: predictor module compute_transmittance_TL: Subroutine to compute the tangent-linear transmittance profiles. SOURCE: transmittance module compute_radiance_TL: Subroutine to compute the TOA tangent-linear radiances and brightness temperatures. SOURCE: radiance module EXTERNALS: None COMMON BLOCKS: None. SIDE EFFECTS: None known. RESTRICTIONS: Note the restrictions on the input array dimensions: K == n_layers > 1 L == n_channels > 1 M == n_profiles > or = 1 PROCEDURE: See individual module function documentation.
(See tangent_linear_model.f90)