46 integer,
public,
parameter ::
i_flat = 1
54 private :: mktopo_flat
55 private :: mktopo_bellshape
56 private :: mktopo_schaer
70 character(len=H_SHORT) :: MKTOPO_name =
'NONE' 72 namelist / param_mktopo / &
79 log_info(
"MKTOPO_setup",*)
'Setup' 85 log_info(
"MKTOPO_setup",*)
'Not found namelist. Default used.' 86 elseif( ierr > 0 )
then 87 log_error(
"MKTOPO_setup",*)
'Not appropriate names in namelist PARAM_MKTOPO. Check!' 92 select case(mktopo_name)
102 log_error(
"MKTOPO_setup",*)
'Unsupported TYPE:', trim(mktopo_name)
119 log_info(
"MKTOPO",*)
'SKIP MAKING TOPOGRAPHY DATA' 122 log_info(
"MKTOP",*)
'START MAKING TOPOGRAPHY DATA' 129 call mktopo_bellshape
135 log_error(
"MKTOPO",*)
'Unsupported TYPE:',
mktopo_type 139 log_info(
"MKTOPO",*)
'END MAKING TOPOGRAPHY DATA' 150 subroutine mktopo_flat
154 real(RP) :: FLAT_HEIGHT = 100.0_rp
156 namelist / param_mktopo_flat / &
164 log_info(
"MKTOPO_flat",*)
'Setup' 168 read(
io_fid_conf,nml=param_mktopo_flat,iostat=ierr)
170 log_info(
"MKTOPO_flat",*)
'Not found namelist. Default used.' 171 elseif( ierr > 0 )
then 172 log_error(
"MKTOPO_flat",*)
'Not appropriate names in namelist PARAM_MKTOPO_FLAT. Check!' 175 log_nml(param_mktopo_flat)
184 end subroutine mktopo_flat
188 subroutine mktopo_bellshape
192 logical :: BELL_eachnode = .false.
193 real(RP) :: BELL_CX = 2.e3_rp
194 real(RP) :: BELL_CY = 2.e3_rp
195 real(RP) :: BELL_RX = 2.e3_rp
196 real(RP) :: BELL_RY = 2.e3_rp
197 real(RP) :: BELL_HEIGHT = 100.0_rp
199 namelist / param_mktopo_bellshape / &
207 real(RP) :: CX_offset
208 real(RP) :: CY_offset
216 log_info(
"MKTOPO_bellshape",*)
'Setup' 220 read(
io_fid_conf,nml=param_mktopo_bellshape,iostat=ierr)
222 log_info(
"MKTOPO_bellshape",*)
'Not found namelist. Default used.' 223 elseif( ierr > 0 )
then 224 log_error(
"MKTOPO_bellshape",*)
'Not appropriate names in namelist PARAM_MKTOPO_BELLSHAPE. Check!' 227 log_nml(param_mktopo_bellshape)
229 if ( bell_eachnode )
then 241 dist = ( (cx(i)-cx_offset-bell_cx)/bell_rx )**2 &
242 + ( (cy(j)-cy_offset-bell_cy)/bell_ry )**2
244 topo_zsfc(i,j) = bell_height / ( 1.0_rp + dist )
250 end subroutine mktopo_bellshape
256 subroutine mktopo_schaer
262 real(RP) :: SCHAER_CX = 25.e3_rp
263 real(RP) :: SCHAER_RX = 5.e3_rp
264 real(RP) :: SCHAER_LAMBDA = 4.e3_rp
265 real(RP) :: SCHAER_HEIGHT = 250.0_rp
266 logical :: SCHAER_SWAPXY = .false.
268 namelist / param_mktopo_schaer / &
282 log_info(
"MKTOPO_schaer",*)
'Setup' 286 read(
io_fid_conf,nml=param_mktopo_schaer,iostat=ierr)
288 log_info(
"MKTOPO_schaer",*)
'Not found namelist. Default used.' 289 elseif( ierr > 0 )
then 290 log_error(
"MKTOPO_schaer",*)
'Not appropriate names in namelist PARAM_MKTOPO_SCHAER. Check!' 293 log_nml(param_mktopo_schaer)
296 if ( .NOT. schaer_swapxy )
then 300 dist = exp( -( (cx(i)-schaer_cx)/schaer_rx )**2 )
302 topo_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cx(i)-schaer_cx)/schaer_lambda ) )**2
310 dist = exp( -( (cy(j)-schaer_cx)/schaer_rx )**2 )
312 topo_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cy(j)-schaer_cx)/schaer_lambda ) )**2
319 end subroutine mktopo_schaer
subroutine, public mktopo
Driver.
subroutine, public topo_write
Write topography.
integer, public mktopo_type
subroutine, public mktopo_setup
Setup.
integer, parameter, public i_flat
integer, public ia
of whole cells: x, local, with HALO
integer, public ja
of whole cells: y, local, with HALO
integer, public io_fid_conf
Config file ID.
integer, parameter, public i_ignore
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cy
center coordinate [m]: y, local
integer, public is
start point of inner domain: x, local
module atmosphere / grid / cartesC index
integer, parameter, public i_schaer
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cx
center coordinate [m]: x, local
module atmosphere / grid / cartesC
subroutine, public prc_abort
Abort Process.
integer, public js
start point of inner domain: y, local
integer, parameter, public i_bellshape
real(rp), dimension(:,:), allocatable, public topo_zsfc
absolute ground height [m]
real(rp), public const_pi
pi