SCALE-RM
Data Types | Functions/Subroutines | Variables
scale_roughness Module Reference

module Surface roughness length More...

Functions/Subroutines

subroutine, public roughness_setup
 

Variables

procedure(rl), pointer, public roughness => NULL()
 

Detailed Description

module Surface roughness length

Description
surface roughness length
Author
Team SCALE
History
NAMELIST
  • PARAM_ROUGHNESS
    nametypedefault valuecomment
    ROUGHNESS_TYPE character(len=H_SHORT) 'MOON07' surface roughness length scheme
    ROUGHNESS_VISCK real(RP) 1.5E-5_RP kinematic viscosity
    ROUGHNESS_USTAR_MIN real(RP) 1.0E-3_RP minimum fiction velocity
    ROUGHNESS_Z0M_MIN real(RP) 1.0E-5_RP minimum roughness length for momentum [m]
    ROUGHNESS_Z0H_MIN real(RP) 1.0E-5_RP minimum roughness length for heat [m]
    ROUGHNESS_Z0E_MIN real(RP) 1.0E-5_RP minimum roughness length for moisture [m]

  • PARAM_ROUGHNESS_MILLER92
    nametypedefault valuecomment
    ROUGHNESS_MILLER92_CM0 real(RP) 1.0E-3_RP bulk coef. for U*
    ROUGHNESS_MILLER92_Z0MI real(RP) 0.0E-0_RP base roughness length for momentum
    ROUGHNESS_MILLER92_Z0MR real(RP) 1.8E-2_RP rough factor for momentum
    ROUGHNESS_MILLER92_Z0MS real(RP) 1.1E-1_RP smooth factor for momentum
    ROUGHNESS_MILLER92_Z0HI real(RP) 1.4E-5_RP base roughness length for heat
    ROUGHNESS_MILLER92_Z0HR real(RP) 0.0E-0_RP rough factor for heat
    ROUGHNESS_MILLER92_Z0HS real(RP) 4.0E-1_RP smooth factor for heat
    ROUGHNESS_MILLER92_Z0EI real(RP) 1.3E-4_RP base roughness length for moisture
    ROUGHNESS_MILLER92_Z0ER real(RP) 0.0E-0_RP rough factor for moisture
    ROUGHNESS_MILLER92_Z0ES real(RP) 6.2E-1_RP smooth factor for moisture

  • PARAM_ROUGHNESS_MOON07
    nametypedefault valuecomment
    ROUGHNESS_MOON07_ITELIM integer 10 maximum iteration number

History Output
No history output

Function/Subroutine Documentation

◆ roughness_setup()

subroutine, public scale_roughness::roughness_setup ( )

Definition at line 108 of file scale_roughness.F90.

References scale_const::const_grav, scale_const::const_karman, scale_grid_index::ie, scale_stdio::io_fid_conf, scale_stdio::io_fid_log, scale_stdio::io_fid_nml, scale_stdio::io_l, scale_stdio::io_nml, scale_grid_index::is, scale_grid_index::je, scale_grid_index::js, scale_process::prc_mpistop(), and roughness.

Referenced by mod_rm_driver::scalerm().

108  use scale_process, only: &
110  implicit none
111 
112  namelist / param_roughness / &
113  roughness_type, &
114  roughness_visck, &
115  roughness_ustar_min, &
116  roughness_z0m_min, &
117  roughness_z0h_min, &
118  roughness_z0e_min
119 
120  integer :: ierr
121  !---------------------------------------------------------------------------
122 
123  if( io_l ) write(io_fid_log,*)
124  if( io_l ) write(io_fid_log,*) '++++++ Module[ROUGHNESS] / Categ[COUPLER] / Origin[SCALElib]'
125 
126  !--- read namelist
127  rewind(io_fid_conf)
128  read(io_fid_conf,nml=param_roughness,iostat=ierr)
129  if( ierr < 0 ) then !--- missing
130  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
131  elseif( ierr > 0 ) then !--- fatal error
132  write(*,*) 'xxx Not appropriate names in namelist PARAM_ROUGHNESS. Check!'
133  call prc_mpistop
134  endif
135  if( io_nml ) write(io_fid_nml,nml=param_roughness)
136 
137  if( io_l ) write(io_fid_log,*)
138  if( io_l ) write(io_fid_log,*) '*** Scheme for ocean roughness length : ', trim(roughness_type)
139  select case(roughness_type)
140  case('MILLER92')
141  if( io_l ) write(io_fid_log,*) '*** => Miller (1992)'
142  roughness => roughness_miller92
143  call roughness_miller92_setup
144  case('MOON07')
145  if( io_l ) write(io_fid_log,*) '*** => Moon et al. (2007)'
146  roughness => roughness_moon07
147  call roughness_moon07_setup
148  case('CONST')
149  if( io_l ) write(io_fid_log,*) '*** => Constant.'
150  roughness => roughness_const
151  call roughness_const_setup
152  case default
153  write(*,*) 'xxx Unsupported ROUGHNESS_type. STOP'
154  call prc_mpistop
155  end select
156 
157  return
subroutine, public prc_mpistop
Abort MPI.
procedure(rl), pointer, public roughness
module PROCESS
integer, public io_fid_conf
Config file ID.
Definition: scale_stdio.F90:55
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ roughness

procedure(rl), pointer, public scale_roughness::roughness => NULL()

Definition at line 61 of file scale_roughness.F90.

Referenced by scale_atmos_phy_sf_bulk::atmos_phy_sf_bulk(), mod_ocean_phy_driver::ocean_phy_driver(), and roughness_setup().

61  procedure(rl), pointer :: ROUGHNESS => null()