!==============================================================
!
!  SYNOPSIS OF subroutineS TB, TBATMOS
!
!===============================================================
!  subroutine TBATMOS(ifREQ,THETA,P0,WV,HWV,TA,GAMMA,LW,ZCLD,TBUP,
!                    TBDN,TAUATM)
!
!  This routine calculates the upwelling and downwelling microwave 
!  atmospheric brightness temperatures and transmittance at SSM/I
!  frequencies.  It is a generalization of "TBCLEAR" and includes a 
!  cloud layer of known height and total liquid water content.
!------------------------------------------
!  Input :   ifREQ = (1,2,3, or 4 ) for (19.35, 22.235, 37, or 85.5 GHz)
!            THETA = incidence angle (deg.)
!
!                                                       ( approximate range )
!            P0    = surface pressure (mb)                      (940 -1030)
!            WV    = precipitable water (kg/m**2)                 (0 - 70)
!            HWV   = water vapor density scale height (km)      (0.5 - 3.0)
!            TA, GAMMA = "effective" surface air temperature 
!                               and lapse rate (K ; km)
!                     T(z) = Ta - gamma*z              (263 - 303 ; 4.0 - 6.5)
!
!            LW, ZCLD  = total cloud liquid water content (kg/m**2) and height (km)
!
!  Output :  TBUP, TBDN = atmospheric component of upwelling and downwelling
!                         brightness temperature (K)
!            TAUATM    = total atmospheric transmittance at specified incidence angle.
!
!  Subroutines called : EFFHT, SIGMA_V
!
!
!===================================================================
!
!   NOTES
!
!===================================================================
!
!
!    1) This model is described in detail by Petty (1990).  
!    Frequency dependent
!    coefficients of the model are based on radiative transfer
!    integrations of 16,893 radiosonde profiles from 29 ships, islands and
!    coastal stations, representing all major climatic regimes and all
!    seasons.  Absorption coefficients used in these integrations were
!    obtained from an adaptation of the Millimeter-wave Propagation Model
!    (MPM) of Liebe (1985) with updated line parameters (Liebe 1988,
!    personal communication).  Empirical corrections to total water
!    absorption values have been added, based on comparisons with
!    radiosondes.
!    
!    2) The frequency-dependent component of the model is only 
!    intended to give meaningful results for
!    combinations of input parameters which are meteorologically and
!    physically reasonable under coastal or maritime conditions near sea
!    level.  The user must ensure that input values are not only
!    individually reasonable, but also are mutually consistent.  See
!    Petty (1990) for details.
!    
!    3) Computed brightness temperatures from this model are generally
!    valid only for (gaseous optical depth)/cos(theta) of order unity or
!    less.  This is usually of concern only for theta > 75 deg. in a moist
!    atmosphere at 22 and 85 GHz.  An ad hoc correction has been added to
!    TBCLEAR which greatly improves the calculated downwelling brightness
!    temperature for near-grazing angles, so that its contribution to the
!    diffuse reflected component from the sea surface may be correctly
!    estimated.  No such correction is applied to upwelling brightness
!    temperatures, since there is no contribution to SSM/I observations
!    from angles other than at the nadir angle.  The correction is also
!    not yet available for downwelling brightness temperatures from
!    TBATMOS. 
!                  
!
!    The author welcomes feedback from other workers concerning the
!    accuracy and overall performance of the routines presented here.
!    
!    
!    References:
!    
!       Liebe, H.J., 1985 :  An updated model for millimeter
!         wave propagation in moist air.  Radio Science, 20, pp. 1069-1089
!    
!       Liebe, H.J., 1988, personal communication: updated absorption line
!         parameters. 
!    
!       Petty, G.W. 1990:  On the Response of the SSM/I to the 
!         Marine Environment --- Implications for Atmospheric Parameter
!         Retrievals.  Ph.D. Dissertation, Dept. of Atmospheric Sciences,
!         University of Washington
!
!       Petty, G.W., and K.B. Katsaros, 1992: The response
!        of the Special Sensor Microwave/Imager to the
!        marine environment. Part I: An analytic model for
!        the atmospheric component of observed brightness
!        temperatures.  J. Atmos. Ocean. Tech., 9, 746--761
!       
!       Petty, G.W., and K.B. Katsaros, 1993: The response
!        of the Special Sensor Microwave/Imager to the
!        marine environment. Part II: A parameterization of
!        roughness effects on sea surface emission and
!        reflection.  Submitted to J. Atmos. Ocean. Tech.
!       
!    
!===============================================================
!
!  fortran source code listings for TBATMOS,
!                       SIGMA_V, EFFHT
!
!===============================================================
!  subroutine TBATMOS(ifREQ,THETA,P0,WV,HWV,TA,GAMMA,LW,ZCLD,TBUP,
!                    TBDN,TAUATM)
!
!  This routine calculates the upwelling and downwelling microwave 
!  atmospheric brightness temperatures and transmittance at an SSM/I     
!  frequency.  It is a generalization of "TBCLEAR" and includes a 
!  cloud layer of known height and total liquid water content.
!
!  Input :   ifREQ = (1,2,3, or 4 ) for (19.35, 22.235, 37, or 85.5 GHz)
!            THETA = incidence angle (deg.)
!
!                                                       ( approximate range )
!            P0    = surface pressure (mb)                      (940 -1030)
!            WV    = precipitable water (kg/m**2)                 (0 - 70)
!            HWV   = water vapor density scale height (km)      (0.5 - 3.0)
!            TA, GAMMA = "effective" surface air temperature 
!                               and lapse rate (K ; km)
!                     T(z) = Ta - gamma*z              (263 - 303 ; 4.0 - 6.5)
!
!            LW, ZCLD  = total cloud liquid water content (kg/m**2) and height (km)
!
!  Output :  TBUP, TBDN = atmospheric component of upwelling and downwelling
!                         brightness temperature (K)
!            TAUATM    = total atmospheric transmittance at specified incidence angle.
!
!  Subroutines called : EFFHT, SIGMA_V
!------------------------------------------------------------
      subroutine tbatmos(ifreq,theta,p0,wv,hwv,ta,gamma,lw,zcld, &
          tbup,tbdn,tauatm)
      integer ifreq
      real theta,p0,wv,hwv,ta,gamma,lw,zcld,tbup,tbdn,tauatm
      real mu,hdn,hup,hdninf,hupinf
