5.13.3-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 !> (35) SO: SM: 1.0 - SPAEF of spatially distributed soil moisture
210 !> (36) SO: ET: 1.0 - SPAEF of spatially distributed evapotranspiration
211 !> (37) SO: SM + ET: 1.0 - 0.5 * [SPAEF(SM) + SPAEF(ET)]
212 !> (38) SO: SM + Q : 1.0 - [input wt.* SPAEF(SM) + KGE(Q)]/(input wt. + 1)
213 !> (39) SO: ET + Q : 1.0 - [input wt.* SPAEF(ET) + KGE(Q)]/(input wt. + 1)
214 !> (40) SO: SM + ET + Q: 1.0 - [0.5*input wt.* SPAEF(SM) + 0.5*input wt.* SPAEF(ET) + KGE(Q)]/(input wt. + 1)
215 !> (41) SO: ET: 1.0 - Pattern dissimilarity (PD) of spatially distributed soil moisture
216 !> (42) SO: SM + ET: 1.0 - 0.5 * [PD(SM) + PD(ET)]
217 !> (43) SO: SM + Q : 1.0 - [input wt.* PD(SM) + KGE(Q)]/(input wt. + 1)
218 !> (44) SO: ET + Q : 1.0 - [input wt.* PD(ET) + KGE(Q)]/(input wt. + 1)
219 !> (45) SO: SM + ET + Q: 1.0 - [0.5*input wt.* PD(SM) + 0.5*input wt.* PD(ET) + KGE(Q)]/(input wt. + 1)
220 !> (46) SO: SPF: 1.0 - CA(SPF)
221 !> (47) SO: SPF+ Q : 1.0 - [input wt.* CA(SPF) + KGE(Q)]/(input wt. + 1)
222
223 !> further functions can be implemented in mo_objective_function and mo_mrm_objective_function
224 opti_function = 10
225/
226
227!******************************************************************************************
228! main config for mRM (mRM-related)
229!******************************************************************************************
230&mainconfig_mrm
231 !-----------------------------------------------------------------------------
232 !> use ALMA convention for input and output variables
233 !> see http://www.lmd.jussieu.fr/~polcher/ALMA/convention_3.html
234 !> .False. -> default mHM units
235 !> .True. -> ALMA convention
236 !> CAUTION: at the moment, only Qall as input for mRM is affected
237 !-----------------------------------------------------------------------------
238 alma_convention = .true.
239 !-----------------------------------------------------------------------------
240 !> for using mRM as the routing module for input other than from mHM
241 !> additional specifications for filename and netCDF variable can be made
242 !> default behaviour:
243 !> none given: get variable 'total_runoff' from file 'total_runoff.nc'
244 !> varnametotalrunoff given: get variable '${varnametotalrunoff}' from file '${varnametotalrunoff}.nc'
245 !> filenametotalrunoff given: get variable 'total_runoff' from file '${filenametotalrunoff}.nc'
246 !> both given: get variable '${varnametotalrunoff}' from file '${filenametotalrunoff}.nc'
247 !-----------------------------------------------------------------------------
248 varnametotalrunoff = 'total_runoff'
249 filenametotalrunoff = 'total_runoff'
250 !> couple mRM to a groundwater model
251 gw_coupling = .false.
252/
253
254!******************************************************************************************
255! main config for river temperature routing
256!******************************************************************************************
257&config_riv_temp
258 !-----------------------------------------------------------------------------
259 !> calculate river temperature
260 !-----------------------------------------------------------------------------
261 !> albedo of open water (0.15 for tilt angle between 10 and 20 degrees -> Wanders et.al. 2019)
262 albedo_water = 0.15
263 !> priestley taylor alpha parameter for PET on open water (1.26 -> Gordon Bonan 2015)
264 pt_a_water = 1.26
265 !> emissivity of water (0.96 -> Wanders et.al. 2019)
266 emissivity_water = 0.96
267 !> emissivity of water (20.0 -> Wanders et.al. 2019)
268 turb_heat_ex_coeff = 20.0
269 !> max number of iterations for resulting river temperature
270 max_iter = 50
271 !> convergence criteria for interative solver for resulting river temperature
272 !> given as difference for iteratively estimated temperature in K
273 delta_iter = 1.0e-02
274 !> maximal step allowed in iteration in K
275 step_iter = 5.0
276 !> file name for river widths
277 riv_widths_file = 'Q_bkfl'
278 !> variable name for river widths
279 riv_widths_name = 'P_bkfl'
280 !> directory where river widths can be found (only for river temperature routing)
281 dir_riv_widths(1) = 'test_domain/input/optional_data/'
282 dir_riv_widths(2) = 'test_domain_2/input/optional_data/'
283/
284
285!******************************************************************************************
286! DIRECTORIES
287!******************************************************************************************
288!> Namelist with all directories for common file as well as separate file for every domain.
289!> Number in brackets indicates domain number.
290!> This number HAS TO correspond with the number of domain given in the "mainconfig"
291!> namelist as well as the indices given in "evaluation_gauges" namelist.
292!******************************************************************************************
293! directories (mandatory)
294!******************************************************************************************
295&directories_general
296 !> all directories are common to all domains
297 !> config run out file common to all modeled domains should be written to directory
298 dirconfigout = "test_domain/"
299 !
300 !> directory where common input files should be located for all modeled domains
301 !> (only for *_classdefinition files)
302 dircommonfiles = "test_domain/input/morph/"
303 !
304 !**** for Domain 1
305 !> directory where morphological files are located
306 dir_morpho(1) = "test_domain/input/morph/"
307 !> directory where land cover files are located
308 dir_lcover(1) = "test_domain/input/luse/"
309 !> directory where restart output should be written
310 mhm_file_restartout(1) = "test_domain/restart/mHM_restart_001.nc"
311 mrm_file_restartout(1) = "test_domain/restart/mRM_restart_001.nc"
312 !> directory where output should be written
313 dir_out(1) = "test_domain/output_b1/"
314 !> file containing latitude and longitude on the resolution_Hydrology
315 file_latlon(1) = "test_domain/input/latlon/latlon_1.nc"
316
317 ! **** for Domain 2
318 !> directory where morphological files are located
319 dir_morpho(2) = "test_domain_2/input/morph/"
320 !> directory where land cover files are located
321 dir_lcover(2) = "test_domain_2/input/luse/"
322 !> directory where restart output should be written
323 mhm_file_restartout(2) = "test_domain_2/restart/mHM_restart_002.nc"
324 mrm_file_restartout(2) = "test_domain_2/restart/mRM_restart_002.nc"
325 !> directory where output should be written
326 dir_out(2) = "test_domain_2/output/"
327 !> file containing latitude and longitude on the resolution_Hydrology
328 file_latlon(2) = "test_domain_2/input/latlon/latlon.nc"
329/
330
331!******************************************************************************************
332! directories (mHM-related)
333!******************************************************************************************
334&directories_mhm
335 !
336 !> input format specification for the meteorological forcings: 'nc' only possible
337 !> this format is common to all domains to be modeled
338 inputformat_meteo_forcings = "nc"
339 !
340 !> flag to indicate if an error is raised if boundaries are violated in meteo files
341 !> otherwise just print a warning (bound_error = .FALSE.)
342 !> .TRUE. by default
343 bound_error = .true.
344 !
345 !-----------------------------------------------------
346 !> domain wise directory paths
347 !-----------------------------------------------------
348 !
349 !**** for Domain 1
350 !> directory where meteorological input is located
351 dir_precipitation(1) = "test_domain/input/meteo/pre/"
352 dir_temperature(1) = "test_domain/input/meteo/tavg/"
353 !> paths depending on PET process (processCase(5))
354 !> -1 - PET is input, LAI driven correction
355 !> 0 - PET is input, aspect driven correction
356 !> 1 - Hargreaves-Sammani method
357 !> 2 - Priestley-Taylor mehtod
358 !> 3 - Penman-Monteith method
359 !> if processCase(5) == 0 input directory of pet has to be specified
360 dir_referenceet(1) = "test_domain/input/meteo/pet/"
361 !> if processCase(5) == 1 input directory of minimum and maximum temperature has to be specified
362 dir_mintemperature(1) = "test_domain/input/meteo/"
363 dir_maxtemperature(1) = "test_domain/input/meteo/"
364 !> if processCase(5) == 2 input directory of net-radiation has to be specified
365 dir_netradiation(1) = "test_domain/input/meteo/"
366 !> if processCase(5) == 3 input directory of absolute vapour pressure (eabs) and windspeed has to be specified
367 dir_absvappressure(1) = "test_domain/input/meteo/"
368 dir_windspeed(1) = "test_domain/input/meteo/"
369 !> if processCase(11) == 1 input directory of (long/short-wave)radiation has to be specified
370 dir_radiation(1) = "test_domain/input/meteo/"
371 !
372 !**** for Domain 2
373 !> directory where meteorological input is located
374 dir_precipitation(2) = "test_domain_2/input/meteo/pre/"
375 dir_temperature(2) = "test_domain_2/input/meteo/tavg/"
376 !> paths depending on PET process (processCase(5))
377 !> -1 - PET is input, LAI driven correction
378 !> 0 - PET is input, aspect driven correction
379 !> 1 - Hargreaves-Sammani method
380 !> 2 - Priestley-Taylor mehtod
381 !> 3 - Penman-Monteith method
382 !> if processCase(5) == 0 input directory of pet has to be specified
383 dir_referenceet(2) = "test_domain_2/input/meteo/pet/"
384 !> if processCase(5) == 1 input directory of minimum and maximum temperature has to be specified
385 dir_mintemperature(2) = "test_domain_2/input/meteo/"
386 dir_maxtemperature(2) = "test_domain_2/input/meteo/"
387 !> if processCase(5) == 2 input directory of net-radiation has to be specified
388 dir_netradiation(2) = "test_domain_2/input/meteo/"
389 !> if processCase(5) == 3 input directory of absolute vapour pressure (eabs) and windspeed has to be specified
390 dir_absvappressure(2) = "test_domain_2/input/meteo/"
391 dir_windspeed(2) = "test_domain_2/input/meteo/"
392 !> if processCase(11) == 1 input directory of (long/short-wave)radiation has to be specified
393 dir_radiation(2) = "test_domain_2/input/meteo/"
394 !> switch to control read input frequency of the gridded meteo input,
395 !> i.e. precipitation, potential evapotransiration, and temperature
396 !> >0: after each <timeStep_model_inputs> days
397 !> 0: only at beginning of the run
398 !> -1: daily
399 !> -2: monthly
400 !> -3: yearly
401 !> if timestep_model_inputs is non-zero, than it has to be non-zero
402 !> for all domains
403 time_step_model_inputs(1) = 0
404 time_step_model_inputs(2) = 0
405/
406
407!******************************************************************************************
408! directories (mRM-related)
409!******************************************************************************************
410&directories_mrm
411 !
412 !-----------------------------------------------------
413 !> domain wise directory paths
414 !-----------------------------------------------------
415 !
416 !> directory where discharge files are located
417 dir_gauges(1) = "test_domain/input/gauge/"
418 dir_gauges(2) = "test_domain_2/input/gauge/"
419 !> directory where simulated runoff can be found (only required if coupling mode equals 0)
420 dir_total_runoff(1) = 'test_domain/output_b1/'
421 dir_total_runoff(2) = 'test_domain_2/output/'
422 !> directory where runoff at bankfull conditions can be found (only for coupling to groundwater model)
423 dir_bankfull_runoff(1) = 'test_domain/input/optional_data/'
424 dir_bankfull_runoff(2) = 'test_domain_2/input/optional_data/'
425/
426
427!******************************************************************************************
428! Optional input (mHM-related)
429!******************************************************************************************
430!> data which are optionally needed for optimization
431&optional_data
432 !> soil moisture data
433 !> currently mhm can be calibrated against the fraction of moisture
434 !> down to a specific mhm soil layer (integral over the layers)
435 !> here soil moisture is defined as fraction between water content within the
436 !> soil column and saturated water content (porosity).
437 !
438 !> directory to soil moisture data
439 ! expected file name: sm.nc, expected variable name: sm
440 dir_soil_moisture(1) = "test_domain/input/optional_data/"
441 !> number of mHM soil layers (nSoilHorizons_mHM) which the soil moisture
442 !> input is representative for (counted top to down)
443 nsoilhorizons_sm_input = 1
444 !> time stepping of the soil moisture input
445 !> -1: daily SM values
446 !> -2: monthly SM values
447 !> -3: yearly SM values
448 !-----------------------------
449 timestep_sm_input = -2
450 !
451 !> directory to neutron data
452 ! expected file name: neutrons.nc, expected variable name: neutrons
453 dir_neutrons(1) = "test_domain/input/optional_data/"
454
455 !> evapotranspiration data
456 !
457 !> directory to evapotranspiration data
458 ! expected file name: et.nc, expected variable name: et
459 dir_evapotranspiration(1) = "test_domain/input/optional_data/"
460
461 !> time stepping of the et input
462 !> -1: daily ET values
463 !> -2: monthly ET values
464 !> -3: yearly ET values
465 !-----------------------------
466 timestep_et_input = -2
467
468 !> domain average total water storage (tws)
469 !> file name including path with timeseries of GRACE-based data
470 ! expected file name: twsa.nc, expected variable name: twsa
471 dir_tws(1) = "test_domain/input/optional_data/"
472
473 !> time stepping of the tws input
474 !> -1: daily TWS values
475 !> -2: monthly TWS values
476 !> -3: yearly TWS values
477 !-----------------------------
478 timestep_tws_input = -2
479
480 !> snow presence flag (SPF). snow = 1, no snow = 0.
481 !> file name including path with timeseries data
482 ! expected file name: spf.nc, expected variable name: spf
483 dir_spf(1) = "test_domain/input/optional_data/"
484
485 !> time stepping of the spf input
486 !> -1: daily SPF values
487 !> -2: monthly SPF values
488 !> -3: yearly SPF values
489 !-----------------------------
490 timestep_spf_input = -1
491
492 !> For the objective functions 38,39,40, 43,44,45, & 47
493 !> These objective functions have a spatial variable (S) and Q
494 !> The weight S:Q will be x:1.
495 !> Input the weight "x" to be provided.
496 weight_for_optional_data = 1
497
498 !> For objective functions 46, & 47
499 !> The modelled SWE (mm) will be converted to snow presence flag, SPF (0,1)
500 !> based on the threshold below (in mm):
501 snow_water_equivalent_threshold_for_spf = 0
502/
503
504!******************************************************************************************
505! PROCESSES (mandatory)
506!******************************************************************************************
507!> This matrix manages which processes and process descriptions are used for simulation.
508!> The number of processes and its corresponding numbering are fixed. The process description can be
509!> chosen from the options listed above the name of the particular process case. This number has to be
510!> given for processCase(*).
511!
512&processselection
513 !> interception
514 !> 1 - maximum Interception
515 processcase(1) = 1
516 !> snow
517 !> 1 - degree-day approach
518 processcase(2) = 1
519 !> soil moisture
520 !> 1 - Feddes equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like
521 !> 2 - Jarvis equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like
522 !> 3 - Jarvis equation for ET reduction and global FC dependency on root fraction coefficient
523 !> 4 - Feddes equation for ET reduction and global FC dependency on root fraction coefficient
524 processcase(3) = 1
525 !> directRunoff
526 !> 1 - linear reservoir exceedance approach
527 processcase(4) = 1
528 !> potential evapotranspiration (PET)
529 !> -1 - PET is input, LAI driven correction
530 !> 0 - PET is input, aspect driven correction
531 !> 1 - Hargreaves-Sammani method
532 !> 2 - Priestley-Taylor mehtod
533 !> 3 - Penman-Monteith method
534 processcase(5) = 0
535 !> interflow
536 !> 1 - storage reservoir with one outflow threshold and nonlinear response
537 processcase(6) = 1
538 !> percolation
539 !> 1 - GW assumed as linear reservoir
540 processcase(7) = 1
541 !> routing
542 !> 0 - deactivated
543 !> 1 - Muskingum approach
544 !> 2 - adaptive timestep, constant celerity
545 !> 3 - adaptive timestep, spatially varying celerity
546 processcase(8) = 3
547 !> baseflow
548 !> 1 - recession parameters (not regionalized yet)
549 processcase(9) = 1
550 !> ground albedo of cosmic-ray neutrons
551 !> THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH
552 !> 0 - deactivated
553 !> 1 - inverse N0 based on Desilets et al. 2010
554 !> 2 - COSMIC forward operator by Shuttleworth et al. 2013
555 processcase(10) = 0
556 !> river temperature routing (needs routing)
557 !> 0 - deactivated
558 !> 1 - following: Beek et al., 2012
559 processcase(11) = 0
560/
561
562!******************************************************************************************
563! LAND COVER (mandatory)
564!******************************************************************************************
565&lcover
566 !> Variables given in this namelist are common to all domains to be modeled.
567 !> Please make sure that the land cover periods are covering the simulation period.
568 !> number of land cover scenes to be used
569 !> The land cover scene periods are shared by all catchments.
570 !> The names should be equal for all domains. The land cover scnes have to be ordered
571 !> chronologically.
572 nlcoverscene = 2
573 ! indicate period with brackets behind variable
574 ! first scene
575 !> starting year of land cover scene 1
576 lcoveryearstart(1) = 1981
577 !> ending year of land cover scnene 1
578 lcoveryearend(1) = 1990
579 !> name of land cover file for scnene 1
580 lcoverfname(1) = 'lc_1981.asc'
581
582 !> starting year of land cover scene 2
583 lcoveryearstart(2) = 1991
584 !> ending year of land cover scnene 2
585 lcoveryearend(2) = 2000
586 !> name of land cover file for scnene 2
587 lcoverfname(2) = 'lc_1991.asc'
588/
589
590!******************************************************************************************
591! Time periods (mHM and mRM-related)
592!******************************************************************************************
593&time_periods
594 !-----------------------------------------------------------------------------
595 !> specification of number of warming days [d] and the simulation period.
596 !> All dynamic data sets(e.g., meteo. forcings, landcover scenes) should start
597 !> from warming days and ends at the last day of the evaluation period.
598 !
599 !> 1---------2-------------------3
600 !>
601 !> 1-> Starting of the effective modeling period (including the warming days)
602 !> 2-> Starting of the given simulation period
603 !> 3-> Ending of the given simulation period (= end of the effective modeling period)
604 !
605 !> IF you want to run the model from 2002/01/01 (Starting of the given simulation
606 !> period=2) to 2003/12/31 (End of the given simulation period=3) with 365 warming
607 !> day, which is 2001/01/01 = 1), THEN all dynamic datasets should be given for
608 !> the effective modeling period of 2001/01/01 to 2003/12/31.
609 !-----------------------------------------------------------------------------
610 warming_days(1) = 0
611 warming_days(2) = 180
612 !> first year of wanted simulation period
613 eval_per(1)%yStart = 1990
614 eval_per(2)%yStart = 1993
615 !> first month of wanted simulation period
616 eval_per(1)%mStart = 01
617 eval_per(2)%mStart = 01
618 !> first day of wanted simulation period
619 eval_per(1)%dStart = 01
620 eval_per(2)%dStart = 01
621 !> last year of wanted simulation period
622 eval_per(1)%yEnd = 1993
623 eval_per(2)%yEnd = 1993
624 !> last month of wanted simulation period
625 eval_per(1)%mEnd = 12
626 eval_per(2)%mEnd = 12
627 !> last day of wanted simulation period
628 eval_per(1)%dEnd = 31
629 eval_per(2)%dEnd = 31
630/
631
632!******************************************************************************************
633! INPUT SOIL DATABASE AND mHM LAYERING (MPR-related)
634!******************************************************************************************
635!> Namelist controlling the layer information of the soil database
636!> Variables given in this namelist are common to all domains to be modeled.
637&soildata
638 !----------------------------------------------------------------------------------------------------------
639 !> iFlag_soilDB:
640 !> flag to handle multiple types of soil databases and their processing within the mHM.
641 !> This flag is unique and valid for all domains.
642 !> Depending on the choice of this flag you need to process your soil database differently.
643 !
644 !> iFlag_soilDB = 0:
645 !> Read and process the soil database in a classical mHM format which requires:
646 !> i) a single gridded ASCII file of soil-id (soil_class.asc - hard coded file name)
647 !> ii) a single soil look-up-table file (soil_classdefinition.txt) with information of
648 !> soil textural properties for every horizon.
649 !
650 !> Here mHM is quite flexible to handle multiple soil layers as specified in "nSoilHorizons_mHM"
651 !> and depths provided in "soil_Depth(:)".
652 !
653 !> The tillage depth is flexible in this case.
654 !
655 !> The depth of last mHM modeling layer is determined according the information given in the
656 !> input soil database, which could vary spatially depending on the soil type. Therefore the
657 !> user should not provide the depth of the last modeling layer. For example if you choose
658 !> nSoilHorizons_mHM = 3, then soil_Depth should be given for only soil_Depth(1) and soil_Depth(2).
659 !> Any additional depth related information would be discarded
660 !
661 !> iFlag_soilDB = 1:
662 !> Handle the harmonised horizon specific soil information, requires
663 !> i) multiple (horizon specific) gridded ASCII files containing info of soil-ids.
664 !> (e.g., soil_class_horizon001.asc, soil_class_horizon002.asc, ....)
665 !> File names are automatically generated within mHM as per the given soil_Depth(:).
666 !> The format follows the FORTRAN coding style: "soil_class_horizon_"XX".asc"
667 !> where XX represents the horizon id with 2 spaces allocated for this number
668 !> and the empty spaces are (trailed) filled with Zeros. FORTRAN CODE I2.2
669 !> The horizon is numbered sequentially from top to bottom soil layers.
670 !> E.g., for 1st horizon it is soil_class_horizon_01.asc,
671 !> for 2nd it is soil_class_horizon_02.asc, ... and so on.
672 !
673 !> ii) a single soil look-up-table file with information of soil textural properties for each soil type.
674 !> Note that there should be no horizon specific information in this LUT file
675 !> (soil_classdefinition_iFlag_soilDB_1.txt - filename is hard coded).
676 !
677 !> The modeling soil horizons is as per the input data (i.e. for which the gridded ASCII files are available).
678 !
679 !> The depth of the last mHM horizon should be specified. It is fixed and uniform across the entire modeling domain.
680 !
681 !> The tillage depth should conform with one of the horizon (lower) layer depths.
682 !
683 !> There is an overhead cost of reading and storing multiple (horizon specific) gridded ASCII files
684 !
685 !> Note: For both cases: The present model code mHM can handle maximum of 10 soil horizons (hard coded).
686 !> To increase this number, edit the variable "maxNoSoilHorizons" in the "/src/mhm/mo_mhm_constants.f90" file
687 !
688 !----------------------------------------------------------------------------------------------------------
689 iflag_soildb = 0
690 !
691 !> [mm] soil depth down to which organic matter is possible
692 tillagedepth = 200
693 !
694 !> No. of soil horizons to be modeled
695 nsoilhorizons_mhm = 2
696 !
697 ! soil depth information
698 !> IF (iFlag_soilDB = 0)
699 !> Provide below the soil_Depth() for 1,2,..,*n-1* soil horizons. Depth of the last layer(n) is taken from the soil LUT
700 !> IF (iFlag_soilDB = 1)
701 !> 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
702 !> Also check your tillage layer depth. It should conform with one of the below specified soil_Depth.
703 !
704 !> Soil_Horizon Depth[mm] ! bottom depth of soil horizons w.r.t. ground surface (positive downwards)
705 soil_depth(1) = 200
706/
707
708!******************************************************************************************
709! INFORMATION RELATED TO LAI DATA (MPR-related)
710!******************************************************************************************
711&lai_data_information
712 !
713 !-----------------------------------------------------------------------------------
714 !> Flag timeStep_LAI_input identifies how LAI is read in mHM.
715 !> This flag is unique and valid for all domains.
716 !
717 !> timeStep_LAI_input
718 !>
719 !> 0: read LAI from long term monthly mean lookup table (related to land cover file).
720 !> The filename (LAI_classdefinition.txt) for the LUT is hard coded in mo_file.f90
721 !> Information regarding long-term monthly mean LAI for land cover classes
722 !> appearing in all modeled domains should be included in this LUT file.
723 !> This is an unique file applicable to all domains to be modeled.
724 !> The respective plant functional type is in LAI_class.asc, which must be also given
725 !> and should be located in each domain's morph directory.
726 !>
727 !> < 0: Read gridded LAI files.
728 !> -1: gridded LAI are daily values
729 !> -2: gridded LAI are monthly values
730 !> -3: gridded LAI are yearly values
731 !
732 !> 1: read mean monthly gridded LAI values.
733 !> must be a separate *.nc file for every (modeled) domains.
734 !-----------------------------------------------------------------------------------
735 timestep_lai_input = 0
736 !> input file format of gridded file (if timeStep_LAI_input < 0)
737 !> nc - assume one file with name lai.nc
738 !> input file format of gridded file (if timeStep_LAI_input == 1)
739 !> nc - assume one file with name lai.nc with 12 monthly grids of mean LAI estimates
740 inputformat_gridded_lai = "nc"
741/
742
743!******************************************************************************************
744! LCover information (MPR-related)
745!******************************************************************************************
746&lcover_mpr
747 !>fraction of area within city assumed to be fully sealed [0.0-1.0]
748 fracsealed_cityarea = 0.6
749/
750
751!******************************************************************************************
752! LAI gridded time series folder definition (optional, MPR-related)
753!******************************************************************************************
754! this is only needed for timeStep_LAI_input != 0
755&directories_mpr
756 !> directory where gridded LAI files are located
757 dir_gridded_lai(1) = "test_domain/input/lai/"
758 !> directory where gridded LAI files are located
759 dir_gridded_lai(2) = "test_domain/input/lai/"
760/
761
762!******************************************************************************************
763! Specifcation of evaluation and inflow gauges (mRM-related)
764!******************************************************************************************
765!> namelist controlling the gauging station information
766!> The ID has to correspond to the ID's given in the 'gaugelocation.asc' and
767!> to the filename containing the time series
768&evaluation_gauges
769 !> Gauges for model evaluation
770 !
771 !> Total number of gauges (sum of all gauges in all subbains)
772 ngaugestotal = 2
773 !> structure of gauge_id(i,j) & gauge_filename(i,j):
774 !> 1st dimension is the number of the subdomain i
775 !> 2nd dimension is the number of the gauge j within the subdomain i
776 !> numbering has to be consecutive
777 !
778 !> domain 1
779 !> number of gauges for subdomain (1)
780 nogauges_domain(1) = 1
781 !> in subdomain(1), this is the id of gauge(1) --> (1,1)
782 gauge_id(1,1) = 398
783 !> name of file with timeseries for subdomain(1) at gauge(1) --> (1,1)
784 gauge_filename(1,1) = "00398.txt"
785 !
786 !> domain 2
787 !> number of gauges for subdomain (2)
788 nogauges_domain(2) = 1
789 !> in subdomain(2), this is the id of gauge(1) --> (2,1)
790 gauge_id(2,1) = 45
791 !> name of file with timeseries for subdomain(2) at gauge(1) --> (2,1)
792 gauge_filename(2,1) = "45.txt"
793/
794
795&inflow_gauges
796 !> Gauges / gridpoints used for inflow to the model domain
797 !> e.g. in the case of upstream/headwater areas which are
798 !> not included in the model domain
799 !
800 !> Total number of inflow gauges (sum of all gauges in all subdomains)
801 ninflowgaugestotal = 0
802 !> structure of gauge_id(i,j) & gauge_filename(i,j):
803 !> 1st dimension is the number of the subdomain i
804 !> 2nd dimension is the number of the gauge j within the subdomain i
805 !> numbering has to be consecutive
806 !
807 !> domain 1
808 !> number of gauges for subdomain (1)
809 noinflowgauges_domain(1) = 0
810 !> id of inflow gauge(1) for subdomain(1) --> (1,1)
811 inflowgauge_id(1,1) = -9
812 !> name of file with timeseries of inflow gauge(1) for subdomain(1) --> (1,1)
813 inflowgauge_filename(1,1) = ""
814 !> consider flows from upstream/headwater cells of inflow gauge(1) for subdomain(1) --> (1,1)
815 inflowgauge_headwater(1,1) = .false.
816/
817
818!******************************************************************************************
819! ANNUAL CYCLE PAN EVAPORATION (mHM-related)
820!******************************************************************************************
821&panevapo
822 ! MONTH Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
823 !> monthly free pan evaporation
824 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
825/
826
827!******************************************************************************************
828! ANNUAL CYCLE METEOROLOGICAL FORCINGS (mHM-related)
829!******************************************************************************************
830&nightdayratio
831 !> Alternatively to night day ratios, explicit weights for pet and average temperature can
832 !> be read. The dimension for the weights are in FORTRAN-notation (rows, colums, months=12, hours=24)
833 !> and in C-notation (hours=24, months=12, colums, rows).
834 !> The array for temperature weights is called tavg_weight in the file: <dir_Temperature>/tavg_weight.nc
835 !> The array for pet weights is called pet_weight in the file: <dir_ReferenceET>/pet_weight.nc
836 !> The array for precipitation weights is called pet_weight in the file: <dir_Precipitation>/pre_weight.nc
837 !> If read_meteo_weights is False than night fractions below are used
838 read_meteo_weights = .false.
839 !> night ratio for precipitation
840 !> only night values required because day values are the opposite
841 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
842 !> night ratio for PET
843 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
844 !> night correction factor for temperature
845 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
846 !> night ratio for ssrd (shortwave rad. for river temperature)
847 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
848 !> night ratio for strd (longwave rad. for river temperature)
849 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
850/
851
852!******************************************************************************************
853! SETTINGS FOR OPTIMIZATION (mHM and mRM-related)
854!******************************************************************************************
855&optimization
856 ! -------------------------------------
857 !> General:
858 ! -------------------------------------
859 !> number of iteration steps by parameterset
860 niterations = 7
861 !> seed of random number gemerator (default: -9)
862 !> if default: seed is obtained from system clock
863 seed = 1235876
864 ! -------------------------------------
865 !> DDS specific:
866 ! -------------------------------------
867 !> perturbation rate r (default: 0.2)
868 dds_r = 0.2
869 ! -------------------------------------
870 !> SA specific:
871 ! -------------------------------------
872 !> Initial Temperature (default: -9.0)
873 !> if default: temperature is determined by algorithm of Ben-Ameur (2004)
874 sa_temp = -9.0
875 ! -------------------------------------
876 !> SCE specific:
877 ! -------------------------------------
878 !> Number of Complexes (default: -9)
879 !> if default: ngs = 2
880 sce_ngs = 2
881 !> Points per Complex (default: -9)
882 !> if default: npg = 2n+1
883 sce_npg = -9
884 !> Points per Sub-Complex (default: -9)
885 !> if default: nps = n+1
886 sce_nps = -9
887 ! -------------------------------------
888 !> MCMC specific:
889 ! -------------------------------------
890 !> .true.: use MCMC for optimisation and estimation of parameter uncertainty
891 !> .false.: use MCMC for estimation of parameter uncertainty
892 mcmc_opti = .false.
893 !> Parameters of error model if mcmc_opti=.false.
894 !> e.g. for opti_function=8: two parameters a and b: err = a + b*Q
895 mcmc_error_params = 0.01, 0.6
896/
897
898!******************************************************************************************
899! SETTINGS FOR OPTIMIZATION for baseflow-index (opti_function = 34)
900!******************************************************************************************
901&baseflow_config
902 !> Calculate BFI from discharge time series with the Eckhardt filter
903 !> Eckhardt et al. (2008, doi: 10.1016/j.jhydrol.2008.01.005)
904 !> This option **requires** one gauge per domain at the outlet of the basin.
905 bfi_calc = .true.
906 !> baseflow index per domain. Only needed if not calculated (BFI_calc = .false.)
907 !> You can overwrite single BFI values to not calculate them internally (if BFI_calc = .true.).
908 ! BFI_obs(1) = 0.124
909 ! BFI_obs(2) = 0.256
910/