GILDAS fortran interfaces to ATM

#
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