siem_ats.inc
References to this file elsewhere.
1 subroutine siem_ats(theta,frequency,tba,ts,seaice_type,em_vector)
2 !
3 !$$$ subprogram documentation block
4 ! . . . .
5 ! subprogram:
6 !
7 ! prgmmr: Banghua Yan org: nesdis date: 2004-03-01
8 !
9 ! abstract:
10 ! Calculate the emissivity discriminators and interpolate/extrapolate
11 ! emissivity at required frequency with respect to secenery AMSUA & Ts
12 !
13 ! program history log:
14 ! 2004-10-28 treadon - correct out of bound problems for array coe
15 !
16 ! input argument list:
17 !
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
26 !
27 ! output argument list:
28 !
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
32 !
33 ! important internal variables:
34 !
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
39 !
40 ! remarks:
41 !
42 ! attributes:
43 ! language: f90
44 ! machine: ibm rs/6000 sp
45 !
46 !$$$
47
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)
63
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
77
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