SCALE-RM
Functions/Subroutines
scale_ocean_phy_roughness_miller92 Module Reference

module ocean / physics / surface roughness length / miller92 More...

Functions/Subroutines

subroutine, public ocean_phy_roughness_miller92_setup
 
subroutine, public ocean_phy_roughness_miller92 (OIA, OIS, OIE, OJA, OJS, OJE, Uabs, Z0M, Z0H, Z0E)
 

Detailed Description

module ocean / physics / surface roughness length / miller92

Description
surface roughness length Miller92 scheme
Author
Team SCALE
NAMELIST
  • PARAM_OCEAN_PHY_ROUGHNESS_MILLER92
    nametypedefault valuecomment
    OCEAN_PHY_ROUGHNESS_MILLER92_CM0 real(RP) 1.0E-3_RP bulk coef. for U*
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0MI real(RP) 0.0E-0_RP base roughness length for momentum
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0MR real(RP) 1.8E-2_RP rough factor for momentum
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0MS real(RP) 1.1E-1_RP smooth factor for momentum
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0HI real(RP) 1.4E-5_RP base roughness length for heat
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0HR real(RP) 0.0E-0_RP rough factor for heat
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0HS real(RP) 4.0E-1_RP smooth factor for heat
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0EI real(RP) 1.3E-4_RP base roughness length for moisture
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0ER real(RP) 0.0E-0_RP rough factor for moisture
    OCEAN_PHY_ROUGHNESS_MILLER92_Z0ES real(RP) 6.2E-1_RP smooth factor for moisture

History Output
No history output

Function/Subroutine Documentation

◆ ocean_phy_roughness_miller92_setup()

subroutine, public scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92_setup ( )

Definition at line 57 of file scale_ocean_phy_roughness_miller92.F90.

References scale_io::io_fid_conf, scale_ocean_phy_roughness::ocean_phy_roughness_setup(), and scale_prc::prc_abort().

Referenced by mod_ocean_driver::ocean_driver_setup().

57  use scale_prc, only: &
58  prc_abort
59  use scale_ocean_phy_roughness, only: &
61  implicit none
62 
63  namelist / param_ocean_phy_roughness_miller92 / &
64  ocean_phy_roughness_miller92_cm0, &
65  ocean_phy_roughness_miller92_z0mi, &
66  ocean_phy_roughness_miller92_z0mr, &
67  ocean_phy_roughness_miller92_z0ms, &
68  ocean_phy_roughness_miller92_z0hi, &
69  ocean_phy_roughness_miller92_z0hr, &
70  ocean_phy_roughness_miller92_z0hs, &
71  ocean_phy_roughness_miller92_z0ei, &
72  ocean_phy_roughness_miller92_z0er, &
73  ocean_phy_roughness_miller92_z0es
74 
75  integer :: ierr
76  !---------------------------------------------------------------------------
77 
78  ! common setup
80 
81  !--- read namelist
82  rewind(io_fid_conf)
83  read(io_fid_conf,nml=param_ocean_phy_roughness_miller92,iostat=ierr)
84  if( ierr < 0 ) then !--- missing
85  log_info("OCEAN_PHY_ROUGHNESS_miller92_setup",*) 'Not found namelist. Default used.'
86  elseif( ierr > 0 ) then !--- fatal error
87  log_error("OCEAN_PHY_ROUGHNESS_miller92_setup",*) 'Not appropriate names in namelist PARAM_OCEAN_PHY_ROUGHNESS_MILLER92. Check!'
88  call prc_abort
89  endif
90  log_nml(param_ocean_phy_roughness_miller92)
91 
92  return
integer, public io_fid_conf
Config file ID.
Definition: scale_io.F90:55
module PROCESS
Definition: scale_prc.F90:11
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:338
subroutine, public ocean_phy_roughness_setup
module ocean / physics / surface roughness length
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_phy_roughness_miller92()

subroutine, public scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92 ( integer, intent(in)  OIA,
integer, intent(in)  OIS,
integer, intent(in)  OIE,
integer, intent(in)  OJA,
integer, intent(in)  OJS,
integer, intent(in)  OJE,
real(rp), dimension(oia,oja), intent(in)  Uabs,
real(rp), dimension (oia,oja), intent(out)  Z0M,
real(rp), dimension (oia,oja), intent(out)  Z0H,
real(rp), dimension (oia,oja), intent(out)  Z0E 
)

Definition at line 101 of file scale_ocean_phy_roughness_miller92.F90.

References scale_const::const_grav, scale_ocean_phy_roughness::ocean_phy_roughness_ustar_min, scale_ocean_phy_roughness::ocean_phy_roughness_visck, scale_ocean_phy_roughness::ocean_phy_roughness_z0e_min, scale_ocean_phy_roughness::ocean_phy_roughness_z0h_min, and scale_ocean_phy_roughness::ocean_phy_roughness_z0m_min.

Referenced by mod_ocean_driver::ocean_driver_calc_tendency().

101  use scale_const, only: &
102  grav => const_grav
103  use scale_ocean_phy_roughness, only: &
109  implicit none
110 
111  integer, intent(in) :: oia, ois, oie
112  integer, intent(in) :: oja, ojs, oje
113  real(RP), intent(in) :: uabs(oia,oja) ! velocity at the lowest atomspheric layer [m/s]
114  real(RP), intent(out) :: z0m (oia,oja) ! roughness length for momentum [m]
115  real(RP), intent(out) :: z0h (oia,oja) ! roughness length for heat [m]
116  real(RP), intent(out) :: z0e (oia,oja) ! roughness length for vapor [m]
117 
118  real(RP) :: ustar
119 
120  integer :: i, j
121  !---------------------------------------------------------------------------
122 
123  !$omp parallel do private(Ustar)
124  do j = ojs, oje
125  do i = ois, oie
126  ustar = max( sqrt( ocean_phy_roughness_miller92_cm0 ) * uabs(i,j), ocean_phy_roughness_ustar_min )
127 
128  z0m(i,j) = max( ocean_phy_roughness_miller92_z0mi &
129  + ocean_phy_roughness_miller92_z0mr / grav * ustar * ustar &
130  + ocean_phy_roughness_miller92_z0ms * ocean_phy_roughness_visck / ustar, &
132  z0h(i,j) = max( ocean_phy_roughness_miller92_z0hi &
133  + ocean_phy_roughness_miller92_z0hr / grav * ustar * ustar &
134  + ocean_phy_roughness_miller92_z0hs * ocean_phy_roughness_visck / ustar, &
136  z0e(i,j) = max( ocean_phy_roughness_miller92_z0ei &
137  + ocean_phy_roughness_miller92_z0er / grav * ustar * ustar &
138  + ocean_phy_roughness_miller92_z0es * ocean_phy_roughness_visck / ustar, &
140  enddo
141  enddo
142 
143  return
real(rp), public const_grav
standard acceleration of gravity [m/s2]
Definition: scale_const.F90:46
module CONSTANT
Definition: scale_const.F90:11
module ocean / physics / surface roughness length
Here is the caller graph for this function: