PUBLIC INTERFACE / ROUTINES / NAMELIST / CHANGES / ERRORS / REFERENCES / NOTES


module ocean_rough

     Contact:  
     Reviewers:

     Tags/Status

OVERVIEW


     Computes or sets the ocean surface roughness.

     This version calculates the ocean roughness from the magnitude
     of the wind stress components using the formulation of Beljaars (1994)
     or the standard Charnock relation.
     There is also an option for using a uniform roughness (the default).


OTHER MODULES USED


    utilities_mod
    constants_mod


PUBLIC INTERFACE


use ocean_rough_mod [, only: ocean_rough_init,
                             compute_ocean_roughness,
                             fixed_ocean_roughness    ]

compute_ocean_roughness:  Computes ocean roughness for heat, moisture,
                          and momentum using wind stress or assigns a
                          uniform value depending on a flag set through
                          the namelist. This routine calls fixed_ocean_roughness.

fixed_ocean_roughness:    Sets a uniform roughnesses for heat, moisture,
                          and momentum. The roughness values may be
                          modified through the namelist. Users should use
                          the routine compute_ocean_roughness if possible.


PUBLIC ROUTINES


call compute_ocean_roughness ( ocean, tau_x, tau_y, 
                               rough_mom, rough_heat, rough_moist )

INPUT

  ocean    Sea/Land mask, ocean=.true. for ocean points.
             [logical, dimension(:,:)]

  tau_x    Zonal wind stress (Pascals)
             [real dimension(:,:)]

  tau_y    Meridional wind stress (Pascals)
             [real dimension(:,:)]

OUTPUT

  rough_mom   Surface roughness felt by momentum fields (meters)
                [real dimension(:,:)]

  rough_heat  Surface roughness felt by heat (temperature) fields (meters)
                [real dimension(:,:)]

  rough_moist Surface roughness felt by moisture (specific humidity) fields (meters)
                [real dimension(:,:)]

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

call fixed_ocean_roughness ( ocean, rough_mom, rough_heat )

INPUT

  ocean    Sea/Land mask, ocean=.true. for ocean points.
             [logical, dimension(:,:)]

OUTPUT

  rough_mom   Surface roughness felt by momentum fields (meters)
                [real dimension(:,:)]

  rough_heat  Surface roughness felt by heat (temperature) fields (meters)
                [real dimension(:,:)]

  rough_moist Surface roughness felt by moisture (specific humidity) fields (meters)
                [real dimension(:,:)]


NAMELIST


&ocean_rough_nml

  real    :: charnock       = 0.032     ! constant for the Charnock relation (see notes)
  real    :: roughness_init = 0.00044   ! not used in this version
  real    :: roughness_min  = 1.e-6     ! smallest allowable roughness
  real    :: rho_atm        = 1.13      ! reference density

  character :: rough_scheme = 'fixed'   ! possible values include:
                                        !    = 'fixed'    --> use fixed roughness values
                                        !    = 'beljaars' --> use Beljaars (1994) scheme
                                        !    = 'charnock' --> use simple Charnock relation

  logical :: use_fixed_rough = .true.   ! OBSOLETE: use rough_scheme
  real    :: roughness_mom   = 5.8e-5   ! momentum roughness when use_fixed_rough = .true.
  real    :: roughness_heat  = 5.8e-5   ! heat/moisture roughness when use_fixed_rough = .true.
  real    :: roughness_moist = 5.8e-5   ! heat/moisture roughness when use_fixed_rough = .true.


CHANGE HISTORY

Revision history

changes prior to 10/6/1999

     MPP version created. Minor changes for open_file, error_mesg,
     and Fortran write statements. Answers should reproduce the
     previous version.


ERROR MESSAGES


FATAL error in ocean_rough_mod

    namelist option USE_FIXED_ROUGH should be replaced with variable ROUGH_SCHEME
        Do not use namelist variable USE_FIXED_ROUGH.
        This variable will be phased out in future revisions.
        The variable ROUGH_SCHEME (a character string) should be use instead.
        See the namelist documentation for details.


REFERENCES


     Miller, M.J., et. al., 1992. J. of Climate, 418-434.

     Beljaars, A. C. M., 1994. QJRMS, 255-270.


KNOWN BUGS


     There are no known bugs.


NOTES


  u_star**2 is computed from wind stress components (Tx,Ty) as

  u_star**2 = SQRT ( Tx**2 + Ty**2 ) / rho_atm

  u_star**2 = MAX ( gnu**2 , u_star**2 )

  where: rho_atm is a constant reference density (see namelist)
         gnu is the kinematic viscosity for air in m/s2 (1.5e-5)



FUTURE PLANS


     None.