<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_TB_TL'><A href='../../html_code/ssmi/da_tb_tl.inc.html#DA_TB_TL' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
subroutine da_tb_tl(ifreq,theta,p0,ta,gamma,sst,wv,hwv,u,alw,zcld, & 4,7
! tbv,tbh, &
TGL_p0,TGL_ta,TGL_gamma,TGL_sst,TGL_wv, &
TGL_hwv,TGL_u,TGL_alw,TGL_zcld,TGL_tbv,TGL_tbh )\
!---------------------------------------------------------------------------
! Purpose: TBD
! Input : TGL_p0, TGL_ta, TGL_gamma, TGL_sst, TGL_wv, TGL_hwv, TGL_u
! TGL_alw, TGL_zcld
! Output : TGL_tbv, TGL_tbh, tbv, tbh
! ---------------------------------------------------------------------------
implicit none
integer, intent(in) :: ifreq
real, intent(in) :: theta,p0,ta,gamma,sst,wv,hwv,u,alw,zcld
real, intent(in) :: TGL_p0,TGL_ta,TGL_gamma,TGL_sst,TGL_wv, TGL_hwv,TGL_u,TGL_alw,TGL_zcld
! real , intent(in) :: tbv,tbh
real, intent(out) :: TGL_tbv,TGL_tbh
real :: freq(4),ebiasv(4),ebiash(4),cf1(4),cf2(4),cg(4)
real :: f,costhet,gx2,tbup,tbdn,tauatm,sigma,remv,remh
real :: effangv,effangh,tbdnv,dum,foam,emissv,emissh
real :: refv,refh,semv,semh,scatv,scath,tbdnh
real :: TGL_gx2,TGL_tbup,TGL_tbdn,TGL_tauatm,TGL_sigma
real :: TGL_remh,TGL_effangv,TGL_effangh
! real :: TGL_tremv
real :: TGL_tbdnh,TGL_dum,TGL_foam,TGL_emissv
real :: TGL_emissh,TGL_refv,TGL_refh,TGL_semv
real :: TGL_semh,TGL_scatv,TGL_scath,TGL_remv,TGL_tbdnv
real :: TGL_theta
real :: fem
data freq/19.35,22.235,37.0,85.5/
! empirical bias corrections for surface emissivity
data ebiasv/0.0095, 0.005,-0.014, -0.0010/
data ebiash/0.004, 0.0,-0.023, 0.043/
data cf1/0.0015,0.004,0.0027,0.005/
data cg/4.50e-3, 5.200e-3, 5.5e-3, 7.2e-3 /
data cf2/0.0023,0.000,0.0002,-0.006/
! 'foam' emissivity
data fem /1.0/
if (trace_use) call da_trace_entry
("da_tb_tl")
f = freq(ifreq)
costhet = cos(theta*0.017453)
! effective surface slope variance
gx2 = cg(ifreq)* u
TGL_gx2 = cg(ifreq)*TGL_u
! get upwelling atmospheric brightness temperature
TGL_theta=0.0
call da_tbatmos_tl
(ifreq,theta,p0,wv,hwv,ta,gamma,alw,zcld, &
tbup,tbdn,tauatm, &
TGL_theta,TGL_p0,TGL_wv,TGL_hwv,TGL_ta,TGL_gamma, &
TGL_alw,TGL_zcld,TGL_tbup,TGL_tbdn, &
TGL_tauatm )
! convert transmittance to optical depth
sigma = -alog(tauatm)*costhet
TGL_sigma = -costhet*TGL_tauatm/tauatm
! get rough surface emissivity
call da_roughem_tl
(ifreq,gx2,sst,theta,remv,remh, &
TGL_gx2,TGL_sst,TGL_remv,TGL_remh )
! get effective zenith angles for scattered radiation at surface
call da_effang_tl
(ifreq,theta,gx2,sigma,effangv,effangh, &
TGL_gx2,TGL_sigma,TGL_effangv,TGL_effangh)
! get effective sky brightness temperatures for scattered radiation
call da_tbatmos_tl
(ifreq,effangv,p0,wv,hwv,ta,gamma,alw, &
zcld,dum,tbdnv,dum, &
TGL_effangv,TGL_p0,TGL_wv,TGL_hwv, &
TGL_ta,TGL_gamma,TGL_alw,TGL_zcld, &
TGL_dum,TGL_tbdnv,TGL_dum )
call da_tbatmos_tl
(ifreq,effangh,p0,wv,hwv,ta,gamma,alw, &
zcld,dum,tbdnh,dum, &
TGL_effangh,TGL_p0,TGL_wv,TGL_hwv, &
TGL_ta,TGL_gamma,TGL_alw,TGL_zcld, &
TGL_dum,TGL_tbdnh,TGL_dum )
! compute 'foam' coverage
foam = cf1(ifreq)* u
TGL_foam = cf1(ifreq)*TGL_u
if (u .gt. 5.0) then
TGL_foam = TGL_foam + cf2(ifreq)*TGL_u
foam = foam + cf2(ifreq)*( u-5.0)
end if
! compute surface emissivities and reflectivity
emissv = foam*fem + (1.0 - foam)*(remv + ebiasv(ifreq))
TGL_emissv = TGL_foam*fem - TGL_foam*(remv + ebiasv(ifreq)) &
+ (1.0 - foam)*TGL_remv
emissh = foam*fem + (1.0 - foam)*(remh + ebiash(ifreq))
TGL_emissh = TGL_foam*fem - TGL_foam*(remh + ebiash(ifreq)) &
+ (1.0 - foam)*TGL_remh
refv = 1.0 - emissv
TGL_refv = - TGL_emissv
refh = 1.0 - emissh
TGL_refh = - TGL_emissh
! compute surface emission term
semv = sst*emissv
TGL_semv = TGL_sst*emissv + sst*TGL_emissv
semh = sst*emissh
TGL_semh = TGL_sst*emissh + sst*TGL_emissh
! compute surface scattering term
scatv = refv*tbdnv
TGL_scatv = TGL_refv*tbdnv + refv*TGL_tbdnv
scath = refh*tbdnh
TGL_scath = TGL_refh*tbdnh + refh*TGL_tbdnh
! combine to get space-observed brightness temperature
! tbv = tbup + tauatm*(semv + scatv)
TGL_tbv = TGL_tbup + TGL_tauatm*(semv + scatv) &
+ tauatm*(TGL_semv + TGL_scatv)
! tbh = tbup + tauatm*(semh + scath)
TGL_tbh = TGL_tbup + TGL_tauatm*(semh + scath) &
+ tauatm*(TGL_semh + TGL_scath)
if (trace_use) call da_trace_exit
("da_tb_tl")
end subroutine da_tb_tl