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)
117 log_info(
"MKTOPO",*)
'SKIP MAKING TOPOGRAPHY DATA'
120 log_info(
"MKTOP",*)
'START MAKING TOPOGRAPHY DATA'
127 call mktopo_bellshape
133 log_error(
"MKTOPO",*)
'Unsupported TYPE:',
mktopo_type
137 log_info(
"MKTOPO",*)
'END MAKING TOPOGRAPHY DATA'
146 subroutine mktopo_flat
150 real(
rp) :: flat_height = 100.0_rp
152 namelist / param_mktopo_flat / &
160 log_info(
"MKTOPO_flat",*)
'Setup'
164 read(
io_fid_conf,nml=param_mktopo_flat,iostat=ierr)
166 log_info(
"MKTOPO_flat",*)
'Not found namelist. Default used.'
167 elseif( ierr > 0 )
then
168 log_error(
"MKTOPO_flat",*)
'Not appropriate names in namelist PARAM_MKTOPO_FLAT. Check!'
171 log_nml(param_mktopo_flat)
182 end subroutine mktopo_flat
186 subroutine mktopo_bellshape
190 logical :: bell_eachnode = .false.
191 real(
rp) :: bell_cx = 2.e3_rp
192 real(
rp) :: bell_cy = 2.e3_rp
193 real(
rp) :: bell_rx = 2.e3_rp
194 real(
rp) :: bell_ry = 2.e3_rp
195 real(
rp) :: bell_height = 100.0_rp
197 namelist / param_mktopo_bellshape / &
205 real(
rp) :: cx_offset
206 real(
rp) :: cy_offset
214 log_info(
"MKTOPO_bellshape",*)
'Setup'
218 read(
io_fid_conf,nml=param_mktopo_bellshape,iostat=ierr)
220 log_info(
"MKTOPO_bellshape",*)
'Not found namelist. Default used.'
221 elseif( ierr > 0 )
then
222 log_error(
"MKTOPO_bellshape",*)
'Not appropriate names in namelist PARAM_MKTOPO_BELLSHAPE. Check!'
225 log_nml(param_mktopo_bellshape)
227 if ( bell_eachnode )
then
240 dist = ( (cx(i)-cx_offset-bell_cx)/bell_rx )**2 &
241 + ( (cy(j)-cy_offset-bell_cy)/bell_ry )**2
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
301 dist = exp( -( (cx(i)-schaer_cx)/schaer_rx )**2 )
303 topography_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cx(i)-schaer_cx)/schaer_lambda ) )**2
313 dist = exp( -( (cy(j)-schaer_cx)/schaer_rx )**2 )
315 topography_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cy(j)-schaer_cx)/schaer_lambda ) )**2
323 end subroutine mktopo_schaer