PUBLIC INTERFACE / DATA / ROUTINES / NAMELIST / CHANGES / ERRORS / PROCEDURE FOR COLD START


module atmosphere_mod

     Reviewers: Isaac Held,  Peter Phillipps


OVERVIEW


     Atmospheric driver for the spectral dynamics and modular physics.


     This module provides a standard interface to the spectral
     dynamical core and interface to the modular physics.

     Similar interfaces exist for the bgrid dynamical core
     and the spectral two-layer model that may be easily
     switched with this interface.


OTHER MODULES USED


                 mpp_mod
                 fms_mod
    spectral_physics_mod
           constants_mod
          transforms_mod
    press_and_geopot_mod
        time_manager_mod
   spectral_dynamics_mod
         mpp_domains_mod
      physics_driver_mod
       field_manager_mod
      tracer_manager_mod
         tracer_type_mod


PUBLIC INTERFACE


  use atmosphere_mod [,only: atmosphere_init,       atmosphere_end,
                             atmosphere_down,       atmosphere_up,
                             atmosphere_resolution, atmosphere_boundary,
                             get_bottom_mass,       get_bottom_wind,
                             get_atmosphere_axes,   atmosphere_domain


PUBLIC DATA


 There are no public derived data types other than surf_diff_type,
 but surf_diff_type will be removed in a future release.
 For explanation of surf_diff_type see surf_diff.html


PUBLIC ROUTINES


atmosphere_init
atmosphere_end
atmosphere_down
atmosphere_up
get_bottom_mass
get_bottom_wind
atmosphere_resolution
atmosphere_boundary
get_atmosphere_axes



call atmosphere_init (Time_init, Time, Time_step, Surf_diff)

intent(in)

   type(time_type) :: Time_init --  reference (or initial) time

   type(time_type) :: Time      --  current time

   type(time_type) :: Time_step --  time step

intent(inout)

   type(surf_diff_type) :: Surf_diff


---------------------------------------------------------------------


call atmosphere_end (Time)

input

   type(time_type) :: Time --  current time


---------------------------------------------------------------------


call atmosphere_down (Time, frac_land, t_surf,  albedo,  rough_mom,
                            u_star,  b_star, dtau_du, dtau_dv, tau_x, tau_y,
                            gust,   flux_sw, flux_lw, Surf_diff)

intent(in)

  type(time_type) :: Time -- current time

  real, dimension(:,:) :: frac_land --  fraction (0. to 1.) of surface which covered by land

  real, dimension(:,:) :: t_surf    --  surface (skin) temperature (in deg k)

  real, dimension(:,:) :: albedo    --  surface albedo

  real, dimension(:,:) :: rough_mom --  surface roughness for momentum (m)

  real, dimension(:,:) :: u_star    --  friction velocity

  real, dimension(:,:) :: b_star    --  bouyancy scale

  real, dimension(:,:) :: dtau_du   --  derivative of zonal wind stress w.r.t. the lowest level wind speed

  real, dimension(:,:) :: dtau_dv   --  derivative of meridional wind stress w.r.t. the lowest level wind speed

intent(inout)

  real, dimension(:,:) :: tau_x -- zonal wind stress

  real, dimension(:,:) :: tau_y -- meridional wind stress

  type(surf_diff_type) :: Surf_diff

intent(out)

  real, dimension(:,:) :: gust    -- wind gustiness

  real, dimension(:,:) :: flux_sw -- net shortwave surface flux (down minus up) (in watts/m**2)

  real, dimension(:,:) :: flux_lw -- downward longwave surface flux (in watts/m**2)


---------------------------------------------------------------------


call atmosphere_up (Time, frac_land, lprec, fprec )

intent(in)

  type(time_type) :: Time -- current time

  real, dimension(:,:) :: frac_land --  fraction (0. to 1.) of surface which covered by land

intent(inout)

  type(surf_diff_type) :: Surf_diff

output

  real, dimension(:,:) :: lprec -- liquid precipitiaton rate (rain) in kg/m2/s

  real, dimension(:,:) :: fprec -- frozen precipitation rate (snow) in kg/m2/s


---------------------------------------------------------------------


call get_bottom_mass (t_bot, q_bot, p_bot, z_bot, p_surf)

intent(out)

  real, dimension(:,:) ::  t_bot  -- temperature at lowest model level (deg k)

  real, dimension(:,:) ::  q_bot  -- specific humidity at lowest model level (kg/kg)

  real, dimension(:,:) ::  p_bot  -- pressure at lowest model level (pa)

  real, dimension(:,:) ::  z_bot  -- height above the surface for the lowest model level (m)

  real, dimension(:,:) ::  p_surf -- surface pressure (pa)


---------------------------------------------------------------------


call get_bottom_wind (u_bot, v_bot)

intent(out)

  real, dimension(:,:) :: u_bot -- zonal wind component at lowest model level (m/s)

  real, dimension(:,:) :: v_bot -- meridional wind component at lowest model level (m/s)


---------------------------------------------------------------------


call atmosphere_resolution (nlon, nlat)

intent(out)

  integer :: nlon -- number of longitude points in the (global) computational grid

  integer :: nlat -- number of latitude  points in the (global) computational grid


---------------------------------------------------------------------


call atmosphere_boundary (blon, blat [, mask] )

output

 real, dimension(:) ::  blon -- boundary edges of longitude grid boxes

 real, dimension(:) ::  blat -- boundary edges of latitude  grid boxes

optional output

   mask   dummy grid mask (for the atmosphere all values are true)
            [logical, dimension(nlon,nlat)]



---------------------------------------------------------------------




call get_atmosphere_axes(axes_id)

output

  integer, dimension(4) :: axes_id -- Id numbers of grid axes in this order:
                              longitude, latitude, full levels, half levels

Notes: Used by atmos_coupled_mod



NAMELIST


&atmosphere_nml

 do_mcm_moist_processes = .true -- Execute the Manabe Climate Model
                                    moist processes algorithm.

                        = .false. -- Execute the standard moist processes algorithm. 

         default = .false.


CHANGE HISTORY



ERROR MESSAGES