updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_radiance / siem_ats.inc
blobe23d9c13f9e77c355c782ecd003e8d645cb7510a
1 subroutine siem_ats(theta,frequency,tba,ts,seaice_type,em_vector)
3 !$$$  subprogram documentation block
4 !                .      .    .                                       .
5 ! subprogram:
7 !   prgmmr: Banghua Yan                 org: nesdis              date: 2004-03-01
9 ! abstract:
10 !         Calculate the emissivity discriminators and interpolate/extrapolate
11 !  emissivity at required frequency with respect to secenery AMSUA & Ts
13 ! program history log:
14 !   2004-10-28  treadon - correct out of bound problems for array coe
16 ! input argument list:
18 !      frequency        -  frequency in GHz
19 !      theta            -  local zenith angle in radian
20 !      ts               -  surface temperature
21 !      tba[1] ~ tba[4]  -  brightness temperature at five AMSU-A window channels:
22 !                              tba[1] : 23.8 GHz
23 !                              tba[2] : 31.4 GHz
24 !                              tba[3] : 50.3 GHz
25 !                              tba[4] : 89   GHz
27 ! output argument list:
29 !   em_vector[1] and [2]  -  emissivity at two polarizations.
30 !                              set esv = esh here and will be updated
31 !       seaice_type        -     to be determined
33 ! important internal variables:
35 !   coe23   - fitting coefficients to estimate discriminator at 23.8 GHz
36 !   coe31   - fitting coefficients to estimate discriminator at 31.4 GHz
37 !   coe50   - fitting coefficients to estimate discriminator at 50.3 GHz
38 !   coe89   - fitting coefficients to estimate discriminator at 89   GHz
40 ! remarks:
42 ! attributes:
43 !   language: f90
44 !   machine:  ibm rs/6000 sp
46 !$$$
48 !  use kinds, only: r_kind,i_kind
49   implicit none
50   
51   integer(i_kind),parameter:: nch =10,nwch = 5,ncoe = 4
52   real(r_kind)    :: tba(*),theta
53   real(r_kind)    :: em_vector(*),emissivity,ts,frequency,discriminator(nwch)
54   integer(i_kind) :: seaice_type,i,k,ich,nvalid_ch
55   real(r_kind)  :: coe23(0:ncoe),coe31(0:ncoe),coe50(0:ncoe),coe89(0:ncoe),coe150(0:ncoe)
56   real(r_kind)  :: coe(nch*(ncoe+1))
57   
58   Equivalence (coe(1),coe23)
59   Equivalence (coe(11),coe31)
60   Equivalence (coe(21),coe50)
61   Equivalence (coe(31),coe89)
62   Equivalence (coe(41),coe150)
64 ! Fitting Coefficients Using Tb1, Tb2, Tb4 and Ts
65   data coe23/ 9.815214e-001_r_kind,  3.783815e-003_r_kind,  &
66        6.391155e-004_r_kind, -9.106375e-005_r_kind, -4.263206e-003_r_kind/
67   data coe31/ 9.047181e-001_r_kind, -2.782826e-004_r_kind,  &
68        4.664207e-003_r_kind, -3.121744e-005_r_kind, -3.976189e-003_r_kind/
69   data coe50/ 1.163853e+000_r_kind, -1.419205e-003_r_kind,  &
70        5.505238e-003_r_kind,  1.506867e-003_r_kind, -6.157735e-003_r_kind/
71   data coe89/  1.020753e+000_r_kind, -8.666064e-004_r_kind,  &
72        9.624331e-004_r_kind,  4.878773e-003_r_kind, -5.055044e-003_r_kind/
73   data coe150/ 1.438246e+000_r_kind,  5.667756e-004_r_kind, &
74        -2.621972e-003_r_kind,  5.928146e-003_r_kind, -5.856687e-003_r_kind/
75   save coe23,coe31,coe50,coe89,coe150
76   
78 ! Calculate emissivity discriminators at five AMSU window channels
79   
80   do ich = 1, nwch
81      discriminator(ich) = coe(1+(ich-1)*10)
82      discriminator(ich) = discriminator(ich) + coe((ich-1)*10 + 2)*tba(1)  &
83           + coe((ich-1)*10 + 3)*tba(2)  &
84           + coe((ich-1)*10 + 4)*tba(4)  &
85           + coe( (ich-1)*10 + 5 )*ts
86   end do
87   
88   call siem_interpolate(frequency,discriminator,emissivity,seaice_type)
89   
90   em_vector(1) = emissivity
91   em_vector(2) = emissivity
92   
93   
94 end subroutine siem_ats