da_tb_tl.inc
References to this file elsewhere.
1 subroutine da_tb_tl(ifreq,theta,p0,ta,gamma,sst,wv,hwv,u,alw,zcld, &
2 ! tbv,tbh, &
3 TGL_p0,TGL_ta,TGL_gamma,TGL_sst,TGL_wv, &
4 TGL_hwv,TGL_u,TGL_alw,TGL_zcld,TGL_tbv,TGL_tbh )\
5
6 !---------------------------------------------------------------------------
7 ! Purpose: TBD
8 ! Input : TGL_p0, TGL_ta, TGL_gamma, TGL_sst, TGL_wv, TGL_hwv, TGL_u
9 ! TGL_alw, TGL_zcld
10 ! Output : TGL_tbv, TGL_tbh, tbv, tbh
11 ! ---------------------------------------------------------------------------
12
13 implicit none
14
15 integer, intent(in ) :: ifreq
16 real , intent(in ) :: theta,p0,ta,gamma,sst,wv,hwv,u,alw,zcld
17 real , intent(in ) :: TGL_p0,TGL_ta,TGL_gamma,TGL_sst,TGL_wv, &
18 TGL_hwv,TGL_u,TGL_alw,TGL_zcld
19 ! real , intent(in ) :: tbv,tbh
20 real , intent( out) :: TGL_tbv,TGL_tbh
21
22 real :: freq(4),ebiasv(4),ebiash(4),cf1(4),cf2(4),cg(4)
23
24 real :: f,costhet,gx2,tbup,tbdn,tauatm,sigma,remv,remh
25 real :: effangv,effangh,tbdnv,dum,foam,emissv,emissh
26 real :: refv,refh,semv,semh,scatv,scath,tbdnh
27 real :: TGL_gx2,TGL_tbup,TGL_tbdn,TGL_tauatm,TGL_sigma
28 real :: TGL_remh,TGL_effangv,TGL_effangh
29 ! real :: TGL_tremv
30 real :: TGL_tbdnh,TGL_dum,TGL_foam,TGL_emissv
31 real :: TGL_emissh,TGL_refv,TGL_refh,TGL_semv
32 real :: TGL_semh,TGL_scatv,TGL_scath,TGL_remv,TGL_tbdnv
33 real :: TGL_theta
34
35 real :: fem
36
37 data freq/19.35,22.235,37.0,85.5/
38
39 ! empirical bias corrections for surface emissivity
40
41 data ebiasv/0.0095, 0.005,-0.014, -0.0010/
42 data ebiash/0.004, 0.0,-0.023, 0.043/
43
44 data cf1/0.0015,0.004,0.0027,0.005/
45 data cg/4.50e-3, 5.200e-3, 5.5e-3, 7.2e-3 /
46
47 data cf2/0.0023,0.000,0.0002,-0.006/
48
49 ! 'foam' emissivity
50 data fem /1.0/
51
52 f = freq(ifreq)
53 costhet = cos(theta*0.017453)
54
55 ! effective surface slope variance
56
57 gx2 = cg(ifreq)* u
58 TGL_gx2 = cg(ifreq)*TGL_u
59
60 ! get upwelling atmospheric brightness temperature
61
62 TGL_theta=0.
63 call da_tbatmos_tl(ifreq,theta,p0,wv,hwv,ta,gamma,alw,zcld, &
64 tbup,tbdn,tauatm, &
65 TGL_theta,TGL_p0,TGL_wv,TGL_hwv,TGL_ta,TGL_gamma, &
66 TGL_alw,TGL_zcld,TGL_tbup,TGL_tbdn, &
67 TGL_tauatm )
68
69 ! convert transmittance to optical depth
70
71 sigma = -alog(tauatm)*costhet
72 TGL_sigma = -costhet*TGL_tauatm/tauatm
73
74 ! get rough surface emissivity
75
76 call da_roughem_tl(ifreq,gx2,sst,theta,remv,remh, &
77 TGL_gx2,TGL_sst,TGL_remv,TGL_remh )
78
79 ! get effective zenith angles for scattered radiation at surface
80
81 call da_effang_tl(ifreq,theta,gx2,sigma,effangv,effangh, &
82 TGL_gx2,TGL_sigma,TGL_effangv,TGL_effangh)
83
84 ! get effective sky brightness temperatures for scattered radiation
85
86 call da_tbatmos_tl(ifreq,effangv,p0,wv,hwv,ta,gamma,alw, &
87 zcld,dum,tbdnv,dum, &
88 TGL_effangv,TGL_p0,TGL_wv,TGL_hwv, &
89 TGL_ta,TGL_gamma,TGL_alw,TGL_zcld, &
90 TGL_dum,TGL_tbdnv,TGL_dum )
91
92 call da_tbatmos_tl(ifreq,effangh,p0,wv,hwv,ta,gamma,alw, &
93 zcld,dum,tbdnh,dum, &
94 TGL_effangh,TGL_p0,TGL_wv,TGL_hwv, &
95 TGL_ta,TGL_gamma,TGL_alw,TGL_zcld, &
96 TGL_dum,TGL_tbdnh,TGL_dum )
97
98 ! compute 'foam' coverage
99
100 foam = cf1(ifreq)* u
101 TGL_foam = cf1(ifreq)*TGL_u
102
103 if (u .gt. 5.0) then
104 TGL_foam = TGL_foam + cf2(ifreq)*TGL_u
105 foam = foam + cf2(ifreq)*( u-5.0)
106 end if
107
108 ! compute surface emissivities and reflectivity
109
110 emissv = foam*fem + (1.0 - foam)*(remv + ebiasv(ifreq))
111 TGL_emissv = TGL_foam*fem - TGL_foam*(remv + ebiasv(ifreq)) &
112 + (1.0 - foam)*TGL_remv
113 emissh = foam*fem + (1.0 - foam)*(remh + ebiash(ifreq))
114 TGL_emissh = TGL_foam*fem - TGL_foam*(remh + ebiash(ifreq)) &
115 + (1.0 - foam)*TGL_remh
116 refv = 1.0 - emissv
117 TGL_refv = - TGL_emissv
118 refh = 1.0 - emissh
119 TGL_refh = - TGL_emissh
120
121 ! compute surface emission term
122
123 semv = sst*emissv
124 TGL_semv = TGL_sst*emissv + sst*TGL_emissv
125 semh = sst*emissh
126 TGL_semh = TGL_sst*emissh + sst*TGL_emissh
127
128 ! compute surface scattering term
129
130 scatv = refv*tbdnv
131 TGL_scatv = TGL_refv*tbdnv + refv*TGL_tbdnv
132 scath = refh*tbdnh
133 TGL_scath = TGL_refh*tbdnh + refh*TGL_tbdnh
134
135 ! combine to get space-observed brightness temperature
136
137 ! tbv = tbup + tauatm*(semv + scatv)
138 TGL_tbv = TGL_tbup + TGL_tauatm*(semv + scatv) &
139 + tauatm*(TGL_semv + TGL_scatv)
140 ! tbh = tbup + tauatm*(semh + scath)
141 TGL_tbh = TGL_tbup + TGL_tauatm*(semh + scath) &
142 + tauatm*(TGL_semh + TGL_scath)
143
144 end subroutine da_tb_tl
145
146