diff --git a/.github/workflows/ci_env.yml b/.github/workflows/ci_env.yml index 0e2944bd..9ea75245 100644 --- a/.github/workflows/ci_env.yml +++ b/.github/workflows/ci_env.yml @@ -1,6 +1,11 @@ name: Lisflood OS Unit Tests -on: [push] +# Controls when the workflow will run +on: + push: + branches: [ "master", "development" ] + pull_request: + branches: [ "master", "development" ] jobs: tests: diff --git a/.gitignore b/.gitignore index 222e9834..ef5f354a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ lisflood_model.egg-info .coverage *.tox.ini .vscode/ +*.ipynb +.ipynb_checkpoints/ diff --git a/docs/3_step3_preparing-setting-file/index.md b/docs/3_step3_preparing-setting-file/index.md index c6ec355f..d9a3ec9d 100644 --- a/docs/3_step3_preparing-setting-file/index.md +++ b/docs/3_step3_preparing-setting-file/index.md @@ -680,6 +680,7 @@ Within the 'lfoptions' element of the settings file, each option is defined usin + **NetCDFTimeChunks**: chunking size in the time dimension. Recommended value is “auto" but chunking size can be specified manually or set to “-1" to load the whole time series into memory (very fast but expensive in terms of memory). + **MapsCaching** (True or False): option designed for the lisflood calibration. If set to True, all the static maps and forcings will be stored in a cache so that they don't have to be loaded by each lisflood instance. This option sets the value of NetCDFTimeChunks to "-1", meaning that the whole time series in the NetCDF inputs is loaded into memory. + **OutputMapsChunks**: this option is used to dump outputs to disk every X steps (default 1). ++ **OutputMapsDataType**: this option sets the output data type and may take the following values: "float64" or "float32" (default float64) ### Reference settings file In order to facilitate the preparation of the settings file, a complete example is provided [here](https://github.com/ec-jrc/lisflood-code/tree/master/src/lisfloodSettings_reference.xml). The user is encouraged to update the paths, the names of the maps and of the tables in the provided template. diff --git a/docs/3_step4_preparing-input-files/index.md b/docs/3_step4_preparing-input-files/index.md index 1f041c64..cc7cf9bf 100644 --- a/docs/3_step4_preparing-input-files/index.md +++ b/docs/3_step4_preparing-input-files/index.md @@ -6,14 +6,14 @@ In the current version of LISFLOOD, all the model inputs are provided as either LISFLOOD requires that all maps must have *identical* location attributes (number of rows, columns, cellsize, upper x and y coordinates). -The input maps can be classified according to two main cathegories:
+The input maps can be classified according to two main categories:
+ **meteorological forcings**. These maps provide time series of values for each pixel of the computational domain. More specifically, the meteorological forcings provide the values of precipitation, temperature, reference values of evaporation from water surfaces, reference values of evaporation from open water bodies, reference values of evapotranspiration for each pixel of the modelled area. For each meteorological forcing, one map is required for each computational time step.
+ **static maps**. These maps provide information of morphological, physical, soil, and land use properties for each pixel of the computational domain. ### Meteorological forcings -The meteorological forcing variables are defined in *map stacks*. A *map stack* is simply a series of maps, where each map represents the value of a variable at an individual time step.
It is recommented to use the netcdf format.
The users that prefer to prepare the meteorological forcings maps in pcraster format, must name the files according to the following rules: the name of each map is made up of a total of 11 characters: 8 characters, a dot and a 3-character suffix. Each map name starts with a *prefix*, and ends with the time step number. All character positions in between are filled with zeros ("0").
+The meteorological forcing variables are defined in *map stacks*. A *map stack* is simply a series of maps, where each map represents the value of a variable at an individual time step.
It is recommented to use the netcdf format.
LISFLOOD is capable of reading meteorological forcings split into multiple files (e.g. yearly chuncks). To use this functionality, it is enough to add the symbol '\*' after the file name (e.g. ET0_\*)
The users that prefer to prepare the meteorological forcings maps in pcraster format, must name the files according to the following rules: the name of each map is made up of a total of 11 characters: 8 characters, a dot and a 3-character suffix. Each map name starts with a *prefix*, and ends with the time step number. All character positions in between are filled with zeros ("0").
Generally used prefixes for the meteorological forcings maps are:
+ tp : total precipitation; units: mm/day.
@@ -77,14 +77,14 @@ Calibrated parameters are optimised for a specific model set up. It is often req ### INPUT TABLES -The geographical location of lakes and reservoirs is identified by the two maps described [here](../4_Static-Maps_reservoirs-lakes/). These maps provide the location of lakes and reservoirs. Each lake and each reservoir is identified by its ID (a in integer number). LISFLOOD requires additional information for the adequate modelling of [lakes](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) and [reservoirs](https://ec-jrc.github.io/lisflood-model/3_03_optLISFLOOD_reservoirs/). These additional pieces of information are supplied to the numerical code by using tables in *.txt* format. Each table has 2 colums: the first column is the ID of the lake or of the reservoir, the second column is the quantity required by LISFLOOD. The table below provides the list of the pieces of information which are required for the adequate modelling of lakes and reservoirs. +The geographical location of lakes and reservoirs is identified by the two maps described [here](../4_Static-Maps_reservoirs-lakes/). These maps provide the location of lakes and reservoirs. Each lake and each reservoir is identified by its ID (an integer number). LISFLOOD requires additional information for the adequate modelling of [lakes](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) and [reservoirs](https://ec-jrc.github.io/lisflood-model/3_03_optLISFLOOD_reservoirs/). These additional pieces of information are supplied to the numerical code by using tables in *.txt* format. Each table has 2 columns: the first column is the ID of the lake or of the reservoir, the second column is the quantity required by LISFLOOD. The table below provides the list of the pieces of information which are required for the adequate modelling of lakes and reservoirs. ##### Table: LISFLOOD input tables | **Table** | **Default name** | **Description** | |----------------------------|-----------------------|--------------------------| -| Lake area | Lakearea.txt | Lake syrface area in m2 | -| Lake alpha parameter | lakea.txt | Lake parameter alpha: a detailed descrpition can be found [here](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) | -| Lake average inflow | lakeaverageinflow.txt | Average inflow to the lake: a detailed descrpition can be found [here](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) | +| Lake area | Lakearea.txt | Lake surface area in m2 | +| Lake alpha parameter | lakea.txt | Lake parameter alpha: a detailed description can be found [here](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) | +| Lake average inflow | lakeaverageinflow.txt | Average inflow to the lake: a detailed description can be found [here](https://ec-jrc.github.io/lisflood-model/3_02_optLISFLOOD_lakes/) | | Reservoir storage | rstor.txt | Volume in m3, total reservoirs storage capacity | | Reservoir minimum outflow | rminq.txt | Discharge in m3/s. | | Reservoir normal outflow | rnormq.txt | Discharge in m3/s. | diff --git a/docs/4_annex_input-files/index.md b/docs/4_annex_input-files/index.md index a70c8d95..2637b110 100644 --- a/docs/4_annex_input-files/index.md +++ b/docs/4_annex_input-files/index.md @@ -116,19 +116,5 @@ To this end a dedicated pre-processing application has been developed (LISVAP), -## Tables - -In the previous version of LISFLOOD a number of model parameters are read through tables that are linked to the classes on the land use and soil (texture) maps. -Those tables are replaced by maps (e.g. soil hydraulic property maps) in order to include the sub-grid variability of each parameter. - -Therefore only one default table is used in the standard LISFLOOD setting. The following table gives an overview: - -***Table:*** *LISFLOOD input tables.* - -| Table | Default name | Description | -| ---------------------- | ------------ | ---------------------------------------- | -| **LAND USE** | | | -| Day of the year -> LAI | LaiOfDay.txt | Lookup table: Day of the year -> LAI map | - [🔝](#top) diff --git a/docs/4_annex_settings_and_options/index.md b/docs/4_annex_settings_and_options/index.md index 378c9bc6..06199206 100644 --- a/docs/4_annex_settings_and_options/index.md +++ b/docs/4_annex_settings_and_options/index.md @@ -219,7 +219,6 @@ param| lfuser | IRRIGATION AND WATER ABSTRACTION | lfuser | IRRIGATION AND WATER ABSTRACTION | WATER ABSTRACTION | | LeakageReductionFraction | 0 | 0 | value | input | Leakage reduction fraction (e.g. 50% = 0.5 as compared to current Leakage) (baseline=0, maximum=1) | | lfuser | IRRIGATION AND WATER ABSTRACTION | WATER ABSTRACTION | | WaterSavingFraction | 0 | 0 | value | input | Water savings fraction (e.g. 10% = 0.1 as compared to current Use (baseline=0, maximum=1) scenwsav.map | | lfuser | IRRIGATION AND WATER ABSTRACTION | WATER ABSTRACTION | | WaterReUseFraction | 0 | 0 | value | input | Fraction of water re-used in industry (e.g. 50% = 0.5 = half of the water is re-used, used twice (baseline=0, maximum=1 scenruse.map | -| lfuser | INPUT WATER USE MAPS AND PAR | LAI | | FirstDayOfMonth | $(PathTables)/firstdayofmonth.txt | $(PathTables)/firstdayofmonth.txt | table | input | NO LONGER USED table with number of first day for each month | | lfuser | INPUT WATER USE MAPS AND PAR | CALC INDICATOR | | Population | $(PathMapsLanduse)/pop | $(PathMapsLanduse)/pop | map | input | Population per pixel | | lfuser | INPUT WATER USE MAPS AND PAR | CALC INDICATOR | | PopulationMaps | $(PathWaterUse)/pop | $(PathWaterUse)/pop | map | input | Population map for TransientLandUseChange | | lfuser | INPUT WATER USE MAPS AND PAR | CALC INDICATOR | | LandUseMask | $(PathMaps)/lusemask.map | $(PathMaps)/lusemask.map | map | input | Land use mask map to mask out deserts and high mountains (to cover ETdif map, otherwise Sahara etc would pop out; meant as a drought indicator | @@ -345,8 +344,6 @@ param| lfuser | IRRIGATION AND WATER ABSTRACTION | lfbinding | INPUT METEO AND VEG MAPS | LAI | | LAIOtherMaps | $(PathLAI)/$(PrefixLAIOther) | $(PathLAI)/$(PrefixLAIOther) | 0 | input | leaf area index [m2/m2] | | lfbinding | INPUT METEO AND VEG MAPS | LAI | | LAIForestMaps | $(PathLAI)/$(PrefixLAIForest) | $(PathLAI)/$(PrefixLAIForest) | 0 | input | leaf area index forest [m2/m2] | | lfbinding | INPUT METEO AND VEG MAPS | LAI | | LAIIrrigationMaps | $(PathLAI)/$(PrefixLAIIrrigation) | $(PathLAI)/$(PrefixLAIIrrigation) | 0 | input | leaf area index irrigation [m2/m2] | -| lfbinding | INPUT METEO AND VEG MAPS | LAI | | LAIOfDay | $(PathTables)/laiofday.txt | $(PathTables)/laiofday.txt | table | input | table with days for each LAI maps 1st column: range of days; 2nd column: suffix of LAI map | -| lfbinding | INPUT WATER USE MAPS AND PAR | WATER ABSTRACTION | | FirstDayOfMonth | $(PathTables)/firstdayofmonth.txt | $(PathTables)/firstdayofmonth.txt | table | input | NO LONGER USED table with number of first day for each month | | lfbinding | INPUT WATER USE MAPS AND PAR | WATER ABSTRACTION | | DomesticDemandMaps | $(PathWaterUse)/$(PrefixWaterUseDomestic) | $(PathWaterUse)/$(PrefixWaterUseDomestic) | map | input | Domestic water abstraction daily maps [mm] | | lfbinding | INPUT WATER USE MAPS AND PAR | WATER ABSTRACTION | | LivestockDemandMaps | $(PathWaterUse)/$(PrefixWaterUseLivestock) | $(PathWaterUse)/$(PrefixWaterUseLivestock) | map | input | Livestock water abstraction daily maps [mm] | | lfbinding | INPUT WATER USE MAPS AND PAR | WATER ABSTRACTION | | EnergyDemandMaps | $(PathWaterUse)/$(PrefixWaterUseEnergy) | $(PathWaterUse)/$(PrefixWaterUseEnergy) | map | input | Energy water abstraction daily maps [mm] | diff --git a/src/lisflood/Lisflood_initial.py b/src/lisflood/Lisflood_initial.py index 80708592..8a84816a 100644 --- a/src/lisflood/Lisflood_initial.py +++ b/src/lisflood/Lisflood_initial.py @@ -47,7 +47,7 @@ from .hydrological_modules.routing import routing from .hydrological_modules.groundwater import groundwater from .hydrological_modules.surface_routing import surface_routing -from .hydrological_modules.reservoir import reservoir +from .hydrological_modules.reservoir import Reservoir from .hydrological_modules.lakes import lakes from .hydrological_modules.polder import polder from .hydrological_modules.waterabstraction import waterabstraction @@ -136,7 +136,7 @@ def __init__(self): self.routing_module = routing(self) self.groundwater_module = groundwater(self) self.surface_routing_module = surface_routing(self) - self.reservoir_module = reservoir(self) + self.reservoir_module = Reservoir(self) # get_reservoir(option['reservoirHanazaki']) self.lakes_module = lakes(self) self.polder_module = polder(self) self.waterabstraction_module = waterabstraction(self) diff --git a/src/lisflood/global_modules/add1.py b/src/lisflood/global_modules/add1.py index fe9abade..08a7cbbd 100755 --- a/src/lisflood/global_modules/add1.py +++ b/src/lisflood/global_modules/add1.py @@ -271,6 +271,10 @@ def compressArray(map, pcr=True, name=None): mapnp = pcr2numpy(map,np.nan) mapnp1 = np.ma.masked_array(mapnp, maskinfo.info.mask) else: + if map.mask is not np.bool_(0): + if (map.mask[maskinfo.info.mask==False].any()==True): + # warning: fill values masking is different from the area mask map, and some values in the area mask map contains invalid fill values + warnings.warn(LisfloodWarning("Warning in compress array: map '{}' has fill values inside the area mask map!".format(name))) mapnp1 = np.ma.masked_array(map, maskinfo.info.mask) mapC = np.ma.compressed(mapnp1) @@ -489,6 +493,10 @@ def loadmap_base(name, pcr=False, lddflag=False, timestampflag='exact', averagey # masking try: maskinfo = MaskInfo.instance() + if mapnp.mask is not np.bool_(0): + if (mapnp.mask[maskinfo.info.mask==False].any()==True): + ## warning: fill values masking is different from the area mask map, and some values in the area mask map contains invalid fill values + warnings.warn(LisfloodWarning("Warning: map {} (binding: '{}') has fill values inside the area mask map!".format(filename, name))) mapnp.mask = maskinfo.info.mask except (KeyError, AttributeError): pass diff --git a/src/lisflood/global_modules/default_options.py b/src/lisflood/global_modules/default_options.py index c7775ad0..84c88181 100644 --- a/src/lisflood/global_modules/default_options.py +++ b/src/lisflood/global_modules/default_options.py @@ -1424,9 +1424,9 @@ 'TotalRunoffTS': TimeSeries(name='TotalRunoffTS', output_var='TotalRunoff', where='Sites', repoption=['repRateSites'], restrictoption=['nonInit'], operation=['']), - # 'UZAvUpsTS': TimeSeries(name='UZAvUpsTS', output_var='UZtotal', where='Gauges', - # repoption=['repStateUpsGauges'], restrictoption=['nonInit'], - # operation=['total']), + 'UZAvUpsTS': TimeSeries(name='UZAvUpsTS', output_var='UZtotal', where='Gauges', + repoption=['repStateUpsGauges'], restrictoption=['nonInit'], + operation=['total']), 'UZOutflowAvUpsTS': TimeSeries(name='UZOutflowAvUpsTS', output_var='UZOutflowPixel', where='Gauges', repoption=['repRateUpsGauges'], restrictoption=['nonInit'], operation=['total']), @@ -1456,7 +1456,7 @@ # restrictoption=['nonInit'], operation=['']), 'actETPUpsTS': TimeSeries(name='actETPUpsTS', output_var='ESActPixel+self.var.TaPixel+self.var.TaInterceptionAll+self.var.EvaAddM3*self.var.M3toMM', - where='Gauges', repoption=['repRateUpsGauges'], restrictoption=['nonInit'], + where='Gauges', repoption=['repRateUpsGauges'], restrictoption=['nonInit','openwaterevapo'], operation=['total']), 'Theta1AvUpsTS': TimeSeries(name='Theta1AvUpsTS', output_var='Theta1aPixel', diff --git a/src/lisflood/global_modules/netcdf.py b/src/lisflood/global_modules/netcdf.py index 39019304..bb7d7cdb 100644 --- a/src/lisflood/global_modules/netcdf.py +++ b/src/lisflood/global_modules/netcdf.py @@ -216,10 +216,10 @@ def __init__(self, data_path, time_chunk, dates, indexer=None, climatology=False # read maps using always a standard x and y reference system using x in ascending and y in descending order if (y_flipped): # y in in ascending order warnings.warn(LisfloodWarning("Warning: map {} (var_name: '{}') has y coordinates in ascending order and will be flipped vertically".format(data_path, var_name))) - func_y = lambda y : np.flipud(y).copy() + func_y = lambda y : np.flip(y, axis=1).copy() # y axis is the number 1, as zero is the time axis if (x_flipped): # x in in descending order warnings.warn(LisfloodWarning("Warning: map {} (var_name: '{}') has x coordinates in descending order and will be flipped horizontally".format(data_path, var_name))) - func_x = lambda x : np.fliplr(x).copy() + func_x = lambda x : np.flip(x, axis=2).copy() # y axis is the number 2, as zero is the time axis # compress dataset (remove missing values and flatten the array) maskinfo = MaskInfo.instance() diff --git a/src/lisflood/global_modules/output.py b/src/lisflood/global_modules/output.py index aeb8acf3..e238f21e 100644 --- a/src/lisflood/global_modules/output.py +++ b/src/lisflood/global_modules/output.py @@ -173,8 +173,9 @@ class PCRasterWriter(Writer): Writing outputs in temporal chunks not supported for PCRaster """ - def __init__(self, var, map_path): + def __init__(self, var, map_value, map_path): self.var = var + self.map_value = map_value self.map_path = map_path self.data = None @@ -245,7 +246,7 @@ def __init__(self, var, out_type, frequency, map_key, map_value): else: self.writer = NetcdfStepsWriter(self.var, self.map_key, self.map_value, self.map_path, self.frequency, self.flag, self._rep_steps[-1]) else: # PCRaster - self.writer = PCRasterWriter(self.var, self.map_path) + self.writer = PCRasterWriter(self.var, self.map_value, self.map_path) def _extract_path(self): """ Extracts output path from settings diff --git a/src/lisflood/hydrological_modules/groundwater.py b/src/lisflood/hydrological_modules/groundwater.py index daa7e4c5..8cd38f75 100644 --- a/src/lisflood/hydrological_modules/groundwater.py +++ b/src/lisflood/hydrological_modules/groundwater.py @@ -135,8 +135,9 @@ def dynamic(self): # outflow from LZ to channel stops when LZ is below its threshold. # LZ can be below its threshold because of water abstractions self.var.LZOutflow = np.minimum(self.var.LowerZoneK * self.var.LZ, self.var.LZ - self.var.LZThreshold) + # Total UZ + self.var.UZtotal = self.var.deffraction(self.var.UZ) # Outflow out of lower zone [mm per model timestep] - self.var.LZOutflow = np.maximum(self.var.LZOutflow, 0) # No outflow if LZ is below threshold self.var.LZOutflowToChannel = self.var.LZOutflow diff --git a/src/lisflood/hydrological_modules/landusechange.py b/src/lisflood/hydrological_modules/landusechange.py index fa8bd269..d9769f73 100644 --- a/src/lisflood/hydrological_modules/landusechange.py +++ b/src/lisflood/hydrological_modules/landusechange.py @@ -76,14 +76,13 @@ def initial(self): self.var.RiceFraction = readnetcdf(binding['RiceFractionMaps'], model_steps[0] , timestampflag='closest') self.var.OtherFraction = readnetcdf(binding['OtherFractionMaps'], model_steps[0] , timestampflag='closest') - epic_settings = EPICSettings.instance() - - # Soil fraction split into: "Rainfed" (previously "Other"), "Forest", "Irrigated". - soil = OrderedDict([(name, loadmap(epic_settings.landuse_inputmap[epic_settings.vegetation_landuse[name]])) for name in self.var.prescribed_vegetation]) if option.get('cropsEPIC'): + epic_settings = EPICSettings.instance() + # Soil fraction split into: "Rainfed" (previously "Other"), "Forest", "Irrigated". + soil = OrderedDict([(name, loadmap(epic_settings.landuse_inputmap[epic_settings.vegetation_landuse[name]], timestampflag='closest')) for name in self.var.prescribed_vegetation]) self.var.SoilFraction = xr.DataArray(pd.DataFrame(soil).T, coords=self.var.coord_prescribed_vegetation, dims=self.var.coord_prescribed_vegetation.keys()) else: - self.var.SoilFraction = NumpyModified(pd.DataFrame(soil).T.values, dims=self.var.coord_prescribed_vegetation.keys()) + self.var.SoilFraction = self.var.allocateVariableAllVegetation() self.var.SoilFraction[0] = self.var.OtherFraction self.var.SoilFraction[1] = self.var.ForestFraction self.var.SoilFraction[2] = self.var.IrrigationFraction @@ -96,7 +95,6 @@ def dynamic(self): settings = LisSettings.instance() option = settings.options binding = settings.binding - epic_settings = EPICSettings.instance() if option['TransientLandUseChange'] and option['readNetcdfStack']: @@ -126,11 +124,14 @@ def dynamic(self): self.var.OtherFraction_nextstep = readnetcdf(binding['OtherFractionMaps'], self.var.currentTimeStep()+1, timestampflag='closest') self.var.DynamicLandCoverDelta = np.sum(np.abs(self.var.ForestFraction_nextstep-self.var.ForestFraction)+np.abs(self.var.DirectRunoffFraction_nextstep-self.var.DirectRunoffFraction)+np.abs(self.var.WaterFraction_nextstep-self.var.WaterFraction)+np.abs(self.var.IrrigationFraction_nextstep-self.var.IrrigationFraction)+np.abs(self.var.RiceFraction_nextstep-self.var.RiceFraction)+np.abs(self.var.OtherFraction_nextstep-self.var.OtherFraction)) - soil = OrderedDict([(name, loadmap(epic_settings.landuse_inputmap[epic_settings.vegetation_landuse[name]])) for name in self.var.prescribed_vegetation]) if option.get('cropsEPIC'): + epic_settings = EPICSettings.instance() + # Soil fraction split into: "Rainfed" (previously "Other"), "Forest", "Irrigated". + soil = OrderedDict([(name, loadmap(epic_settings.landuse_inputmap[epic_settings.vegetation_landuse[name]], timestampflag='closest')) for name in self.var.prescribed_vegetation]) self.var.SoilFraction = xr.DataArray(pd.DataFrame(soil).T, coords=self.var.coord_prescribed_vegetation, dims=self.var.coord_prescribed_vegetation.keys()) else: - self.var.SoilFraction = NumpyModified(pd.DataFrame(soil).T.values, dims=self.var.coord_prescribed_vegetation.keys()) + self.var.SoilFraction = self.var.allocateVariableAllVegetation() + self.var.SoilFraction[0] = self.var.OtherFraction self.var.SoilFraction[1] = self.var.ForestFraction self.var.SoilFraction[2] = self.var.IrrigationFraction diff --git a/src/lisflood/hydrological_modules/reservoir.py b/src/lisflood/hydrological_modules/reservoir.py index 30cbb4f0..c2e15cd5 100755 --- a/src/lisflood/hydrological_modules/reservoir.py +++ b/src/lisflood/hydrological_modules/reservoir.py @@ -16,6 +16,7 @@ See the Licence for the specific language governing permissions and limitations under the Licence. """ + from __future__ import print_function, absolute_import from nine import range @@ -30,281 +31,305 @@ from . import HydroModule -class reservoir(HydroModule): - +class Reservoir(HydroModule): """ - # ************************************************************ - # ***** RESERVOIR ***************************************** - # ************************************************************ + The reservoir module simulates the behaviour of reservoirs within a hydrological model using + the routine developed by Hanazaki et al. (2022). + + This module handles the initialization and dynamic simulation of reservoirs, accounting for + inflow, outflow, and storage capacity. It includes functionality to model the effects of + reservoirs on the flow regime, such as storage changes and flow regulation based on + predefined operational rules. + + Attributes: + ----------- + var (object): An object containing all the variables used within the reservoir module. + + Methods: + -------- + initial(): Sets up the initial conditions and parameters for the reservoir simulation, + including reservoir locations, storage capacities, limits, and initial storage. + dynamic_inloop(NoRoutingExecuted: int): Performs dynamic calculations within the routing + loop to simulate inflow, storage, and controlled outflow from the reservoirs. + + Referenecs: + ----------- + Hanazaki, R., Yamazaki, D., Yoshimura, K.: Development of a Reservoir FLood Control Scheme for + Global Flood Models, Journal of Advances in Modeling Earth Systems, 14, + https://doi.org/10.1029/2021MS002944, 2022. """ - input_files_keys = {'simulateReservoirs': ['ReservoirSites', 'TabTotStorage', 'TabConservativeStorageLimit', - 'TabNormalStorageLimit', 'TabFloodStorageLimit', 'TabNonDamagingOutflowQ', - 'TabNormalOutflowQ', 'TabMinOutflowQ', 'adjust_Normal_Flood', - 'ReservoirRnormqMult', 'ReservoirInitialFillValue']} + + input_files_keys = { + 'simulateReservoirs': [ + 'ReservoirSites', 'ReservoirTotalStorage', # reservoir characteristics + 'ReservoirMinOutflow', 'ReservoirNormalOutflow', 'ReservoirFloodOutflow', # release attributes + 'ReservoirFloodStorage', 'ReservoirFloodOutflowFactor', # calibration parameters + 'ReservoirInitialFill', # initial conditions + ]} + module_name = 'Reservoir' def __init__(self, reservoir_variable): - self.var = reservoir_variable + """ + Initializes the reservoir module with a given variable object. -# -------------------------------------------------------------------------- -# -------------------------------------------------------------------------- + Parameters: + ----------- + reservoir_variable: object + An object containing the variables needed for the reservoir simulation. + """ + self.var = reservoir_variable + def initial(self): - """ initial part of the reservoir module """ - # ************************************************************ - # ***** RESERVOIRS - # ************************************************************ + Initiates the reservoir module by loading the necessary data and maps, setting up the + reservoir characteristics (e.g., storage capacities, flow limits), and determining + initial fill levels. Issues a warning if no reservoirs are present in the simulation. + """ + settings = LisSettings.instance() option = settings.options maskinfo = MaskInfo.instance() if option['simulateReservoirs'] and not option['InitLisflood']: - # NoSubStepsRes=max(1,roundup(self.var.DtSec/loadmap('DtSecReservoirs'))) - # Number of sub-steps based on value of DtSecReservoirs, - # or 1 if DtSec is smaller than DtSecReservoirs - # DtSubRes=self.var.DtSec/loadmap('NoSubStepsRes') - # Corresponding sub-timestep (seconds) binding = settings.binding - self.var.ReservoirSitesC = loadmap('ReservoirSites') - self.var.ReservoirSitesC[self.var.ReservoirSitesC < 1] = 0 - self.var.ReservoirSitesC[self.var.IsChannel == 0] = 0 - # Get rid of any reservoirs that are not part of the channel network - self.var.ReservoirSitesCC = np.compress(self.var.ReservoirSitesC > 0, self.var.ReservoirSitesC) + + # load reservoir locations and keep only those on the channel network + reservoirs = loadmap('ReservoirSites') + reservoirs[(reservoirs < 1) | (self.var.IsChannel == 0)] = 0 + self.var.ReservoirSitesC = reservoirs + self.var.ReservoirSitesCC = np.compress(reservoirs > 0, reservoirs) + self.var.ReservoirIndex = np.nonzero(reservoirs)[0] + + # check whether there are reservoirs in the simulation if self.var.ReservoirSitesCC.size == 0: - # break if no reservoirs warnings.warn(LisfloodWarning('There are no reservoirs. Reservoirs simulation won\'t run')) option['simulateReservoirs'] = False option['repsimulateReservoirs'] = False # rebuild lists of reported files with simulateReservoirs and repsimulateReservoirs = False settings.build_reportedmaps_dicts() return - self.var.ReservoirIndex = np.nonzero(self.var.ReservoirSitesC)[0] - + + # Add reservoir locations to structures map + # (used to modify LddKinematic and to calculate LddStructuresKinematic) self.var.IsStructureKinematic = np.where(self.var.ReservoirSitesC > 0, np.bool8(1), self.var.IsStructureKinematic) - # Add reservoir locations to structures map (used to modify LddKinematic - # and to calculate LddStructuresKinematic) - - ReservoirSitePcr = loadmap('ReservoirSites', pcr=True) - self.var.ReservoirSites = ReservoirSitePcr - ReservoirSitePcr = ifthen((defined(ReservoirSitePcr) & boolean(decompress(self.var.IsChannel))), ReservoirSitePcr) - # Get rid of any reservoirs that are not part of the channel network + + # load reservoirs in PCRaster + reservoirs_pcr = loadmap('ReservoirSites', pcr=True) + self.var.ReservoirSites = reservoirs_pcr + # filter out reservoirs that are not part of the channel network # (following logic of 'old' code the inflow into these reservoirs is # always zero, so either change this or leave them out!) + reservoirs_pcr = ifthen((defined(reservoirs_pcr) & boolean(decompress(self.var.IsChannel))), reservoirs_pcr) + + # RESERVOIR CHARACTERISTICS + + # reservoir storage capacity [m3] + total_storage = lookupscalar(str(binding['ReservoirTotalStorage']), reservoirs_pcr) + total_storage = compressArray(total_storage) + self.var.TotalReservoirStorageM3C = np.where(np.isnan(total_storage), 0, total_storage) + self.var.TotalReservoirStorageM3 = np.compress(self.var.ReservoirSitesC > 0, self.var.TotalReservoirStorageM3C) + + # reservoir catchment area [m2] + catchment_area = loadmap('UpAreaTrans') + catchment_area = makenumpy(catchment_area) + self.var.CatchmentAreaM2 = np.compress(self.var.ReservoirSitesC > 0, catchment_area) + + # MODEL PARAMETERS - TotalReservoirStorageM3 = lookupscalar(str(binding['TabTotStorage']), ReservoirSitePcr) - self.var.TotalReservoirStorageM3C = compressArray(TotalReservoirStorageM3) - self.var.TotalReservoirStorageM3C = np.where(np.isnan(self.var.TotalReservoirStorageM3C), 0, self.var.TotalReservoirStorageM3C) - self.var.TotalReservoirStorageM3CC = np.compress(self.var.ReservoirSitesC > 0, self.var.TotalReservoirStorageM3C) - # Total storage of each reservoir [m3] - - ConservativeStorageLimit = lookupscalar(str(binding['TabConservativeStorageLimit']), ReservoirSitePcr) - ConservativeStorageLimitC = compressArray(ConservativeStorageLimit) - self.var.ConservativeStorageLimitCC = np.compress(self.var.ReservoirSitesC > 0, ConservativeStorageLimitC) - # Conservative storage limit (fraction of total storage, [-]) - - NormalStorageLimit = lookupscalar(str(binding['TabNormalStorageLimit']), ReservoirSitePcr) - NormalStorageLimitC = compressArray(NormalStorageLimit) - self.var.NormalStorageLimitCC = np.compress(self.var.ReservoirSitesC > 0, NormalStorageLimitC) - # Normal storage limit (fraction of total storage, [-]) - - FloodStorageLimit = lookupscalar(str(binding['TabFloodStorageLimit']), ReservoirSitePcr) - FloodStorageLimitC = compressArray(FloodStorageLimit) - self.var.FloodStorageLimitCC = np.compress(self.var.ReservoirSitesC > 0, FloodStorageLimitC) - # Flood storage limit (fraction of total storage, [-]) - - NonDamagingReservoirOutflow = lookupscalar(str(binding['TabNonDamagingOutflowQ']), ReservoirSitePcr) - NonDamagingReservoirOutflowC = compressArray(NonDamagingReservoirOutflow) - self.var.NonDamagingReservoirOutflowCC = np.compress(self.var.ReservoirSitesC > 0, NonDamagingReservoirOutflowC) - # Non-damaging reservoir outflow [m3/s] - - NormalReservoirOutflow = lookupscalar(str(binding['TabNormalOutflowQ']), ReservoirSitePcr) - NormalReservoirOutflowC = compressArray(NormalReservoirOutflow) - self.var.NormalReservoirOutflowCC = np.compress(self.var.ReservoirSitesC > 0, NormalReservoirOutflowC) - # Normal reservoir outflow [m3/s] - - MinReservoirOutflow = lookupscalar(str(binding['TabMinOutflowQ']), ReservoirSitePcr) - MinReservoirOutflowC = compressArray(MinReservoirOutflow) - self.var.MinReservoirOutflowCC = np.compress(self.var.ReservoirSitesC > 0, MinReservoirOutflowC) - # minimum reservoir outflow [m3/s] - - # Calibration - adjust_Normal_Flood = loadmap('adjust_Normal_Flood') - adjust_Normal_FloodC = makenumpy(adjust_Normal_Flood) - adjust_Normal_FloodCC = np.compress(self.var.ReservoirSitesC > 0, adjust_Normal_FloodC) - # adjusting the balance between normal and flood storage - # big value (= closer to flood) results in keeping the normal qoutflow longer constant - self.var.Normal_FloodStorageLimitCC = self.var.NormalStorageLimitCC + adjust_Normal_FloodCC * (self.var.FloodStorageLimitCC - self.var.NormalStorageLimitCC) - - ReservoirRnormqMult = loadmap('ReservoirRnormqMult') - ReservoirRnormqMultC = makenumpy(ReservoirRnormqMult) - ReservoirRnormqMultCC = np.compress(self.var.ReservoirSitesC > 0, ReservoirRnormqMultC) - self.var.NormalReservoirOutflowCC = self.var.NormalReservoirOutflowCC * ReservoirRnormqMultCC - # calibration: all reservoirs normal outflow are multiplied with a factor - self.var.NormalReservoirOutflowCC = np.where(self.var.NormalReservoirOutflowCC > self.var.MinReservoirOutflowCC, self.var.NormalReservoirOutflowCC, self.var.MinReservoirOutflowCC+0.01) - self.var.NormalReservoirOutflowCC = np.where(self.var.NormalReservoirOutflowCC < self.var.NonDamagingReservoirOutflowCC, self.var.NormalReservoirOutflowCC, self.var.NonDamagingReservoirOutflowCC-0.01) - - # Repeatedly used expressions in reservoirs routine - self.var.DeltaO = self.var.NormalReservoirOutflowCC - self.var.MinReservoirOutflowCC - self.var.DeltaLN = self.var.NormalStorageLimitCC - 2 * self.var.ConservativeStorageLimitCC - self.var.DeltaLF = self.var.FloodStorageLimitCC - self.var.NormalStorageLimitCC - self.var.DeltaNFL = self.var.FloodStorageLimitCC - self.var.Normal_FloodStorageLimitCC - - ReservoirInitialFillValue = loadmap('ReservoirInitialFillValue') - if np.max(ReservoirInitialFillValue) == -9999: - ReservoirInitialFill = self.var.NormalStorageLimitCC, + # flood storage limit (fraction of total storage [-]) + if str(binding['ReservoirFloodStorage']).endswith('txt'): + flood_storage = lookupscalar(str(binding['ReservoirFloodStorage']), reservoirs_pcr) + flood_storage = compressArray(flood_storage) else: - ReservoirInitialFill = np.compress(self.var.ReservoirSitesC > 0, ReservoirInitialFillValue) - - self.var.ReservoirFillCC = ReservoirInitialFill - # Initial reservoir fill (fraction of total storage, [-]) - # -9999: assume reservoirs are filled to normal storage limit - ReservoirStorageIniM3CC = ReservoirInitialFill * self.var.TotalReservoirStorageM3CC - # Initial reservoir storage [m3] from state or initvalue - self.var.ReservoirStorageM3CC = ReservoirStorageIniM3CC.copy() - self.var.ReservoirFill = maskinfo.in_zero() - # Initial fill of reservoirs (fraction of total storage, [-]) + flood_storage = loadmap('ReservoirFloodStorage') + flood_storage = makenumpy(flood_storage) + self.var.FloodStorageLimit = np.compress(self.var.ReservoirSitesC > 0, flood_storage) + + # factor of the flood outflow + if str(binding['ReservoirFloodOutflowFactor']).endswith('txt'): + factor_outflow = lookupscalar(str(binding['ReservoirFloodStorage']), reservoirs_pcr) + factor_outflow = compressArray(factor_outflow) + else: + factor_outflow = loadmap('ReservoirFloodOutflowFactor') + factor_outflow = makenumpy(factor_outflow) + factor_outflow = np.where(factor_outflow <= 0, 0.3, factor_outflow) + factor_outflow = np.compress(self.var.ReservoirSitesC > 0, factor_outflow) + # STORAGE LIMITS + + # emergency storage limit (fraction of total storage [-]) + # the upper 20% of the flood storage capacicty + self.var.EmergencyStorageLimit = 0.8 + 0.2 * self.var.FloodStorageLimit + + # conservative storage limit (fraction of total storage [-]) + # 50% of the water use capacity + self.var.ConservativeStorageLimit = 0.5 * self.var.FloodStorageLimit + + # RELEASE ATTRIBUTES + + # minimum reservoir outflow [m3/s] + MinReservoirOutflow = lookupscalar(str(binding['ReservoirMinOutflow']), reservoirs_pcr) + MinReservoirOutflowC = compressArray(MinReservoirOutflow) + self.var.MinReservoirOutflow = np.compress(self.var.ReservoirSitesC > 0, MinReservoirOutflowC) + + # normal outflow [m3/s] + normal_outflow = lookupscalar(str(binding['ReservoirNormalOutflow']), reservoirs_pcr) + normal_outflow = compressArray(normal_outflow) + self.var.NormalReservoirOutflow = np.compress(self.var.ReservoirSitesC > 0, normal_outflow) + + # flood-control outflow [m3/s] + flood_outflow = lookupscalar(str(binding['ReservoirFloodOutflow']), reservoirs_pcr) + flood_outflow = compressArray(flood_outflow) + flood_outflow = np.compress(self.var.ReservoirSitesC > 0, flood_outflow) + self.var.FloodReservoirOutflow = factor_outflow * flood_outflow + + # release coefficient + self.var.k = np.maximum(1 - 5 * self.var.TotalReservoirStorageM3 * (1 - self.var.FloodStorageLimit) / self.var.CatchmentAreaM2, 0) + + # INITIAL CONDITIONS + + # initial reservoir fill (fraction of total storage, [-]) + # -9999: assume reservoirs are filled to 80% of the flood storage limit + initial_fill = loadmap('ReservoirInitialFill') + if np.max(initial_fill) == -9999: + initial_fill = 0.8 * self.var.FloodStorageLimit, + else: + initial_fill = np.compress(self.var.ReservoirSitesC > 0, initial_fill) + self.var.ReservoirFillCC = initial_fill + + # initial reservoir storage [m3] + initial_storage = initial_fill * self.var.TotalReservoirStorageM3 + self.var.ReservoirStorageM3CC = initial_storage.copy() self.var.ReservoirStorageIniM3 = maskinfo.in_zero() - np.put(self.var.ReservoirStorageIniM3, self.var.ReservoirIndex, ReservoirStorageIniM3CC) - + np.put(self.var.ReservoirStorageIniM3, self.var.ReservoirIndex, initial_storage) + + # update storage [m3] self.var.ReservoirStorageM3 = self.var.ReservoirStorageIniM3 - def dynamic_inloop(self, NoRoutingExecuted): - """ dynamic part of the lake routine - inside the sub time step routing routine + def dynamic_inloop(self, NoRoutingExecuted: int): + """ + Performs the dynamic simulation of reservoirs within the routing loop. This method updates + inflows, storage, and outflows for each reservoir based on the current timestep's flow + conditions. It also handles the transition between different storage zones of the reservoir + and applies the operational rules for outflow regulation. + + Parameters: + ----------- + NoRoutingExecuted: integer + The number of routing sub-steps that have been executed. This parameter is used to manage + the accumulation of inflow and outflow over the routing steps. """ - # ************************************************************ - # ***** RESERVOIR - # ************************************************************ settings = LisSettings.instance() option = settings.options maskinfo = MaskInfo.instance() + if option['simulateReservoirs'] and not option['InitLisflood']: - InvDtSecDay = 1 / float(86400) - # InvDtSecDay=self.var.InvDtSec - # ReservoirInflow = cover(ifthen(defined(self.var.ReservoirSites), upstream( - # self.var.LddStructuresKinematic, self.var.ChanQ)), scalar(0.0)) - - ReservoirInflowCC = np.bincount(self.var.downstruct, weights=self.var.ChanQ)[self.var.ReservoirIndex] - # ReservoirInflow=cover(ifpcr(defined(self.var.ReservoirSites),upstream(self.var.LddStructuresKinematic,self.var.ChanQ)),null) - # Reservoir inflow in [m3/s] - # 20-2-2006: Replaced ChanQKin by ChanQ (if this results in problems change back to ChanQKin!) - # 21-2-2006: Inflow now taken from 1st upstream cell(s), using LddStructuresKinematic + + InvDtSecDay = 1 / float(86400) #JCR: should this be constant for any temporal resolution?? + # InvDtSecDay = self.var.InvDtSec + + # storage limits + conservative_fill = self.var.ConservativeStorageLimit + flood_fill = self.var.FloodStorageLimit + emergency_fill = self.var.EmergencyStorageLimit + + # representative outflows + min_outflow = self.var.MinReservoirOutflow + normal_outflow = self.var.NormalReservoirOutflow + conservative_outflow = normal_outflow * conservative_fill / flood_fill + flood_outflow = self.var.FloodReservoirOutflow + + # reservoir inflow in [m3/s] # (LddStructuresKinematic equals LddKinematic, but without the pits/sinks upstream of the structure # locations; note that using Ldd here instead would introduce MV!) + inflow = np.bincount(self.var.downstruct, weights=self.var.ChanQ)[self.var.ReservoirIndex] - QResInM3Dt = ReservoirInflowCC * self.var.DtRouting - # Reservoir inflow in [m3] per timestep (routing step) + # reservoir inflow per timestep (routing step) [m3] + inflow_m3 = inflow * self.var.DtRouting + + # flood event + inflow_mask = inflow >= flood_outflow + + # update reservoir storage [m3] and filling [-] + if NoRoutingExecuted == 0: + self.var.ReservoirStorageM3CC = np.compress(self.var.ReservoirSitesC > 0, self.var.ReservoirStorageM3) + self.var.ReservoirStorageM3CC += inflow_m3 + self.var.ReservoirFillCC = self.var.ReservoirStorageM3CC / self.var.TotalReservoirStorageM3 - # print('RESERVOIRS MODULE IN') - # print(np.sum(self.var.ReservoirStorageM3)) - if NoRoutingExecuted==0: - self.var.ReservoirStorageM3CC=np.compress(self.var.ReservoirSitesC > 0, self.var.ReservoirStorageM3) ######################## - # print(np.sum(self.var.ReservoirStorageM3CC)) + # outflow [m3/s] + outflow = np.minimum(min_outflow, self.var.ReservoirStorageM3CC * InvDtSecDay) + # conservative zone + outflow = np.where( + self.var.ReservoirFillCC <= conservative_fill, + normal_outflow * self.var.ReservoirFillCC / conservative_fill, + outflow + ) + # normal zone and NO flood inflow + outflow = np.where( + (self.var.ReservoirFillCC > conservative_fill) & (self.var.ReservoirFillCC <= emergency_fill) & ~inflow_mask, + conservative_outflow + ((self.var.ReservoirFillCC - conservative_fill) / (emergency_fill - conservative_fill))**2 * (flood_outflow - normal_outflow * conservative_fill / flood_fill), + outflow + ) + # normal zone and flood inflow + outflow = np.where( + (self.var.ReservoirFillCC > conservative_fill) & (self.var.ReservoirFillCC <= flood_fill) & inflow_mask, + conservative_outflow + (self.var.ReservoirFillCC - conservative_fill) / (flood_fill - conservative_fill) * (flood_outflow - conservative_outflow), + outflow + ) + # flood zone and flood inflow + outflow = np.where( + (self.var.ReservoirFillCC > flood_fill) & (self.var.ReservoirFillCC <= emergency_fill) & inflow_mask, + flood_outflow + self.var.k * (self.var.ReservoirFillCC - flood_fill) / (emergency_fill - flood_fill) * (inflow - flood_outflow), + outflow + ) + # emergency zone and NO flood inflow + outflow = np.where( + (self.var.ReservoirFillCC > emergency_fill) & ~inflow_mask, + flood_outflow, + outflow + ) + # emergency zone and flood inflow + outflow = np.where( + (self.var.ReservoirFillCC > emergency_fill) & inflow_mask, + inflow, + outflow + ) - self.var.ReservoirStorageM3CC += QResInM3Dt - # New reservoir storage [m3] = plus inflow for this sub step - self.var.ReservoirFillCC = self.var.ReservoirStorageM3CC / self.var.TotalReservoirStorageM3CC - # New reservoir fill (fraction) - - ReservoirOutflow1 = np.minimum(self.var.MinReservoirOutflowCC, self.var.ReservoirStorageM3CC * InvDtSecDay) - # Reservoir outflow [m3/s] if ReservoirFill le - # 2*ConservativeStorageLimit - - ReservoirOutflow2 = self.var.MinReservoirOutflowCC + self.var.DeltaO * (self.var.ReservoirFillCC - 2 * self.var.ConservativeStorageLimitCC) / self.var.DeltaLN - # Reservoir outflow [m3/s] if NormalStorageLimit le ReservoirFill - # gt 2*ConservativeStorageLimit - - ReservoirOutflow3a = self.var.NormalReservoirOutflowCC - ReservoirOutflow3b = self.var.NormalReservoirOutflowCC + ((self.var.ReservoirFillCC - self.var.Normal_FloodStorageLimitCC) / self.var.DeltaNFL) * (self.var.NonDamagingReservoirOutflowCC - self.var.NormalReservoirOutflowCC) - # Reservoir outflow [m3/s] if FloodStorageLimit le ReservoirFill gt NormalStorageLimit - # NEW 24-9-2004: linear transition between normal and non-damaging - # outflow. - #ReservoirOutflow4 = np.maximum((self.var.ReservoirFillCC - self.var.FloodStorageLimitCC) * - # self.var.TotalReservoirStorageM3CC * self.var.InvDtSec, self.var.NonDamagingReservoirOutflowCC) - temp = np.minimum(self.var.NonDamagingReservoirOutflowCC, np.maximum(ReservoirInflowCC * 1.2, self.var.NormalReservoirOutflowCC)) - ReservoirOutflow4 = np.maximum((self.var.ReservoirFillCC - self.var.FloodStorageLimitCC-0.01) * - self.var.TotalReservoirStorageM3CC * InvDtSecDay, temp) - - # Reservoir outflow [m3/s] if ReservoirFill gt FloodStorageLimit - # Depending on ReservoirFill the reservoir outflow equals ReservoirOutflow1, ReservoirOutflow2, - # ReservoirOutflow3 or ReservoirOutflow4 - - ReservoirOutflow = ReservoirOutflow1.copy() - ReservoirOutflow = np.where(self.var.ReservoirFillCC > 2 * self.var.ConservativeStorageLimitCC, ReservoirOutflow2, ReservoirOutflow) - # ReservoirOutflow = np.where(self.var.ReservoirFillCC > self.var.NormalStorageLimitCC, - # ReservoirOutflow3, ReservoirOutflow) - - ReservoirOutflow = np.where(self.var.ReservoirFillCC > self.var.NormalStorageLimitCC, - ReservoirOutflow3a, ReservoirOutflow) - ReservoirOutflow = np.where(self.var.ReservoirFillCC > self.var.Normal_FloodStorageLimitCC, - ReservoirOutflow3b, ReservoirOutflow) - - ReservoirOutflow = np.where(self.var.ReservoirFillCC > self.var.FloodStorageLimitCC, ReservoirOutflow4, ReservoirOutflow) - - temp = np.minimum(ReservoirOutflow,np.maximum(ReservoirInflowCC, self.var.NormalReservoirOutflowCC)) - - ReservoirOutflow = np.where((ReservoirOutflow > 1.2 * ReservoirInflowCC) & - (ReservoirOutflow > self.var.NormalReservoirOutflowCC) & - (self.var.ReservoirFillCC < self.var.FloodStorageLimitCC), temp, ReservoirOutflow) - - QResOutM3DtCC = ReservoirOutflow * self.var.DtRouting - # Reservoir outflow in [m3] per sub step - QResOutM3DtCC = np.minimum(QResOutM3DtCC, self.var.ReservoirStorageM3CC) - # Check to prevent outflow from becoming larger than storage + - # inflow - QResOutM3DtCC = np.maximum(QResOutM3DtCC, self.var.ReservoirStorageM3CC - self.var.TotalReservoirStorageM3CC) - - # NEW 24-9-2004: Check to prevent reservoir storage from exceeding total capacity - # expression to the right of comma always negative unless capacity is exceeded - - self.var.ReservoirStorageM3CC -= QResOutM3DtCC - # New reservoir storage [m3] - self.var.ReservoirFillCC = self.var.ReservoirStorageM3CC / self.var.TotalReservoirStorageM3CC - # New reservoir fill - - # CM: Check ReservoirStorageM3CC for negative values and set them to zero + # reservoir outflow in [m3] per sub step + outflow_m3 = outflow * self.var.DtRouting + # make sure the outflow is as much as the available water, and that the reservoir doesn't exceed its capacity + outflow_m3 = np.minimum(outflow_m3, self.var.ReservoirStorageM3CC) + outflow_m3 = np.maximum(outflow_m3, self.var.ReservoirStorageM3CC - self.var.TotalReservoirStorageM3) + + # update reservoir storage [m3] and filling [-] + self.var.ReservoirStorageM3CC -= outflow_m3 + self.var.ReservoirFillCC = self.var.ReservoirStorageM3CC / self.var.TotalReservoirStorageM3 + + # CM: Check ReservoirStorageM3CC for NaN or negative values and set them to zero self.var.ReservoirFillCC[np.isnan(self.var.ReservoirFillCC)] = 0 self.var.ReservoirFillCC[self.var.ReservoirFillCC < 0] = 0 - # nel = len(self.var.ReservoirFillCC[:]) # always 1 # FIXME - # for i in range(0, nel-1): # never entering in loop - # if np.isnan(self.var.ReservoirFillCC[i]) or self.var.ReservoirFillCC[i] < 0: - # msg = "Negative or NaN volume for reservoir fill set to 0. Increase computation time step for routing (DtSecChannel) \n" - # warnings.warn(LisfloodWarning(msg)) - # self.var.ReservoirFillCC[self.var.ReservoirFillCC < 0] = 0 - # self.var.ReservoirFillCC[np.isnan(self.var.ReservoirFillCC)] = 0 - - # Check ReservoirFillCC for negative values and set them to zero - # if np.isnan(self.var.ReservoirFillCC).any() or (self.var.ReservoirFillCC < 0).any(): - # msg = "Negative or NaN volume for reservoir fill set to 0. Increase computation time step for routing (DtSecChannel)" - # warnings.warn(LisfloodWarning(msg)) - # self.var.ReservoirFillCC[self.var.ReservoirFillCC < 0] = 0 - # self.var.ReservoirFillCC[np.isnan(self.var.ReservoirFillCC)] = 0 - # expanding the size as input for routing routine + # this is released to the channel again at each sub timestep self.var.QResOutM3Dt = maskinfo.in_zero() - np.put(self.var.QResOutM3Dt,self.var.ReservoirIndex,QResOutM3DtCC) - # this is put to the channel again at each sub timestep - + np.put(self.var.QResOutM3Dt, self.var.ReservoirIndex, outflow_m3) + if option['repsimulateReservoirs']: + # inflow and outflow to the reservoir is sumed up over the sub timesteps and stored in m/s if NoRoutingExecuted == 0: + # set to zero at first timestep self.var.ReservoirInflowM3S = maskinfo.in_zero() self.var.ReservoirOutflowM3S = maskinfo.in_zero() - self.var.sumResInCC = QResInM3Dt - self.var.sumResOutCC = QResOutM3DtCC - # for timeseries output - in and outflow to the reservoir is sumed up over the sub timesteps and stored in m/s - # set to zero at first timestep + self.var.sumResInCC = inflow_m3 + self.var.sumResOutCC = outflow_m3 else: - self.var.sumResInCC += QResInM3Dt - self.var.sumResOutCC += QResOutM3DtCC - # summing up over all sub timesteps - + self.var.sumResInCC += inflow_m3 + self.var.sumResOutCC += outflow_m3 - - if NoRoutingExecuted == (self.var.NoRoutSteps-1): + if NoRoutingExecuted == (self.var.NoRoutSteps - 1): # expanding the size after last sub timestep self.var.ReservoirStorageM3 = maskinfo.in_zero() @@ -312,11 +337,6 @@ def dynamic_inloop(self, NoRoutingExecuted): np.put(self.var.ReservoirStorageM3, self.var.ReservoirIndex, self.var.ReservoirStorageM3CC) np.put(self.var.ReservoirFill, self.var.ReservoirIndex, self.var.ReservoirFillCC) - # print('RESERVOIRS MODULE OUT') - # print(np.sum(self.var.ReservoirStorageM3)) - # print(np.sum(self.var.ReservoirStorageM3CC)) - - if option['repsimulateReservoirs']: np.put(self.var.ReservoirInflowM3S, self.var.ReservoirIndex, self.var.sumResInCC / self.var.DtSec) - np.put(self.var.ReservoirOutflowM3S, self.var.ReservoirIndex, self.var.sumResOutCC / self.var.DtSec) + np.put(self.var.ReservoirOutflowM3S, self.var.ReservoirIndex, self.var.sumResOutCC / self.var.DtSec) \ No newline at end of file diff --git a/src/lisflood/hydrological_modules/routing.py b/src/lisflood/hydrological_modules/routing.py index aa64c110..fd250084 100644 --- a/src/lisflood/hydrological_modules/routing.py +++ b/src/lisflood/hydrological_modules/routing.py @@ -22,7 +22,7 @@ import numpy as np from .lakes import lakes -from .reservoir import reservoir +from .reservoir import Reservoir from .polder import polder from .inflow import inflow from .transmission import transmission @@ -51,7 +51,7 @@ def __init__(self, routing_variable): self.var = routing_variable self.lakes_module = lakes(self.var) - self.reservoir_module = reservoir(self.var) + self.reservoir_module = Reservoir(self.var) self.polder_module = polder(self.var) self.inflow_module = inflow(self.var) self.transmission_module = transmission(self.var) diff --git a/src/lisflood/hydrological_modules/snow.py b/src/lisflood/hydrological_modules/snow.py index 28bb4c5a..084ddd36 100755 --- a/src/lisflood/hydrological_modules/snow.py +++ b/src/lisflood/hydrological_modules/snow.py @@ -167,7 +167,20 @@ def dynamic(self): else: IceMeltS = TavgS * 7.0 * self.var.DtDay * SummerSeason - SnowMeltS = np.maximum(np.minimum(SnowMeltS + IceMeltS, self.var.SnowCoverS[i]), maskinfo.in_zero()) + ####### added by Robert Dill, 8/7/23 + # to avoid unrealistic high snow accumulation, simulate glacier transport into lower zones + SnowMax = 2000 + GlacierMeltCoef = 1/100 + GlacierMeltS = np.maximum(self.var.SnowCoverS[i] - SnowMax, maskinfo.in_zero()) \ + * GlacierMeltCoef + + self.var.SnowCoverS[i] = self.var.SnowCoverS[i] - GlacierMeltS + if i < 2: + self.var.SnowCoverS[i + 1] = self.var.SnowCoverS[i + 1] + GlacierMeltS + GlacierMeltS = maskinfo.in_zero() + ####### + + SnowMeltS = np.maximum(np.minimum(SnowMeltS + IceMeltS + GlacierMeltS, self.var.SnowCoverS[i]), maskinfo.in_zero()) self.var.SnowCoverS[i] = self.var.SnowCoverS[i] + SnowS - SnowMeltS self.var.Snow += SnowS diff --git a/src/lisflood/hydrological_modules/waterabstraction.py b/src/lisflood/hydrological_modules/waterabstraction.py index 5a29fc9f..dfd348df 100644 --- a/src/lisflood/hydrological_modules/waterabstraction.py +++ b/src/lisflood/hydrological_modules/waterabstraction.py @@ -530,7 +530,7 @@ def dynamic(self): # 12.4 Bookkeeping for over-all water balance, and repwateruseGauges and repwateruseSites self.var.cumulated_CH_withdrawal += self.var.withdrawal_CH_actual_M3 # bookkeeping for over-all water balance if (option['repwateruseGauges']) or (option['repwateruseSites']): - self.var.WUseSumM3 = accuflux(self.var.Ldd, decompress(self.var.withdrawal_CH_actual_M3)*self.var.InvDtSec) + self.var.WUseSumM3 = compressArray(accuflux(self.var.Ldd, decompress(self.var.withdrawal_CH_actual_M3)*self.var.InvDtSec)) # ******************************************************************************************** # 13. Actual surface water abstractions (except prescribed paddy rice) diff --git a/src/lisfloodSettings_reference.xml b/src/lisfloodSettings_reference.xml index 40bf9b35..37b95aff 100644 --- a/src/lisfloodSettings_reference.xml +++ b/src/lisfloodSettings_reference.xml @@ -25,5806 +25,5737 @@ You can use builtin path variables in this template and reference to other paths - -#----------------------------------------------------------- -# modelling and reporting options -#----------------------------------------------------------- - - - - # options to turn hydrological modules on/off - - - - - - - - - - - - - - - - - # use inflow data - - - # option to compute indicators - - - # option to initialize Lisflood - - - - # option to read/write NetCDF - - - - - - #----------------------------------------------------------- - # report time series - #----------------------------------------------------------- - # report discharge TS - - - # report gauges and sites - - - - - - - # report reservoirs and lakes - - - - #----------------------------------------------------------- - # report maps - #----------------------------------------------------------- - # report state maps - - - # report end maps - - - # report maps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -************************************************************** -netCDF parameters -************************************************************** - -!-- Optimization of netCDF I/O through chunking and caching. - -The option "NetCDFTimeChunks" may take the following values: - - "-1" : Load everything upfront - - "[positive integer number]" : Chunk size defined by user - - "auto" : Let xarray to decide - - - - -The option "MapsCaching" may take the following values: - - "True" : Cache maps during execution - - "False" : No caching - - - - - -The option "OutputMapsChunks" may take the following values: - - "[positive integer number]" : Dump outputs to disk every X steps (default 1) - - - - -The option "OutputMapsDataType" sets the output data type and may take the following values: - - "float64" - - "float32" - - - - -************************************************************** -PARALLELISATION WITH NUMBA (USED IN ROUTING AND SOILLOOP) -************************************************************** - - -!-- Parallelisation of using Numba runtime compiled library . -The option "numCPUs_parallelNumba" may take the following values: - - "0" : set to NUMBA_NUM_THREADS Environment Variable - (if NUMBA_NUM_THREADS is not set, will take the number of CPU cores determined by python's multiprocessing.cpu_count()) - - "1" : serial execution (not parallel) - - "2", "3", ... : manual setting of the number of parallel threads. - (if exceeding NUMBA_NUM_THREADS, the value is set to NUMBA_NUM_THREADS) --> - - - -************************************************************** -AREA AND OUTLETS -************************************************************** - - - - -This is necessary when using projected coordinates (x,y) - - - - - - /perm/mo/mocm/proj/efas/xdom/data/staticData/lisflood -Root directory (tables and parameters) - - - - - - /perm/mo/mocm/proj/efas/hprot/staticMaps/areawithdeadsea.map - /perm/mo/mocm/proj/efas/hprot/staticMaps/work/DrinaMask.map - /sbsDrina/DrinaMask.map - /perm/mo/mocm/proj/efas/xdom/data/staticData/lisflood/area - /perm/mo/mocm/proj/efas/hprot/staticMaps/areawithdeadsea.map - /perm/mo/mocm/proj/efas/hprot/sbs/pontelagoscuro_sbs.map -70 40 0.1 -8.6 43.3 # Douro -30 30 0.1 6.0 52.0 -Clone map -col row cellsize xupleft yupleft -300 200 0.1 -15 25 -> Niger -3600 1500 0.1 -180 90 -> World -$(PathRoot)\areamaps\areaEurope.map -$(PathRoot)\areamaps\AreaPo.map -or pcraster maps or netcdf maps -e.g. -Rhine areaLobith.map -Niger areaLokoja.map -Po areaPo.map -Danube areaDanube.map -Sava areaSava.map - - - - - - 4447500 2422500 Pontelagoscuro - 4227500 2437500 Isola - /perm/mo/mocm/proj/efas/hprot/staticMaps/work/pontelagoscuro.nc - /perm/mo/mocm/proj/efas/hprot/staticMaps/ec_outlets.nc - /perm/mo/mocm/proj/efas/xdom/data/staticData/lisflood/outlets.nc" --7.85 41.15 -7.75 41.15 -7.35 41.15 -7.25 41.15 -7.15 41.15 -7.05 41.15 -5.85 41.75 # Duoro -6.15 51.85 -12.25 44.95 9.95 45.15 # Po -Nominal map with gauge locations (i.e cells for which simulated discharge -is written to file(1,2,3 etc) -lat lon (lat2 lon2 ...) -or pcraster maps or netcdf maps -./mapsNetcdf/maps/outlets_World.map -$(PathMaps)/outlets.map -e.g. -Lobith/Rhine 6.15 51.85 -Bratislava/Danube 17.15 48.15 -Niger/Lokoja 6.75 7.85 0.45 15.65 - - - - - -netcdf template used to copy metadata information for writing netcdf -$(PathEvapo)/$(PrefixE0) - - - - - -latitude map to be used for snow/ice modelling - - - - - -************************************************************** -TIME-RELATED CONSTANTS -************************************************************** - - - - -Calendar convention - - - - - -Reference day and time - - - - - -timestep [seconds] - - - - - -17280 5 times subrouting -21600 4 times -Sub time step used for kinematic wave channel routing [seconds] -Within the model,the smallest out of DtSecChannel and DtSec is used - - - - - -Number of first time step in simulation - - - - - -Number of last time step in simulation - - - - - - 1..9999 -Time steps at which to write model state maps (i.e. only -those maps that would be needed to define initial conditions -for succeeding model run) - - - - - - - - - - -************************************************************** -MONTE CARLO, KALMAN FILTER -************************************************************** - - - - -Number of sample to use in MonteCarlo simulations - - - - - -Number of cores of the computer to use in MonteCarlo simulations -This only works with Linux, if set to 1 no forking will be used - - - - - - -Time steps at which to write model state maps (i.e. only -those maps that would be needed to define initial conditions -for succeeding model run) - - - - - - - - - - - - - - -************************************************************** -CALIBRATION PARAMETERS -with .nc format: than working with smaller sub-areas is possible -************************************************************** - - - -default: 10 -$(PathParams)/params_UpperZoneTimeConstant.nc -Time constant for water in upper zone [days] -This is the average time a water 'particle' remains in the reservoir -if we had a stationary system (average inflow=average outflow) - - - - - -default: 100 -$(PathParams)/params_LowerZoneTimeConstant.nc -Time constant for water in lower zone [days] -This is the average time a water 'particle' remains in the reservoir -if we had a stationary system (average inflow=average outflow) - - - - - -default: 0.5 -$(PathParams)/params_GwPercValue.nc -Maximum rate of percolation going from the Upper to the Lower -response box [mm/day] - - - - - -default: 0.0 -$(PathParams)/params_GwLoss.nc -Maximum percolation rate from the lower groundwater zone [mm/days]. GWLoss -it’s lost beyond the catchment boundaries or to deep groundwater systems. -A value of 0 (closed lower boundary) is recommended as a starting value. - - - - - -threshold value [mm] of the water storage in the lower groundwater zone. -If the water storage in the lower groundwater zone decreases below LZThreshold, -the flow from the lower zone to the nearby rivers (base-flow) stops. - - - - - -default: 0.7 [-] -$(PathParams)/params_b_Xinanjiang.nc -Power in Xinanjiang distribution function [-] - - - - - -default: 3.5 [-] -$(PathParams)/params_PowerPrefFlow.nc -Power that controls increase of proportion of preferential -flow with increased soil moisture storage [-] - - - - - -default: 2.0 [-] -$(PathParams)/params_CalChanMan1.nc -Multiplier [-] applied to Channel Manning's n - - - - - -default: 4.0 [mm C-1 day-1] -$(PathParams)/params_SnowMeltCoef.nc -SRM: 0.45 cm C-1 day-1 ( = 4.50 mm C-1 day-1), Kwadijk: 18 mm C-1 month-1 (= 0.59 mm C-1 day-1) -See also Martinec et al., 1998. - - - - - -default: 3.0 [-] -$(PathParams)/params_CalChanMan2.nc -Multiplier [-] applied to Channel Manning's n for second line of routing - - - - - -default: 1.0 [-] -$(PathParams)/params_LakeMultiplier.nc -Multiplier applied to the lake parameter A - - - - - -default: 0.8 [-] -$(PathParams)/params_adjust_Normal_Flood.nc -adjusting the balance between normal and flood storage -big values (= closer to 1.0 = close to flood) results in keeping the outflow longer at rnormq -Range 0.01 - 0.99 - - - - - -default: 1.0 [-] -$(PathParams)/params_ReservoirRnormqMult.nc -Reservoir rnormq (normal outflow) -fraction of the value in table rnormq.txt range: 0.5 - 2 - - - - - -default: 5.0 [mm/day] (not included in calibration) -Critical amount of available water (expressed in [mm/day]!), above which 'Days Since Last Rain' parameter is -set to 1 - - - - - -PBchange -Multiplier applied to average Q to split into a second line of routing -THIS NEEDS TO BE AMENDED BY ADDING THE RIGHT PATH TO $(PathParams) - - - - - -PBchange -Multiplier applied to ChanBottomWidth - - - - - -Multiplier [] applied to ChanDepthThreshold - - - - - -Multiplier [] applied to ChanSdXdY - - - - - - - -************************************************************** -FILE PATHS -************************************************************** - - - - -Output path (org=$(PathRoot)/out) - - - - - -Path of the initial value maps e.g. lzavin.map (org=$(PathRoot)/outPo) - - - - - - Static maps path - /perm/mo/mocm/proj/efas/xdom/data/staticData/lisflood -Maps path - - - - - -Inflow path - - - - - -Calibration parameter path - - - - - -Tables path - - - - - -Maps instead of tables path - - - - - -Maps instead of tables for soil hydraulics path - - - - - -Maps for transient land use changes every 5 years - - - - - -Maps for land use fractions and related land use maps - - - - - -Water use maps path -$(PathMaps)/waterdemand19902014 - - - - - -./meteoWatch -Meteo path - - - - - -Leaf Area Index maps path - - - - - -variable water fraction maps path - - - - - - - - - -************************************************************** -INITIAL CONDITIONS -(maps or single values) -************************************************************** - - - - -if init. condition are stored as netCDF with different time steps -this variable indicates which time step to use -Either as date e.g. 1/1/2010 or as number e.g. 5 - - - - - -Initial overland flow storage [m3], direct runoff fraction - - - - - -Initial overland flow storage [m3], other fraction - - - - - -Initial overland flow storage [m3], forest fraction - - - - - -initial snow depth in snow zone A [mm] - - - - - -initial snow depth in snow zone B [mm] - - - - - -initial snow depth in snow zone C [mm] - - - - - -initial Frost Index value [degC/day] - - - - - -cumulative interception [mm] - - - - - -water in upper store [mm] - - - - - -days since last rainfall [days] - - - - - - - -************************************************************** -The following variables can also be initialized in the model -internally. if you want this to happen set them to bogus value -of -9999 -************************************************************** - - - - -water in lower store [mm] --9999: use steady-state storage - - - - - -initial cross-sectional area of flow in channel[m2] --9999: use half bankfull - - - - - -initial soil moisture content layer 1a (superficial soil layer) [mm3/mm3] --9999: use field capacity values - - - - - -initial soil moisture content layer 1b (upper soil layer) [mm3/mm3] --9999: use field capacity values - - - - - -initial soil moisture content layer 2 (lower soil layer) [mm3/mm3] --9999: use field capacity values - - - - - -initial channel cross-section area [m2] for 2nd routing channel --9999: use 0 - - - - - -initial lateral inflow for 1st line of routing [m2/s] --9999: use 0 - - - - - -Initial lake level [m] --9999 sets initial value to steady-state level - - - - - -Lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value equal to PrevDischarge (ChanQ(t)) - - - - - -Lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value - - - - - -initial discharge [m3/s] from previous run for lakes, reservoirs and transmission loss ChanQ -only needed for lakes reservoirs and transmission loss --9999: use 0 - - - - - - - - - -************************************************************** -INITIAL CONDITIONS FOREST -(maps or single values) -************************************************************** - - - - -cumulative interception [mm] - - - - - -water in upper groundwater store [mm] - - - - - -days since last rainfall - - - - - -initial soil moisture content [mm3/mm3] layer 1a (superficial soil layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 1b (upper soil layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 2 (lower soil layer) --9999: use field capacity values - - - - - - - - -************************************************************** -INITIAL CONDITIONS IRRIGATION -(maps or single values) -************************************************************** - - - - -cumulative interception [mm] - - - - - -water in groundwater upper store [mm] - - - - - -days since last rainfall - - - - - -initial soil moisture content [mm3/mm3] layer 1a (superficial soil layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 1b (upper soil layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 2 (lower soil layer) --9999: use field capacity values - - - - - - - - -************************************************************** -INITIAL CONDITIONS IMPERVIOUS AREAS -(maps or single values) -************************************************************** - - - - -cumulative interception [mm] - - - - - - - - -************************************************************** -PREFIXES OF METEO AND VEGETATION RELATED VARIABLES -************************************************************** - - - - -prefix precipitation maps - - - - - -prefix average temperature maps - - - - - -prefix E0 maps - - - - - -prefix ES0 maps - - - - - -prefix ET0 maps - - - - - -prefix LAI maps - - - - - -prefix LAI forest maps - - - - - -prefix LAI irrigation maps - - - - - -prefix domestic water use maps - - - - - -prefix livestock water use maps - - - - - -prefix energy water use maps - - - - - -prefix industry water use maps - - - - - -prefix variable water fraction - - - - - - - - - - - -************************************************************** -PARAMETERS RELATED TO EVAPO(TRANSPI)RATION AND Interception -************************************************************** - -Suggested parameterisation strategy: - -- leave all these parameters at their default values. - in some very special cases CalEvaporation may be set to some - value other than one - - - - - -Multiplier [-] applied to potential precipitation rates - - - - - -Multiplier [-] applied to potential evapo(transpi)ration rates - - - - - -Time constant for water in interception store [days] - - - - - -Average extinction coefficient for the diffuse radiation flux -varies with crop from 0.4 to 1.1 (Goudriaan (1977)) - - - - - -maximum depression storage for water on impervious surface -which is not immediatly causing surface runoff [mm] - - - - - - - - - -************************************************************** -SNOW AND FROST RELATED PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- estimate SnowFactor from prior data (if available), otherwise use 1 -- use SnowMeltCoef as a calibration constant -- leave all other parameters at default - - - - - -Multiplier [-] applied to precipitation that falls as snow - - - - - -range [mm C-1 day-1] of the seasonal variation -SnowMeltCoef is the average value - - - - - -Average temperature [deg C] at which snow melts - - - - - -Average temperature [deg C] below which precipitation is snow - - - - - -Temperature lapse rate with altitude [C / m] - - - - - -Daily decay coefficient [day-1], (Handbook of Hydrology, p. 7.28) - - - - - -Snow depth reduction coefficient, [cm-1], (HH, p. 7.28) - - - - - -Snow water equivalent, (based on snow density of 450 kg/m3) (e.g. Tarboton and Luce, 1996) - - - - - -Degree Days Frost Threshold (stops infiltration, percolation and capillary rise) -Molnau and Bissel found a value 56-85 for NW USA. - - - - - - - - - -************************************************************** -IRRIGATION AND WATER ABSTRACTION RELATED PARAMETERS -************************************************************** - - - - - - 0.75 -Field application irrigation efficiency [-]: max 1, ~0.90 drip irrigation, ~0.75 sprinkling - - - - - -conveyance efficiency [-]: around 0.80 for average channel - - - - - -IrrigationType (value between 0 and 1) is used here to distinguish between additional adding water until fieldcapacity (value set to 1) or not (value set to 0) - - - - - -Factor [-] to irrigation water demand -More than the transpiration is added e.g to prevent salinisation - - - - - -Annual amount (m3) of treated wastewater reused for irrigation - - - - - -Number of days over which the annual amount of treated wastewater for irrigation is used - - - - - -Consumptive Use (1-Recycling ratio) for livestock water use (0-1) [-] - - - - - -Consumptive Use (1-Recycling ratio) for industrial water use (0-1) [-] - - - - - - # Consumptive Use (1-Recycling ratio) for energy water use (0-1) [-] - # Source: Torcellini et al. (2003) "Consumptive Use for US Power Production" - # map advised by Neil Edwards, Energy Industry - # the UK and small French rivers the consumptive use varies between 1:2 and 1:3, so 0.33-0.50 - # For plants along big rivers like Rhine and Danube the 0.025 is ok - EnergyConsumptiveUseFraction=0.025 - - - - - - Consumptive Use (1-Recycling ratio) for domestic water use (0-1) [-] - Source: EEA (2005) State of Environment - - - - - - 0.2 -$(PathMaps)/leakage.map - Fraction of leakage of public water supply (0=no leakage, 1=100% leakage) - - - - - - The water that is lost from leakage (lost) (0-1) [-] - - - - - - Leakage reduction fraction (e.g. 50% = 0.5 as compared to current Leakage) (baseline=0, maximum=1) [-] - - - - - - Water savings fraction (e.g. 10% = 0.1 as compared to current Use (baseline=0, maximum=1) [-] - scenwsav.map - - - - - - Fraction of water re-used in industry (e.g. 50% = 0.5 = half of the water is re-used, used twice (baseline=0, maximum=1) [-] - scenruse.map - - - - - - - -table with days for each water use maps -1st column: range of days; 2nd column: suffix of wuse map - - - - - -Irrigation crop coefficient [-] - - - - - -Irrigation crop group number [-] - - - - - -Population [units] - - - - - -Population - - - - - -Land Use Mask - - - - - -Reported water use [cu m/s], depending on the availability of discharge - - - - - -Time series of upstream water use at gauging stations - - - - - -Number of sub-steps needed for water use -routine - - - - - - maximum number of loops for calculating the use of water - = distance water is taken for water consuption - - - - - - percentage of water which remains in the channel - e.g. 0.2 -> 20 percent of discharge is not taken out - - - - - - - - - - - - - -************************************************************** -GROUNDWATER RELATED PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- leave GwLossFraction at 0 unless prior information show groundwater loss - is important -- use UpperZoneTimeConstant, LowerZoneTimeConstant, - GwPercValue as calibration constants -- calibrate on GwLossFraction if necessary - - - + + #----------------------------------------------------------- + # modelling and reporting options + #----------------------------------------------------------- + + + + # options to turn hydrological modules on/off + + + + + + + + + + + + + + + + + # use inflow data + + + # option to compute indicators + + + # option to initialize Lisflood + + + + # option to read/write NetCDF + + + + + + #----------------------------------------------------------- + # report time series + #----------------------------------------------------------- + # report discharge TS + + + # report gauges and sites + + + + + + + # report reservoirs and lakes + + + + #----------------------------------------------------------- + # report maps + #----------------------------------------------------------- + # report state maps + + + # report end maps + + + # report maps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ************************************************************** + netCDF parameters + ************************************************************** + + !-- Optimization of netCDF I/O through chunking and caching. + + The option "NetCDFTimeChunks" may take the following values: + - "-1" : Load everything upfront + - "[positive integer number]" : Chunk size defined by user + - "auto" : Let xarray to decide + + + + + The option "MapsCaching" may take the following values: + - "True" : Cache maps during execution + - "False" : No caching + + + + + The option "OutputMapsChunks" may take the following values: + - "[positive integer number]" : Dump outputs to disk every X steps (default 1) + + + + + The option "OutputMapsDataType" sets the output data type and may take the following values: + - "float64" + - "float32" + + + + + ************************************************************** + PARALLELISATION WITH NUMBA (USED IN ROUTING AND SOILLOOP) + ************************************************************** + + + !-- Parallelisation of using Numba runtime compiled library . + The option "numCPUs_parallelNumba" may take the following values: + - "0" : set to NUMBA_NUM_THREADS Environment Variable + (if NUMBA_NUM_THREADS is not set, will take the number of CPU cores determined by python's multiprocessing.cpu_count()) + - "1" : serial execution (not parallel) + - "2", "3", ... : manual setting of the number of parallel threads. + (if exceeding NUMBA_NUM_THREADS, the value is set to NUMBA_NUM_THREADS) --> + + + + ************************************************************** + AREA AND OUTLETS + ************************************************************** + + + + + This is necessary when using projected coordinates (x,y) + + + + + + Root directory + + + + + + /perm/mo/mocm/proj/efas/hprot/staticMaps/areawithdeadsea.map + /perm/mo/mocm/proj/efas/hprot/staticMaps/work/DrinaMask.map + /sbsDrina/DrinaMask.map + /perm/mo/mocm/proj/efas/xdom/data/staticData/lisflood/area + /perm/mo/mocm/proj/efas/hprot/staticMaps/areawithdeadsea.map + /perm/mo/mocm/proj/efas/hprot/sbs/pontelagoscuro_sbs.map + 70 40 0.1 -8.6 43.3 # Douro + 30 30 0.1 6.0 52.0 + Clone map + col row cellsize xupleft yupleft + 300 200 0.1 -15 25 -> Niger + 3600 1500 0.1 -180 90 -> World + $(PathRoot)\areamaps\areaEurope.map + $(PathRoot)\areamaps\AreaPo.map + or pcraster maps or netcdf maps + e.g. + Rhine areaLobith.map + Niger areaLokoja.map + Po areaPo.map + Danube areaDanube.map + Sava areaSava.map + + + + + + Nominal map with gauge locations (i.e cells for which simulated discharge + is written to file(1,2,3 etc) + lat lon (lat2 lon2 ...) or pcraster maps or netcdf maps + Examples: + "6.15 51.85" + "$(PathMaps)/outlets.nc" + + + + + + netcdf template used to copy metadata information for writing netcdf + $(PathEvapo)/$(PrefixE0) + + + + + + latitude map to be used for snow/ice modelling + + + + + + ************************************************************** + TIME-RELATED CONSTANTS + ************************************************************** + + + + + Calendar convention + + + + + + Reference day and time + + + + + + timestep [seconds] + + + + + + 17280 5 times subrouting + 21600 4 times + Sub time step used for kinematic wave channel routing [seconds] + Within the model,the smallest out of DtSecChannel and DtSec is used + + + + + + Number of first time step in simulation + + + + + + Number of last time step in simulation + + + + + + 1..9999 + Time steps at which to write model state maps (i.e. only + those maps that would be needed to define initial conditions + for succeeding model run) + + + + + + + + + ************************************************************** + MONTE CARLO, KALMAN FILTER + ************************************************************** + + + + + Number of sample to use in MonteCarlo simulations + + + + + + Number of cores of the computer to use in MonteCarlo simulations + This only works with Linux, if set to 1 no forking will be used + + + + + + Time steps at which to write model state maps (i.e. only + those maps that would be needed to define initial conditions + for succeeding model run) + + + + + + + + + ************************************************************** + CALIBRATION PARAMETERS + with .nc format: than working with smaller sub-areas is possible + ************************************************************** + + + + + default: 10 + $(PathParams)/params_UpperZoneTimeConstant.nc + Time constant for water in upper zone [days] + This is the average time a water 'particle' remains in the reservoir + if we had a stationary system (average inflow=average outflow) + + + + + + default: 100 + $(PathParams)/params_LowerZoneTimeConstant.nc + Time constant for water in lower zone [days] + This is the average time a water 'particle' remains in the reservoir + if we had a stationary system (average inflow=average outflow) + + + + + + default: 0.5 + $(PathParams)/params_GwPercValue.nc + Maximum rate of percolation going from the Upper to the Lower + response box [mm/day] + + + + + + default: 0.0 + $(PathParams)/params_GwLoss.nc + Maximum percolation rate from the lower groundwater zone [mm/days]. GWLoss + it’s lost beyond the catchment boundaries or to deep groundwater systems. + A value of 0 (closed lower boundary) is recommended as a starting value. + + + + + + threshold value [mm] of the water storage in the lower groundwater zone. + If the water storage in the lower groundwater zone decreases below LZThreshold, + the flow from the lower zone to the nearby rivers (base-flow) stops. + + + + + + default: 0.7 [-] + $(PathParams)/params_b_Xinanjiang.nc + Power in Xinanjiang distribution function [-] + + + + + + default: 3.5 [-] + $(PathParams)/params_PowerPrefFlow.nc + Power that controls increase of proportion of preferential + flow with increased soil moisture storage [-] + + + + + + default: 2.0 [-] + $(PathParams)/params_CalChanMan1.nc + Multiplier [-] applied to Channel Manning's n + + + + + + default: 4.0 [mm C-1 day-1] + $(PathParams)/params_SnowMeltCoef.nc + SRM: 0.45 cm C-1 day-1 ( = 4.50 mm C-1 day-1), Kwadijk: 18 mm C-1 month-1 (= 0.59 mm C-1 day-1) + See also Martinec et al., 1998. + + + + + + default: 3.0 [-] + $(PathParams)/params_CalChanMan2.nc + Multiplier [-] applied to Channel Manning's n for second line of routing + + + + + + default: 1.0 [-] + $(PathParams)/params_LakeMultiplier.nc + Multiplier applied to the lake parameter A + + + + + + Fraction of the total reservoir storage above which the reservoirs enters + the flood control zone. It can be a map (NetCDF), a table (TXT) or a float + Units: - + Range: 0.2 - 0.99 + Default: 0.75 + + + + + + Factor of the 100-year return inflow (`ReservoirFloodOutflow`) that defines the inflow + value that switches the reservoir routine to flood control mode, when exceeded. + It can be a map (NetCDF), a table (TXT) or a float. Negative values will be replaced + by the default value of 0.3 + Units: - + Range: 0.1 - 0.5 + Default: 0.3 + + + + + + default: 5.0 [mm/day] (not included in calibration) + Critical amount of available water (expressed in [mm/day]!), above which 'Days Since Last Rain' parameter is + set to 1 + + + + + + PBchange + Multiplier applied to average Q to split into a second line of routing + THIS NEEDS TO BE AMENDED BY ADDING THE RIGHT PATH TO $(PathParams) + + + + + + PBchange + Multiplier applied to ChanBottomWidth + + + + + + Multiplier [] applied to ChanDepthThreshold + + + + + + Multiplier [] applied to ChanSdXdY + + + + + + + + ************************************************************** + FILE PATHS + ************************************************************** + + + + + Output path (org=$(PathRoot)/out) + + + + + + Path of the initial value maps e.g. lzavin.map + + + + + + Static maps path + + + + + + Inflow path + + + + + + Calibration parameter path + + + + + + Tables path + + + + + + Maps instead of tables path + + + + + + Maps instead of tables for soil hydraulics path + + + + + + Maps for transient land use changes every 5 years + + + + + + Maps for land use fractions and related land use maps + + + + + + Water use maps path + $(PathMaps)/waterdemand19902014 + + + + + + Meteo path + + + + + + Leaf Area Index maps path + + + + + + variable water fraction maps path + + + + + + + + + + ************************************************************** + INITIAL CONDITIONS + (maps or single values) + ************************************************************** + + + + + if init. condition are stored as netCDF with different time steps + this variable indicates which time step to use + Either as date e.g. 1/1/2010 or as number e.g. 5 + + + + + + Initial overland flow storage [m3], direct runoff fraction + + + + + + Initial overland flow storage [m3], other fraction + + + + + + Initial overland flow storage [m3], forest fraction + + + + + + initial snow depth in snow zone A [mm] + + + + + + initial snow depth in snow zone B [mm] + + + + + + initial snow depth in snow zone C [mm] + + + + + + initial Frost Index value [degC/day] + + + + + + cumulative interception [mm] + + + + + + water in upper store [mm] + + + + + + days since last rainfall [days] + + + + + + + + ************************************************************** + The following variables can also be initialized in the model + internally. if you want this to happen set them to bogus value + of -9999 + ************************************************************** + + + + + water in lower store [mm] + -9999: use steady-state storage + + + + + + initial cross-sectional area of flow in channel[m2] + -9999: use half bankfull + + + + + + initial soil moisture content layer 1a (superficial soil layer) [mm3/mm3] + -9999: use field capacity values + + + + + + initial soil moisture content layer 1b (upper soil layer) [mm3/mm3] + -9999: use field capacity values + + + + + + initial soil moisture content layer 2 (lower soil layer) [mm3/mm3] + -9999: use field capacity values + + + + + + initial channel cross-section area [m2] for 2nd routing channel + -9999: use 0 + + + + + + initial lateral inflow for 1st line of routing [m2/s] + -9999: use 0 + + + + + + Initial lake level [m] + -9999 sets initial value to steady-state level + + + + + + Lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value equal to PrevDischarge (ChanQ(t)) + + + + + + Lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value + + + + + + initial discharge [m3/s] from previous run for lakes, reservoirs and transmission loss ChanQ + only needed for lakes reservoirs and transmission loss + -9999: use 0 + + + + + + - - -length of the window used to smooth the LZ zone [number of cell length] - - + + ************************************************************** + INITIAL CONDITIONS FOREST + (maps or single values) + ************************************************************** + - - - $(PathMaps)/gwbodiesNew.map -map of aquifers (0/1), used to smoothen LZ near extraction areas - - + + + cumulative interception [mm] + + - + + + water in upper groundwater store [mm] + + + + + days since last rainfall + + + + + initial soil moisture content [mm3/mm3] layer 1a (superficial soil layer) + -9999: use field capacity values + + - - -************************************************************** -EVAPORATION FROM OPEN WATER -************************************************************** + + + initial soil moisture content [mm3/mm3] layer 1b (upper soil layer) + -9999: use field capacity values + + - + + + initial soil moisture content [mm3/mm3] layer 2 (lower soil layer) + -9999: use field capacity values + + + - - -Fraction of maximum extend of water - - - - -Mask with Lakes from GLWD database - - + - + + ************************************************************** + INITIAL CONDITIONS IRRIGATION + (maps or single values) + ************************************************************** + + + + cumulative interception [mm] + + + + + water in groundwater upper store [mm] + + + + + days since last rainfall + + - + + + initial soil moisture content [mm3/mm3] layer 1a (superficial soil layer) + -9999: use field capacity values + + - -************************************************************** -TRANSMISSION LOSS PARAMETERS -************************************************************** + + + initial soil moisture content [mm3/mm3] layer 1b (upper soil layer) + -9999: use field capacity values + + -Suggested parameterisation strategy: + + + initial soil moisture content [mm3/mm3] layer 2 (lower soil layer) + -9999: use field capacity values + + -- Use TransSub as calibration constant leave all other parameters at default values + - - - -Transmission loss function parameter - - + - - -PBchange -Transmission loss function parameter - - + + ************************************************************** + INITIAL CONDITIONS IMPERVIOUS AREAS + (maps or single values) + ************************************************************** + - - -PBchange -downstream area taking into account for transmission loss - - + + + cumulative interception [mm] + + - - -upstream area - - + - + + + ************************************************************** + PREFIXES OF METEO AND VEGETATION RELATED VARIABLES + ************************************************************** + - + + + prefix precipitation maps + + - -************************************************************** -ROUTING PARAMETERS -************************************************************** + + + prefix average temperature maps + + -Suggested parameterisation strategy: + + + prefix E0 maps + + -- Use CalChanMan as calibration constant to fine-tune timing of - channel routing, leave all other parameters at default values + + + prefix ES0 maps + + - + + + prefix ET0 maps + + - - -kinematic wave parameter beta [-]: 0.6 is for broad sheet flow - - + + + prefix LAI maps + + - - -Reference depth of overland flow [mm], used to compute -overland flow Alpha for kin. wave - - + + + prefix LAI forest maps + + - - -Minimum slope gradient [-] (for kin. wave: slope cannot be 0) - - + + + prefix LAI irrigation maps + + - - -Minimum channel gradient [-] (for kin. wave: slope cannot be 0) - - + + + prefix domestic water use maps + + - + + + prefix livestock water use maps + + - + + + prefix energy water use maps + + - + + + prefix industry water use maps + + - -************************************************************** -PARAMETERS RELATED TO NUMERICS -************************************************************** + + + prefix variable water fraction + + -Important: do not change, default value of 0.4 generally combines -sufficient numerical accuracy within a limited number of sub-steps - - - -Minimum value for Courant condition in soil moisture routine. Always less than or equal to 1. -Small values result in improved numerical accuracy, at the expense of increased -computing time (more sub-steps needed). If reported time series of soil moisture contain -large jumps, lowering CourantCrit should fix this - - - - - - - - -************************************************************** -VARIABLES RELATED TO OPTIONS -These all need to have some (real or bogus) value, -even for options that are not actually used! -************************************************************** - - - - -************************************************************** -RESERVOIR OPTION -************************************************************** - - - - -Sub time step used for reservoir simulation [s]. Within the model, -the smallest out of DtSecReservoirs and DtSec is used. - - - - - -Initial reservoir fill fraction [-] --9999 sets initial fill to normal storage limit -if you're not using the reservoir option, enter some bogus value - - - - - - - - -************************************************************** -LAKE OPTION -************************************************************** - - - - -Estimate of average net inflow into lake (=inflow - evaporation) [cu m / s] -Used to calculated steady-state lake level in case LakeInitialLevelValue -is set to -9999 - - - - - - - - - -************************************************************** -POLDER OPTION -************************************************************** - - - - -Weir constant [-] (Do not change!) - - - - - -Initial water level in polder [m] - - - - - - - - - -************************************************************** -DYNAMIC WAVE OPTION -************************************************************** - - - - -Critical Courant number for dynamic wave -value between 0-1 (smaller values result in greater numerical accuracy, -but also increase computational time) - - - - - -Constant head [m] at most downstream pixel (relative to altitude -at most downstream pixel) - - - - - - - - - -************************************************************** -INFLOW HYDROGRAPH (OPTIONAL) -************************************************************** - - - - -OPTIONAL: nominal map with locations of (measured) -inflow hydrographs [cu m / s] - - - - - -OPTIONAL: observed or simulated input hydrographs as -time series [cu m / s] -Note that identifiers in time series correspond to -InflowPoints map (also optional) - - - - - - - - -************************************************************** -PF REPORTING OPTION -************************************************************** - - - - -Maximum capillary head [cm]. This value is used if Theta equals residual soil -moisture content (value of HeadMax is arbitrary). Only needed for pF computation, -otherwise doesn't influence model results at all) - - - - -PF MAPS - - - - -Reported pF soil layer 1a, other fraction - - - - - -Reported pF soil layer 1b, other fraction - - - - - -Reported pF soil layer 2, other fraction - - - - - -Reported pF soil layer 1a, forest fraction - - - - - -Reported pF soil layer 1b, forest fraction - - - - - -Reported pF layer 2, forest fraction - - - - - -Reported pF soil layer 1a, irrigation fraction - - - - - -Reported pF soil layer 1b, irrigation fraction - - - - - -Reported pF soil layer 2, irrigation fraction - - - - - - - - - - - - - - - + + + + + + ************************************************************** + PARAMETERS RELATED TO EVAPO(TRANSPI)RATION AND Interception + ************************************************************** + + Suggested parameterisation strategy: + + - leave all these parameters at their default values. + in some very special cases CalEvaporation may be set to some + value other than one + + + + + + Multiplier [-] applied to potential precipitation rates + + - - - - - -This is necessary when using projected coordinates (x,y) - - - - - - - - - - -Clone map - - - - - -netcdf template used to copy metadata information for writing netcdf - - - - - -latitude map to be used for snow/ice modelling - - - - - - -************************************************************** -TIMESTEP RELATED PARAMETERS -************************************************************** - - - - -Calendar convention - - - - - -Calendar day is back! -Calendar day number of 1st day in model run -e.g. 1st of January: 1; 1st of June 151 (or 152 in leap year) -Needed to read out LAI tables correctly - - - - - -timestep [seconds] (60*60*24) - - - - - -Sub time step used for kinematic wave channel routing [seconds] -Within the model,the smallest out of DtSecChannel and DtSec is used - - - - - -Number of first time step in simulation - - - - - -Number of last time step in simulation - - - - - - - - -************************************************************** -PARAMETERS RELATED TO EVAPO(TRANSPI)RATION AND Interception -************************************************************** - -Suggested parameterisation strategy: - -- leave all these parameters at their default values. - in some very special cases CalEvaporation may be set to some - value other than one - - - - - -Multiplier applied to potential precipitation rates [-] - - - - - -Multiplier applied to potential evapo(transpi)ration rates [-] - - - - - -Time constant for water in interception store [days] - - - - - -Average extinction coefficient [-] for the diffuse radiation flux -varies with crop from 0.4 to 1.1 (Goudriaan (1977)) - - - - - -Critical amount of available water (expressed in [mm/day]!), above which 'Days Since Last Rain' parameter is -set to 1 - - - - - -maximum depression storage for water on impervious surface -which is not immediatly causing surface runoff [mm] - - - - - - - - - -************************************************************** -SNOW AND FROST RELATED PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- estimate SnowFactor from prior data (if available), otherwise use 1 -- use SnowMeltCoef as a calibration constant -- leave all other parameters at default - - - - - -Multiplier applied to precipitation that falls as snow - - - - - -Snowmelt coefficient [mm C-1 day-1)] -See also Martinec et al., 1998. - - - - - -range [mm C-1 day-1] of the seasonal variation -SnowMeltCoef is the average value - - - - - -Average temperature [deg C] at which snow melts - - - - - -Average temperature [deg C] below which precipitation is snow - - - - - -Temperature lapse rate with altitude [deg C / m] - - - - - -Daily decay coefficient [day-1], (Handbook of Hydrology, p. 7.28) - - - - - -Snow depth reduction coefficient, [cm-1], (HH, p. 7.28) - - - - - -Snow water equivalent, (based on snow density of 450 kg/m3) (e.g. Tarboton and Luce, 1996) - - - - - -Degree Days Frost Threshold (stops infiltration, percolation and capillary rise) -Molnau and Bissel found a value 56-85 for NW USA. - - - - - - - - - -************************************************************** -INFILTRATION PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- use b_Xinanjiang and PowerPrefFlow as calibration constants - - - - - -Power in Xinanjiang distribution function [-] - - - - - -Power that controls increase of proportion of preferential -flow with increased soil moisture storage [-] - - - - - - - - - -************************************************************** -GROUNDWATER RELATED PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- leave GwLossFraction at 0 unless prior information show groundwater loss - is important -- use all other parameters as calibration constants - - - - - -Time constant for water in upper zone [days] - - + + + Multiplier [-] applied to potential evapo(transpi)ration rates + + - - -Time constant for water in lower zone [days] -This is the average time a water 'particle' remains in the reservoir -if we had a stationary system (average inflow=average outflow) - - + + + Time constant for water in interception store [days] + + - - -Maximum rate of percolation going from the Upper to the Lower -response box [mm/day] - - + + + Average extinction coefficient for the diffuse radiation flux + varies with crop from 0.4 to 1.1 (Goudriaan (1977)) + + - - -Maximum percolation rate from the lower groundwater zone [mm/days]. GWLoss -it’s lost beyond the catchment boundaries or to deep groundwater systems. -A value of 0 (closed lower boundary) is recommended as a starting value. - - + + + maximum depression storage for water on impervious surface + which is not immediatly causing surface runoff [mm] + + - + + + + ************************************************************** + SNOW AND FROST RELATED PARAMETERS + ************************************************************** - - -************************************************************** -EVAPORATION FROM OPEN WATER -************************************************************** - + Suggested parameterisation strategy: + - estimate SnowFactor from prior data (if available), otherwise use 1 + - use SnowMeltCoef as a calibration constant + - leave all other parameters at default - - -water use daily maps with a (in this case negative) volume of water [cu m/s] - - + - - -table with days for each water use maps -1st column: range of days; 2nd column: suffix of wuse map - - + + + Multiplier [-] applied to precipitation that falls as snow + + - - -Percentage of maximum extend of water - - + + + range [mm C-1 day-1] of the seasonal variation + SnowMeltCoef is the average value + + - - -Mask with Lakes from GLWD database - - + + + Average temperature [deg C] at which snow melts + + + + + + Average temperature [deg C] below which precipitation is snow + + + + + + Temperature lapse rate with altitude [C / m] + + + + + + Daily decay coefficient [day-1], (Handbook of Hydrology, p. 7.28) + + + + + + Snow depth reduction coefficient, [cm-1], (HH, p. 7.28) + + + + + + Snow water equivalent, (based on snow density of 450 kg/m3) (e.g. Tarboton and Luce, 1996) + + + + + + Degree Days Frost Threshold (stops infiltration, percolation and capillary rise) + Molnau and Bissel found a value 56-85 for NW USA. + + + + + + + + + + ************************************************************** + IRRIGATION AND WATER ABSTRACTION RELATED PARAMETERS + ************************************************************** + + + + + 0.75 + Field application irrigation efficiency [-]: max 1, ~0.90 drip irrigation, ~0.75 sprinkling + + + + + + conveyance efficiency [-]: around 0.80 for average channel + + + + + + IrrigationType (value between 0 and 1) is used here to distinguish between additional adding water until fieldcapacity (value set to 1) or not (value set to 0) + + + + + + Factor [-] to irrigation water demand + More than the transpiration is added e.g to prevent salinisation + + + + + + Annual amount (m3) of treated wastewater reused for irrigation + + + + + + Number of days over which the annual amount of treated wastewater for irrigation is used + + + + + + Consumptive Use (1-Recycling ratio) for livestock water use (0-1) [-] + + + + + + Consumptive Use (1-Recycling ratio) for industrial water use (0-1) [-] + + + + + + # Consumptive Use (1-Recycling ratio) for energy water use (0-1) [-] + # Source: Torcellini et al. (2003) "Consumptive Use for US Power Production" + # map advised by Neil Edwards, Energy Industry + # the UK and small French rivers the consumptive use varies between 1:2 and 1:3, so 0.33-0.50 + # For plants along big rivers like Rhine and Danube the 0.025 is ok + EnergyConsumptiveUseFraction=0.025 + + + + + + Consumptive Use (1-Recycling ratio) for domestic water use (0-1) [-] + Source: EEA (2005) State of Environment + + + + + + 0.2 + $(PathMaps)/leakage.map + Fraction of leakage of public water supply (0=no leakage, 1=100% leakage) + + + + + + The water that is lost from leakage (lost) (0-1) [-] + + + + + + Leakage reduction fraction (e.g. 50% = 0.5 as compared to current Leakage) (baseline=0, maximum=1) [-] + + + + + + Water savings fraction (e.g. 10% = 0.1 as compared to current Use (baseline=0, maximum=1) [-] + scenwsav.map + + + + + + Fraction of water re-used in industry (e.g. 50% = 0.5 = half of the water is re-used, used twice (baseline=0, maximum=1) [-] + scenruse.map + + + + + + Irrigation crop coefficient [-] + + + + + + Irrigation crop group number [-] + + + + + + Population [units] + + + + + + Population + + + + + + Land Use Mask + + + + + + Reported water use [cu m/s], depending on the availability of discharge + + + + + + Time series of upstream water use at gauging stations + + + + + + Number of sub-steps needed for water use + routine + + + + + + maximum number of loops for calculating the use of water + = distance water is taken for water consuption + + + + + + percentage of water which remains in the channel + e.g. 0.2 -> 20 percent of discharge is not taken out + + + + + + + + + + + + + + + ************************************************************** + GROUNDWATER RELATED PARAMETERS + ************************************************************** - - - maximum number of loops for calculating evaporation - = distance water is taken to satisfy the need of evaporation from open water - - + Suggested parameterisation strategy: - - -Reported evaporation from open water [mm] - - + - leave GwLossFraction at 0 unless prior information show groundwater loss + is important + - use UpperZoneTimeConstant, LowerZoneTimeConstant, + GwPercValue as calibration constants + - calibrate on GwLossFraction if necessary + + + + + + + length of the window used to smooth the LZ zone [number of cell length] + + + + + + $(PathMaps)/gwbodiesNew.map + map of aquifers (0/1), used to smoothen LZ near extraction areas + + + + + + + + + + ************************************************************** + EVAPORATION FROM OPEN WATER + ************************************************************** + + + + + + Fraction of maximum extend of water + + + + + + Mask with Lakes from GLWD database + + + + + + + + + + + + ************************************************************** + TRANSMISSION LOSS PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - Use TransSub as calibration constant leave all other parameters at default values + + + + + Transmission loss function parameter + + - - -Time series of upstream water evaporation from open water at gauging stations - - - - - - - - - - - - -************************************************************** -TRANSMISSION LOSS PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- Use TransSub as calibration constant leave all other parameters at default values - - - - - -PBchange -Transmission loss function parameter - - - - - -PBchange -Transmission loss function parameter - - - - - -PBchange -downstream area taking into account for transmission loss - - - - - -upstream area - - - - - - - - -************************************************************** -ROUTING PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- Use CalChanMan as calibration constant to fine-tune timing of - channel routing, leave all other parameters at default values - - - - - -Multiplier applied to Channel Manning's n - - - - - -Multiplier applied to Channel Manning's n for second routing line - - - - - -Multiplier applied to average Q to split into a second line of routing - - - - - -Multiplier applied to ChanBottomWidth - - - - - -Multiplier applied to ChanDepthThreshold - - - - - -Multiplier applied to ChanSdXdY - - - - - -kinematic wave parameter: 0.6 is for broad sheet flow - - - - - -Reference depth of overland flow [mm], used to compute -overland flow Alpha for kin. wave - - - - - -Minimum slope gradient (for kin. wave: slope cannot be 0) - - - - - -Minimum channel gradient (for kin. wave: slope cannot be 0) - - - - - - - -************************************************************** -PARAMETERS RELATED TO NUMERICS -************************************************************** - -Important: do not change, default value of 0.4 generally combines -sufficient numerical accuracy within a limited number of sub-steps - - - - - -Minimum value for Courant condition in soil moisture routine. Always less than or equal to 1. -Small values result in improved numerical accuracy, at the expense of increased -computing time (more sub-steps needed). If reported time series of soil moisture contain -large jumps, lowering CourantCrit should fix this - - - - - - - - -************************************************************** -INITIAL CONDITIONS FOR THE WATER BALANCE MODEL -(can be either maps or single values) -************************************************************** - - - - -$(PathMaps)/lzavin.map -$(PathInit)/lzavin.map -Reported map of average percolation rate from upper to -lower groundwater zone (reported for end of simulation) [mm/day] - - - - - -$(PathMaps)/avgdis.map -$(PathInit)/avgdis.map -CHANNEL split routing in two lines -Average discharge map [m3/s] - - - - - -if init condition are stored as netCDF with different time steps -this variable indicates which time step to use -Either as date e.g. 1/1/2010 or as number e.g. 5 - - - - - -Initial overland flow storage [m3], direct runoff fraction - - - - - -Initial overland flow storage [m3], other fraction - - - - - -Initial overland flow storage [m3], forest fraction - - - - - -initial snow depth in snow zone A [mm] - - - - - -initial snow depth in snow zone B [mm] - - - - - -initial snow depth in snow zone C [mm] - - - - - -initial Frost Index value [degC/day] - - - - - -cumulative interception [mm] - - - - - -water in groundwater upper store [mm] - - - - - -days since last rainfall - - - - - - - -************************************************************** -The following variables can also be initialized in the model -internally. if you want this to happen set them to bogus value -of -9999 -************************************************************** - - - - -water in groundwater lower store [mm] --9999: use steady-state storage - - - - - -initial cross-sectional area of flow in channel[m2] --9999: use half bankfull - - - - - -initial soil moisture content [mm3/mm3] layer 1a (superficial layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 1b (upper layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 2 (lower layer) --9999: use field capacity values - - - - - -initial channel cross-section area [m2] for 2nd routing channel --9999: use 0 - - - - - -initial lateral inflow for 1st line of routing [m2/s] --9999: use 0 - - - - - -initial discharge [m3/s] from previous run for lakes, reservoirs and transmission loss -only needed for lakes reservoirs and transmission loss --9999: use 0 - - - - - - - - - -************************************************************** -INITIAL CONDITIONS FOREST -(maps or single values) -************************************************************** - - - - -cumulative interception [mm] - - - - - -water in groundwater upper store [mm] - - - - - -days since last rainfall for forest fraction - - - - - -initial soil moisture content [mm3/mm3] layer 1a (superficial layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 1b (upper layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 2 (lower layer) --9999: use field capacity values - - - - - -cumulative depression storage [mm] - - - - - - - - -************************************************************** -INITIAL CONDITIONS IRRIGATION -(maps or single values) -************************************************************** - - - - -cumulative interception [mm] - - - - - -water in groundwater upper store [mm] - - - - - -days since last rainfall for irrigation - - - - - -initial soil moisture content [mm3/mm3] layer 1a (superficial layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 1b (upper layer) --9999: use field capacity values - - - - - -initial soil moisture content [mm3/mm3] layer 2 (lower layer) --9999: use field capacity values - - - - - - - - - - -************************************************************** -INPUT METEOROLOGICAL AND VEGETATION TIMESERIES AS MAPS -************************************************************** - - - - -precipitation [mm/day] - - - - - -average daily temperature [C] - - - - - -daily reference evaporation (free water) [mm/day] - - - - - -daily reference evaporation (soil) [mm/day] - - - - - -daily reference evapotranspiration (crop) [mm/day] - - - - - -leaf area index [m2/m2] - - - - - -leaf area index [m2/m2] - - - - - -leaf area index [m2/m2] - - - - - -table with days for each LAI maps -1st column: range of days; 2nd column: suffix of LAI map - - - - - - - - -************************************************************** -INPUT WATER USE MAPS AND PARAMETERS -************************************************************** - - - - -table with days for each water use maps -1st column: range of days; 2nd column: suffix of wuse map - - - - - -Domestic water abstraction daily maps [mm] - - - - - -Livestock water abstraction daily maps [mm] - - - - - -Energy water abstraction daily maps [mm] - - - - - -Industry water abstraction daily maps [mm] - - - - - -Consumptive Use (1-Recycling ratio) for livestock water use (0-1) - - - - - -Consumptive Use (1-Recycling ratio) for industrial water use (0-1) - - - - - - # Consumptive Use (1-Recycling ratio) for energy water use (0-1) - # Source: Torcellini et al. (2003) "Consumptive Use for US Power Production" - # map advised by Neil Edwards, Energy Industry - # the UK and small French rivers the consumptive use varies between 1:2 and 1:3, so 0.33-0.50 - # For plants along big rivers like Rhine and Danube the 0.025 is ok - EnergyConsumptiveUseFraction=0.025 - - - - - - Consumptive Use (1-Recycling ratio) for domestic water use (0-1) - Source: EEA (2005) State of Environment - - - - - - Fraction of leakage of public water supply (0=no leakage, 1=100% leakage) - - - - - - The water that is lost from leakage (lost) (0-1) - - - - - - Leakage reduction fraction (e.g. 50% = 0.5 as compared to current Leakage) (baseline=0, maximum=1) - - - - - - Water savings fraction (e.g. 10% = 0.1 as compared to current Use (baseline=0, maximum=1) - scenwsav.map - - - - - - Fraction of water re-used in industry (e.g. 50% = 0.5 = half of the water is re-used, used twice (baseline=0, maximum=1 - scenruse.map - - - - - - -Field application irrigation efficiency max 1, ~0.90 drip irrigation, ~0.75 sprinkling - - - - - -conveyance efficiency, around 0.80 for average channel - - - - - -IrrigationType (value between 0 and 1) is used here to distinguish between additional adding water until fieldcapacity (value set to 1) or not (value set to 0) - - - - - -Factor to irrigation water demand -More than the transpiration is added e.g to prevent salinisation - - - - - -Annual amount (m3) of treated wastewater reused for irrigation - - - - - -Number of days over which the annual amount of treated wastewater for irrigation is used - - - - - -Irrigation crop coefficient - - - - - -Irrigation crop group number - - - - - -Population - - - - - -Population - - - - - -Land Use Mask - - - - - -Reported water use [cu m/s], depending on the availability of discharge - - - - - -Time series of upstream water use at gauging stations - - - - - -Number of sub-steps needed for water use -routine - - - - - - maximum number of loops for calculating the use of water - = distance water is taken for water consuption - - - - - - percentage of water which remains in the channel - e.g. 0.2 -> 20 percent of discharge is not taken out - - - - - - - - - - - - - -************************************************************** -RICE IRRIGATION -************************************************************** - - - - - -water amount in mm per day -10 mm for 10 days (total 10cm water) - - - - - -FAO: percolation for heavy clay soils: PERC = 2 mm/day - - - - - -map with starting day of the year - - - - - -map with starting day of the year - - - - - -map with starting day of the year - - - - - -map with starting day of the year - - - - - - - - -************************************************************** -REPORTED OUTPUT MAPS -************************************************************** - - - - -Reported discharge [cu m/s] (average over the model timesteps) (AvgDis) - - - - - -Reported Topsoil moisture [%] - - - - - -Reported Topsoil moisture [%] - - - - - -Reported discharge [cu m/s] at the end of a timestep - - - - - -Reported discharge [cu m/s] but cut by a discharge mask map - - - - - -Reported water level [m] % False by default - - - - - -STATE VARIABLES AT SELECTED TIME STEPS -ONLY FOR INITIALISATION OF SUCCEEDING RUNS -REPORTING TIME STEPS SET THROUGH "ReportSteps" OPTION - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported days since last rain - - - - - -Reported water depth - - - - - -Reported overland flow water volume [m3] for direct fraction on catchment surface - - - - - -Reported overland flow water volume [m3] for other fraction on catchment surface - - - - - -Reported overland flow water volume [m3] for forest fraction on catchment surface - - - - - -Reported chan cross-section area [m2] - - - - - -Reported snow cover in snow zone A [mm] - - - - - -Reported snow cover in snow zone B [mm] - - - - - -Reported snow cover in snow zone C [mm] - - - - - -Reported frost index [degC/day] - - - - - -Reported interception storage [mm] - - - - - - -Reported cross section area 2nd line of routing [m2] - - - - - -Reported channel side flow [m2/s] - - - - - -Reported istantaneous discharge at end of computation step [cu m/s] ChanQ - - - - - -Reported days since last rain - - - - -Reported interception storage [mm] - - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -cumulative interception [mm] - - - - - -Reported days since last rain - - - - -Reported interception storage [mm] - - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 2 (lowerupper layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -Reported transpiration maps, other fraction [mm] - - - - - -Reported transpiration maps, forest fraction [mm] - - - - - -Reported transpiration maps, irrigated fraction [mm] - - - - - -Reported transpiration maps, weighted sum over the fractions of each pixel [mm] - - - - - - - - -"END" MAPS, AKA REPORTED OUTPUT MAPS CALLED "END" -Same as above, but always at last time step -Support for these "end" maps will most likely be -discontinued some time soon - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported days since last rain - - - - - -Reported water depth [m] - - - - - -Reported overland flow water volume [m3] for direct fraction on catchment surface - - - - - -Reported overland flow water volume [m3] for other fraction on catchment surface - - - - - -Reported overland flow water volume [m3] for forest fraction on catchment surface - - - - - -Reported chan cross-section area [m2] - - - - - -Reported snow cover in snow zone A [mm] - - - - - -Reported snow cover in snow zone B [mm] - - - - - -Reported snow cover in snow zone C [mm] - - - - - -Reported frost index [degC/day] - - - - - -Reported interception storage [mm] - - - - - -Reported lake level [m] - - - - - -Reported lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value equal to PrevDischarge (ChanQ(t)) - - - - - -Reported lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value - - - - - -Reported lake storage [m3] - - - - - - -Reported reservoir filling [-] - - - - - -Reported cross section area 2nd line of rounting [m2] - - - - - -Reported channel side flow [m2/s] - - - - - -Reported istantaneous discharge at end of computation step [cu m/s] ChanQ - - - - - -Reported discharge [cu m/s] (average over the model timesteps) (AvgDis) - - - - - -Reported days since last rain - - - - -Reported interception storage [mm] - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - -Reported volumetric soil moisture content for both -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - -Reported volumetric soil moisture content for both -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -cumulative interception [mm] - - - - - - -Reported days since last rain - - - - -Reported interception storage [mm] - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - -Reported volumetric soil moisture content for both -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 1c (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - - - - -INDIVIDUAL DRIVING METEOROLOGICAL VARIABLES (AT EVERY TIME STEP) -ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS -SWITCHED ON (DEFAULT: ALL SWITCHED OFF) -Note reporting is done as a quantity per time step, not as -an intensity (as in meteo input!) - - - - -Precipitation [mm per time step] - - - - - -Average DAILY temperature [degrees C] - - - - - -Potential reference evapotranspiration [mm per time step] - - - - - -Potential evaporation from bare soil surface [mm per time step] - - - - - -Potential evaporation from open water surface [mm per time step] - - - - - - - -INDIVIDUAL STATE VARIABLES (AT EVERY TIME STEP) -ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS -SWITCHED ON (DEFAULT: ALL SWITCHED OFF) - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported storage in lower response box [mm] - - - - - -Reported total water storage [mm] - - - - - -Reported days since last rain - - - - - -Reported water depth [m] - - - - - -Reported overland flow water volume [m3] for direct runoff fraction on catchment surfac - - - - - -Reported overland flow water volume [m3] for other fraction on catchment surfac - - - - - -Reported overland flow water volume [m3] for forest fraction on catchment surfac - - - - - -Reported channel cross-section area [m2] - - - - - -Reported snow cover [mm] - - - - - -Reported frost index [degC/day] - - - - - -Reported interception storage, other fraction [mm] - - - - - -Reported days since last rain - - - - - -Reported interception storage, forest fraction [mm] - - - - - -Reported interception storage, irrigation fraction [mm] - - - - - -Reported volumetric soil moisture content for -soil layer 1a (superficial layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 1b (upper layer) [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 2 (lower layer) [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - -Reported interception (depression) storage, direct runoff (impervious) fraction [mm] - - - - - - -INDIVIDUAL RATE VARIABLES (AT EVERY TIME STEP) -ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS -SWITCHED ON (DEFAULT: ALL SWITCHED OFF) - - - - -Reported rain (excluding snow)[mm] - - - - - -Reported snow (excluding rain)[mm] - - - - - -Reported snowmelt [mm] - - - - - -Reported interception [mm] - - - - - -Reported transpiration [mm] - - - - - -Reported soil evaporation [mm] - - - - - -Reported evaporation of intercepted water [mm] - - - - - -Reported actual evapotranspiration [mm] - - - - - -Reported leaf drainage [mm] - - - - - -Reported infiltration [mm] - - - - - -Reported preferential flow [mm] - - - - - -Reported percolation from soil layer 1a to soil layer 1b, other fraction [mm] - - - - - -Reported percolation from soil layer 1a to soil layer 1b, forest fraction [mm] - - - - - -Reported percolation from soil layer 1a to soil layer 1b, irrigation fraction [mm] - - - - - -Reported percolation from soil layer 1b to soil layer 2, other fraction [mm] - - - - - -Reported percolation from soil layer 1b to soil layer 2, forest fraction [mm] - - - - - -Reported percolation from soil layer 1b to soil layer 2, irrigation fraction [mm] - - - - - -Reported seepage to groundwater(from soil layer 2 to groundwater), other fraction [mm] - - - - - -Reported seepage to groundwater(from soil layer 2 to groundwater), forest fraction [mm] - - - - - -Reported seepage to groundwater(from soil layer 2 to groundwater), irrigation fraction [mm] - - - - - -Reported seepage to groundwater(from soil layer 2 to groundwater), weighted sum over the fraction of each pixel [mm] - - - - - -Reported available groundwater LZ+ GWLoss [mm] - - - - - -Reported surface runoff [mm] - - - - - -Reported upper zone outflow [mm] - - - - - -Reported lower zone outflow [mm] - - - - - -Reported fast runoff = surface + UZ [mm] - - - - - -Reported GWloss [mm] - - - - - -Reported total runoff [mm] - - - - - -Reported total runoff that enters the channel: groundwater + surface runoff [mm] - - - - - -Reported Direct Runoff [mm] - - - - - -Reported FlowVelocityMSecMaps [m/s] - - - - - -Reported TravelDistance [m] - - - - - -Reported percolation from upper to lower groundwater zone [mm] - - - - - - -Reported evaporation of intercepted water [mm] - - - - - -Reported soil evaporation [mm] - - - - - -Reported leaf drainage Forest[mm] - - - - - -Reported interception forest [mm] - - - - - -Reported infiltration [mm] - - - - - -Reported transpiration forest [mm] - - - - - -Reported preferential flow [mm] - - - - - -Reported percolation from 1st to 2nd soil layer [mm] - - - - - -Reported seepage to groundwater[mm] - - - - - -Reported upper zone outflow [mm] - - - - - -Reported upper zone outflow [mm] - - - - - -Reported percolation from upper to lower zone [mm] - - - - - -Reported loss from lower zone [mm] - - - - - -Reported loss from lower zone [mm] - - - - - -Reported volumetric soil moisture content for -soil layer 1a [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 1b [V/V] [mm3/mm3] - - - - - -Reported volumetric soil moisture content for both -soil layer 2 [V/V] [mm3/mm3] - - - - - -Reported storage in upper response box [mm] - - - - - - - - -MISCELLANEOUS OUTPUT MAPS AND TIME SERIES - - - - -Time series of average percolation rate from upper to -lower groundwater zone (reported at sites) [mm/day] - - - - - -Time series of average percolation rate from upper to -lower groundwater zone (average for upstream area of each gauge) [mm/day] - - - - - -Reported number of days in simulation with soil moisture stress [days] - - - - - -Reported number of days in simulation with soil moisture stress for forest fraction [days] - - - - - -Reported soil transpiration reduction factor [-] for other landuse -values below 1 indicate soil moisture stress - - - - - -Reported soil transpiration reduction factor [-] -values below 1 indicate soil moisture stress - - - - - - - - - - -************************************************************** -REPORTED OUTPUT TIME SERIES -************************************************************** - - - - -Reported discharge [cu m/s] - - - - - -Reported discharge over last routing sub-step [cu m/s] - - - - - -Reported water level [m] - - - - - -OUTPUT AT SITES: STATE VARIABLES - - - - -Water depth on soil surface [mm] - - - - - -Depth of snow cover on soil surface [mm] - - - - - -Water stored as interception [mm] - - - - + - Soil moisture layer 1a [cu mm / cu mm] + PBchange + Transmission loss function parameter - + - + - Soil moisture layer 1b [cu mm / cu mm] + PBchange + downstream area taking into account for transmission loss - + - + - Soil moisture layer 2 [cu mm / cu mm] + upstream area - - - - -Soil moisture layer 1a [cu mm / cu mm] - - - - - -Soil moisture layer 1b [cu mm / cu mm] - - - - - -Soil moisture layer 2 [cu mm / cu mm] - - - - - -Storage in upper groundwater zone [mm] - - - - - -Storage in lower groundwater zone [mm] - - - - - -Days since last rain [days] - - - - - -Frost index [degC/day] - - - - - -Days since last rain [days] - - - - - - - - -OUTPUT AT SITES: RATE VARIABLES - - - - -Rain (excluding snow) [mm] - - - - - -Snow (excluding rain) [mm] - - - - - -Reported snowmelt [mm] - - - - - -Reported interception [mm] - - - - - -Reported transpiration [mm] - - - - - -Reported soil evaporation [mm] - - - - - -Reported evaporation from interception storage [mm] - - - - - -Reported leaf drainage [mm] - - - - - -Reported infiltration [mm] - - - - - -Reported preferential flow [mm] - - - - - -Reported percolation from 1st to 2nd soil layer [mm] - - - - - -Reported seepage to groundwater[mm] - - - - - -Reported surface runoff [mm] - - - - - -Reported upper zone outflow [mm] - - - - - -Reported lower zone outflow [mm] - - - - - -Reported total runoff [mm] - - - - - -Reported percolation from upper to lower zone [mm] - - - - - -Reported loss from lower zone [mm] - - - - - - - -AVERAGE VALUES OF METEOROLOGICAL FORCING VARIABLES -UPSTREAM OF GAUGES -(only if repMeteoUpsGauges option is activated) - - - - -Precipitation [mm/time step] - - - - - -Average temperature [deg C] - - - - - -Reference evapotranspiration [mm/time step] - - - - - -Potential soil evaporation [mm/time step] - - - - - -Potential open water evaporation [mm/time step] - - - - - - - -AVERAGE VALUES OF MODEL STATE VARIABLES -UPSTREAM OF GAUGES -(only if repStateUpsGauges option is activated) - - - - -Water depth on soil surface [mm] - - - - - -Depth of snow cover on soil surface [mm] - - - - - -Water stored as interception [mm] - - - - - -Storage in upper groundwater zone [mm] - - - - - -Storage in lower groundwater zone [mm] - - - - - -Days since last rain [days] - - - - - -Frost index [degC/day] - - - - - -Days since last rain [days] - - - - - - - - -AVERAGE VALUES OF MODEL RATE VARIABLES -UPSTREAM OF GAUGES -(only if repRateUpsGauges option is activated) - - - - -Rain (excluding snow) [mm] - - - - - -Snow (excluding rain) [mm] - - - - - -Snow melt [mm] - - - - - -Interception [mm] - - - - - -Actual transpiration [mm] - - - - - -Actual evaporation [mm] - - - - - -Evaporation from interception storage [mm] - - - - - -Leaf drainage [mm] - - - - - -Infiltration [mm] - - - - - -Preferential flow [mm] - - - - - -Percolation upper to lower soil layer [mm] - - - - - -Seepage from lower soil layer to groundwater [mm] - - - - - -Surface runoff [mm] - - - - - -Outflow from upper groundwater zone (to channel) [mm] - - - - - -Outflow from lower groundwater zone (to channel) [mm] - - - - - -Total runoff [mm] - - - - - -Reported percolation from upper to lower groundwater zone [mm] - - - - - -Reported loss from lower zone [mm] - - - - - - - -NUMERICS - - - - -Reported mass balance error at outlet [cu m] - - - - - -Reported mass balance error at outlet (as mm water slice) - - - - - -Reported mass balance error due to the split routing module, for each catchment [m3] - - - - - -Reported discharge error at the outlet as a consequence of the mass balance error within the split routing module, for each catchment [m3/s] - - - - - -Reported ratio between the mass balance error and the water volume storage, for each catchment [m3/m3] - - - - - -Average value of the sum of the fractions within a catchment: this value must be 1.0 in order to avoid mass balace errors! [-] - - - - - -Number of cells with Theta lower than -residual soil moisture content -(should ALWAYS be zero, if not something is -seriously wrong!!!) -TEST ONLY!! REMOVE OR HIDE IN FINAL VERSION!! - - - - - -Number of cells with Theta lower than -residual soil moisture content -(should ALWAYS be zero, if not something is -seriously wrong!!!) -TEST ONLY!! REMOVE OR HIDE IN FINAL VERSION!! - - - - - -Number of sub-steps needed for soil moisture -routine - - - - - - - - - -************************************************************** -BASE INPUT MAPS AND TABLES -************************************************************** - - - - -************************************************************** -TOPOGRAPHY MAPS -************************************************************** - - - - -$(PathMaps)/ldd.map -local drain direction map (1-9) - - - - - -slope gradient [-] (0.50 -> tangent=0.5, angle=26.5 degrees) - - - - - -Elevation standard deviation [m], i.e. altitude difference elevation within pixel. -Used for sub-pixel modelling of snow accumulation -and melt - - - - - -outlets.map -Nominal map with gauge locations (i.e cells for which simulated discharge -is written to file(1,2,3 etc) - - - - - -map with monitoring sites (1,2,3 etc) - - - - - -optional map with pixel length [m], only needed in case map attributes -are not in [m] (e.g. lat / lon systems) - - - - - -optional map with pixel area [m2], only needed in case map attributes -are not in [m] (e.g. lat / lon systems) - - - - - - - - - -************************************************************** -SOIL PARAMETERS -************************************************************** - -Suggested parameterisation strategy: - -- use b_Xinanjiang and PowerPrefFlow as calibration constants - - - - - -Soil depth for 1st layer: 1a (superficial layer) -Minimum Soil Depth [mm] for superficial soil layer -For Europe it is 50 mm -For Africa it is 200 mm - - - - - -Soil depth for 2nd layer: 1b (upper layer) -Minimum Soil Depth [mm] for second soil layer - - - - - -Soil depth for 2nd layer: 2 (lower layer) -Minimum Soil Depth [mm] for second soil layer - - - - - -Soil depth for 1st layer: 1a -Minimum Soil Depth [mm] for upper soil layer -For Europe it is 50 mm -For Africa it is 200 mm - - - - - -Soil depth for 2nd layer: 1b -Minimum Soil Depth [mm] for lower soil layer - - - - - -Soil depth for 2nd layer: 2 -Minimum Soil Depth [mm] for lower soil layer 300 - - - - - - - - -************************************************************** -LAND USE RELATED MAPS AND TABLES -************************************************************** - - - - -$(PathMapsLanduse)/fracsealed.map -urban area (0-1) - - - - - -stack of Direct Runoff fraction maps (0-1) - - - - - -$(PathMapsLanduse)/fracforest.map -forest fraction of a pixel (0-1) - - - - - -$(PathMapsLandUseChange)/ -stack of forest fraction maps (0-1) - - - - - -$(PathMapsLanduse)/fracwater.map -forest fraction of a pixel (0-1) - - - - - -$(PathMapsLandUseChange)/ -stack of water fraction maps (0-1) - - - - - -$(PathMapsLanduse)/fracother.map -forest fraction of a pixel (0-1) - - - - - -$(PathMapsLandUseChange)/ -stack of other fraction maps (0-1) - - - - - -$(PathMapsLanduse)/fracirrigated.map -irrigated area fraction of a pixel (0-1) - - - - - -$(PathMapsLandUseChange)/ -stack of Irrigation fraction maps (0-1) - - - - - -$(PathMapsLanduse)/fracDrained.map -drained fraction from irrigated area (0-1) - - - - - -rice fraction of a pixel (0-1) - - - - - -stack of rice fraction maps (0-1) - - - - - -groundwater used fraction of a pixel (0-1) - - - - - -NonConventionalWaterUsed (0-1) - - - - - -lake and reservoir water used, fraction of a pixel (0-1) - - - - - -$(PathMaps)/eflow.map -EFlowThreshold is map with m3/s discharge, e.g. the 10th percentile discharge of the baseline run - - - - - -table with crop coefficient for each land use; values ranging from 0.75 to 1.25; -source: Supit, p.83 CFET - - - - - -table with crop group number; table 6.1 and 6.2 in WOFOST 6.0, Supit, 1994: p. 86 - - - - - -$(PathMapsTables)/manngs_2000_250m.map -table with Manning's roughness [m^(1/3) s^(-1)] for each CORINE landcover class - - - - - -table with crop coefficient for each land use; values ranging from 0.75 to 1.25; -source: Supit, p.83 CFET - - - - - -table with crop group number; table 6.1 and 6.2 in WOFOST 6.0, Supit, 1994: p. 86 - - - - - -$(PathMapsTables)/manngs_2000_250m.map -table with Manning's roughness [m^(1/3) s^(-1)] for each CORINE landcover class - - - - - - - - - -************************************************************** -Variable Channel NoSubStepChannel -************************************************************** - - - - -UpArea do be included in max. celerity - - - - - -variable Number of sub steps for the kinematic wave routing - - - - -************************************************************** -CHANNEL MAPS -************************************************************** - - - - -Boolean map with value 1 at channel pixels and 0 at -all other pixels -IMPORTANT: IF NON-CHANNEL PIXELS HAVE MISSING VALUES -THEN THIS MAY RESULT IN INCORRECT RESULTS - - - - - -Channel gradient (fraction, dy/dx) - - - - - -Channel Manning's n [m^(1/3) s^(-1)] - - - - - -Channel length [m] - - - - - -Channel bottom width [m] - - - - - -Channel side slope, expressed as gradient -!! expressed as dx/dy !!! (NOT dy/dx, which would perhaps be more logical) - - - - - -Floodplain Width [m] - - - - - -Bankfull channel depth [m] - - - - - - - -************************************************************** -TABLES WITH TOPSOIL SOIL PHYSICAL PARAMETERS (HYPRES) -Each parameter is defined for upper (1a and 1b) and -lower (2) soil layers -************************************************************** - - - - -Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) - - - - - -Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) - - - - - -Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 2 (lower soil layer) - - - - - -Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) - - - - - -Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) - - - - - -Residual soil moisture content [V/V] [mm3/mm3] for soil layer 2 (lower soil layer) - - - - - -Pore-size index (Van Genuchten m and n are calculated from this) -Lambda is acually 1-n [-] - - - - - -Pore-size index (Van Genuchten m and n are calculated from this) -Lambda is acually 1-n [-] - - - - - -Pore-size index (Van Genuchten m and n are calculated from this) -Lambda is acually 1-n [-] - - - - - -Van Genuchten parameter Alpha [1/cm] for soil layer 1a (superficial soil layer) - - - - - -Van Genuchten parameter Alpha [1/cm] for soil layer 1b (upper soil layer) - - - - - -Van Genuchten parameter Alpha [1/cm] for soil layer 2 (lower soil layer) - - - - - -Saturated conductivity [mm/day] for soil layer 1a (superficial soil layer) - - - - - -Saturated conductivity [mm/day] for soil layer 1b (upper soil layer) - - - - - -Saturated conductivity [mm/day] for soil layer 2 (lower soil layer) - - - - - - - -************************************************************** -TABLES WITH TOPSOIL SOIL PHYSICAL PARAMETERS (HYPRES) for Forest -Each parameter is defined for 1a and 1b -Normal parameter is taken for the lower soil layer -************************************************************** - - - - -Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) - - - - - -Soil moisture content at saturation [V/V] [mm3/mm3] - - - - - -Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) - - - - - -Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) - - - - - -Pore-size index (Van Genuchten m and n are calculated from this) for soil layer 1a (superficial soil layer) -Lambda is acually 1-n [-] for soil layer 1b (upper soil layer) - - - - - -Pore-size index (Van Genuchten m and n are calculated from this) -Lambda is acually 1-n [-] for soil layer 1b (upper soil layer) - - - - - -Van Genuchten parameter Alpha [1/cm] for soil layer 1a (superficial soil layer) - - - - - -Van Genuchten parameter Alpha [1/cm] for soil layer 1b (upper soil layer) - - - - - -Saturated conductivity [mm/day] for soil layer 1a (superficial soil layer) - - - - - -Saturated conductivity [mm/day] for soil layer 1b (upper soil layer) - - - - - - - - - - - -************************************************************** -RESERVOIRS (if used ) -Input maps -************************************************************** - - - - -Sub time step used for reservoir simulation [s]. Within the model, -the smallest out of DtSecReservoirs and DtSec is used. - - - - - -Map with location of reservoirs (number) - - - - - -Initial reservoir storage (fraction) - - - - - -Input tables - - - - -Total reservoir storage capacity [m3] - - - - - -Conservative reservoir storage (fraction, typically 0.07) - - - - - -Normal reservoir storage limit (fraction, typically 0.65) - - - - - -Flood reservoir storage limit (fraction, typically 0.90) - - - - - -Non damaging reservoir outflow Q [m3 / s] - - - - - -Normal outflow Q [m3 / s] - - - - - -Minimum reservoir outflow Q [m3 / s] - - - - -Output time series - - - - -name of output TSS file with Reservoir Inflow - - - - - -name of output TSS file with Reservoir Outflow - - - - - -name of output TSS file with Reservoir Filling - - - - - -name of output TSS file with Reservoir storage [m3] - - - - - - -name of output map(s) with Reservoir Filling - - - - - -adjusting the balance between normal and flood storage [-] -big values (= closer to 1.0 = close to flood) results in keeping the outflow longer at rnormq - - - - - -Multiplier [-] for rservoir rnormq (normal outflow) -fraction of the value in table rnormq.txt range: 0.5 - 2 - - - - - - - - -************************************************************** -LAKES (if used ) -Input maps -************************************************************** - - - - -Map with location of lakes - - - - - -Initial lake level [m] --9999 sets initial value to steady-state level - - - - - -Lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value equal to PrevDischarge (ChanQ(t)) - - - - - -Lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value - - - - - -Estimate of average net inflow into lake (=inflow - evaporation) [m3 / s] -Used to calculated steady-state lake level in case LakeInitialLevelValue -is set to -9999 - - - - -Input tables - - - - -Lake surface area [m2] - - - - - -Lake parameter A [m/s] - - - - - -Multiplier applied to the lake parameter A - - - - -Output time series - - - - -Output timeseries file with lake inflow [m3 /s] - - - - - -Output timeseries file with lake outflow [m3 /s] - - - - - -Output timeseries file with lake level [m] - - - - - -Output map(s) with lake level [m] - - - - - -Output map with lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value equal to PrevDischarge (ChanQ(t)) - - - - - -Output map with lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] --9999 sets initial value - - - - - - - - -************************************************************** -POLDERS(if used) -************************************************************** - - - - - -Weir constant (fixed) [-] - - - - - -Map with polder locations - - - - - -Initial water level in polders [m] - - - - - -Polder maximum storage capacity [cu m] - - - - - -Area of polder [sq m] - - - - - -Width of polder outlet/inlet [m] - - - - - -Polder bottom level, measured from channel bottom [m] - - - - - -Time step at which polder opens in case of regulated polder (use bogus value of -9999 in table in case of unregulated polder) - - - - - -Time step at which water stored in polder is released again(use bogus value of -9999 in table in case of unregulated polder) - - - - - -name of output TSS file with polder flux [cu m / s]. Positive for flow from channel to polder, negative for polder to channel - - - - - -name of output TSS file with polder level [m] - - - - - -name of output map(s) with polder level - - - - - - - - -************************************************************** -INFLOW HYDROGRAPH (if used) -************************************************************** - - - - -OPTIONAL: nominal map with locations of (measured) -inflow hydrographs - - - - - -Observed or simulated input hydrographs as -time series [m3 / s] -Note that identifiers in time series correspond to -InflowPoints map (also optional) - - - - - - - - -************************************************************** -DYNAMIC WAVE(if used) -************************************************************** - - - - -Critical Courant number for dynamic wave -value between 0-1 (smaller values result in greater numerical accuracy, -but also increase computational time) - - - - - -Constant head [m] at most downstream pixel (relative to altitude -at most downstream pixel) - - - - - -Boolean map with value 1 at channel pixels where dynamic wave is -used, and 0 at all other pixels - - - - - -Channel bottom level [m] - - - - - -Nominal map with channel cross section IDs - - - - - -Table with cross section parameters (H,A,P) - - - - - - - -************************************************************** -PF REPORTING (if used) -************************************************************** - - - -PF PARAMETERS - - - - -Maximum capillary head [cm]. This value is used if Theta equals residual soil -moisture content (value of HeadMax is arbitrary). Only needed for pF computation, -otherwise doesn't influence model results at all) - - - - -PF MAPS - - - - -Reported pF upper soil layer [-] - - - - - -Reported pF lower soil layer [-] - - - - - -Reported pF lower soil layer [-] - - - - - -Reported pF upper soil layer [-] - - - - - -Reported pF lower soil layer [-] - - - - -PF TIMESERIES, VALUES AT SITES - - - - -Reported pF upper soil layer [-] - - - - - -Reported pF lower soil layer [-] - - - - - - -Reported pF upper soil layer [-] - - - - - -Reported pF lower soil layer [-] - - - - -PF TIMESERIES, AVERAGE VALUES UPSTREAM OF GAUGES - - - - -Reported pF upper soil layer [-] - - - - -Reported pF lower soil layer [-] - - - - -Reported pF upper soil layer [-] - - - - -Reported pF lower soil layer [-] - - - - - - - - - - -************************************************************** -Ad'a addition -************************************************************** - - - - -threshold value below which there is no outflow to the channel [mm] - - - - - -length of the window used to smooth the LZ zone [number of cells] - - - - - -map of aquifers (0/1), used to smoothen LZ near extraction areas - - - - - - -************************************************************** -Water demand output maps -************************************************************** - - - - -day of the year when the yearly endcalculation is done e.g. 31/10/xxxx = 304 - - - - - - -TotalAbstractionFromGroundwater [mm] - - - - - -TotalAbstractionFromSurfaceWater [mm] - - - - - -TotalAbstractionFromSurfaceWater [mm] summed up for water regions - - - - - -Total Abstraction From SurfaceWater and Groundwater [mm] summed up for water regions, montly values - - - - - -TotalPaddyRiceIrrigationAbstraction [m3] - - - - - -Water Exploitation Index - Consumption; for water regions (this is the official EU WEI+): consumption / internal and external availability - - - - - -Water Exploitation Index - Abstraction; for water regions: abstraction / internal and external availability - - - - - -Water Exploitation Index - Demand; for water regions: demand / internal and external availability - - - - - -Water Exploitation Index - Consumption; for water regions - - - - - -Internal available water - - - - - -External available water - - - - - -Region Water Consumption - - - - - -Region Water Consumption - - - - - -Reservoir and Lake storage in m3 at end of month - - - - - -Reservoir and Lake abstraction in m3 - - - - - -Irrigation water shortage in m3 for month - - - - - -Surface water availability in m3 for potential irrigation for each day - - - - - -Monthly evapotranspiration deficit in mm - - - - - -Monthly evapotranspiration deficit in mm - - - - - -Monthly evapotranspiration deficit in mm - - - - - -Monthly Water Dependency Index (0-1) (De Roo 2015) -WDI = Upstream Inflow Actually Used / Total Water Demand -Values close to 1 give extreme dependency on upstream water - - - - - -Monthly Water Security Index (0-1) (De Roo 2015) -WSI = Upstream Inflow Actually Used / Upstream Inflow Available -Values close to 1 give extreme vulnerability to upstream water - - - - - -Monthly Water Sustainability Index (0-1) (De Roo 2015) -WTI = 1-SurfaceWaterDeficit / TotalWaterDemand -Values of 1 indicate complete sustainable conditions, no water deficit -Values less than 1 indicate that considerable deep groundwater resources or desalinated water is used - - - - - -Monthly Falkenmark 1 Index (tochanm3) - - - - - -Monthly Falkenmark 2 Index (tochanm3+reservoirlakeabstraction) - - - - - -Monthly Falkenmark 3 Index (tochanm3+reservoirlakeabstraction+externalinflow) - - - - - - -Abstraction from groundwater in m3 per timestep - - - - - -Abstraction from surface water in m3 per timestep - - - - - -Region abstraction from surface water in m3 per timestep - - - - - -Region Total Abstraction From Lakes and Reservoirs in m3, per timestep - - - - - -Lake Abstraction per timestep in m3 - - - - - -ReservoirAbstraction per timestep in M3 - - + + + + + + + + + ************************************************************** + ROUTING PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - Use CalChanMan as calibration constant to fine-tune timing of + channel routing, leave all other parameters at default values + + + + + + kinematic wave parameter beta [-]: 0.6 is for broad sheet flow + + + + + + Reference depth of overland flow [mm], used to compute + overland flow Alpha for kin. wave + + + + + + Minimum slope gradient [-] (for kin. wave: slope cannot be 0) + + + + + + Minimum channel gradient [-] (for kin. wave: slope cannot be 0) + + + + + + + + + + + ************************************************************** + PARAMETERS RELATED TO NUMERICS + ************************************************************** + + Important: do not change, default value of 0.4 generally combines + sufficient numerical accuracy within a limited number of sub-steps + + + + + + Minimum value for Courant condition in soil moisture routine. Always less than or equal to 1. + Small values result in improved numerical accuracy, at the expense of increased + computing time (more sub-steps needed). If reported time series of soil moisture contain + large jumps, lowering CourantCrit should fix this + + + + + + + + + ************************************************************** + VARIABLES RELATED TO OPTIONS + These all need to have some (real or bogus) value, + even for options that are not actually used! + ************************************************************** + + + + + + ************************************************************** + RESERVOIR OPTION + ************************************************************** + + + + + Sub time step used for reservoir simulation [s]. Within the model, + the smallest out of DtSecReservoirs and DtSec is used. + + + + + + Initial reservoir fill fraction [-] + -9999 sets initial fill to 80% of the flood limit + if you're not using the reservoir option, enter some bogus value + + + + + + + + + ************************************************************** + LAKE OPTION + ************************************************************** + + + + + Estimate of average net inflow into lake (=inflow - evaporation) [cu m / s] + Used to calculated steady-state lake level in case LakeInitialLevelValue + is set to -9999 + + + + + + + + + + ************************************************************** + POLDER OPTION + ************************************************************** + + + + + Weir constant [-] (Do not change!) + + + + + + Initial water level in polder [m] + + + + + + + + + + ************************************************************** + DYNAMIC WAVE OPTION + ************************************************************** + + + + + Critical Courant number for dynamic wave + value between 0-1 (smaller values result in greater numerical accuracy, + but also increase computational time) + + + + + + Constant head [m] at most downstream pixel (relative to altitude + at most downstream pixel) + + + + + + + + + + ************************************************************** + INFLOW HYDROGRAPH (OPTIONAL) + ************************************************************** + + + + + OPTIONAL: nominal map with locations of (measured) + inflow hydrographs [cu m / s] + + + + + + OPTIONAL: observed or simulated input hydrographs as + time series [cu m / s] + Note that identifiers in time series correspond to + InflowPoints map (also optional) + + + + + + + + + ************************************************************** + PF REPORTING OPTION + ************************************************************** + + + + + Maximum capillary head [cm]. This value is used if Theta equals residual soil + moisture content (value of HeadMax is arbitrary). Only needed for pF computation, + otherwise doesn't influence model results at all) + + + + + PF MAPS + + + + + Reported pF soil layer 1a, other fraction + + + + + + Reported pF soil layer 1b, other fraction + + + + + + Reported pF soil layer 2, other fraction + + + + + + Reported pF soil layer 1a, forest fraction + + + + + + Reported pF soil layer 1b, forest fraction + + + + + + Reported pF layer 2, forest fraction + + + + + + Reported pF soil layer 1a, irrigation fraction + + + + + + Reported pF soil layer 1b, irrigation fraction + + + + + + Reported pF soil layer 2, irrigation fraction + + + + + + + + + + + + + + + + + + + This is necessary when using projected coordinates (x,y) + + + + + + + + + + + Clone map + + + + + + netcdf template used to copy metadata information for writing netcdf + + + + + + latitude map to be used for snow/ice modelling + + + + + + + ************************************************************** + TIMESTEP RELATED PARAMETERS + ************************************************************** + + + + + Calendar convention + + + + + + Calendar day is back! + Calendar day number of 1st day in model run + e.g. 1st of January: 1; 1st of June 151 (or 152 in leap year) + Needed to read out LAI tables correctly + + + + + + timestep [seconds] (60*60*24) + + + + + + Sub time step used for kinematic wave channel routing [seconds] + Within the model,the smallest out of DtSecChannel and DtSec is used + + + + + + Number of first time step in simulation + + + + + + Number of last time step in simulation + + + + + + + + + ************************************************************** + PARAMETERS RELATED TO EVAPO(TRANSPI)RATION AND Interception + ************************************************************** + + Suggested parameterisation strategy: + + - leave all these parameters at their default values. + in some very special cases CalEvaporation may be set to some + value other than one + + + + + + Multiplier applied to potential precipitation rates [-] + + + + + + Multiplier applied to potential evapo(transpi)ration rates [-] + + + + + + Time constant for water in interception store [days] + + + + + + Average extinction coefficient [-] for the diffuse radiation flux + varies with crop from 0.4 to 1.1 (Goudriaan (1977)) + + + + + + Critical amount of available water (expressed in [mm/day]!), above which 'Days Since Last Rain' parameter is + set to 1 + + + + + + maximum depression storage for water on impervious surface + which is not immediatly causing surface runoff [mm] + + + + + + + + + + ************************************************************** + SNOW AND FROST RELATED PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - estimate SnowFactor from prior data (if available), otherwise use 1 + - use SnowMeltCoef as a calibration constant + - leave all other parameters at default + + + + + + Multiplier applied to precipitation that falls as snow + + + + + + Snowmelt coefficient [mm C-1 day-1)] + See also Martinec et al., 1998. + + + + + + range [mm C-1 day-1] of the seasonal variation + SnowMeltCoef is the average value + + + + + + Average temperature [deg C] at which snow melts + + + + + + Average temperature [deg C] below which precipitation is snow + + + + + + Temperature lapse rate with altitude [deg C / m] + + + + + + Daily decay coefficient [day-1], (Handbook of Hydrology, p. 7.28) + + + + + + Snow depth reduction coefficient, [cm-1], (HH, p. 7.28) + + + + + + Snow water equivalent, (based on snow density of 450 kg/m3) (e.g. Tarboton and Luce, 1996) + + + + + + Degree Days Frost Threshold (stops infiltration, percolation and capillary rise) + Molnau and Bissel found a value 56-85 for NW USA. + + + + + + + + + + ************************************************************** + INFILTRATION PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - use b_Xinanjiang and PowerPrefFlow as calibration constants + + + + + + Power in Xinanjiang distribution function [-] + + + + + + Power that controls increase of proportion of preferential + flow with increased soil moisture storage [-] + + + + + + + + + + ************************************************************** + GROUNDWATER RELATED PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - leave GwLossFraction at 0 unless prior information show groundwater loss + is important + - use all other parameters as calibration constants + + + + + + Time constant for water in upper zone [days] + + + + + + Time constant for water in lower zone [days] + This is the average time a water 'particle' remains in the reservoir + if we had a stationary system (average inflow=average outflow) + + + + + + Maximum rate of percolation going from the Upper to the Lower + response box [mm/day] + + + + + + Maximum percolation rate from the lower groundwater zone [mm/days]. GWLoss + it’s lost beyond the catchment boundaries or to deep groundwater systems. + A value of 0 (closed lower boundary) is recommended as a starting value. + + + + + + + + + + + ************************************************************** + EVAPORATION FROM OPEN WATER + ************************************************************** + + + + + + water use daily maps with a (in this case negative) volume of water [cu m/s] + + + + + + table with days for each water use maps + 1st column: range of days; 2nd column: suffix of wuse map + + + + + + Percentage of maximum extend of water + + + + + + Mask with Lakes from GLWD database + + + + + + maximum number of loops for calculating evaporation + = distance water is taken to satisfy the need of evaporation from open water + + - - -ReservoirStorage in M3 - - + + + Reported evaporation from open water [mm] + + - - -LakeStorage in M3 - - + + + Time series of upstream water evaporation from open water at gauging stations + + + + + + + + + + + + + ************************************************************** + TRANSMISSION LOSS PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - Use TransSub as calibration constant leave all other parameters at default values + + + + + + PBchange + Transmission loss function parameter + + + + + + PBchange + Transmission loss function parameter + + + + + + PBchange + downstream area taking into account for transmission loss + + + + + + upstream area + + + + + + + + + ************************************************************** + ROUTING PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - Use CalChanMan as calibration constant to fine-tune timing of + channel routing, leave all other parameters at default values + + + + + + Multiplier applied to Channel Manning's n + + + + + + Multiplier applied to Channel Manning's n for second routing line + + + + + + Multiplier applied to average Q to split into a second line of routing + + + + + + Multiplier applied to ChanBottomWidth + + + + + + Multiplier applied to ChanDepthThreshold + + + + + + Multiplier applied to ChanSdXdY + + + + + + kinematic wave parameter: 0.6 is for broad sheet flow + + + + + + Reference depth of overland flow [mm], used to compute + overland flow Alpha for kin. wave + + + + + + Minimum slope gradient (for kin. wave: slope cannot be 0) + + + + + + Minimum channel gradient (for kin. wave: slope cannot be 0) + + + + + + + + ************************************************************** + PARAMETERS RELATED TO NUMERICS + ************************************************************** + + Important: do not change, default value of 0.4 generally combines + sufficient numerical accuracy within a limited number of sub-steps + + + + + + Minimum value for Courant condition in soil moisture routine. Always less than or equal to 1. + Small values result in improved numerical accuracy, at the expense of increased + computing time (more sub-steps needed). If reported time series of soil moisture contain + large jumps, lowering CourantCrit should fix this + + + + + + + + + ************************************************************** + INITIAL CONDITIONS FOR THE WATER BALANCE MODEL + (can be either maps or single values) + ************************************************************** + + + + + $(PathMaps)/lzavin.map + $(PathInit)/lzavin.map + Reported map of average percolation rate from upper to + lower groundwater zone (reported for end of simulation) [mm/day] + + + + + + $(PathMaps)/avgdis.map + $(PathInit)/avgdis.map + CHANNEL split routing in two lines + Average discharge map [m3/s] + + + + + + if init condition are stored as netCDF with different time steps + this variable indicates which time step to use + Either as date e.g. 1/1/2010 or as number e.g. 5 + + + + + + Initial overland flow storage [m3], direct runoff fraction + + + + + + Initial overland flow storage [m3], other fraction + + + + + + Initial overland flow storage [m3], forest fraction + + + + + + initial snow depth in snow zone A [mm] + + + + + + initial snow depth in snow zone B [mm] + + + + + + initial snow depth in snow zone C [mm] + + + + + + initial Frost Index value [degC/day] + + + + + + cumulative interception [mm] + + + + + + water in groundwater upper store [mm] + + + + + + days since last rainfall + + + + + + + + ************************************************************** + The following variables can also be initialized in the model + internally. if you want this to happen set them to bogus value + of -9999 + ************************************************************** + + + + + water in groundwater lower store [mm] + -9999: use steady-state storage + + + + + + initial cross-sectional area of flow in channel[m2] + -9999: use half bankfull + + + + + + initial soil moisture content [mm3/mm3] layer 1a (superficial layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 1b (upper layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 2 (lower layer) + -9999: use field capacity values + + + + + + initial channel cross-section area [m2] for 2nd routing channel + -9999: use 0 + + + + + + initial lateral inflow for 1st line of routing [m2/s] + -9999: use 0 + + + + + + initial discharge [m3/s] from previous run for lakes, reservoirs and transmission loss + only needed for lakes reservoirs and transmission loss + -9999: use 0 + + + + + + + + + + ************************************************************** + INITIAL CONDITIONS FOREST + (maps or single values) + ************************************************************** + + + + + cumulative interception [mm] + + + + + + water in groundwater upper store [mm] + + + + + + days since last rainfall for forest fraction + + + + + + initial soil moisture content [mm3/mm3] layer 1a (superficial layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 1b (upper layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 2 (lower layer) + -9999: use field capacity values + + + + + + cumulative depression storage [mm] + + + + + + + + + ************************************************************** + INITIAL CONDITIONS IRRIGATION + (maps or single values) + ************************************************************** + + + + + cumulative interception [mm] + + + + + + water in groundwater upper store [mm] + + + + + + days since last rainfall for irrigation + + + + + + initial soil moisture content [mm3/mm3] layer 1a (superficial layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 1b (upper layer) + -9999: use field capacity values + + + + + + initial soil moisture content [mm3/mm3] layer 2 (lower layer) + -9999: use field capacity values + + + + + + + + + + + ************************************************************** + INPUT METEOROLOGICAL AND VEGETATION TIMESERIES AS MAPS + ************************************************************** + + + + + precipitation [mm/day] + + + + + + average daily temperature [C] + + + + + + daily reference evaporation (free water) [mm/day] + + + + + + daily reference evaporation (soil) [mm/day] + + + + + + daily reference evapotranspiration (crop) [mm/day] + + + + + + leaf area index [m2/m2] + + + + + + leaf area index [m2/m2] + + + + + + leaf area index [m2/m2] + + + + + + + + + ************************************************************** + INPUT WATER USE MAPS AND PARAMETERS + ************************************************************** + + + + + Domestic water abstraction daily maps [mm] + + + + + + Livestock water abstraction daily maps [mm] + + + + + + Energy water abstraction daily maps [mm] + + + + + + Industry water abstraction daily maps [mm] + + + + + + Consumptive Use (1-Recycling ratio) for livestock water use (0-1) + + + + + + Consumptive Use (1-Recycling ratio) for industrial water use (0-1) + + + + + + # Consumptive Use (1-Recycling ratio) for energy water use (0-1) + # Source: Torcellini et al. (2003) "Consumptive Use for US Power Production" + # map advised by Neil Edwards, Energy Industry + # the UK and small French rivers the consumptive use varies between 1:2 and 1:3, so 0.33-0.50 + # For plants along big rivers like Rhine and Danube the 0.025 is ok + EnergyConsumptiveUseFraction=0.025 + + + + + + Consumptive Use (1-Recycling ratio) for domestic water use (0-1) + Source: EEA (2005) State of Environment + + + + + + Fraction of leakage of public water supply (0=no leakage, 1=100% leakage) + + + + + + The water that is lost from leakage (lost) (0-1) + + + + + + Leakage reduction fraction (e.g. 50% = 0.5 as compared to current Leakage) (baseline=0, maximum=1) + + + + + + Water savings fraction (e.g. 10% = 0.1 as compared to current Use (baseline=0, maximum=1) + scenwsav.map + + + + + + Fraction of water re-used in industry (e.g. 50% = 0.5 = half of the water is re-used, used twice (baseline=0, maximum=1 + scenruse.map + + + + + + + Field application irrigation efficiency max 1, ~0.90 drip irrigation, ~0.75 sprinkling + + + + + + conveyance efficiency, around 0.80 for average channel + + + + + + IrrigationType (value between 0 and 1) is used here to distinguish between additional adding water until fieldcapacity (value set to 1) or not (value set to 0) + + + + + + Factor to irrigation water demand + More than the transpiration is added e.g to prevent salinisation + + + + + + Annual amount (m3) of treated wastewater reused for irrigation + + + + + + Number of days over which the annual amount of treated wastewater for irrigation is used + + + + + + Irrigation crop coefficient + + + + + + Irrigation crop group number + + + + + + Population + + + + + + Population + + + + + + Land Use Mask + + + + + + Reported water use [cu m/s], depending on the availability of discharge + + + + + + Time series of upstream water use at gauging stations + + + + + + Number of sub-steps needed for water use + routine + + + + + + maximum number of loops for calculating the use of water + = distance water is taken for water consuption + + + + + + percentage of water which remains in the channel + e.g. 0.2 -> 20 percent of discharge is not taken out + + + + + + + + + + + + + + ************************************************************** + RICE IRRIGATION + ************************************************************** + + + + + + water amount in mm per day + 10 mm for 10 days (total 10cm water) + + + + + + FAO: percolation for heavy clay soils: PERC = 2 mm/day + + + + + + map with starting day of the year + + + + + + map with starting day of the year + + + + + + map with starting day of the year + + + + + + map with starting day of the year + + + + + + + + + ************************************************************** + REPORTED OUTPUT MAPS + ************************************************************** + + + + + Reported discharge [cu m/s] (average over the model timesteps) (AvgDis) + + + + + + Reported Topsoil moisture [%] + + + + + + Reported Topsoil moisture [%] + + + + + + Reported discharge [cu m/s] at the end of a timestep + + + + + + Reported discharge [cu m/s] but cut by a discharge mask map + + + + + + Reported water level [m] % False by default + + + + + + STATE VARIABLES AT SELECTED TIME STEPS + ONLY FOR INITIALISATION OF SUCCEEDING RUNS + REPORTING TIME STEPS SET THROUGH "ReportSteps" OPTION + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported days since last rain + + + + + + Reported water depth + + + + + + Reported overland flow water volume [m3] for direct fraction on catchment surface + + + + + + Reported overland flow water volume [m3] for other fraction on catchment surface + + + + + + Reported overland flow water volume [m3] for forest fraction on catchment surface + + + + + + Reported chan cross-section area [m2] + + + + + + Reported snow cover in snow zone A [mm] + + + + + + Reported snow cover in snow zone B [mm] + + + + + + Reported snow cover in snow zone C [mm] + + + + + + Reported frost index [degC/day] + + + + + + Reported interception storage [mm] + + + + + + + Reported cross section area 2nd line of routing [m2] + + + + + + Reported channel side flow [m2/s] + + + + + + Reported istantaneous discharge at end of computation step [cu m/s] ChanQ + + + + + + Reported days since last rain + + + + + Reported interception storage [mm] + + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + cumulative interception [mm] + + + + + + Reported days since last rain + + + + + Reported interception storage [mm] + + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 2 (lowerupper layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + Reported transpiration maps, other fraction [mm] + + + + + + Reported transpiration maps, forest fraction [mm] + + + + + + Reported transpiration maps, irrigated fraction [mm] + + + + + + Reported transpiration maps, weighted sum over the fractions of each pixel [mm] + + + + + + + + + "END" MAPS, AKA REPORTED OUTPUT MAPS CALLED "END" + Same as above, but always at last time step + Support for these "end" maps will most likely be + discontinued some time soon + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported days since last rain + + + + + + Reported water depth [m] + + + + + + Reported overland flow water volume [m3] for direct fraction on catchment surface + + + + + + Reported overland flow water volume [m3] for other fraction on catchment surface + + + + + + Reported overland flow water volume [m3] for forest fraction on catchment surface + + + + + + Reported chan cross-section area [m2] + + + + + + Reported snow cover in snow zone A [mm] + + + + + + Reported snow cover in snow zone B [mm] + + + + + + Reported snow cover in snow zone C [mm] + + + + + + Reported frost index [degC/day] + + + + + + Reported interception storage [mm] + + + + + + Reported lake level [m] + + + + + + Reported lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value equal to PrevDischarge (ChanQ(t)) + + + + + + Reported lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value + + + + + + Reported lake storage [m3] + + + + + + + Reported reservoir filling [-] + + + + + + Reported cross section area 2nd line of rounting [m2] + + + + + + Reported channel side flow [m2/s] + + + + + + Reported istantaneous discharge at end of computation step [cu m/s] ChanQ + + + + + + Reported discharge [cu m/s] (average over the model timesteps) (AvgDis) + + + + + + Reported days since last rain + + + + + Reported interception storage [mm] + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + Reported volumetric soil moisture content for both + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + Reported volumetric soil moisture content for both + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + cumulative interception [mm] + + + + + + + Reported days since last rain + + + + + Reported interception storage [mm] + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + Reported volumetric soil moisture content for both + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 1c (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + + + + INDIVIDUAL DRIVING METEOROLOGICAL VARIABLES (AT EVERY TIME STEP) + ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS + SWITCHED ON (DEFAULT: ALL SWITCHED OFF) + Note reporting is done as a quantity per time step, not as + an intensity (as in meteo input!) + + + + + Precipitation [mm per time step] + + + + + + Average DAILY temperature [degrees C] + + + + + + Potential reference evapotranspiration [mm per time step] + + + + + + Potential evaporation from bare soil surface [mm per time step] + + + + + + Potential evaporation from open water surface [mm per time step] + + + + + + + + INDIVIDUAL STATE VARIABLES (AT EVERY TIME STEP) + ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS + SWITCHED ON (DEFAULT: ALL SWITCHED OFF) + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported storage in lower response box [mm] + + + + + + Reported total water storage [mm] + + + + + + Reported days since last rain + + + + + + Reported water depth [m] + + + + + + Reported overland flow water volume [m3] for direct runoff fraction on catchment surfac + + + + + + Reported overland flow water volume [m3] for other fraction on catchment surfac + + + + + + Reported overland flow water volume [m3] for forest fraction on catchment surfac + + + + + + Reported channel cross-section area [m2] + + + + + + Reported snow cover [mm] + + + + + + Reported frost index [degC/day] + + + + + + Reported interception storage, other fraction [mm] + + + + + + Reported days since last rain + + + + + + Reported interception storage, forest fraction [mm] + + + + + + Reported interception storage, irrigation fraction [mm] + + + + + + Reported volumetric soil moisture content for + soil layer 1a (superficial layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 1b (upper layer) [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 2 (lower layer) [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + Reported interception (depression) storage, direct runoff (impervious) fraction [mm] + + + + + + + INDIVIDUAL RATE VARIABLES (AT EVERY TIME STEP) + ONLY IF REPORTING OF EACH RESPECTIVE VARIABLE IS + SWITCHED ON (DEFAULT: ALL SWITCHED OFF) + + + + + Reported rain (excluding snow)[mm] + + + + + + Reported snow (excluding rain)[mm] + + + + + + Reported snowmelt [mm] + + + + + + Reported interception [mm] + + + + + + Reported transpiration [mm] + + + + + + Reported soil evaporation [mm] + + + + + + Reported evaporation of intercepted water [mm] + + + + + + Reported actual evapotranspiration [mm] + + + + + + Reported leaf drainage [mm] + + + + + + Reported infiltration [mm] + + + + + + Reported preferential flow [mm] + + + + + + Reported percolation from soil layer 1a to soil layer 1b, other fraction [mm] + + + + + + Reported percolation from soil layer 1a to soil layer 1b, forest fraction [mm] + + + + + + Reported percolation from soil layer 1a to soil layer 1b, irrigation fraction [mm] + + + + + + Reported percolation from soil layer 1b to soil layer 2, other fraction [mm] + + + + + + Reported percolation from soil layer 1b to soil layer 2, forest fraction [mm] + + + + + + Reported percolation from soil layer 1b to soil layer 2, irrigation fraction [mm] + + + + + + Reported seepage to groundwater(from soil layer 2 to groundwater), other fraction [mm] + + + + + + Reported seepage to groundwater(from soil layer 2 to groundwater), forest fraction [mm] + + + + + + Reported seepage to groundwater(from soil layer 2 to groundwater), irrigation fraction [mm] + + + + + + Reported seepage to groundwater(from soil layer 2 to groundwater), weighted sum over the fraction of each pixel [mm] + + + + + + Reported available groundwater LZ+ GWLoss [mm] + + + + + + Reported surface runoff [mm] + + + + + + Reported upper zone outflow [mm] + + + + + + Reported lower zone outflow [mm] + + + + + + Reported fast runoff = surface + UZ [mm] + + + + + + Reported GWloss [mm] + + + + + + Reported total runoff [mm] + + + + + + Reported total runoff that enters the channel: groundwater + surface runoff [mm] + + + + + + Reported Direct Runoff [mm] + + + + + + Reported FlowVelocityMSecMaps [m/s] + + + + + + Reported TravelDistance [m] + + + + + + Reported percolation from upper to lower groundwater zone [mm] + + + + + + + Reported evaporation of intercepted water [mm] + + + + + + Reported soil evaporation [mm] + + + + + + Reported leaf drainage Forest[mm] + + + + + + Reported interception forest [mm] + + + + + + Reported infiltration [mm] + + + + + + Reported transpiration forest [mm] + + + + + + Reported preferential flow [mm] + + + + + + Reported percolation from 1st to 2nd soil layer [mm] + + + + + + Reported seepage to groundwater[mm] + + + + + + Reported upper zone outflow [mm] + + + + + + Reported upper zone outflow [mm] + + + + + + Reported percolation from upper to lower zone [mm] + + + + + + Reported loss from lower zone [mm] + + + + + + Reported loss from lower zone [mm] + + + + + + Reported volumetric soil moisture content for + soil layer 1a [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 1b [V/V] [mm3/mm3] + + + + + + Reported volumetric soil moisture content for both + soil layer 2 [V/V] [mm3/mm3] + + + + + + Reported storage in upper response box [mm] + + + + + + + + + MISCELLANEOUS OUTPUT MAPS AND TIME SERIES + + + + + Time series of average percolation rate from upper to + lower groundwater zone (reported at sites) [mm/day] + + + + + + Time series of average percolation rate from upper to + lower groundwater zone (average for upstream area of each gauge) [mm/day] + + + + + + Reported number of days in simulation with soil moisture stress [days] + + + + + + Reported number of days in simulation with soil moisture stress for forest fraction [days] + + + + + + Reported soil transpiration reduction factor [-] for other landuse + values below 1 indicate soil moisture stress + + + + + + Reported soil transpiration reduction factor [-] + values below 1 indicate soil moisture stress + + + + + + + + + + + ************************************************************** + REPORTED OUTPUT TIME SERIES + ************************************************************** + + + + + Reported discharge [cu m/s] + + + + + + Reported discharge over last routing sub-step [cu m/s] + + + + + + Reported water level [m] + + + + + + OUTPUT AT SITES: STATE VARIABLES + + + + + Water depth on soil surface [mm] + + + + + + Depth of snow cover on soil surface [mm] + + + + + + Water stored as interception [mm] + + + + + + Soil moisture layer 1a [cu mm / cu mm] + + + + + + Soil moisture layer 1b [cu mm / cu mm] + + + + + + Soil moisture layer 2 [cu mm / cu mm] + + + + + + Soil moisture layer 1a [cu mm / cu mm] + + + + + + Soil moisture layer 1b [cu mm / cu mm] + + + + + + Soil moisture layer 2 [cu mm / cu mm] + + + + + + Storage in upper groundwater zone [mm] + + + + + + Storage in lower groundwater zone [mm] + + + + + + Days since last rain [days] + + + + + + Frost index [degC/day] + + + + + + Days since last rain [days] + + + + + + + + + OUTPUT AT SITES: RATE VARIABLES + + + + + Rain (excluding snow) [mm] + + + + + + Snow (excluding rain) [mm] + + + + + + Reported snowmelt [mm] + + + + + + Reported interception [mm] + + + + + + Reported transpiration [mm] + + + + + + Reported soil evaporation [mm] + + + + + + Reported evaporation from interception storage [mm] + + + + + + Reported leaf drainage [mm] + + + + + + Reported infiltration [mm] + + + + + + Reported preferential flow [mm] + + + + + + Reported percolation from 1st to 2nd soil layer [mm] + + + + + + Reported seepage to groundwater[mm] + + + + + + Reported surface runoff [mm] + + + + + + Reported upper zone outflow [mm] + + + + + + Reported lower zone outflow [mm] + + + + + + Reported total runoff [mm] + + + + + + Reported percolation from upper to lower zone [mm] + + + + + + Reported loss from lower zone [mm] + + + + + + + + AVERAGE VALUES OF METEOROLOGICAL FORCING VARIABLES + UPSTREAM OF GAUGES + (only if repMeteoUpsGauges option is activated) + + + + + Precipitation [mm/time step] + + + + + + Average temperature [deg C] + + + + + + Reference evapotranspiration [mm/time step] + + + + + + Potential soil evaporation [mm/time step] + + + + + + Potential open water evaporation [mm/time step] + + + + + + + + AVERAGE VALUES OF MODEL STATE VARIABLES + UPSTREAM OF GAUGES + (only if repStateUpsGauges option is activated) + + + + + Water depth on soil surface [mm] + + + + + + Depth of snow cover on soil surface [mm] + + + + + + Water stored as interception [mm] + + + + + + Storage in upper groundwater zone [mm] + + + + + + Storage in lower groundwater zone [mm] + + + + + + Days since last rain [days] + + + + + + Frost index [degC/day] + + + + + + Days since last rain [days] + + + + + + + + + AVERAGE VALUES OF MODEL RATE VARIABLES + UPSTREAM OF GAUGES + (only if repRateUpsGauges option is activated) + + + + + Rain (excluding snow) [mm] + + + + + + Snow (excluding rain) [mm] + + + + + + Snow melt [mm] + + + + + + Interception [mm] + + + + + + Actual transpiration [mm] + + + + + + Actual evaporation [mm] + + + + + + Evaporation from interception storage [mm] + + + + + + Leaf drainage [mm] + + + + + + Infiltration [mm] + + + + + + Preferential flow [mm] + + + + + + Percolation upper to lower soil layer [mm] + + + + + + Seepage from lower soil layer to groundwater [mm] + + + + + + Surface runoff [mm] + + + + + + Outflow from upper groundwater zone (to channel) [mm] + + + + + + Outflow from lower groundwater zone (to channel) [mm] + + + + + + Total runoff [mm] + + + + + + Reported percolation from upper to lower groundwater zone [mm] + + + + + + Reported loss from lower zone [mm] + + + + + + + + NUMERICS + + + + + Reported mass balance error at outlet [cu m] + + + + + + Reported mass balance error at outlet (as mm water slice) + + + + + + Reported mass balance error due to the split routing module, for each catchment [m3] + + + + + + Reported discharge error at the outlet as a consequence of the mass balance error within the split routing module, for each catchment [m3/s] + + + + + + Reported ratio between the mass balance error and the water volume storage, for each catchment [m3/m3] + + + + + + Average value of the sum of the fractions within a catchment: this value must be 1.0 in order to avoid mass balace errors! [-] + + + + + + Number of cells with Theta lower than + residual soil moisture content + (should ALWAYS be zero, if not something is + seriously wrong!!!) + TEST ONLY!! REMOVE OR HIDE IN FINAL VERSION!! + + + + + + Number of cells with Theta lower than + residual soil moisture content + (should ALWAYS be zero, if not something is + seriously wrong!!!) + TEST ONLY!! REMOVE OR HIDE IN FINAL VERSION!! + + + + + + Number of sub-steps needed for soil moisture + routine + + + + + + + + + + ************************************************************** + BASE INPUT MAPS AND TABLES + ************************************************************** + + + + + ************************************************************** + TOPOGRAPHY MAPS + ************************************************************** + + + + + $(PathMaps)/ldd.map + local drain direction map (1-9) + + + + + + slope gradient [-] (0.50 -> tangent=0.5, angle=26.5 degrees) + + + + + + Elevation standard deviation [m], i.e. altitude difference elevation within pixel. + Used for sub-pixel modelling of snow accumulation + and melt + + + + + + outlets.map + Nominal map with gauge locations (i.e cells for which simulated discharge + is written to file(1,2,3 etc) + + + + + + map with monitoring sites (1,2,3 etc) + + + + + + optional map with pixel length [m], only needed in case map attributes + are not in [m] (e.g. lat / lon systems) + + + + + + optional map with pixel area [m2], only needed in case map attributes + are not in [m] (e.g. lat / lon systems) + + + + + + + + + + ************************************************************** + SOIL PARAMETERS + ************************************************************** + + Suggested parameterisation strategy: + + - use b_Xinanjiang and PowerPrefFlow as calibration constants + + + + + + Soil depth for 1st layer: 1a (superficial layer) + Minimum Soil Depth [mm] for superficial soil layer + For Europe it is 50 mm + For Africa it is 200 mm + + + + + + Soil depth for 2nd layer: 1b (upper layer) + Minimum Soil Depth [mm] for second soil layer + + + + + + Soil depth for 2nd layer: 2 (lower layer) + Minimum Soil Depth [mm] for second soil layer + + + + + + Soil depth for 1st layer: 1a + Minimum Soil Depth [mm] for upper soil layer + For Europe it is 50 mm + For Africa it is 200 mm + + + + + + Soil depth for 2nd layer: 1b + Minimum Soil Depth [mm] for lower soil layer + + + + + + Soil depth for 2nd layer: 2 + Minimum Soil Depth [mm] for lower soil layer 300 + + + + + + + + + ************************************************************** + LAND USE RELATED MAPS AND TABLES + ************************************************************** + + + + + $(PathMapsLanduse)/fracsealed.map + urban area (0-1) + + + + + + stack of Direct Runoff fraction maps (0-1) + + + + + + $(PathMapsLanduse)/fracforest.map + forest fraction of a pixel (0-1) + + + + + + $(PathMapsLandUseChange)/ + stack of forest fraction maps (0-1) + + + + + + $(PathMapsLanduse)/fracwater.map + forest fraction of a pixel (0-1) + + + + + + $(PathMapsLandUseChange)/ + stack of water fraction maps (0-1) + + + + + + $(PathMapsLanduse)/fracother.map + forest fraction of a pixel (0-1) + + + + + + $(PathMapsLandUseChange)/ + stack of other fraction maps (0-1) + + + + + + $(PathMapsLanduse)/fracirrigated.map + irrigated area fraction of a pixel (0-1) + + + + + + $(PathMapsLandUseChange)/ + stack of Irrigation fraction maps (0-1) + + + + + + $(PathMapsLanduse)/fracDrained.map + drained fraction from irrigated area (0-1) + + + + + + rice fraction of a pixel (0-1) + + + + + + stack of rice fraction maps (0-1) + + + + + + groundwater used fraction of a pixel (0-1) + + + + + + NonConventionalWaterUsed (0-1) + + + + + + lake and reservoir water used, fraction of a pixel (0-1) + + + + + + $(PathMaps)/eflow.map + EFlowThreshold is map with m3/s discharge, e.g. the 10th percentile discharge of the baseline run + + + + + + table with crop coefficient for each land use; values ranging from 0.75 to 1.25; + source: Supit, p.83 CFET + + + + + + table with crop group number; table 6.1 and 6.2 in WOFOST 6.0, Supit, 1994: p. 86 + + + + + + $(PathMapsTables)/manngs_2000_250m.map + table with Manning's roughness [m^(1/3) s^(-1)] for each CORINE landcover class + + + + + + table with crop coefficient for each land use; values ranging from 0.75 to 1.25; + source: Supit, p.83 CFET + + + + + + table with crop group number; table 6.1 and 6.2 in WOFOST 6.0, Supit, 1994: p. 86 + + + + + + $(PathMapsTables)/manngs_2000_250m.map + table with Manning's roughness [m^(1/3) s^(-1)] for each CORINE landcover class + + + + + + + + + + ************************************************************** + Variable Channel NoSubStepChannel + ************************************************************** + + + + + UpArea do be included in max. celerity + + + + + + variable Number of sub steps for the kinematic wave routing + + + + + ************************************************************** + CHANNEL MAPS + ************************************************************** + + + + + Boolean map with value 1 at channel pixels and 0 at + all other pixels + IMPORTANT: IF NON-CHANNEL PIXELS HAVE MISSING VALUES + THEN THIS MAY RESULT IN INCORRECT RESULTS + + + + + + Channel gradient (fraction, dy/dx) + + + + + + Channel Manning's n [m^(1/3) s^(-1)] + + + + + + Channel length [m] + + + + + + Channel bottom width [m] + + + + + + Channel side slope, expressed as gradient + !! expressed as dx/dy !!! (NOT dy/dx, which would perhaps be more logical) + + + + + + Floodplain Width [m] + + + + + + Bankfull channel depth [m] + + + + + + + + ************************************************************** + TABLES WITH TOPSOIL SOIL PHYSICAL PARAMETERS (HYPRES) + Each parameter is defined for upper (1a and 1b) and + lower (2) soil layers + ************************************************************** + + + + + Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) + + + + + + Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) + + + + + + Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 2 (lower soil layer) + + + + + + Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) + + + + + + Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) + + + + + + Residual soil moisture content [V/V] [mm3/mm3] for soil layer 2 (lower soil layer) + + + + + + Pore-size index (Van Genuchten m and n are calculated from this) + Lambda is acually 1-n [-] + + + + + + Pore-size index (Van Genuchten m and n are calculated from this) + Lambda is acually 1-n [-] + + + + + + Pore-size index (Van Genuchten m and n are calculated from this) + Lambda is acually 1-n [-] + + + + + + Van Genuchten parameter Alpha [1/cm] for soil layer 1a (superficial soil layer) + + + + + + Van Genuchten parameter Alpha [1/cm] for soil layer 1b (upper soil layer) + + + + + + Van Genuchten parameter Alpha [1/cm] for soil layer 2 (lower soil layer) + + + + + + Saturated conductivity [mm/day] for soil layer 1a (superficial soil layer) + + + + + + Saturated conductivity [mm/day] for soil layer 1b (upper soil layer) + + + + + + Saturated conductivity [mm/day] for soil layer 2 (lower soil layer) + + + + + + + + ************************************************************** + TABLES WITH TOPSOIL SOIL PHYSICAL PARAMETERS (HYPRES) for Forest + Each parameter is defined for 1a and 1b + Normal parameter is taken for the lower soil layer + ************************************************************** + + + + + Soil moisture content at saturation [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) + + + + + + Soil moisture content at saturation [V/V] [mm3/mm3] + + + + + + Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1a (superficial soil layer) + + + + + + Residual soil moisture content [V/V] [mm3/mm3] for soil layer 1b (upper soil layer) + + + + + + Pore-size index (Van Genuchten m and n are calculated from this) for soil layer 1a (superficial soil layer) + Lambda is acually 1-n [-] for soil layer 1b (upper soil layer) + + + + + + Pore-size index (Van Genuchten m and n are calculated from this) + Lambda is acually 1-n [-] for soil layer 1b (upper soil layer) + + + + + + Van Genuchten parameter Alpha [1/cm] for soil layer 1a (superficial soil layer) + + + + + + Van Genuchten parameter Alpha [1/cm] for soil layer 1b (upper soil layer) + + + + + + Saturated conductivity [mm/day] for soil layer 1a (superficial soil layer) + + + + + + Saturated conductivity [mm/day] for soil layer 1b (upper soil layer) + + + + + + + + + ************************************************************** + RESERVOIRS (if used ) + Input maps + ************************************************************** + + + + + Sub time step used for reservoir simulation [s]. Within the model, + the smallest out of DtSecReservoirs and DtSec is used. + + + + + + Map with location of reservoirs (number) + + + + + + Initial reservoir storage (fraction) + + + + + Input tables + + + + + Total reservoir storage capacity + Units: m³ + + + + + + Reservoir inflow associated with the 100-year return period. + It is modified by a calibration parameter (`ReservoirFloodOutflowFactor`) to + define the inflow above which the reservoir switches to flood control mode + Units: m³/s + + + + + + Reservoir average inflow used to define the normal reservoir release + Units: m³/s + + + + + + Minimum reservoir release: + Units: m³/s + + + + + Output time series + + + + + Output TSS file with the simulated reservoir inflow [m³/s] + + + + + + Output TSS file with the simulated reservoir outflow [m³/s] + + + + + + Output TSS file with the simulated reservoir filling (fraction of total storage) [-] + + + + + + Output TSS file with the simulated reservoir storage [m3] + + + + + + Output map(s) (NetCDF format) with reservoir filling (fraction of total storage) [-] + + + + + + Fraction of the total reservoir storage above which the reservoirs enters + the flood control zone. + + + + + + Factor of the 100-year return inflow that defines a flood event, i.e., the + reservoir routine switches to flood control mode. + + + + + + + + + ************************************************************** + LAKES (if used ) + Input maps + ************************************************************** + + + + + Map with location of lakes + + + + + + Initial lake level [m] + -9999 sets initial value to steady-state level + + + + + + Lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value equal to PrevDischarge (ChanQ(t)) + + + + + + Lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value + + + + + + Estimate of average net inflow into lake (=inflow - evaporation) [m3 / s] + Used to calculated steady-state lake level in case LakeInitialLevelValue + is set to -9999 + + + + + Input tables + + + + + Lake surface area [m2] + + + + + + Lake parameter A [m/s] + + + + + + Multiplier applied to the lake parameter A + + + + + Output time series + + + + + Output timeseries file with lake inflow [m3 /s] + + + + + + Output timeseries file with lake outflow [m3 /s] + + + + + + Output timeseries file with lake level [m] + + + + + + Output map(s) with lake level [m] + + + + + + Output map with lake inflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value equal to PrevDischarge (ChanQ(t)) + + + + + + Output map with lake outflow at previous routing sub-step (ChanQ(t-1)) [m3/s] + -9999 sets initial value + + + + + + + + + + ************************************************************** + POLDERS(if used) + ************************************************************** + + + + + Weir constant (fixed) [-] + + + + + + Map with polder locations + + + + + + Initial water level in polders [m] + + + + + + Polder maximum storage capacity [cu m] + + + + + + Area of polder [sq m] + + + + + + Width of polder outlet/inlet [m] + + + + + + Polder bottom level, measured from channel bottom [m] + + + + + + Time step at which polder opens in case of regulated polder (use bogus value of -9999 in table in case of unregulated polder) + + + + + + Time step at which water stored in polder is released again(use bogus value of -9999 in table in case of unregulated polder) + + + + + + name of output TSS file with polder flux [cu m / s]. Positive for flow from channel to polder, negative for polder to channel + + + + + + name of output TSS file with polder level [m] + + + + + + name of output map(s) with polder level + + + + + + + + + ************************************************************** + INFLOW HYDROGRAPH (if used) + ************************************************************** + + + + + OPTIONAL: nominal map with locations of (measured) + inflow hydrographs + + + + + + Observed or simulated input hydrographs as + time series [m3 / s] + Note that identifiers in time series correspond to + InflowPoints map (also optional) + + + + + + + + ************************************************************** + DYNAMIC WAVE(if used) + ************************************************************** + + + + + Critical Courant number for dynamic wave + value between 0-1 (smaller values result in greater numerical accuracy, + but also increase computational time) + + + + + + Constant head [m] at most downstream pixel (relative to altitude + at most downstream pixel) + + + + + + Boolean map with value 1 at channel pixels where dynamic wave is + used, and 0 at all other pixels + + + + + + Channel bottom level [m] + + + + + + Nominal map with channel cross section IDs + + + + + + Table with cross section parameters (H,A,P) + + + + + + + + ************************************************************** + PF REPORTING (if used) + ************************************************************** + + + + PF PARAMETERS + + + + + Maximum capillary head [cm]. This value is used if Theta equals residual soil + moisture content (value of HeadMax is arbitrary). Only needed for pF computation, + otherwise doesn't influence model results at all) + + + + + PF MAPS + + + + + Reported pF upper soil layer [-] + + + + + + Reported pF lower soil layer [-] + + + + + + Reported pF lower soil layer [-] + + + + + + Reported pF upper soil layer [-] + + + + + + Reported pF lower soil layer [-] + + + + + PF TIMESERIES, VALUES AT SITES + + + + + Reported pF upper soil layer [-] + + + + + + Reported pF lower soil layer [-] + + + + + + + Reported pF upper soil layer [-] + + + + + + Reported pF lower soil layer [-] + + + + + PF TIMESERIES, AVERAGE VALUES UPSTREAM OF GAUGES + + + + + Reported pF upper soil layer [-] + + + + + Reported pF lower soil layer [-] + + + + + Reported pF upper soil layer [-] + + + + + Reported pF lower soil layer [-] + + + + + + + + + + + ************************************************************** + Ad'a addition + ************************************************************** + + + + + threshold value below which there is no outflow to the channel [mm] + + + + + + length of the window used to smooth the LZ zone [number of cells] + + + + + + map of aquifers (0/1), used to smoothen LZ near extraction areas + + + + + + + ************************************************************** + Water demand output maps + ************************************************************** + + + + + day of the year when the yearly endcalculation is done e.g. 31/10/xxxx = 304 + + + + + + + TotalAbstractionFromGroundwater [mm] + + + + + + TotalAbstractionFromSurfaceWater [mm] + + + + + + TotalAbstractionFromSurfaceWater [mm] summed up for water regions + + + + + + Total Abstraction From SurfaceWater and Groundwater [mm] summed up for water regions, montly values + + + + + + TotalPaddyRiceIrrigationAbstraction [m3] + + + + + + Water Exploitation Index - Consumption; for water regions (this is the official EU WEI+): consumption / internal and external availability + + + + + + Water Exploitation Index - Abstraction; for water regions: abstraction / internal and external availability + + + + + + Water Exploitation Index - Demand; for water regions: demand / internal and external availability + + + + + + Water Exploitation Index - Consumption; for water regions + + + + + + Internal available water + + + + + + External available water + + + + + + Region Water Consumption + + + + + + Region Water Consumption + + + + + + Reservoir and Lake storage in m3 at end of month + + + + + + Reservoir and Lake abstraction in m3 + + + + + + Irrigation water shortage in m3 for month + + + + + + Surface water availability in m3 for potential irrigation for each day + + + + + + Monthly evapotranspiration deficit in mm + + + + + + Monthly evapotranspiration deficit in mm + + + + + + Monthly evapotranspiration deficit in mm + + + + + + Monthly Water Dependency Index (0-1) (De Roo 2015) + WDI = Upstream Inflow Actually Used / Total Water Demand + Values close to 1 give extreme dependency on upstream water + + + + + + Monthly Water Security Index (0-1) (De Roo 2015) + WSI = Upstream Inflow Actually Used / Upstream Inflow Available + Values close to 1 give extreme vulnerability to upstream water + + + + + + Monthly Water Sustainability Index (0-1) (De Roo 2015) + WTI = 1-SurfaceWaterDeficit / TotalWaterDemand + Values of 1 indicate complete sustainable conditions, no water deficit + Values less than 1 indicate that considerable deep groundwater resources or desalinated water is used + + + + + + Monthly Falkenmark 1 Index (tochanm3) + + + + + + Monthly Falkenmark 2 Index (tochanm3+reservoirlakeabstraction) + + + + + + Monthly Falkenmark 3 Index (tochanm3+reservoirlakeabstraction+externalinflow) + + + + + + + Abstraction from groundwater in m3 per timestep + + + + + + Abstraction from surface water in m3 per timestep + + + + + + Region abstraction from surface water in m3 per timestep + + + + + + Region Total Abstraction From Lakes and Reservoirs in m3, per timestep + + + + + + Lake Abstraction per timestep in m3 + + + + + + ReservoirAbstraction per timestep in M3 + + - - -AreatotalIrrigationUseM3 - - + + + ReservoirStorage in M3 + + - - -FractionAbstractedFromChannels - - + + + LakeStorage in M3 + + - - -EFlowIndicator (1 on day with ChanQ smaller than EflowThreshold, 0 on normal days) - - + + + AreatotalIrrigationUseM3 + + - + + + FractionAbstractedFromChannels + + - + + + EFlowIndicator (1 on day with ChanQ smaller than EflowThreshold, 0 on normal days) + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + - - -************************************************************** -Peter's addition -************************************************************** - - - -[mm] - - + + + ************************************************************** + Peter's addition + ************************************************************** + - - -[mm] - - - - -[mm] - - + + + [mm] + + - + + + [mm] + + + + + [mm] + + - + - - + - -areamap MaskMap; -timer StepStart StepEnd 1; -ReportSteps=$(ReportSteps); - + + + + areamap MaskMap; + timer StepStart StepEnd 1; + ReportSteps=$(ReportSteps); + diff --git a/tests/data/LF_ETRS89_UseCase/settings/base.xml b/tests/data/LF_ETRS89_UseCase/settings/base.xml index 1d2f1b58..2ac0bd40 100644 --- a/tests/data/LF_ETRS89_UseCase/settings/base.xml +++ b/tests/data/LF_ETRS89_UseCase/settings/base.xml @@ -26,7 +26,7 @@ - + # report gauges and sites @@ -95,7 +95,7 @@ The option "OutputMapsChunks" may take the following values: - - "[positive integer number]" : Dump outputs to disk every X steps (default 1) + - "[positive integer number]" : Dump outputs to disk every X steps (default 1) @@ -108,7 +108,7 @@ - + @@ -2195,14 +2198,6 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - - - table with days for each LAI maps - 1st column: range of days; 2nd column: suffix of LAI map - - - - @@ -2212,13 +2207,6 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT ************************************************************** - - - table with days for each water use maps - 1st column: range of days; 2nd column: suffix of wuse map - - - Domestic water abstraction daily maps [mm] @@ -2332,18 +2320,18 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT More than the transpiration is added e.g to prevent salinisation - - - - Annual amount (m3) of treated wastewater reused for irrigation - + + + + Annual amount (m3) of treated wastewater reused for irrigation + - - + + - Number of days over which the annual amount of treated wastewater for irrigation is used - - + Number of days over which the annual amount of treated wastewater for irrigation is used + + @@ -4513,56 +4501,42 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - + Initial reservoir storage (fraction) - Input tables - + Total reservoir storage capacity [cu m] - - - Conservative reservoir storage (fraction, typically 0.07) - - - - - - Normal reservoir storage limit (fraction, typically 0.65) - - - - - - Flood reservoir storage limit (fraction, typically 0.90) - - - - + - Non damaging reservoir outflow Q [cu m / s] + Reservoir inflow associated with the 100-year return period. + It is modified by a calibration parameter (`ReservoirFloodOutflowFactor`) to + define the inflow above which the reservoir switches to flood control mode + Units: m³/s - + - Normal outflow Q [cu m / s] + Reservoir average inflow used to define the normal reservoir release + Units: m³/s - + - Minimum reservoir outflow Q [cu m / s] + Minimum reservoir release: + Units: m³/s @@ -4601,17 +4575,17 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - + - adjusting the balance between normal and flood storage - big values (= closer to 1.0 = close to flood) results in keeping the outflow longer at rnormq + Fraction of the total reservoir storage above which the reservoirs enters + the flood control zone. - + - Reservoir rnormq (normal outflow) - fraction of the value in table rnormq.txt range: 0.5 - 2 + Factor of the 100-year return inflow that defines a flood event, i.e., the + reservoir routine switches to flood control mode. diff --git a/tests/data/LF_lat_lon_UseCase/run_lat_lon.xml b/tests/data/LF_lat_lon_UseCase/run_lat_lon.xml index 089bfeee..b6a32893 100644 --- a/tests/data/LF_lat_lon_UseCase/run_lat_lon.xml +++ b/tests/data/LF_lat_lon_UseCase/run_lat_lon.xml @@ -1,13 +1,13 @@ - + @@ -2160,14 +2163,6 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - - - table with days for each LAI maps - 1st column: range of days; 2nd column: suffix of LAI map - - - - @@ -2177,13 +2172,6 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT ************************************************************** - - - table with days for each water use maps - 1st column: range of days; 2nd column: suffix of wuse map - - - Domestic water abstraction daily maps [mm] @@ -2297,18 +2285,18 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT More than the transpiration is added e.g to prevent salinisation - - - - Annual amount (m3) of treated wastewater reused for irrigation - + + + + Annual amount (m3) of treated wastewater reused for irrigation + - - + + - Number of days over which the annual amount of treated wastewater for irrigation is used - - + Number of days over which the annual amount of treated wastewater for irrigation is used + + @@ -3424,7 +3412,7 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT Reported discharge [cu m/s] - + Reported discharge over last routing sub-step [cu m/s] @@ -4477,7 +4465,7 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - + Initial reservoir storage (fraction) @@ -4488,45 +4476,32 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT Input tables - + Total reservoir storage capacity [cu m] - - - Conservative reservoir storage (fraction, typically 0.07) - - - - - - Normal reservoir storage limit (fraction, typically 0.65) - - - - - - Flood reservoir storage limit (fraction, typically 0.90) - - - - + - Non damaging reservoir outflow Q [cu m / s] + Reservoir inflow associated with the 100-year return period. + It is modified by a calibration parameter (`ReservoirFloodOutflowFactor`) to + define the inflow above which the reservoir switches to flood control mode + Units: m³/s - + - Normal outflow Q [cu m / s] + Reservoir average inflow used to define the normal reservoir release + Units: m³/s - + - Minimum reservoir outflow Q [cu m / s] + Minimum reservoir release: + Units: m³/s @@ -4565,17 +4540,17 @@ LFBINDING: MORE LOW-LEVEL CONTROL OVER MODEL IN- AND OUTPUT - + - adjusting the balance between normal and flood storage - big values (= closer to 1.0 = close to flood) results in keeping the outflow longer at rnormq + Fraction of the total reservoir storage above which the reservoirs enters + the flood control zone. - + - Reservoir rnormq (normal outflow) - fraction of the value in table rnormq.txt range: 0.5 - 2 + Factor of the 100-year return inflow that defines a flood event, i.e., the + reservoir routine switches to flood control mode. diff --git a/tests/test_options.py b/tests/test_options.py index 69da6efb..451dc2af 100644 --- a/tests/test_options.py +++ b/tests/test_options.py @@ -104,8 +104,8 @@ def test_reservoirs_only(self, mocker): mock_api.side_effect = self.dummyloadmap mocker.patch('lisflood.hydrological_modules.reservoir.loadmap', new=mock_api) lisfloodexe(settings) - calls = [call('ReservoirSites'), call('ReservoirSites', pcr=True), call('adjust_Normal_Flood'), - call('ReservoirRnormqMult'), call('ReservoirInitialFillValue')] + calls = [call('ReservoirSites'), call('ReservoirSites', pcr=True), call('UpAreaTrans'), + call('ReservoirFloodOutflowFactor'), call('ReservoirInitialFill')] lisflood.hydrological_modules.reservoir.loadmap.assert_has_calls(calls) def test_lakes_only(self, mocker):