next up previous contents
Next: Comparison at constant amount Up: IRAM Memo 2009-5 Comparison Previous: Bibliography   Contents


GILDAS fortran interfaces to ATM

interface
  subroutine atm_setup(inversion,error)
     use atm_version
     !---------------------------------------------------------------------
     ! @ public
     ! Set the ATM version to be used. Supported versions are 1985,
     ! and 2009. 'OLD' (resp. 'NEW') is an alias for 1985 (resp. 2009).
     !---------------------------------------------------------------------
     character(len=*), intent(in)    :: inversion  ! User input version
     logical,          intent(inout) :: error      ! Error flag
  end subroutine atm_setup
  !
  subroutine atm_atmosp_get(ctype_out,humidity_out,wvsh_out,tlr_out,top_out,  &
    p_step_out,p_step_factor_out,error)
    use atm_version
    !---------------------------------------------------------------------
    ! @ public
    ! Public entry point to:
    !  1) get the C++ global variables into the Fortran-SIC ones,
    !  2) return these latter ones.
    ! Warning: these variables make sense only with ATM 2009. Return ATM
    ! 2009 values even if it is not currently used (not an error).
    !---------------------------------------------------------------------
    character(len=*), intent(out)    :: ctype_out          ! Atmospheric type (as a string)
    real(4),          intent(out)    :: humidity_out       ! [%]    Ground Relative Humidity (indication)
    real(4),          intent(out)    :: wvsh_out           ! [km]   Water vapor scale height
    real(4),          intent(out)    :: tlr_out            ! [K/km] Tropospheric lapse rate
    real(4),          intent(out)    :: top_out            ! [km]   Upper atm. boundary for calculations
    real(4),          intent(out)    :: p_step_out         ! [mb]   Primary pressure step
    real(4),          intent(out)    :: p_step_factor_out  ! []     Pressure step ratio between two consecutive layers
    logical,          intent(inout)  :: error              ! Logical error flag
  end subroutine atm_atmosp_get
  !
  subroutine atm_atmosp_set(ctype_in,humidity_in,wvsh_in,tlr_in,top_in,  &
    p_step_in,p_step_factor_in,error)
    use atm_version
    !---------------------------------------------------------------------
    ! @ public
    ! Public entry point to:
    !  1) set the Fortran-SIC global variables values,
    !  2) set the C++ global variables from these values.
    ! Warning: these variables make sense only with ATM 2009. Nothing
    ! will be done if ATM 2009 is not the version in use (not an error).
    ! NB: 'ctype_in' is not case-sensitive, and can be shorten as long
    ! as it is not ambiguous.
    !---------------------------------------------------------------------
    character(len=*), intent(in)    :: ctype_in          ! Atmospheric type (as a string)
    real(4),          intent(in)    :: humidity_in       ! [%]    Ground Relative Humidity (indication)
    real(4),          intent(in)    :: wvsh_in           ! [km]   Water vapor scale height
    real(4),          intent(in)    :: tlr_in            ! [K/km] Tropospheric lapse rate
    real(4),          intent(in)    :: top_in            ! [km]   Upper atm. boundary for calculations
    real(4),          intent(in)    :: p_step_in         ! [mb]   Primary pressure step
    real(4),          intent(in)    :: p_step_factor_in  ! []     Pressure step ratio between two consecutive layers
    logical,          intent(inout) :: error             ! Logical error flag
  end subroutine atm_atmosp_set
  !
  subroutine atm_atmosp(t0,p0,h0)
    use atm_version
    !---------------------------------------------------------------------
    ! @ public
    ! Setup the atmospheric structure
    !---------------------------------------------------------------------
    real(4), intent(in) :: t0  ! Ground temperature [K]
    real(4), intent(in) :: p0  ! Ground pressure [hPa]
    real(4), intent(in) :: h0  ! Altitude of the site [km]
  end subroutine atm_atmosp
  !
  subroutine atm_transm(water,airmass,freq,temi,tatm,tauox,tauw,taut,ier)
    use atm_version
    !---------------------------------------------------------------------
    ! @ public
    ! Return the atmospheric temperatures and opacities given the amount
    ! of water and the frequency, for current atmosphere previously set
    ! with 'atm_atmosp()'
    !---------------------------------------------------------------------
    real(4),    intent(in)  :: water    ! Precipitable water vapor [mm]
    real(4),    intent(in)  :: airmass  ! Number of air masses []
    real(4),    intent(in)  :: freq     ! Frequency [GHz]
    real(4),    intent(out) :: temi     ! Atmospheric emission [K]
    real(4),    intent(out) :: tatm     ! Mean temperature [K]
    real(4),    intent(out) :: tauox    ! Opacity (dry component) [neper]
    real(4),    intent(out) :: tauw     ! Opacity (wet component) [neper]
    real(4),    intent(out) :: taut     ! Total opacity [neper]
    integer(4), intent(out) :: ier      ! Error status
  end subroutine atm_transm
  !
  subroutine atm_path(water,airmass,freq,path,ier)
    use atm_version
    !---------------------------------------------------------------------
    ! @ public
    ! Integrated optical length of current atmosphere
    !---------------------------------------------------------------------
    real(4),    intent(in)  :: water    ! Precipitable water vapor [mm]
    real(4),    intent(in)  :: airmass  ! Number of air masses []
    real(4),    intent(in)  :: freq     ! Frequency [GHz]
    real(4),    intent(out) :: path     ! Optical length [cm]
    integer(4), intent(out) :: ier      ! Error status
  end subroutine atm_path
  !
end interface



Gildas manager 2014-07-01