<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
!
! Helper module containing the foam-related utility routines for the
! CRTM implementation of FASTEM4 and FASTEM5
!
!
! CREATION HISTORY:
! Written by: Original FASTEM1-5 authors
!
! Refactored by: Paul van Delst, November 2011
! paul.vandelst@noaa.gov
!
<A NAME='FOAM_UTILITY_MODULE'><A href='../../html_code/crtm/Foam_Utility_Module.f90.html#FOAM_UTILITY_MODULE' TARGET='top_target'><IMG SRC="../../gif/bar_purple.gif" border=0></A>
MODULE Foam_Utility_Module 1
! -----------------
! Environment setup
! -----------------
! Module use
USE Type_Kinds
, ONLY: fp
USE FitCoeff_Define
, ONLY: FitCoeff_1D_type
! Disable implicit typing
IMPLICIT NONE
! ------------
! Visibilities
! ------------
PRIVATE
PUBLIC :: Foam_Coverage
PUBLIC :: Foam_Coverage_TL
PUBLIC :: Foam_Coverage_AD
PUBLIC :: Foam_Reflectivity
! -----------------
! Module parameters
! -----------------
CHARACTER(*), PARAMETER :: MODULE_VERSION_ID = &
'$Id: Foam_Utility_Module.f90 29405 2013-06-20 20:19:52Z paul.vandelst@noaa.gov $'
! Literal constants
REAL(fp), PARAMETER :: ZERO = 0.0_fp
REAL(fp), PARAMETER :: ONE = 1.0_fp
REAL(fp), PARAMETER :: TWO = 2.0_fp
CONTAINS
! ===================================================================
! Foam coverage.
!
! Monahan, E.C., and O'Muircheartaigh, I.G., (1986)
! Whitecaps and the passive remote sensing of the ocean surface,
! International Journal of Remote Sensing, 7, pp627-642.
!
! The neutral stability condition is used here (i.e. the difference
! between the skin and air temperature is assumed to be zero) so
! that the form of the foam coverage equation is the same as in
! Tang (1974) and Liu et al. (1998)..
!
! Liu, Q. et al. (1998) Monte Carlo simulations of the
! microwave emissivity of the sea surface.
! JGR, 103(C11), pp24983-24989
!
! Tang, C. (1974) The effect of droplets in the air-sea
! transition zone on the sea brightness temperature.
! J. Phys. Oceanography, 4, pp579-593.
!
! ===================================================================
! Forward model
<A NAME='FOAM_COVERAGE'><A href='../../html_code/crtm/Foam_Utility_Module.f90.html#FOAM_COVERAGE' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE Foam_Coverage(FCCoeff, wind_speed, coverage) 2
TYPE(FitCoeff_1D_type), INTENT(IN) :: FCCoeff
REAL(fp) , INTENT(IN) :: wind_speed
REAL(fp) , INTENT(OUT) :: coverage
IF ( wind_speed < ZERO ) THEN
coverage = ZERO
RETURN
END IF
coverage = FCCoeff%C(1) * (wind_speed**FCCoeff%C(2))
END SUBROUTINE Foam_Coverage
! Tangent-linear model
<A NAME='FOAM_COVERAGE_TL'><A href='../../html_code/crtm/Foam_Utility_Module.f90.html#FOAM_COVERAGE_TL' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE Foam_Coverage_TL(FCCoeff, wind_speed, wind_speed_TL, coverage_TL) 2
TYPE(FitCoeff_1D_type), INTENT(IN) :: FCCoeff
REAL(fp) , INTENT(IN) :: wind_speed
REAL(fp) , INTENT(IN) :: wind_speed_TL
REAL(fp) , INTENT(OUT) :: coverage_TL
IF ( wind_speed < ZERO ) THEN
coverage_TL = ZERO
RETURN
END IF
coverage_TL = FCCoeff%C(1)*FCCoeff%C(2) * (wind_speed**(FCCoeff%C(2)-ONE)) * wind_speed_TL
END SUBROUTINE Foam_Coverage_TL
! Adjoint model
<A NAME='FOAM_COVERAGE_AD'><A href='../../html_code/crtm/Foam_Utility_Module.f90.html#FOAM_COVERAGE_AD' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE Foam_Coverage_AD(FCCoeff, wind_speed, coverage_AD, wind_speed_AD) 2
TYPE(FitCoeff_1D_type), INTENT(IN) :: FCCoeff
REAL(fp) , INTENT(IN) :: wind_speed ! Input
REAL(fp) , INTENT(IN OUT) :: coverage_AD ! Input
REAL(fp) , INTENT(IN OUT) :: wind_speed_AD ! Output
IF ( wind_speed < ZERO ) THEN
coverage_AD = ZERO
RETURN
END IF
wind_speed_AD = wind_speed_AD + &
FCCoeff%C(1)*FCCoeff%C(2) * (wind_speed**(FCCoeff%C(2)-ONE)) * coverage_AD
coverage_AD = ZERO
END SUBROUTINE Foam_Coverage_AD
! =============================================================
! Foam reflectivity
!
! See section d in
!
! Kazumori, M. et al. (2008) Impact Study of AMSR-E Radiances
! in the NCEP Global Data Assimilation System,
! Monthly Weather Review, 136, pp541-559
!
! Function dependence is on zenith angle only so no TL
! or AD routine.
! =============================================================
<A NAME='FOAM_REFLECTIVITY'><A href='../../html_code/crtm/Foam_Utility_Module.f90.html#FOAM_REFLECTIVITY' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE Foam_Reflectivity( & 2
FRCoeff , &
Zenith_Angle, &
Frequency , &
Rv , &
Rh )
! Arguments
TYPE(FitCoeff_1D_type), INTENT(IN) :: FRCoeff
REAL(fp) , INTENT(IN) :: Zenith_Angle
REAL(fp) , INTENT(IN) :: Frequency
REAL(fp) , INTENT(OUT) :: Rv, Rh
! Local variables
REAL(fp) :: factor
! The vertical component is a fixed value
Rv = ONE - FRCoeff%C(1) ! Fixed nadir emissivity
! The horizontal component uses a regression equation
! to compute a factor modifying the nadir emissivity
factor = ONE + Zenith_Angle*(FRCoeff%C(2) + &
Zenith_Angle*(FRCoeff%C(3) + &
Zenith_Angle*FRCoeff%C(4) ) )
Rh = ONE - factor*FRCoeff%C(1)
! Frequency correction
factor = FRCoeff%C(5) * EXP(FRCoeff%C(6)*Frequency)
Rv = Rv * factor
Rh = Rh * factor
END SUBROUTINE Foam_Reflectivity
END MODULE Foam_Utility_Module