!
      real b1(4),b2(4),b3(4)
      real c(4),d1(4),d2(4),d3(4),zeta(4),kw0(4),kw1(4),kw2(4),kw3(4)
      real tau,tau1,tau2,taucld
      real tcld,tc,em,em1
      real sigv,sigo,sig,sig1,sigcld
      real teff1dn,teff1up,teffdn,teffup
      real tbcld,tbclrdn,tbclrup,tb1dn,tb1up,tb2dn,tb2up
      real otbar,tc2,tc3,hv,ho,alph
!
      data b1/-.46847e-1,-.57752e-1,-.18885,.10990/
      data b2/.26640e-4,.31662e-4,.9832e-4,.60531e-4/
      data b3/.87560e+1,.10961e+2,.36678e+2,-.37578e+2/
      data c/ .9207,   1.208,     .8253,     .8203/
      data zeta/4.2,4.2,4.2,2.9/
      data d1/-.35908e+1,-.38921e+1,-.43072e+1,-.17020e+0/
      data d2/ .29797e-1, .31054e-1, .32801e-1, .13610e-1/
      data d3/-.23174e-1,-.23543e-1,-.24101e-1,-.15776e+0/
      data kw0/ .786e-1, .103,    .267,    .988/
      data kw1/-.230e-2,-.296e-2,-.673e-2,-.107e-1/
      data kw2/ .448e-4, .557e-4, .975e-4,-.535e-4/
      data kw3/-.464e-6,-.558e-6,-.724e-6, .115e-5/
! mu = secant(theta)
      mu = 1.0/cos(theta*0.0174533)
! get water vapor optical depth
!=====
      call cal_sigma_v(ifreq,p0,wv,hwv,ta,gamma,sigv)
! otbar = one over "mean" temperature
      otbar = 1.0/(ta - gamma*zeta(ifreq))
! sigo = dry air optical depth
      sigo = b1(ifreq) + b2(ifreq)*p0  + b3(ifreq)*otbar
! cloud parameters
      tcld   = ta - gamma*zcld
      tc = tcld - t_kelvin
      tc2 = tc*tc
      tc3 = tc2*tc
      sigcld = (kw0(ifreq) + tc*kw1(ifreq) + tc2*kw2(ifreq) +  &
           tc3*kw3(ifreq))*lw
      taucld = exp(-mu*sigcld)
      tbcld = (1.0 - taucld)*tcld
! hv, ho = effective absorber scale heights for vapor, dry air
      hv = c(ifreq)*hwv
      ho = d1(ifreq) + d2(ifreq)*ta + d3(ifreq)*gamma
! get effective emission heights for layer 1 and total atmosphere
      call effht(ho,hv,sigo,sigv,mu,zcld,hdn,hup, &
         hdninf,hupinf)
! atmospheric transmittances in layer one and two, and combined
      sig = sigo + sigv
      sig1 = sigo*(1.0-exp(-zcld/ho)) + sigv*(1.0-exp(-zcld/hv))
      tau  = exp(-mu*sig)
      tau1 = exp(-mu*sig1)
      tau2 = tau/tau1
! atmospheric "emissivity"
      em1  = 1.0 - tau1
      em   = 1.0 - tau
! downwelling and upwelling brightness temperature for each layer
      teff1dn = ta - gamma*hdn
      teff1up = ta - gamma*hup
      teffdn = ta - gamma*hdninf
      teffup = ta - gamma*hupinf
      tbclrdn = teffdn*em
      tbclrup = teffup*em
!
      tb1dn = em1*teff1dn
      tb1up = em1*teff1up
      tb2dn = (tbclrdn - tb1dn)/tau1
      tb2up =  tbclrup - tau2*tb1up
! total downwelling and upwelling brightness temperature and transmittance
      tbdn  = tb1dn + tau1*(tbcld + taucld*tb2dn)
      tbup  = tb2up + tau2*(tbcld + taucld*tb1up)
      tauatm = tau*taucld
!
! the following lines apply an ad hoc correction to improve fit 
! at large angles and/or high gaseous opacities 
!  (downwelling brightness temperatures only)

      alph = (0.636619*atan(mu*sig))**2
      tbdn = (1.0-alph)*tbdn + em*alph*ta
!
      end subroutine tbatmos