!---------------------------------------------------------------------
!     Copyright (C) GFD Dennou Club, 2004. All rights reserved.
!---------------------------------------------------------------------
                                                                 !=begin
!= Subroutine SaturationRatio
!
!   * Developer: KITAMORI Taichi 
!   * Version: $ 
!   * Tag Name: $Name:  $
!   * Change History: 
!
!== Overview 
!
!Ë°ÏÂÈæ¤ò·×»»¤¹¤ë. 
!
!== Error Handling
!
!== Known Bugs
!
!== Note
!
!
!
!
!== Future Plans
!
                                                                 !=end
subroutine SaturationRatio(ss_Exner,  &   !(in)
  &                        ss_PotTemp, &  !(in)
  &                        ss_SatRatio)   !(out)
                                                                 !=begin
  !== Dependency
  use dc_trace, only:  BeginSub, EndSub
  use gridset,  only:  DimXMin, DimXMax, DimZMin, DimZMax
  use basicset, only:  ss_ExnerBasicZ, &
    &                  ss_PotTempBasicZ,  &
    &                  ss_CpBasicZ
  use physset,  only:  GasR, &
    &                  PressSfc
  use cloudset, only:  SatPressA,   &
    &                  SatPressB

  !== Input
  real(8), intent(in)   :: ss_Exner(DimXMin:DimXMax, DimZMin:DimZMax)
  real(8), intent(in)   :: ss_PotTemp(DimXMin:DimXMax, DimZMin:DimZMax)

  !== Output
  real(8), intent(out)  :: ss_SatRatio(DimXMin:DimXMax, DimZMin:DimZMax)
                                                                 !=end

  call BeginSub("SaturationRatio", &
    &           fmt="%c",        &
    &           c1="Calculate saturation ratio.")

  ss_SatRatio =  &
    &  PressSfc * (ss_ExnerBasicZ + ss_Exner)**(ss_CpBasicZ / GasR) &
    &  * (  exp(  &
    &           - SatPressA &
    &           + SatPressB  &
    &             / ( (ss_ExnerBasicZ + ss_Exner) &
    &                 *  (ss_PotTempBasicZ + ss_PotTemp) )&
    &          )  &
    &    ) 

  call EndSub("SaturationRatio")

end subroutine SaturationRatio
