48 integer,
public,
parameter ::
i_flat = 1
56 private :: mktopo_flat
57 private :: mktopo_bellshape
58 private :: mktopo_schaer
72 character(len=H_SHORT) :: mktopo_name =
'NONE' 74 namelist / param_mktopo / &
81 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[make topo] / Categ[preprocess] / Origin[SCALE-RM]' 87 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 88 elseif( ierr > 0 )
then 89 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKTOPO. Check!' 94 select case(mktopo_name)
104 write(*,*)
'xxx Unsupported TYPE:', trim(mktopo_name)
121 if(
io_l )
write(
io_fid_log,*)
'++++++ SKIP MAKING TOPOGRAPHY DATA ++++++' 124 if(
io_l )
write(
io_fid_log,*)
'++++++ START MAKING TOPOGRAPHY DATA ++++++' 131 call mktopo_bellshape
141 if(
io_l )
write(
io_fid_log,*)
'++++++ END MAKING TOPOGRAPHY DATA ++++++' 152 subroutine mktopo_flat
156 real(RP) :: flat_height = 100.0_rp
158 namelist / param_mktopo_flat / &
166 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mktopo FLAT] / Categ[preprocess] / Origin[SCALE-RM]' 170 read(
io_fid_conf,nml=param_mktopo_flat,iostat=ierr)
172 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 173 elseif( ierr > 0 )
then 174 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKTOPO_FLAT. Check!' 186 end subroutine mktopo_flat
190 subroutine mktopo_bellshape
194 logical :: bell_eachnode = .false.
195 real(RP) :: bell_cx = 2.e3_rp
196 real(RP) :: bell_cy = 2.e3_rp
197 real(RP) :: bell_rx = 2.e3_rp
198 real(RP) :: bell_ry = 2.e3_rp
199 real(RP) :: bell_height = 100.0_rp
201 namelist / param_mktopo_bellshape / &
209 real(RP) :: cx_offset
210 real(RP) :: cy_offset
218 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mktopo BELLSHAPE] / Categ[preprocess] / Origin[SCALE-RM]' 222 read(
io_fid_conf,nml=param_mktopo_bellshape,iostat=ierr)
224 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 225 elseif( ierr > 0 )
then 226 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKTOPO_BELLSHAPE. Check!' 231 if ( bell_eachnode )
then 243 dist = ( (cx(i)-cx_offset-bell_cx)/bell_rx )**2 &
244 + ( (cy(j)-cy_offset-bell_cy)/bell_ry )**2
246 topo_zsfc(i,j) = bell_height / ( 1.0_rp + dist )
252 end subroutine mktopo_bellshape
258 subroutine mktopo_schaer
264 real(RP) :: schaer_cx = 25.e3_rp
265 real(RP) :: schaer_rx = 5.e3_rp
266 real(RP) :: schaer_lambda = 4.e3_rp
267 real(RP) :: schaer_height = 250.0_rp
268 logical :: schaer_swapxy = .false.
270 namelist / param_mktopo_schaer / &
284 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[mktopo SCHEAR] / Categ[preprocess] / Origin[SCALE-RM]' 288 read(
io_fid_conf,nml=param_mktopo_schaer,iostat=ierr)
290 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 291 elseif( ierr > 0 )
then 292 write(*,*)
'xxx Not appropriate names in namelist PARAM_MKTOPO_SCHAER. Check!' 298 if ( .NOT. schaer_swapxy )
then 302 dist = exp( -( (cx(i)-schaer_cx)/schaer_rx )**2 )
304 topo_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cx(i)-schaer_cx)/schaer_lambda ) )**2
312 dist = exp( -( (cy(j)-schaer_cx)/schaer_rx )**2 )
314 topo_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cy(j)-schaer_cx)/schaer_lambda ) )**2
321 end subroutine mktopo_schaer
subroutine, public mktopo
Driver.
subroutine, public topo_write
Write topography.
integer, public is
start point of inner domain: x, local
integer, public mktopo_type
subroutine, public prc_mpistop
Abort MPI.
subroutine, public mktopo_setup
Setup.
integer, parameter, public i_flat
logical, public io_l
output log or not? (this process)
integer, parameter, public i_ignore
logical, public io_nml
output log or not? (for namelist, this process)
integer, public ia
of whole cells: x, local, with HALO
integer, parameter, public i_schaer
integer, public js
start point of inner domain: y, local
real(rp), dimension(:), allocatable, public grid_cx
center coordinate [m]: x, local
integer, parameter, public i_bellshape
real(rp), dimension(:,:), allocatable, public topo_zsfc
absolute ground height [m]
real(rp), public const_pi
pi
integer, public io_fid_conf
Config file ID.
integer, public io_fid_log
Log file ID.
integer, public io_fid_nml
Log file ID (only for output namelist)
real(rp), dimension(:), allocatable, public grid_cy
center coordinate [m]: y, local
integer, public ja
of whole cells: y, local, with HALO