1 subroutine siem_ats(theta,frequency,tba,ts,seaice_type,em_vector)
3 !$$$ subprogram documentation block
7 ! prgmmr: Banghua Yan org: nesdis date: 2004-03-01
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:
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
44 ! machine: ibm rs/6000 sp
48 ! use kinds, only: r_kind,i_kind
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))
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
78 ! Calculate emissivity discriminators at five AMSU window channels
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
88 call siem_interpolate(frequency,discriminator,emissivity,seaice_type)
90 em_vector(1) = emissivity
91 em_vector(2) = emissivity
94 end subroutine siem_ats