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)
180 end subroutine mktopo_flat
184 subroutine mktopo_bellshape
188 logical :: bell_eachnode = .false.
189 real(
rp) :: bell_cx = 2.e3_rp
190 real(
rp) :: bell_cy = 2.e3_rp
191 real(
rp) :: bell_rx = 2.e3_rp
192 real(
rp) :: bell_ry = 2.e3_rp
193 real(
rp) :: bell_height = 100.0_rp
195 namelist / param_mktopo_bellshape / &
203 real(
rp) :: cx_offset
204 real(
rp) :: cy_offset
212 log_info(
"MKTOPO_bellshape",*)
'Setup'
216 read(
io_fid_conf,nml=param_mktopo_bellshape,iostat=ierr)
218 log_info(
"MKTOPO_bellshape",*)
'Not found namelist. Default used.'
219 elseif( ierr > 0 )
then
220 log_error(
"MKTOPO_bellshape",*)
'Not appropriate names in namelist PARAM_MKTOPO_BELLSHAPE. Check!'
223 log_nml(param_mktopo_bellshape)
225 if ( bell_eachnode )
then
237 dist = ( (cx(i)-cx_offset-bell_cx)/bell_rx )**2 &
238 + ( (cy(j)-cy_offset-bell_cy)/bell_ry )**2
246 end subroutine mktopo_bellshape
252 subroutine mktopo_schaer
258 real(
rp) :: schaer_cx = 25.e3_rp
259 real(
rp) :: schaer_rx = 5.e3_rp
260 real(
rp) :: schaer_lambda = 4.e3_rp
261 real(
rp) :: schaer_height = 250.0_rp
262 logical :: schaer_swapxy = .false.
264 namelist / param_mktopo_schaer / &
278 log_info(
"MKTOPO_schaer",*)
'Setup'
282 read(
io_fid_conf,nml=param_mktopo_schaer,iostat=ierr)
284 log_info(
"MKTOPO_schaer",*)
'Not found namelist. Default used.'
285 elseif( ierr > 0 )
then
286 log_error(
"MKTOPO_schaer",*)
'Not appropriate names in namelist PARAM_MKTOPO_SCHAER. Check!'
289 log_nml(param_mktopo_schaer)
292 if ( .NOT. schaer_swapxy )
then
296 dist = exp( -( (cx(i)-schaer_cx)/schaer_rx )**2 )
298 topography_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cx(i)-schaer_cx)/schaer_lambda ) )**2
306 dist = exp( -( (cy(j)-schaer_cx)/schaer_rx )**2 )
308 topography_zsfc(i,j) = schaer_height * dist * ( cos( pi*(cy(j)-schaer_cx)/schaer_lambda ) )**2
315 end subroutine mktopo_schaer