5.13.2-dev0
mHM
The mesoscale Hydrological Model
Loading...
Searching...
No Matches
mhm.nml
Go to the documentation of this file.
1!> \file mhm.nml
2!> \brief General Namelists of mHM, MPR, mRM.
3!> \details This files provides all namelists for mHM, MPR, mRM.
4!> \authors Matthias Zink, Matthias Cuntz
5!> \date Jan 2013
6! Modified,
7! Rohini Kumar, Aug 2013 - added "fracSealed_cityArea" in the LCover namelist
8! - added new namelist "LAI_data_information"
9! - added new directory paths for soil and geology LUTs
10! which are common to all modeled domains
11! Luis Samaniego, Nov 2013 - process description
12! Matthias Zink, Mar 2014 - added evaluation and inflow gauge namelists
13! Rohini Kumar, May 2014 - options for different cordinate system for the model run
14! Stephan Thober, May 2014 - added switch for chunk read in
15! Stephan Thober, Jun 2014 - reorganized restart flags, added flag for performing mpr
16! Kumar R., Rakovec O. Sep 2014 - added KGE estimator (OF number 9)
17! Matthias Zink, Nov 2014 - added multiple options for process 5 - PET
18! Matthias Zink, Dec 2014 - adopted inflow gauges to ignore headwater cells
19! Matthias Zink, Mar 2015 - added optional soil mositure read in for calibration
20! Stephan Thober, Nov 2016 - added adaptive timestep scheme for routing
21! Rohini Kumar, Dec 2017 - added LAI option to read long term mean monthly fields
22! Zink M. Demirel M.C., Mar 2017 - added Jarvis soil water stress function at SM process(3)=2
23! Demirel M.C., Stisen S., May 2017 - added FC dependency on root fraction coef. at SM process(3)=3
24! Demirel M.C., Stisen S., Jun 2017 - added PET correction based on LAI at PET process(5)=-1
25! O. Rakovec, R. Kumar Nov 2017 - added project description for the netcdf outputs
26! Robert Schweppe Apr 2018 - reorganized namelists depending on relation to processes (MPR, mHM, mRM)
27! S. Thober, B. Guse May 2018 - added weighted NSE
28! Lennart Schueler May 2018 - added new paths for bankfull discharge for gw coupling
29! Lennart Schueler Jun 2018 - added flag for writing river head output
30! Stephan Thober May 2019 - added adaptive timestep scheme for routing with varying celerity
31! Demirel M.C., Stisen S., Jun 2020 - added Feddes and global FC dependency on root fraction coef. at SM process(3)=4
32
33!******************************************************************************************
34! PROJECT DESCRIPTION (mandatory)
35!******************************************************************************************
36!-----------------------------------------------------------------------------
37!> Provide details on the model simulations, to appear in the netcdf output attributes
38!-----------------------------------------------------------------------------
39&project_description
40 !> project name
41 project_details="mHM test domain project"
42 !> any specific description of simulation
43 setup_description="model run for the Mosel domain, forced with the E-OBS meteorologic data"
44 !> e.g. hindcast simulation, seasonal forecast, climate projection
45 simulation_type="historical simulation"
46 !> convention used for dataset
47 conventions="XXX"
48 !> contact details, incl. PI name, modellers
49 contact="mHM developers (email:mhm-developers@ufz.de)"
50 !> developing institution, specific mHM revision, latest release version (automatically included)
51 mhm_details="Helmholtz Center for Environmental Research - UFZ, Department Computational Hydrosystems, Stochastic Hydrology Group"
52 !> some details on data/model run version (creation date is included automatically)
53 history="model run version 1"
54/
55
56!******************************************************************************************
57!
58!******************************************************************************************
59! MAIN (mandatory)
60!******************************************************************************************
61!> Main namelist
62!> Most of the variables (if not all) given in this namelist are common
63!> to all domains to be modeled.
64&mainconfig
65 !-----------------------------------------------------------------------------
66 !> input data & model run cordinate system
67 !> 0 -> regular X & Y coordinate system (e.g., GK-4 or Lambert equal area system)
68 !> 1 -> regular lat & lon coordinate system
69 !-----------------------------------------------------------------------------
70 iflag_cordinate_sys = 0
71 !-----------------------------------------------------------------------------
72 !> Number of domains to be modeled.
73 !> Number given here should correspond to one given in "gaugeinfo.txt" file.
74 !> All gauging stations within those domains will be taken for the optimization.
75 !> IF routing process is ON then give nDomains = 1, for this case, mHM will internally
76 !> discard gauging station information.
77 !-----------------------------------------------------------------------------
78 ndomains = 2
79 !-----------------------------------------------------------------------------
80 !> resolution of Level-1 hydrological simulations in mHM [m or degree] per domain
81 !> NOTE: if iFlag_cordinate_sys = 0, then resolution_Hydrology is in [m]
82 !> if iFlag_cordinate_sys = 1, then resolution_Hydrology is in [degree-decimal]
83 !-----------------------------------------------------------------------------
84 resolution_hydrology(1) = 24000
85 resolution_hydrology(2) = 24000
86 !----------------------------------------------------------------------------
87 !> specify same index for domains to share L0_data to save memory
88 !> the index must MONOTONICALLY increase. Index can be repeated. e.g., 1,1,3,3,5
89 !> but not 1,2,1. The correct way should be: 1,2,2.
90 !> if the value increases, value and index need to match e.g. 1,1,3 and not 1,1,2
91 !-----------------------------------------------------------------------------
92 l0domain(1) = 1
93 l0domain(2) = 2
94 !-----------------------------------------------------------------------------
95 !> flag for writing restart output
96 !-----------------------------------------------------------------------------
97 write_restart = .false.
98 !-----------------------------------------------------------------------------
99 !> read domain specific optional data
100 !-----------------------------------------------------------------------------
101 !> (0) default: the program decides. If you are confused, choose 0
102 !> (1) runoff
103 !> (2) sm
104 !> (3) tws
105 !> (4) neutons
106 !> (5) et
107 !> (6) et & tws
108 read_opt_domain_data(1) = 0
109 read_opt_domain_data(2) = 0
110/
111
112!******************************************************************************************
113! main config for mHM and mRM (mHM and mRM-related)
114!******************************************************************************************
115&mainconfig_mhm_mrm
116 !-----------------------------------------------------------------------------
117 ! DIRECTORIES
118 !-----------------------------------------------------------------------------
119 !> Number in brackets indicates domain number.
120 !> directory where restart input is located
121 mhm_file_restartin(1) = "test_domain/restart/mHM_restart_001.nc"
122 mrm_file_restartin(1) = "test_domain/restart/mRM_restart_001.nc"
123 !> directory where restart input is located
124 mhm_file_restartin(2) = "test_domain_2/restart/mHM_restart_002.nc"
125 mrm_file_restartin(2) = "test_domain_2/restart/mRM_restart_002.nc"
126 !-----------------------------------------------------------------------------
127 !> resolution of Level-11 discharge routing [m or degree] per domain
128 !> this level-11 discharge routing resolution must be >= and multiple of the
129 !> level-1 hydrological simulations resolution
130 !> NOTE: if iFlag_cordinate_sys = 0, then resolution_Routing is in [m]
131 !> if iFlag_cordinate_sys = 1, then resolution_Routing is in [degree-decimal]
132 !-----------------------------------------------------------------------------
133 resolution_routing(1) = 24000
134 resolution_routing(2) = 24000
135 !-----------------------------------------------------------------------------
136 !> model run timestep [h] either 1 or 24
137 !-----------------------------------------------------------------------------
138 timestep = 1
139 !-----------------------------------------------------------------------------
140 !> flags for reading restart output
141 !> mrm_read_river_network is an optional flag
142 !> mrm_read_river_network = .True. allows to read the river network for mRM
143 !> read_restart = .True. forces mrm_read_river_network = .True.
144 !> read_old_style_restart_bounds = .True. if you want to use an old-style restart file created by mhm<=v5.11
145 !> restart_reset_fluxes_states = .True. if you want to reset fluxes and states read from restart to default values
146 !-----------------------------------------------------------------------------
147 read_restart = .false.
148 mrm_read_river_network = .false. ! optional
149 read_old_style_restart_bounds = .false. ! optional
150 restart_reset_fluxes_states = .false. ! optional
151 !-----------------------------------------------------------------------------
152 !> flag for optimization: .TRUE.: optimization
153 !> or .FALSE.: no optimazition
154 !-----------------------------------------------------------------------------
155 optimize = .false.
156 !> Optimization shall be restarted from ./mo_<opti_method>.restart file, which
157 !> should be located next to the mhm executable (mhm)
158 optimize_restart = .false.
159 !> (0) MCMC (requires single-objective (SO) function)
160 !> (1) DDS (requires single-objective (SO) function)
161 !> (2) Simulated Annealing (requires single-objective (SO) function)
162 !> (3) SCE (requires single-objective (SO) function)
163 !> additional settings for the different methods can be provided below in namelist Optimization
164 opti_method = 1
165 !> (1) SO: Q: 1.0 - NSE
166 !> (2) SO: Q: 1.0 - lnNSE
167 !> (3) SO: Q: 1.0 - 0.5*(NSE+lnNSE)
168 !> (4) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors and then lag(1)-autocorrelation removed
169 !> (5) SO: Q: ((1-NSE)**6+(1-lnNSE)**6)**(1/6)
170 !> (6) SO: Q: SSE
171 !> (7) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors
172 !> (8) SO: Q: -1.0 * loglikelihood with trend removed from the relative errors and then lag(1)-autocorrelation removed
173 !> (9) SO: Q: 1.0 - KGE (Kling-Gupta efficiency measure)
174 !> (10) SO: SM: 1.0 - KGE of catchment average soilmoisture
175 !> (11) SO: SM: 1.0 - Pattern dissimilarity (PD) of spatially distributed soil moisture
176 !> (12) SO: SM: Sum of squared errors (SSE) of spatially distributed standard score (normalization) of soil moisture
177 !> (13) SO: SM: 1.0 - average temporal correlation of spatially distributed soil moisture
178 !> (14) SO: Q: sum[((1.0-KGE_i)/ nGauges)**6]**(1/6) > combination of KGE of every gauging station based on a power-6 norm
179 !> (15) SO: Q + domain_avg_TWS: [1.0-KGE(Q)]*RMSE(domain_avg_TWS) - objective function using Q and domain average (standard score) TWS
180 !> (16) (reserved) please use the next number when implementing a new one
181 !> MO: Q: 1st objective: (1) = 1.0 - NSE
182 !> Q: 2nd objective: (2) = 1.0 - lnNSE
183 !> (17) SO: N: 1.0 - KGE of spatio-temporal neutron data, catchment-average
184 !> (18) (reserved) please use the next number when implementing a new one
185 !> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (95% percentile)
186 !> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range)
187 !> (19) (reserved) please use the next number when implementing a new one
188 !> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (non-low flow)
189 !> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range)
190 !> (20) (reserved) please use the next number when implementing a new one
191 !> MO: Q: 1st objective: absolute difference in FDC's low-segment volume
192 !> Q: 2nd objective: 1.0 - NSE of discharge of months DJF
193 !> (21) (reserved) please use the next number when implementing a new one
194 !> SO: Q: ( (1.0-lnNSE(Q_highflow))**6 + (1.0-lnNSE(Q_lowflow))**6 )**(1/6)
195 !> where Q_highflow and Q_lowflow are calculated like in objective (19)
196 !> (22-26) (reserved MC/JM/ST) please use the next number when implementing a new one
197 !> (27) SO: ET: 1.0 - KGE of catchment average evapotranspiration
198 !> (28) SO: Q + SM: weighted OF using SM (OF12) and Q (OF14) equally weighted
199 !> further functions can be implemented in mo_objective_function and mo_mrm_objective_function
200 !> (29) SO: Q + ET: weighted OF using ET (OF27) and Q (OF14) equally weighted
201 !> (30) SO: Q + domain_avg_ET: [1.0-KGE(Q)]*RMSE(domain_avg_ET) - objective function using Q and domain average ET (standard score)$
202 !> (31) SO: Q: 1 - weighted NSE (NSE is weighted with observed discharge)
203 !> (32) SO: objective_sse_boxcox
204 !> (33) MO: objective_q_et_tws_kge_catchment_avg
205 !> (34) SO: Q: (1 + |BFI_o - BFI_s|)(1 - KGE)
206 !> BFI_s = mean_t(<q_2>) / mean_t(<q_total>)
207 !> BFI_o = given in separate namelist per domain
208 !> <.> is a spatial average
209
210 !> further functions can be implemented in mo_objective_function and mo_mrm_objective_function
211 opti_function = 10
212/
213
214!******************************************************************************************
215! main config for mRM (mRM-related)
216!******************************************************************************************
217&mainconfig_mrm
218 !-----------------------------------------------------------------------------
219 !> use ALMA convention for input and output variables
220 !> see http://www.lmd.jussieu.fr/~polcher/ALMA/convention_3.html
221 !> .False. -> default mHM units
222 !> .True. -> ALMA convention
223 !> CAUTION: at the moment, only Qall as input for mRM is affected
224 !-----------------------------------------------------------------------------
225 alma_convention = .true.
226 !-----------------------------------------------------------------------------
227 !> for using mRM as the routing module for input other than from mHM
228 !> additional specifications for filename and netCDF variable can be made
229 !> default behaviour:
230 !> none given: get variable 'total_runoff' from file 'total_runoff.nc'
231 !> varnametotalrunoff given: get variable '${varnametotalrunoff}' from file '${varnametotalrunoff}.nc'
232 !> filenametotalrunoff given: get variable 'total_runoff' from file '${filenametotalrunoff}.nc'
233 !> both given: get variable '${varnametotalrunoff}' from file '${filenametotalrunoff}.nc'
234 !-----------------------------------------------------------------------------
235 varnametotalrunoff = 'total_runoff'
236 filenametotalrunoff = 'total_runoff'
237 !> couple mRM to a groundwater model
238 gw_coupling = .false.
239/
240
241!******************************************************************************************
242! main config for river temperature routing
243!******************************************************************************************
244&config_riv_temp
245 !-----------------------------------------------------------------------------
246 !> calculate river temperature
247 !-----------------------------------------------------------------------------
248 !> albedo of open water (0.15 for tilt angle between 10 and 20 degrees -> Wanders et.al. 2019)
249 albedo_water = 0.15
250 !> priestley taylor alpha parameter for PET on open water (1.26 -> Gordon Bonan 2015)
251 pt_a_water = 1.26
252 !> emissivity of water (0.96 -> Wanders et.al. 2019)
253 emissivity_water = 0.96
254 !> emissivity of water (20.0 -> Wanders et.al. 2019)
255 turb_heat_ex_coeff = 20.0
256 !> max number of iterations for resulting river temperature
257 max_iter = 50
258 !> convergence criteria for interative solver for resulting river temperature
259 !> given as difference for iteratively estimated temperature in K
260 delta_iter = 1.0e-02
261 !> maximal step allowed in iteration in K
262 step_iter = 5.0
263 !> file name for river widths
264 riv_widths_file = 'Q_bkfl'
265 !> variable name for river widths
266 riv_widths_name = 'P_bkfl'
267 !> directory where river widths can be found (only for river temperature routing)
268 dir_riv_widths(1) = 'test_domain/input/optional_data/'
269 dir_riv_widths(2) = 'test_domain_2/input/optional_data/'
270/
271
272!******************************************************************************************
273! DIRECTORIES
274!******************************************************************************************
275!> Namelist with all directories for common file as well as separate file for every domain.
276!> Number in brackets indicates domain number.
277!> This number HAS TO correspond with the number of domain given in the "mainconfig"
278!> namelist as well as the indices given in "evaluation_gauges" namelist.
279!******************************************************************************************
280! directories (mandatory)
281!******************************************************************************************
282&directories_general
283 !> all directories are common to all domains
284 !> config run out file common to all modeled domains should be written to directory
285 dirconfigout = "test_domain/"
286 !
287 !> directory where common input files should be located for all modeled domains
288 !> (only for *_classdefinition files)
289 dircommonfiles = "test_domain/input/morph/"
290 !
291 !**** for Domain 1
292 !> directory where morphological files are located
293 dir_morpho(1) = "test_domain/input/morph/"
294 !> directory where land cover files are located
295 dir_lcover(1) = "test_domain/input/luse/"
296 !> directory where restart output should be written
297 mhm_file_restartout(1) = "test_domain/restart/mHM_restart_001.nc"
298 mrm_file_restartout(1) = "test_domain/restart/mRM_restart_001.nc"
299 !> directory where output should be written
300 dir_out(1) = "test_domain/output_b1/"
301 !> file containing latitude and longitude on the resolution_Hydrology
302 file_latlon(1) = "test_domain/input/latlon/latlon_1.nc"
303
304 ! **** for Domain 2
305 !> directory where morphological files are located
306 dir_morpho(2) = "test_domain_2/input/morph/"
307 !> directory where land cover files are located
308 dir_lcover(2) = "test_domain_2/input/luse/"
309 !> directory where restart output should be written
310 mhm_file_restartout(2) = "test_domain_2/restart/mHM_restart_002.nc"
311 mrm_file_restartout(2) = "test_domain_2/restart/mRM_restart_002.nc"
312 !> directory where output should be written
313 dir_out(2) = "test_domain_2/output/"
314 !> file containing latitude and longitude on the resolution_Hydrology
315 file_latlon(2) = "test_domain_2/input/latlon/latlon.nc"
316/
317
318!******************************************************************************************
319! directories (mHM-related)
320!******************************************************************************************
321&directories_mhm
322 !
323 !> input format specification for the meteorological forcings: 'nc' only possible
324 !> this format is common to all domains to be modeled
325 inputformat_meteo_forcings = "nc"
326 !
327 !> flag to indicate if an error is raised if boundaries are violated in meteo files
328 !> otherwise just print a warning (bound_error = .FALSE.)
329 !> .TRUE. by default
330 bound_error = .true.
331 !
332 !-----------------------------------------------------
333 !> domain wise directory paths
334 !-----------------------------------------------------
335 !
336 !**** for Domain 1
337 !> directory where meteorological input is located
338 dir_precipitation(1) = "test_domain/input/meteo/pre/"
339 dir_temperature(1) = "test_domain/input/meteo/tavg/"
340 !> paths depending on PET process (processCase(5))
341 !> -1 - PET is input, LAI driven correction
342 !> 0 - PET is input, aspect driven correction
343 !> 1 - Hargreaves-Sammani method
344 !> 2 - Priestley-Taylor mehtod
345 !> 3 - Penman-Monteith method
346 !> if processCase(5) == 0 input directory of pet has to be specified
347 dir_referenceet(1) = "test_domain/input/meteo/pet/"
348 !> if processCase(5) == 1 input directory of minimum and maximum temperature has to be specified
349 dir_mintemperature(1) = "test_domain/input/meteo/"
350 dir_maxtemperature(1) = "test_domain/input/meteo/"
351 !> if processCase(5) == 2 input directory of net-radiation has to be specified
352 dir_netradiation(1) = "test_domain/input/meteo/"
353 !> if processCase(5) == 3 input directory of absolute vapour pressure (eabs) and windspeed has to be specified
354 dir_absvappressure(1) = "test_domain/input/meteo/"
355 dir_windspeed(1) = "test_domain/input/meteo/"
356 !> if processCase(11) == 1 input directory of (long/short-wave)radiation has to be specified
357 dir_radiation(1) = "test_domain/input/meteo/"
358 !
359 !**** for Domain 2
360 !> directory where meteorological input is located
361 dir_precipitation(2) = "test_domain_2/input/meteo/pre/"
362 dir_temperature(2) = "test_domain_2/input/meteo/tavg/"
363 !> paths depending on PET process (processCase(5))
364 !> -1 - PET is input, LAI driven correction
365 !> 0 - PET is input, aspect driven correction
366 !> 1 - Hargreaves-Sammani method
367 !> 2 - Priestley-Taylor mehtod
368 !> 3 - Penman-Monteith method
369 !> if processCase(5) == 0 input directory of pet has to be specified
370 dir_referenceet(2) = "test_domain_2/input/meteo/pet/"
371 !> if processCase(5) == 1 input directory of minimum and maximum temperature has to be specified
372 dir_mintemperature(2) = "test_domain_2/input/meteo/"
373 dir_maxtemperature(2) = "test_domain_2/input/meteo/"
374 !> if processCase(5) == 2 input directory of net-radiation has to be specified
375 dir_netradiation(2) = "test_domain_2/input/meteo/"
376 !> if processCase(5) == 3 input directory of absolute vapour pressure (eabs) and windspeed has to be specified
377 dir_absvappressure(2) = "test_domain_2/input/meteo/"
378 dir_windspeed(2) = "test_domain_2/input/meteo/"
379 !> if processCase(11) == 1 input directory of (long/short-wave)radiation has to be specified
380 dir_radiation(2) = "test_domain_2/input/meteo/"
381 !> switch to control read input frequency of the gridded meteo input,
382 !> i.e. precipitation, potential evapotransiration, and temperature
383 !> >0: after each <timeStep_model_inputs> days
384 !> 0: only at beginning of the run
385 !> -1: daily
386 !> -2: monthly
387 !> -3: yearly
388 !> if timestep_model_inputs is non-zero, than it has to be non-zero
389 !> for all domains
390 time_step_model_inputs(1) = 0
391 time_step_model_inputs(2) = 0
392/
393
394!******************************************************************************************
395! directories (mRM-related)
396!******************************************************************************************
397&directories_mrm
398 !
399 !-----------------------------------------------------
400 !> domain wise directory paths
401 !-----------------------------------------------------
402 !
403 !> directory where discharge files are located
404 dir_gauges(1) = "test_domain/input/gauge/"
405 dir_gauges(2) = "test_domain_2/input/gauge/"
406 !> directory where simulated runoff can be found (only required if coupling mode equals 0)
407 dir_total_runoff(1) = 'test_domain/output_b1/'
408 dir_total_runoff(2) = 'test_domain_2/output/'
409 !> directory where runoff at bankfull conditions can be found (only for coupling to groundwater model)
410 dir_bankfull_runoff(1) = 'test_domain/input/optional_data/'
411 dir_bankfull_runoff(2) = 'test_domain_2/input/optional_data/'
412/
413
414!******************************************************************************************
415! Optional input (mHM-related)
416!******************************************************************************************
417!> data which are optionally needed for optimization
418&optional_data
419 !> soil moisture data
420 !> currently mhm can be calibrated against the fraction of moisture
421 !> down to a specific mhm soil layer (integral over the layers)
422 !> here soil moisture is defined as fraction between water content within the
423 !> soil column and saturated water content (porosity).
424 !
425 !> directory to soil moisture data
426 ! expected file name: sm.nc, expected variable name: sm
427 dir_soil_moisture(1) = "test_domain/input/optional_data/"
428 !> number of mHM soil layers (nSoilHorizons_mHM) which the soil moisture
429 !> input is representative for (counted top to down)
430 nsoilhorizons_sm_input = 1
431 !> time stepping of the soil moisture input
432 !> -1: daily SM values
433 !> -2: monthly SM values
434 !> -3: yearly SM values
435 !-----------------------------
436 timestep_sm_input = -2
437 !
438 !> directory to neutron data
439 ! expected file name: neutrons.nc, expected variable name: neutrons
440 dir_neutrons(1) = "test_domain/input/optional_data/"
441
442 !> evapotranspiration data
443 !
444 !> directory to evapotranspiration data
445 ! expected file name: et.nc, expected variable name: et
446 dir_evapotranspiration(1) = "test_domain/input/optional_data/"
447
448 !> time stepping of the et input
449 !> -1: daily ET values
450 !> -2: monthly ET values
451 !> -3: yearly ET values
452 !-----------------------------
453 timestep_et_input = -2
454
455 !> domain average total water storage (tws)
456 !> file name including path with timeseries of GRACE-based data
457 ! expected file name: twsa.nc, expected variable name: twsa
458 dir_tws(1) = "test_domain/input/optional_data/"
459
460 !> time stepping of the tws input
461 !> -1: daily TWS values
462 !> -2: monthly TWS values
463 !> -3: yearly TWS values
464 !-----------------------------
465 timestep_tws_input = -2
466/
467
468!******************************************************************************************
469! PROCESSES (mandatory)
470!******************************************************************************************
471!> This matrix manages which processes and process descriptions are used for simulation.
472!> The number of processes and its corresponding numbering are fixed. The process description can be
473!> chosen from the options listed above the name of the particular process case. This number has to be
474!> given for processCase(*).
475!
476&processselection
477 !> interception
478 !> 1 - maximum Interception
479 processcase(1) = 1
480 !> snow
481 !> 1 - degree-day approach
482 processcase(2) = 1
483 !> soil moisture
484 !> 1 - Feddes equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like
485 !> 2 - Jarvis equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like
486 !> 3 - Jarvis equation for ET reduction and global FC dependency on root fraction coefficient
487 !> 4 - Feddes equation for ET reduction and global FC dependency on root fraction coefficient
488 processcase(3) = 1
489 !> directRunoff
490 !> 1 - linear reservoir exceedance approach
491 processcase(4) = 1
492 !> potential evapotranspiration (PET)
493 !> -1 - PET is input, LAI driven correction
494 !> 0 - PET is input, aspect driven correction
495 !> 1 - Hargreaves-Sammani method
496 !> 2 - Priestley-Taylor mehtod
497 !> 3 - Penman-Monteith method
498 processcase(5) = 0
499 !> interflow
500 !> 1 - storage reservoir with one outflow threshold and nonlinear response
501 processcase(6) = 1
502 !> percolation
503 !> 1 - GW assumed as linear reservoir
504 processcase(7) = 1
505 !> routing
506 !> 0 - deactivated
507 !> 1 - Muskingum approach
508 !> 2 - adaptive timestep, constant celerity
509 !> 3 - adaptive timestep, spatially varying celerity
510 processcase(8) = 3
511 !> baseflow
512 !> 1 - recession parameters (not regionalized yet)
513 processcase(9) = 1
514 !> ground albedo of cosmic-ray neutrons
515 !> THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH
516 !> 0 - deactivated
517 !> 1 - inverse N0 based on Desilets et al. 2010
518 !> 2 - COSMIC forward operator by Shuttleworth et al. 2013
519 processcase(10) = 0
520 !> river temperature routing (needs routing)
521 !> 0 - deactivated
522 !> 1 - following: Beek et al., 2012
523 processcase(11) = 0
524/
525
526!******************************************************************************************
527! LAND COVER (mandatory)
528!******************************************************************************************
529&lcover
530 !> Variables given in this namelist are common to all domains to be modeled.
531 !> Please make sure that the land cover periods are covering the simulation period.
532 !> number of land cover scenes to be used
533 !> The land cover scene periods are shared by all catchments.
534 !> The names should be equal for all domains. The land cover scnes have to be ordered
535 !> chronologically.
536 nlcoverscene = 2
537 ! indicate period with brackets behind variable
538 ! first scene
539 !> starting year of land cover scene 1
540 lcoveryearstart(1) = 1981
541 !> ending year of land cover scnene 1
542 lcoveryearend(1) = 1990
543 !> name of land cover file for scnene 1
544 lcoverfname(1) = 'lc_1981.asc'
545
546 !> starting year of land cover scene 2
547 lcoveryearstart(2) = 1991
548 !> ending year of land cover scnene 2
549 lcoveryearend(2) = 2000
550 !> name of land cover file for scnene 2
551 lcoverfname(2) = 'lc_1991.asc'
552/
553
554!******************************************************************************************
555! Time periods (mHM and mRM-related)
556!******************************************************************************************
557&time_periods
558 !-----------------------------------------------------------------------------
559 !> specification of number of warming days [d] and the simulation period.
560 !> All dynamic data sets(e.g., meteo. forcings, landcover scenes) should start
561 !> from warming days and ends at the last day of the evaluation period.
562 !
563 !> 1---------2-------------------3
564 !>
565 !> 1-> Starting of the effective modeling period (including the warming days)
566 !> 2-> Starting of the given simulation period
567 !> 3-> Ending of the given simulation period (= end of the effective modeling period)
568 !
569 !> IF you want to run the model from 2002/01/01 (Starting of the given simulation
570 !> period=2) to 2003/12/31 (End of the given simulation period=3) with 365 warming
571 !> day, which is 2001/01/01 = 1), THEN all dynamic datasets should be given for
572 !> the effective modeling period of 2001/01/01 to 2003/12/31.
573 !-----------------------------------------------------------------------------
574 warming_days(1) = 0
575 warming_days(2) = 180
576 !> first year of wanted simulation period
577 eval_per(1)%yStart = 1990
578 eval_per(2)%yStart = 1993
579 !> first month of wanted simulation period
580 eval_per(1)%mStart = 01
581 eval_per(2)%mStart = 01
582 !> first day of wanted simulation period
583 eval_per(1)%dStart = 01
584 eval_per(2)%dStart = 01
585 !> last year of wanted simulation period
586 eval_per(1)%yEnd = 1993
587 eval_per(2)%yEnd = 1993
588 !> last month of wanted simulation period
589 eval_per(1)%mEnd = 12
590 eval_per(2)%mEnd = 12
591 !> last day of wanted simulation period
592 eval_per(1)%dEnd = 31
593 eval_per(2)%dEnd = 31
594/
595
596!******************************************************************************************
597! INPUT SOIL DATABASE AND mHM LAYERING (MPR-related)
598!******************************************************************************************
599!> Namelist controlling the layer information of the soil database
600!> Variables given in this namelist are common to all domains to be modeled.
601&soildata
602 !----------------------------------------------------------------------------------------------------------
603 !> iFlag_soilDB:
604 !> flag to handle multiple types of soil databases and their processing within the mHM.
605 !> This flag is unique and valid for all domains.
606 !> Depending on the choice of this flag you need to process your soil database differently.
607 !
608 !> iFlag_soilDB = 0:
609 !> Read and process the soil database in a classical mHM format which requires:
610 !> i) a single gridded ASCII file of soil-id (soil_class.asc - hard coded file name)
611 !> ii) a single soil look-up-table file (soil_classdefinition.txt) with information of
612 !> soil textural properties for every horizon.
613 !
614 !> Here mHM is quite flexible to handle multiple soil layers as specified in "nSoilHorizons_mHM"
615 !> and depths provided in "soil_Depth(:)".
616 !
617 !> The tillage depth is flexible in this case.
618 !
619 !> The depth of last mHM modeling layer is determined according the information given in the
620 !> input soil database, which could vary spatially depending on the soil type. Therefore the
621 !> user should not provide the depth of the last modeling layer. For example if you choose
622 !> nSoilHorizons_mHM = 3, then soil_Depth should be given for only soil_Depth(1) and soil_Depth(2).
623 !> Any additional depth related information would be discarded
624 !
625 !> iFlag_soilDB = 1:
626 !> Handle the harmonised horizon specific soil information, requires
627 !> i) multiple (horizon specific) gridded ASCII files containing info of soil-ids.
628 !> (e.g., soil_class_horizon001.asc, soil_class_horizon002.asc, ....)
629 !> File names are automatically generated within mHM as per the given soil_Depth(:).
630 !> The format follows the FORTRAN coding style: "soil_class_horizon_"XX".asc"
631 !> where XX represents the horizon id with 2 spaces allocated for this number
632 !> and the empty spaces are (trailed) filled with Zeros. FORTRAN CODE I2.2
633 !> The horizon is numbered sequentially from top to bottom soil layers.
634 !> E.g., for 1st horizon it is soil_class_horizon_01.asc,
635 !> for 2nd it is soil_class_horizon_02.asc, ... and so on.
636 !
637 !> ii) a single soil look-up-table file with information of soil textural properties for each soil type.
638 !> Note that there should be no horizon specific information in this LUT file
639 !> (soil_classdefinition_iFlag_soilDB_1.txt - filename is hard coded).
640 !
641 !> The modeling soil horizons is as per the input data (i.e. for which the gridded ASCII files are available).
642 !
643 !> The depth of the last mHM horizon should be specified. It is fixed and uniform across the entire modeling domain.
644 !
645 !> The tillage depth should conform with one of the horizon (lower) layer depths.
646 !
647 !> There is an overhead cost of reading and storing multiple (horizon specific) gridded ASCII files
648 !
649 !> Note: For both cases: The present model code mHM can handle maximum of 10 soil horizons (hard coded).
650 !> To increase this number, edit the variable "maxNoSoilHorizons" in the "/src/mhm/mo_mhm_constants.f90" file
651 !
652 !----------------------------------------------------------------------------------------------------------
653 iflag_soildb = 0
654 !
655 !> [mm] soil depth down to which organic matter is possible
656 tillagedepth = 200
657 !
658 !> No. of soil horizons to be modeled
659 nsoilhorizons_mhm = 2
660 !
661 ! soil depth information
662 !> IF (iFlag_soilDB = 0)
663 !> Provide below the soil_Depth() for 1,2,..,*n-1* soil horizons. Depth of the last layer(n) is taken from the soil LUT
664 !> IF (iFlag_soilDB = 1)
665 !> Provide below the soil_Depth() for every 1,2..n-1,*n* soil horizons. You must have soil_class-id gridded file for each layer
666 !> Also check your tillage layer depth. It should conform with one of the below specified soil_Depth.
667 !
668 !> Soil_Horizon Depth[mm] ! bottom depth of soil horizons w.r.t. ground surface (positive downwards)
669 soil_depth(1) = 200
670/
671
672!******************************************************************************************
673! INFORMATION RELATED TO LAI DATA (MPR-related)
674!******************************************************************************************
675&lai_data_information
676 !
677 !-----------------------------------------------------------------------------------
678 !> Flag timeStep_LAI_input identifies how LAI is read in mHM.
679 !> This flag is unique and valid for all domains.
680 !
681 !> timeStep_LAI_input
682 !>
683 !> 0: read LAI from long term monthly mean lookup table (related to land cover file).
684 !> The filename (LAI_classdefinition.txt) for the LUT is hard coded in mo_file.f90
685 !> Information regarding long-term monthly mean LAI for land cover classes
686 !> appearing in all modeled domains should be included in this LUT file.
687 !> This is an unique file applicable to all domains to be modeled.
688 !> The respective plant functional type is in LAI_class.asc, which must be also given
689 !> and should be located in each domain's morph directory.
690 !>
691 !> < 0: Read gridded LAI files.
692 !> -1: gridded LAI are daily values
693 !> -2: gridded LAI are monthly values
694 !> -3: gridded LAI are yearly values
695 !
696 !> 1: read mean monthly gridded LAI values.
697 !> must be a separate *.nc file for every (modeled) domains.
698 !-----------------------------------------------------------------------------------
699 timestep_lai_input = 0
700 !> input file format of gridded file (if timeStep_LAI_input < 0)
701 !> nc - assume one file with name lai.nc
702 !> input file format of gridded file (if timeStep_LAI_input == 1)
703 !> nc - assume one file with name lai.nc with 12 monthly grids of mean LAI estimates
704 inputformat_gridded_lai = "nc"
705/
706
707!******************************************************************************************
708! LCover information (MPR-related)
709!******************************************************************************************
710&lcover_mpr
711 !>fraction of area within city assumed to be fully sealed [0.0-1.0]
712 fracsealed_cityarea = 0.6
713/
714
715!******************************************************************************************
716! LAI gridded time series folder definition (optional, MPR-related)
717!******************************************************************************************
718! this is only needed for timeStep_LAI_input != 0
719&directories_mpr
720 !> directory where gridded LAI files are located
721 dir_gridded_lai(1) = "test_domain/input/lai/"
722 !> directory where gridded LAI files are located
723 dir_gridded_lai(2) = "test_domain/input/lai/"
724/
725
726!******************************************************************************************
727! Specifcation of evaluation and inflow gauges (mRM-related)
728!******************************************************************************************
729!> namelist controlling the gauging station information
730!> The ID has to correspond to the ID's given in the 'gaugelocation.asc' and
731!> to the filename containing the time series
732&evaluation_gauges
733 !> Gauges for model evaluation
734 !
735 !> Total number of gauges (sum of all gauges in all subbains)
736 ngaugestotal = 2
737 !> structure of gauge_id(i,j) & gauge_filename(i,j):
738 !> 1st dimension is the number of the subdomain i
739 !> 2nd dimension is the number of the gauge j within the subdomain i
740 !> numbering has to be consecutive
741 !
742 !> domain 1
743 !> number of gauges for subdomain (1)
744 nogauges_domain(1) = 1
745 !> in subdomain(1), this is the id of gauge(1) --> (1,1)
746 gauge_id(1,1) = 398
747 !> name of file with timeseries for subdomain(1) at gauge(1) --> (1,1)
748 gauge_filename(1,1) = "00398.txt"
749 !
750 !> domain 2
751 !> number of gauges for subdomain (2)
752 nogauges_domain(2) = 1
753 !> in subdomain(2), this is the id of gauge(1) --> (2,1)
754 gauge_id(2,1) = 45
755 !> name of file with timeseries for subdomain(2) at gauge(1) --> (2,1)
756 gauge_filename(2,1) = "45.txt"
757/
758
759&inflow_gauges
760 !> Gauges / gridpoints used for inflow to the model domain
761 !> e.g. in the case of upstream/headwater areas which are
762 !> not included in the model domain
763 !
764 !> Total number of inflow gauges (sum of all gauges in all subdomains)
765 ninflowgaugestotal = 0
766 !> structure of gauge_id(i,j) & gauge_filename(i,j):
767 !> 1st dimension is the number of the subdomain i
768 !> 2nd dimension is the number of the gauge j within the subdomain i
769 !> numbering has to be consecutive
770 !
771 !> domain 1
772 !> number of gauges for subdomain (1)
773 noinflowgauges_domain(1) = 0
774 !> id of inflow gauge(1) for subdomain(1) --> (1,1)
775 inflowgauge_id(1,1) = -9
776 !> name of file with timeseries of inflow gauge(1) for subdomain(1) --> (1,1)
777 inflowgauge_filename(1,1) = ""
778 !> consider flows from upstream/headwater cells of inflow gauge(1) for subdomain(1) --> (1,1)
779 inflowgauge_headwater(1,1) = .false.
780/
781
782!******************************************************************************************
783! ANNUAL CYCLE PAN EVAPORATION (mHM-related)
784!******************************************************************************************
785&panevapo
786 ! MONTH Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
787 !> monthly free pan evaporation
788 evap_coeff = 1.30, 1.20, 0.72, 0.75, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.50
789/
790
791!******************************************************************************************
792! ANNUAL CYCLE METEOROLOGICAL FORCINGS (mHM-related)
793!******************************************************************************************
794&nightdayratio
795 !> Alternatively to night day ratios, explicit weights for pet and average temperature can
796 !> be read. The dimension for the weights are in FORTRAN-notation (rows, colums, months=12, hours=24)
797 !> and in C-notation (hours=24, months=12, colums, rows).
798 !> The array for temperature weights is called tavg_weight in the file: <dir_Temperature>/tavg_weight.nc
799 !> The array for pet weights is called pet_weight in the file: <dir_ReferenceET>/pet_weight.nc
800 !> The array for precipitation weights is called pet_weight in the file: <dir_Precipitation>/pre_weight.nc
801 !> If read_meteo_weights is False than night fractions below are used
802 read_meteo_weights = .false.
803 !> night ratio for precipitation
804 !> only night values required because day values are the opposite
805 fnight_prec = 0.46, 0.50, 0.52, 0.51, 0.48, 0.50, 0.49, 0.48, 0.52, 0.56, 0.50, 0.47
806 !> night ratio for PET
807 fnight_pet = 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10
808 !> night correction factor for temperature
809 fnight_temp = -0.76, -1.30, -1.88, -2.38, -2.72, -2.75, -2.74, -3.04, -2.44, -1.60, -0.94, -0.53
810 !> night ratio for ssrd (shortwave rad. for river temperature)
811 fnight_ssrd = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
812 !> night ratio for strd (longwave rad. for river temperature)
813 fnight_strd = 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45
814/
815
816!******************************************************************************************
817! SETTINGS FOR OPTIMIZATION (mHM and mRM-related)
818!******************************************************************************************
819&optimization
820 ! -------------------------------------
821 !> General:
822 ! -------------------------------------
823 !> number of iteration steps by parameterset
824 niterations = 7
825 !> seed of random number gemerator (default: -9)
826 !> if default: seed is obtained from system clock
827 seed = 1235876
828 ! -------------------------------------
829 !> DDS specific:
830 ! -------------------------------------
831 !> perturbation rate r (default: 0.2)
832 dds_r = 0.2
833 ! -------------------------------------
834 !> SA specific:
835 ! -------------------------------------
836 !> Initial Temperature (default: -9.0)
837 !> if default: temperature is determined by algorithm of Ben-Ameur (2004)
838 sa_temp = -9.0
839 ! -------------------------------------
840 !> SCE specific:
841 ! -------------------------------------
842 !> Number of Complexes (default: -9)
843 !> if default: ngs = 2
844 sce_ngs = 2
845 !> Points per Complex (default: -9)
846 !> if default: npg = 2n+1
847 sce_npg = -9
848 !> Points per Sub-Complex (default: -9)
849 !> if default: nps = n+1
850 sce_nps = -9
851 ! -------------------------------------
852 !> MCMC specific:
853 ! -------------------------------------
854 !> .true.: use MCMC for optimisation and estimation of parameter uncertainty
855 !> .false.: use MCMC for estimation of parameter uncertainty
856 mcmc_opti = .false.
857 !> Parameters of error model if mcmc_opti=.false.
858 !> e.g. for opti_function=8: two parameters a and b: err = a + b*Q
859 mcmc_error_params = 0.01, 0.6
860/
861
862!******************************************************************************************
863! SETTINGS FOR OPTIMIZATION for baseflow-index (opti_function = 34)
864!******************************************************************************************
865&baseflow_config
866 !> Calculate BFI from discharge time series with the Eckhardt filter
867 !> Eckhardt et al. (2008, doi: 10.1016/j.jhydrol.2008.01.005)
868 !> This option **requires** one gauge per domain at the outlet of the basin.
869 bfi_calc = .true.
870 !> baseflow index per domain. Only needed if not calculated (BFI_calc = .false.)
871 !> You can overwrite single BFI values to not calculate them internally (if BFI_calc = .true.).
872 ! BFI_obs(1) = 0.124
873 ! BFI_obs(2) = 0.256
874/