52 REAL(fp),
PARAMETER ::
zero = 0.0_fp,
one = 1.0_fp,
two = 2.0_fp
68 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &
69 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, &
81 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &
153 REAL(fp),
INTENT( IN ) :: temperature(:)
154 REAL(fp),
INTENT( IN ) :: be
155 REAL(fp),
INTENT( IN ) :: cosbk
156 REAL(fp),
INTENT( IN ) :: doppler_shift
157 REAL(fp),
INTENT( IN ) :: secang(:)
161 REAL(fp) :: be2, be3, oneoverbe, oneoverbe2, cosbk2, oneovert
167 oneoverbe2 = oneoverbe * oneoverbe
168 cosbk2 = cosbk * cosbk
170 DO k = 1, predictor%n_Layers
172 oneovert = 300.0_fp / temperature(k)
173 predictor%X(k, 1, 1) = oneovert
174 predictor%X(k, 2, 1) = oneovert * cosbk2
175 predictor%X(k, 3, 1) = oneovert / be
176 predictor%X(k, 4, 1) = oneovert * cosbk / be
177 predictor%X(k, 5, 1) = oneovert * cosbk / be2
181 predictor%X(:, 6, 1) =
one 182 predictor%X(:, 7, 1) = cosbk
183 predictor%X(:, 8, 1) = cosbk2
184 predictor%X(:, 9, 1) = oneoverbe
185 predictor%X(:, 10, 1) = oneoverbe2
186 predictor%X(:, 11, 1) = oneoverbe2 * oneoverbe
187 predictor%X(:, 12, 1) = cosbk * be2
188 predictor%X(:, 13, 1) = cosbk2 * be2
189 predictor%X(:, 14, 1) = cosbk * be3
190 predictor%X(:, 15, 1) = be
191 predictor%X(:, 16, 1) = be3
192 predictor%X(:, 17, 1) = cosbk * be
193 predictor%X(:, 18, 1) = cosbk2 * be
198 predictor%u = doppler_shift
199 predictor%Secant_Zenith = secang
261 REAL(fp),
INTENT( IN ) :: temperature(:)
262 REAL(fp),
INTENT( IN ) :: be
263 REAL(fp),
INTENT( IN ) :: cosbk
264 REAL(fp),
INTENT( IN ) :: temperature_tl(:)
268 REAL(fp) :: be2, cosbk2, oneovert, oneovert_tl
272 cosbk2 = cosbk * cosbk
274 DO k = 1, predictor_tl%n_Layers
276 oneovert = 300.0_fp / temperature(k)
277 oneovert_tl = -(oneovert / temperature(k))*temperature_tl(k)
278 predictor_tl%X(k, 1, 1) = oneovert_tl
279 predictor_tl%X(k, 2, 1) = oneovert_tl * cosbk2
280 predictor_tl%X(k, 3, 1) = oneovert_tl / be
281 predictor_tl%X(k, 4, 1) = oneovert_tl * cosbk / be
282 predictor_tl%X(k, 5, 1) = oneovert_tl * cosbk / be2
286 predictor_tl%X(:, 6:18, 1) =
zero 349 REAL(fp),
INTENT( IN ) :: temperature(:)
350 REAL(fp),
INTENT( IN ) :: be
351 REAL(fp),
INTENT( IN ) :: cosbk
353 REAL(fp),
INTENT( INOUT ) :: temperature_ad(:)
356 REAL(fp) :: be2, cosbk2, oneovert, oneovert_ad
360 cosbk2 = cosbk * cosbk
362 DO k = 1, predictor_ad%n_Layers
364 oneovert = 300.0_fp / temperature(k)
366 oneovert_ad = predictor_ad%X(k, 1, 1) + &
367 predictor_ad%X(k, 2, 1)*cosbk2 + &
368 predictor_ad%X(k, 3, 1) / be + &
369 predictor_ad%X(k, 4, 1) * cosbk / be + &
370 predictor_ad%X(k, 5, 1) * cosbk / be2
371 temperature_ad(k) = temperature_ad(k) - &
372 (oneovert / temperature(k)) * oneovert_ad
376 predictor_ad%X(:, :, 1) =
zero 448 REAL(fp),
INTENT( IN ) :: temperature(:)
449 REAL(fp),
INTENT( IN ) :: ref_temperature(:)
450 REAL(fp),
INTENT( IN ) :: be
451 REAL(fp),
INTENT( IN ) :: cosbk
452 REAL(fp),
INTENT( IN ) :: secang(:)
456 REAL(fp) :: be3, cosbk2, cosbk2be2, tk
461 cosbk2be2 = cosbk2*be*be
463 DO k = 1, predictor%n_Layers
464 tk = temperature(k)/ref_temperature(k)
465 predictor%X(k, 1, 1) = secang(k)
466 predictor%X(k, 2, 1) = tk
467 predictor%X(k, 3, 1) = tk*tk
468 predictor%X(k, 4, 1) = cosbk2
469 predictor%X(k, 5, 1) = be*secang(k)
470 predictor%X(k, 6, 1) = be3
471 predictor%X(k, 7, 1) = cosbk2be2*secang(k)
477 predictor%Secant_Zenith = secang
529 REAL(fp),
INTENT( IN ) :: temperature(:)
530 REAL(fp),
INTENT( IN ) :: ref_temperature(:)
531 REAL(fp),
INTENT( IN ) :: temperature_tl(:)
535 REAL(fp) :: tk, tk_tl
539 DO k = 1, predictor_tl%n_Layers
540 tk = temperature(k)/ref_temperature(k)
541 tk_tl = temperature_tl(k)/ref_temperature(k)
542 predictor_tl%X(k, 1, 1) =
zero 543 predictor_tl%X(k, 2, 1) = tk_tl
544 predictor_tl%X(k, 3, 1) =
two*tk*tk_tl
545 predictor_tl%X(k, 4, 1) =
zero 546 predictor_tl%X(k, 5, 1) =
zero 547 predictor_tl%X(k, 6, 1) =
zero 548 predictor_tl%X(k, 7, 1) =
zero 602 REAL(fp),
INTENT( IN ) :: temperature(:)
603 REAL(fp),
INTENT( IN ) :: ref_temperature(:)
605 REAL(fp),
INTENT( INOUT ) :: temperature_ad(:)
608 REAL(fp) :: tk, tk_ad
611 DO k = predictor_ad%n_Layers, 1, -1
612 tk = temperature(k)/ref_temperature(k)
614 tk_ad =
two*tk*predictor_ad%X(k, 3, 1)
615 tk_ad = tk_ad + predictor_ad%X(k, 2, 1)
616 temperature_ad(k) = temperature_ad(k) + tk_ad/ref_temperature(k)
617 predictor_ad%X(k, :, 1) =
zero subroutine, public compute_predictors_zssmis_ad(Temperature, Be, CosBK, Predictor_AD, Temperature_AD)
integer, parameter, public failure
integer, parameter, public odps_gindex_zssmis
subroutine, public compute_predictors_zamsua_ad(Temperature, Ref_Temperature, Predictor_AD, Temperature_AD)
real(fp), parameter, public zero
integer, dimension(n_channels_amsua), parameter, public zamsua_channelmap
integer, parameter, public max_n_predictors_zamsua
integer, parameter n_channels_amsua
integer, parameter, public fp
subroutine, public compute_predictors_zamsua_tl(Temperature, Ref_Temperature, Temperature_TL, Predictor_TL)
subroutine, public compute_predictors_zssmis(Temperature, Be, CosBK, Doppler_Shift, Secang, Predictor)
integer, parameter, public max_n_predictors_zssmis
integer, parameter, public n_zcomponents
integer, dimension(n_channels_ssmis), parameter, public zssmis_channelmap
integer, parameter n_channels_ssmis
real(fp), parameter, public one
subroutine, public compute_predictors_zssmis_tl(Temperature, Be, CosBK, Temperature_TL, Predictor_TL)
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
real(fp), parameter, public two
integer, parameter, public n_zabsorbers
integer, parameter, public odps_gindex_zamsua
subroutine, public compute_predictors_zamsua(Temperature, Ref_Temperature, Be, CosBK, Secang, Predictor)
integer, parameter, public success