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

module Surface bulk flux More...

Functions/Subroutines

subroutine, public bulkflux_setup (dx)
 

Variables

procedure(bc), pointer, public bulkflux => NULL()
 

Detailed Description

module Surface bulk flux

Description
calculation of surface bulk flux
Author
Team SCALE
History
NAMELIST
  • PARAM_BULKFLUX
    nametypedefault valuecomment
    BULKFLUX_TYPE character(len=H_SHORT) 'B91W01'
    BULKFLUX_ITR_SA_MAX integer 5 maximum iteration number for successive approximation
    BULKFLUX_ITR_NR_MAX integer 10 maximum iteration number for Newton-Raphson method
    BULKFLUX_ERR_MIN real(RP) 1.0E-3_RP minimum value of error
    BULKFLUX_WSCF real(RP) empirical scaling factor of Wstar (Beljaars 1994)
    BULKFLUX_UABS_MIN real(RP) 1.0E-2_RP minimum of Uabs [m/s]
    BULKFLUX_WSTAR_MIN real(RP) 1.0E-4_RP minimum of W* [m/s]

History Output
No history output

Function/Subroutine Documentation

◆ bulkflux_setup()

subroutine, public scale_bulkflux::bulkflux_setup ( real(rp), intent(in)  dx)

Definition at line 118 of file scale_bulkflux.F90.

References bulkflux, scale_const::const_cpdry, scale_const::const_eps, scale_const::const_epstvap, scale_const::const_grav, scale_const::const_karman, scale_const::const_pre00, scale_const::const_rdry, scale_stdio::io_fid_conf, scale_stdio::io_fid_log, scale_stdio::io_fid_nml, scale_stdio::io_l, scale_stdio::io_nml, and scale_process::prc_mpistop().

Referenced by mod_rm_driver::scalerm().

118  use scale_process, only: &
120  implicit none
121  real(RP), intent(in) :: dx
122 
123  namelist / param_bulkflux / &
124  bulkflux_type, &
125  bulkflux_itr_sa_max, &
126  bulkflux_itr_nr_max, &
127  bulkflux_err_min, &
128  bulkflux_wscf, &
129  bulkflux_uabs_min, &
130  bulkflux_wstar_min
131 
132  integer :: ierr
133  !---------------------------------------------------------------------------
134 
135  if( io_l ) write(io_fid_log,*)
136  if( io_l ) write(io_fid_log,*) '++++++ Module[BULKFLUX] / Categ[COUPLER] / Origin[SCALElib]'
137 
138  ! WSCF = 1.2 for dx > 1 km (Beljaars 1994)
139  ! lim_{dx->0} WSCF = 0 for LES (Fig. 6 Kitamura and Ito 2016 BLM)
140  bulkflux_wscf = 1.2_rp * min(dx*1.e-3_rp, 1.0_rp)
141 
142 
143  !--- read namelist
144  rewind(io_fid_conf)
145  read(io_fid_conf,nml=param_bulkflux,iostat=ierr)
146 
147  if( ierr < 0 ) then !--- missing
148  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
149  elseif( ierr > 0 ) then !--- fatal error
150  write(*,*) 'xxx Not appropriate names in namelist PARAM_BULKFLUX. Check!'
151  call prc_mpistop
152  endif
153  if( io_nml ) write(io_fid_nml,nml=param_bulkflux)
154 
155  if( io_l ) write(io_fid_log,*)
156  if( io_l ) write(io_fid_log,*) '*** Scheme for surface bulk flux : ', trim(bulkflux_type)
157  select case(bulkflux_type)
158  case('U95')
159  if( io_l ) write(io_fid_log,*) '*** => Uno et al.(1995)'
160  bulkflux => bulkflux_u95
161  case('B91W01')
162  if( io_l ) write(io_fid_log,*) '*** => Beljaars (1991) and Wilson (2001)'
163  bulkflux => bulkflux_b91w01
164  case default
165  write(*,*) 'xxx Unsupported BULKFLUX_type. STOP'
166  call prc_mpistop
167  end select
168 
169  return
subroutine, public prc_mpistop
Abort MPI.
procedure(bc), pointer, public bulkflux
module PROCESS
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ bulkflux

procedure(bc), pointer, public scale_bulkflux::bulkflux => NULL()