User Tools

Site Tools


start:hype_model_description:hype_routing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
start:hype_model_description:hype_routing [2019/12/17 15:48]
cpers [Basic assumptions]
start:hype_model_description:hype_routing [2021/04/15 08:01]
cpers [Main river]
Line 3: Line 3:
 ===== Basic assumptions ===== ===== Basic assumptions =====
  
 +The HYPE model simulates most lakes and rivers in a conceptual way. The HYPE model can contain two types of rivers, local river and main river, and two types of lakes, local lakes and outlet lakes (Figure 1). The local river represent all ditches, streams, rivers within a subbasin that recieve only runoff within the subbasin. It is modelled as one conceptual river with a length, regardless of the actual distance runoff from different land has to travel through the subbasin. Similarly a local lake represents all lakes within a subbasin receiving inflow only from within the subbasin. The modelled local lake recieves a fraction of the flow in the local river. The fraction is defined as a fraction of the subbasin area. The main river is the river part(s) of a subbasin that water from upstream subbasins flows through. Depending on subbasin delieation it may be clearly defined or represent several tributaries that comes to the subbasin outlet. Finally the modelled outlet lake represents a lake located at the outlet of a subbasin.
  
-The HYPE model can contain two types of rivers, local stream and main river, and two types of lakes, local lakes and outlet lakes (Figure 1). Local and main rivers are present in all subbasins and the length of each is calculated as the square root of the subbasin area. The length of the watercourses can be given as input. The river can be a SLC class and is then given an area, but rivers can also be one-dimensional (i.e. no fraction of the subbasin area are occupied by the river and no precipitation added to the river). All local runoff ​is entering ​the local river. Local lakes (ilake) receive a portion of the local runoff. The flow leaving the local river (including flow from local lakegoes to the main river of the same subbasin. If there are upstream subbasins their flow is added to the local flow when both flows flow into the main river. Outlet lakes (olake) receive the outflow from the main river, i.e. all upstream and local flows.+Local and main rivers are present in all subbasins and the length of each watercourse ​is calculated as the square root of the subbasin area, unless it is given as input. The river can be a SLC class and has then an surface ​area, but rivers can also be one-dimensional (i.e. no fraction of the subbasin area are occupied by the river and no precipitation added to the river). All runoff ​enters ​the local river. Local lakes (ilake) receive a portion of the local flow. The flow leaving the local river and the outflow ​from local lakegoes to the main river of the same subbasin. If there are upstream subbasins their flow is added to the main river together with the local flow. Outlet lakes (olake) receive the outflow from the main river, i.e. all upstream and local flows.
  
-|{{:​start:​hype_model_description:​lakeriveroverview.png?​400|}}| +| {{:​start:​hype_model_description:​lakeriveroverview.png?​400}} ​                                                ​
-|Figure 1: Schematic representation of streams and lakes HYPE, and the link between them.|+| Figure 1: Schematic representation of streams and lakes in a subbasin of HYPE, and the links between them.  |
  
 The two lake types are separate classes. The lake classes have characteristics such as land use and soil type, which are defined together with the other classes'​ characteristics (in GeoClass.txt). Precipitation,​ atmospheric deposition and evaporation of rivers and lakes are calculated first, while river flow and inflow, transformation processes and the outflow of the lakes is calculated thereafter. Lakes and rivers are calculated in the model’s routing part after all classes are calculated for the subbasin. ​ The two lake types are separate classes. The lake classes have characteristics such as land use and soil type, which are defined together with the other classes'​ characteristics (in GeoClass.txt). Precipitation,​ atmospheric deposition and evaporation of rivers and lakes are calculated first, while river flow and inflow, transformation processes and the outflow of the lakes is calculated thereafter. Lakes and rivers are calculated in the model’s routing part after all classes are calculated for the subbasin. ​
  
-An outlet lake can be part of a larger lake. It is then called a lake basin. Lake basins are olakes in nearby subbasins. Outlet lakes that are not lake basins are referred to below as simple outlet lakes+An outlet lake can be part of a larger lake. It is then called a lake basin. Lake basins are olakes in nearby subbasins. ​
  
-A simple outlet lake has a threshold. The outflow ends if the water level drops below the threshold. Lake mean depth below the threshold is specified in GeoData.txt or LakeData.txt as //​lake_depth//​ in meters. Lake depth can also be set by parameters, i.e general parameter //gldepo// or olake region parameter //​olldepth//​. ​The threshold is also the the water level of the lake at the start of a simulation. The current water level is denoted ​as //wlm// in Fig. 2. For printing, the outlet lake water level (output variable //wcom//) is calculated ​in meters and you can set a reference level (//w0ref//) in LakeData.txt ​to get the same height system as any observations of the lake's water level. ​The lake’s ​//w0ref// is added to the water level above the threshold. ​HYPE assumes the lake has vertical sides in the calculations,​ thus the observed variation may be larger than the simulated variation. It is therefore possible to adjust the output //wcom// (and //​wcav//​) ​for the actual amplitude of the regulation volume (//wamp//). This will make the simulated and recorded water stage comparable below the threshold for a regulated lake. +A simple outlet lake has a threshold. The outflow ends if the water level drops below the threshold. Lake mean depth below the threshold is specified in GeoData.txt or LakeData.txt as //​lake_depth//​ in meters. Lake depth can also be set by parameters, i.e general parameter //gldepo// or olake region parameter //​olldepth//​. ​At the start of a simulation ​the water depth of the lake is set to be at the threshold. The current water depth, ​denoted //wlm// in Fig. 2, can be above or below the threshold 
 + 
 +For output, the outlet lake water level (output variable //wcom//) is given in a user set reference system. The reference level is used to get the same height system as any observations of the lake's water level. ​It uses the unit of meter, and the reference level (//w0ref//) gives the level of the threshold in the reference system (Fig. 2). The output //wcom// is calculated as the water level above the threshold ​plus //w0ref//A regulated ​lake (dam) has two thresholds. The distance between the thresholds are determined by the regulation volume (//​regvol//​) of the dam with the assumption that the dam has constant area with depth. In reality the area may decrease with depth. This means that the the observed variation ​in water level may be larger than the simulated variation. It is therefore possible to adjust the output //wcom// (and //​wcav//​) ​with the actual amplitude of the regulation volume (//wamp//). This will make the simulated and recorded water stage comparable below the upper threshold for a regulated lake. 
  
 |{{:​start:​hype_model_description:​outletlakewithvariables2.png?​400|}}| |{{:​start:​hype_model_description:​outletlakewithvariables2.png?​400|}}|
Line 19: Line 22:
  
 A local lake also has a threshold depth that is used as start value. The depth is given by general parameter //gldepi// and is then the same for all the local lakes, or by ilake region parameter //​illdepth//​. It is measured in meters. A percentage of flow from the local stream flows into the local lake. The rest of the local flow runs directly to main river watercourse. ​ A local lake also has a threshold depth that is used as start value. The depth is given by general parameter //gldepi// and is then the same for all the local lakes, or by ilake region parameter //​illdepth//​. It is measured in meters. A percentage of flow from the local stream flows into the local lake. The rest of the local flow runs directly to main river watercourse. ​
- 
-Using parameters, you can divide the lake into two parts, one with faster flows (FLP) and one with slower flows (SLP) (Figure 3). This function is used for the simulation of nutrients to simulate stratification,​ strangulation or other phenomena that may limit the mixing of a lake. With this feature, the flows through the lake follow the schedule below. The split is determined by the parameter //​deeplake//,​ which is the fraction of the lake's initial volume SLP, the remaining (varying) volume in the lake is the FLP. The parameter //​fastlake//​ determines where the outflow will be coming from. Default is that outflow is taken from the slow lake part. Increasing //​fastlake//​ will let the FLP contribute to outflow. //​Fastlake//​ equal to one gives the maximum contribution of FLP, and the outflow will be taken proportionally from the two lake parts according to their volume. 
- 
-|{{:​start:​hype_model_description:​division_of_lake.png?​400|}}| 
-|Figure 3: Division of a lake in two parts and water flows regarding lake.| 
  
 The streams may have a delay and an attenuation of the flow. The former shifts the peaks, but leaves them otherwise untouched, while the attenuation both delays and smooths out peaks. The streams have a dead volume in which the residence time of solutes is increased relative to the water and the concentration smoothed out further over time. The streams may have a delay and an attenuation of the flow. The former shifts the peaks, but leaves them otherwise untouched, while the attenuation both delays and smooths out peaks. The streams have a dead volume in which the residence time of solutes is increased relative to the water and the concentration smoothed out further over time.
Line 35: Line 33:
 |//​lake_depth//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]] or [[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]| |//​lake_depth//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]] or [[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]|
 |//gldepo, olldepth, gldepi, illdepth//​|[[start:​hype_file_reference:​par.txt|par.txt]]| |//gldepo, olldepth, gldepi, illdepth//​|[[start:​hype_file_reference:​par.txt|par.txt]]|
-|//w0ref, wamp//​|[[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]| +|//w0ref, regvol, wamp//​|[[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]| 
-|//​deeplake,​ fastlake//​|[[start:​hype_file_reference:​par.txt|par.txt]]|+
 ==== Links to relevant modules in the code ==== ==== Links to relevant modules in the code ====
  
Line 42: Line 40:
 | [[http://​hype.sourceforge.net/​doxy-html/​namespacemodelmodule.html|modelmodule (model_hype.f90)]]|initiate_model_state| | [[http://​hype.sourceforge.net/​doxy-html/​namespacemodelmodule.html|modelmodule (model_hype.f90)]]|initiate_model_state|
 | ::: |initiate_model | | ::: |initiate_model |
-| [[http://​hype.sourceforge.net/​doxy-html/​namespacesurfacewater__processes.html|surfacewater_processes (sw_proc.f90)]]|calculate_landarea_riverlength+| ::: |calculate_flow_from_undivided_lake| 
-| ::: |calculate_outflow_from_outlet_lake|+| ::: |calculate_flow_for_lakebasin_lake | 
 +| [[http://​hype.sourceforge.net/​doxy-html/​namespacesurfacewater__processes.html|surfacewater_processes (sw_proc.f90)]]| ​calculate_riverlength| 
 +| ::: | calculate_ilake_outflow ​
 +| ::: | calculate_outflow_from_outlet_lake ​
 +| ::: | calculate_outflow_from_lakebasin_lake ​|
 | ::: |remove_outflow_from_lake| | ::: |remove_outflow_from_lake|
-| ::: |calculate_flow_within_lake| 
 | ::: |calculate_branched_flow| | ::: |calculate_branched_flow|
-|[[http://​hype.sourceforge.net/​doxy-html/​namespacenpc__surfacewater__processes.html|npc_surfacewater_processes (npc_sw_proc.f90)]]|set_lake_slowwater_maxvolume |+
  
  
Line 60: Line 61:
 === Evaporation === === Evaporation ===
  
-If the river has an area (is a class), it evaporates and a new concentration is calculated. Normally the river area is constant over time, but with parameters a reduction of riverarea can be simulated for low volume/​flow. The reduced river area is also used for heat exchange calculations.+If the river has an area (is a class), it evaporates and a new concentration is calculated. The river is assumed to evaporate at potential evaporation rate (see [[start:​hype_model_description:​processes_above_ground#​evaporation|Processes above ground - Evaporation]]). Normally the river area is constant over time, but with parameters a reduction of riverarea can be simulated for low volume/​flow. The reduced river area is also used for heat exchange calculations.
  
 <m> frac_area = delim{lbrace}{ ​ <m> frac_area = delim{lbrace}{ ​
Line 73: Line 74:
 === Pure delay === === Pure delay ===
  
-The delay in the watercourse (//​transtime//​) in days is determined by the length of the watercourse (//​rivlen//​) and the water’s maximum velocity (//​rivvel//​). The maximum velocity is a general parameter with unit //m/s//. The delay in the river is dependent on subbasin land area if the default river length is used. The delay is a pure translation. The delay is divided into whole days (//ttday//) and parts of the day (//​ttpart//​).+The delay in the watercourse (//​transtime//​) in days is determined by the length of the watercourse (//​rivlen//​) and the water’s maximum velocity (//​rivvel//​). The maximum velocity is a general parameter with unit //m/s//. The delay in the river is dependent on subbasin land area if the default river length is used. The delay is a pure translation. The delay is divided into whole days (//ttday//) and parts of the day (//ttpart//) (if the time step is daily, other wise the division is made into whole and fractions of that time step). In the following description daily time step is assumed.
  
 <m> transtime = rivlen/​{rivvel*8.64*10^4} </m> <m> transtime = rivlen/​{rivvel*8.64*10^4} </m>
Line 79: Line 80:
 <m> ttday = INT(transtime) </m> <m> ttday = INT(transtime) </m>
  
-<m> ttpart = transtime - REAL(ttday</m>+<m> ttpart = transtime - ttday </m>
  
 The inflow of the river is stored in two arrays (//riverq// and //riverc//) until it is time for it to flow out of the river stretch. The outflow is weighted by using the parts of the time step (//​ttpart//​) that are to flow out during the time step. The inflow of the river is stored in two arrays (//riverq// and //riverc//) until it is time for it to flow out of the river stretch. The outflow is weighted by using the parts of the time step (//​ttpart//​) that are to flow out during the time step.
Line 151: Line 152:
 <m> e^{t{/}k} q(t) - q(0) = I~(e^{t{/​}k}-1) </m> <m> e^{t{/}k} q(t) - q(0) = I~(e^{t{/​}k}-1) </m>
  
-<m> q(t)=q(0)e^{-t{/​}k}+(1-e^{-t{/​}k}) </m>+<m> q(t)=q(0)e^{-t{/​}k}+I~(1-e^{-t{/​}k}) </m>
    
 Calculate //Q// for time step (the mean of //q(t)//) and replace the outflow with the  Calculate //Q// for time step (the mean of //q(t)//) and replace the outflow with the 
Line 160: Line 161:
 <m> {}= q(0) int {0} {1}{} e^{-t{/}k} dt + I~ int{0}{1}{} 1-e^{-t{/​}k} dt </m> <m> {}= q(0) int {0} {1}{} e^{-t{/}k} dt + I~ int{0}{1}{} 1-e^{-t{/​}k} dt </m>
  
-<m> {}= q(0)*(-k~(e^{-1{/​}k}-1))+I(1-0)-I~(-k~(e^{-1{/​}k}-1)) </m>+<m> {}= q(0)*({-}k~(e^{-1{/​}k}-1))+I(1-0)-I~({-k}~(e^{-1{/​}k}-1)) </m>
   ​   ​
   ​   ​
   ​   ​
-<m> {}= I~(e^{-1{/​}k}-1)~(kI - kq(0)) </m>+<m> {}= I+(e^{-1{/​}k}-1)~(kI - kq(0)) </m>
   ​   ​
   ​   ​
   ​   ​
-<m> Q=(I+(e^{-1{/​}k}-1))~(kI-S(0)) </m>+<m> Q=I+(e^{-1{/​}k}-1)~(kI-S(0)) </m>
  
    
Line 182: Line 183:
  
  
-Bank-full flow is used for erosion of particulate phosphorus in rivers (see Sedimentation). It is approximated by the second highest daily flow during the last year.+Bank-full flow is used for erosion of particulate phosphorus in rivers (see [[start:​hype_model_description:​hype_np_riv_lake#​sedimentation_resuspension|Sedimentation/​Resuspension]]). It is approximated by the second highest daily flow during the last year.
  
  
Line 198: Line 199:
 The flow in the main river is delayed and attenuated as described above. ​ The flow in the main river is delayed and attenuated as described above. ​
 The resulting effluent from the river flows to the outlet lake or to the next subbasin if there is no outlet lake.  The resulting effluent from the river flows to the outlet lake or to the next subbasin if there is no outlet lake. 
 +
 +If the main river length is zero, the inflows to the main river is added to form the main river outflow.
  
 === Inflow from upstream subbasins === === Inflow from upstream subbasins ===
  
-In input files it is given to which subbasin(s) the outflow from each subbasin flows. The upstream flow enters the main river of the downstream subbasin. Inflow into the main river of a subbasin is calculated by adding outflows from upstream areas. Concentrations are flow-weighted by their relative share. ​+In input files it is given to which subbasin(s) the outflow from each subbasin flows. The upstream flow enters the main river of the downstream subbasin. Inflow into the main river of a subbasin is calculated by adding outflows from upstream areas. Concentrations are flow-weighted by their relative share. ​The upstream flow enters the main river, except if the upstream subbasin has a lakebasin that is part of the downstream subbasin'​s lake. In this case the upstream lakebasin outflow goes directly into the downstream lakebasin.  
 + 
 +=== Hydraulic geometry to calculate water depth and velocity === 
 + 
 +River diagnostic variables can be calculated for the main river. A river water depth (//d//) and river velocity (//u//) can be calculated from hydraulic geometry for the main river and the calculated main river flow (//q//). In the case of updating of flow in a subbasin with no outlet lake, the updated (main river) flow is used. The equation coefficients are general parameters (//​c,​f,​k,​m//​). 
 + 
 +<m> d=c*q^f </​m>​ 
 + 
 +<m> u=k*q^m </​m>​ 
 +  
 +=== Rating curve to calculate river water level=== 
 + 
 +Given a continous equation for calculating water level from flow, the water level of a river (//wr//) can be calculated from the flow by the inverse of this rating curve. This method is used to calculate main river water level in HYPE. Three different types of river rating curve formulations can be used (//​TYPEofRRC//​).  
 + 
 +The first is a single rating curve with a threshold (//w0//) and the rating curve coefficients are input. The rating curve  
 + 
 +<m> q=k*(wr-w0)^p </​m>​ 
 + 
 +give coefficients //a// and //b// for the inverse equation: 
 + 
 +<m> a={1/​k}^{1/​p} ​ b=1/p </​m>​ 
 + 
 +<m> wr = a*q^b + w0 </​m>​ 
 + 
 +The second type uses two rating curves with the same threshold (//w0//); one for ice free condition and one for use when there is ice on the river. The transition between the rating curves is smoothed by scaling of the curves in a transition period. The scaling of rating curve parameters are determined by ice porosity and ice thickness (general model parameters). Between thresholds the influence of the ice curve increases linearly from zero to one. The minimum influence (of porosity and thickness) is used as the scaling weight of the winter curve during the transition period. If only parameters for the ice free curve are given as input, the same parameters is used for ice conditions except for the exponent (//p//) which is then set to one.  
 + 
 +The third type is for a sectorial rating curve. It has different rating curve coefficients for different sections of water level. The sections may not overlap or leave gaps in water level, even though small discrepancies is handled. The parameters and sections need to be chosen so that the whole curve is continous. Since the rating curves are used inverted in the code, the sections are turned into sectors of flow. The average of the flow given by the minimum water level of one curve and the maximum water level of another curve is taken as the actual limit between the two curves. This type does not handle ice curves. 
 + 
 +In addition to river water level described above, it is possible to calculate the water level in the scale of the local gauge. This could e.g. be in cm and with the zero of the gauge at other location than //w0// of the equation. The figure below show the relation between the different parameters.  
 + 
 +| {{:​start:​hype_model_description:​river rating curves.png?​600|}} | 
 +| Figure 3: Schematic representation of river water level. ​ | 
  
  
Line 214: Line 249:
 |Main river| |//​maindown//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]]| |Main river| |//​maindown//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]]|
 |:::| |//​branchid//​|[[start:​hype_file_reference:​branchdata.txt|BranchData.txt]]| |:::| |//​branchid//​|[[start:​hype_file_reference:​branchdata.txt|BranchData.txt]]|
 +|:::|//c, f, k, m// |//hygeomc, hygeomf, hygeomk, hygeomm//​|[[start:​hype_file_reference:​par.txt|par.txt]]|
 +|:::|  |//​ricew0por,​ ricew1por, ricew0ice, ricew1ice//​|:::​|
 +|:::|//k, p, w0// |//k, p, w0ref//​|[[start:​hype_file_reference:​RiverRatingCurve.txt|RiverRatingCurveData.txt]]|
 +|:::| |//wmin, wmax, gaugezero//​|:::​|
  
 ==== Links to relevant modules in the code ==== ==== Links to relevant modules in the code ====
Line 227: Line 266:
 |:::​|calc_qbank|bank-full flow| |:::​|calc_qbank|bank-full flow|
 |:::​|update_qbank |:::| |:::​|update_qbank |:::|
 +|:::​|river_water_level |main river| 
 +|:::​|local_water_level|:::​| 
 +|:::​|ice_on_river|:::​|
  
  
Line 236: Line 277:
 === Precipitation === === Precipitation ===
  
-Daily precipitation is added to the lake and a new concentration is calculated. Lakes are assumed to be completely mixed if the parameter //​deeplake//​ is not set to a value greater than zero.+Daily precipitation is added to the lake and a new concentration is calculated. Lakes are assumed to be completely mixed.
  
 === Evaporation === === Evaporation ===
  
-The lake is assumed to evaporate and a new concentration calculated.+The lake is assumed to evaporate ​at potential evaporation rate (see [[start:​hype_model_description:​processes_above_ground#​evaporation|Processes above ground - Evaporation]]) ​and a new concentration calculated. The actual evaporating area is reduced if the lake is (partly) ice covered. Ice is calculated in case water temperature (substance T2) is simulated.
  
 === Outflow with rating curve ==== === Outflow with rating curve ====
Line 251: Line 292:
 ==== Local lake (ilake) ==== ==== Local lake (ilake) ====
  
-The local lake has an initial volume which is determined by its area and threshold depth. The lake depth is determined by model parameters (//gldepi// or //​illdepth//​)). +The local lake has an initial volume which is determined by its area and threshold depth. The lake depth below the threshold ​is determined by model parameters (//gldepi// or //​illdepth//​). ​
  
-The inflow to the lake is a percentage of the flow in the local stream (//​icatch//​). The percentage is determined by the percentage of the subbasin area that drain to the lake. This percentage can be given as a fraction in GeoData.txt for each subbasin with an internal lake, or be given by a regional parameter ​//ilicatch//, or be given by a general parameter ​//gicatch//. If not set at all the default value is 1, i.e. the local river runs through the local lake. The flow from the local river is added to the lake. The lake water is assumed completely mixed if //deeplake = 0//+The inflow to the lake is a percentage of the flow in the local stream (//​icatch//​). The percentage is determined by the percentage of the subbasin area that drains ​to the lake. This percentage can be given as a fraction in GeoData.txt for each subbasin with an internal lake, or be given by a regional parameter ilicatch, or be given by a general parameter gicatch. If not set at all the default value is 1, i.e. the local river runs through the local lake. The flow from the local river is added to the lake. The lake water is assumed completely mixed. ​
  
 Water outflow is calculated with the universal rating curve using general or region specific model parameters. Water outflow is calculated with the universal rating curve using general or region specific model parameters.
 +
 +There is an alternative model for local lakes (a model option), the ilake connectivity model. The ilake connectivity model simulates the ilake as a chain of small connected lake sections (//lks//) with different height of their outflow threshold. Depending on water volume in the ilake one or several of the lake sections can be disconnected from the chain (zero outflow with water level below the threshold). The precipitation and evaporation are divided by the lake sections depending on their fraction of the ilake area, but the runoff from land area is divided by the lake sections depending on their fraction of the catchment area. In case the water level of a lake section is above its threshold, its outflow is calculated. The outflow of each lake section is calculated using the universal rating curve using general or region specific model parameters same as a simple ilake. The outflow of a lake section is of course also added to the receiving lake section before that one’s outflow is calculated. Depending on how far upstream from the last lake section of the chain there is inflow from the above lake section, that fraction of the ilake area is the ilake’s current connectivity. The catchment area of the lake sections above this border is the currently non-contributing catchment area.
  
  
Line 268: Line 311:
 If the water level (//wlm//) is higher than the threshold (//​lake_depth//​) the outflow is calculated with the following equation: If the water level (//wlm//) is higher than the threshold (//​lake_depth//​) the outflow is calculated with the following equation:
  
-<m> outflow = delim{lbrace}{matrix{3}{3}{{0} {,~for} {wlm<​lake_depth} {gratk*uparea^{grata}*ratcorr*(wlm-lake_depth)^{gratp}} {,~for} {grata>​0} {gratk*ratcorr*(wlm-lake_depth)^{gratp}} {,~for} {grata=0} }}{} </m>+<m> outflow = delim{lbrace}{matrix{3}{3}{{0} {,~for} {wlm<​lake_depth} {gratk*uparea^{grata}*corr*(wlm-lake_depth)^{gratp}} {,~for} {grata>​0} {gratk*corr*(wlm-lake_depth)^{gratp}} {,~for} {grata=0} }}{} </​m>​ 
 + 
 +<m> corr = 1+ratcorr ​</m>
  
 //gratk//, //gratp// and //grata// are general parameters that apply to all lakes in the model application. //ratcorr// is parameter region dependent model parameter for adjusting //gratk// to different regions. The upstream area (//​uparea//,​ <​m>​km^2</​m>​) is included in the equation if parameter //grata// is >0. If the water level is below the threshold then the outflow is zero. //gratk//, //gratp// and //grata// are general parameters that apply to all lakes in the model application. //ratcorr// is parameter region dependent model parameter for adjusting //gratk// to different regions. The upstream area (//​uparea//,​ <​m>​km^2</​m>​) is included in the equation if parameter //grata// is >0. If the water level is below the threshold then the outflow is zero.
Line 325: Line 370:
 == General preferred production flow == == General preferred production flow ==
  
-For all dams the general preferred production flow is calculated from input data on the dam. The flow that is preferred to be released from the dam today is then adjusted depending on purpose. The general production flow (//qprod//) may be constant or vary between two values per year. This is determined by the input variables //qprod1, qprod2, datum1// and //datum2//. Regulation period 1 between //datum1// and //datum2// has production flow //qprod1//, while the rest of the year has production flow //qprod2//. Not setting the dates gives the same production flow the whole year (//​qprod1//​). IF //qprod1// is not given //qprod// is estimated from the yearly average inflow of the dam, which is given as input data.+For all dams the general preferred production flow is calculated from input data on the dam. The flow that is preferred to be released from the dam today is then adjusted depending on purpose. The general production flow (//qprod//) may be constant or vary between two values per year. Typically it is estimated from the yearly average inflow of the dam, which is given as input data. It can alternatively be determined by input variables //qprod1, qprod2, datum1// and //datum2//, which then has to be estimated. Regulation period 1 between //datum1// and //datum2// has production flow //qprod1//, while the rest of the year has production flow //qprod2//. Not setting the dates gives the same production flow the whole year (//​qprod1//​). IF //qprod1// is not given //qprod// is estimated from the yearly average inflow of the dam, which is given as input data.
  
 The production flow may be reduced from this level when there is a low water level in the dam. The flow will be reduced linearly from full production flow for that time of year when water level is over the limit (//​limqprod//​ (percentage of volume)) to zero when no water is left in the dam over //wmin// level. The production flow may be reduced from this level when there is a low water level in the dam. The flow will be reduced linearly from full production flow for that time of year when water level is over the limit (//​limqprod//​ (percentage of volume)) to zero when no water is left in the dam over //wmin// level.
Line 426: Line 471:
  
  
-==== Outlet lake (olake) ​as a lake basin ====+==== Outlet lake as a multi-basin lake composed of lake basins ​====
  
-An olake can be part of a larger lake. It is then called a lake basin of the larger lake. Lake basins ​are treated differently if they are located within the lake or if they are the last onei.e. the one with the lake outflow+An olake can be part of a larger lake. It is then called a lake basin of the larger ​lake, which is called a multi-basin ​lake. A multi-basin lake is assumed to have equal water level in all lake basins. The lake basins can have different depths below the outflow thresholdand they all use the same threshold when the water level output is calculated (same reference).
  
 === Inflow === === Inflow ===
  
-A lake basin can get local inflow from upstream areas and from the regional groundwater. Inflow works in the same way as for a simple olake (see above).+A lake basin can recieve ​local inflow, ​inflow from upstream areas (that are not part of the same multi-basin lake) and inflow ​from regional groundwater. Inflow works in the same way as for a simple olake (see above).
  
 === Flow between lake basins === === Flow between lake basins ===
  
-Flow through a lake divided into lake basins occurs ​only in one direction according to the //maindown// (and possibly ​//branchdown//), no two-way exchange ​between lake basins ​is implementedFor upstream ​lake basins ​that run into another lake basin, ​all the water above the threshold ​is drained. The threshold ​of the lake (same as last lake basin) ​is used, not any internal threshold between ​lake basinsIf the lake water level (//wlm//) is higher than the threshold (//w0// or //wmin//) outflow is obtained.+All lake basins of a multi-basin lake are connected by the main downstream path. They can in addition have branches within the multi-basin lake, where a fraction of the flow then goes. Flow through a lake divided into lake basins ​can occurs in both direction according to the maindown (and possibly branchdown). The implementation prioritize flow from nearby lake basins and flow in the downstream direction when calculating the flow betweeen lake basins. The flow between ​the lake basins ​are calculate to reach an equal water levelNo internal threshold between ​lake basins ​is considered when the flows are calculated.  
 + 
 +The flow out of a lakebasin (to another ​lakebasin) is determined in several steps: 
 +  - First the net outflow of each lakebasin is calculated. It is calculated as the difference between the current water level of the lakebasin and the water level of the whole lake after outflow from the multi-basin lake. First the average water level of the multi-basin lake is calculatedand from this the outflow(s) of the lake. Considering these outflows leaving the lake, a new average ​water level is calculated that the lake will have after all flows between lakebasins have been moved. This is the water level compared to the water level of the lakebasin in this step. 
 +  - The flow out of a lakebasin is the netflow plus all inflows from other lakebasins. Theses inflows are outflows of other lakebasins. Starting upstream in the lake the inflows are added to the outflow to give the flow out of every lakebasin. Note that these flows can be negative.  
 +  - The last step is to actually move the water. Preferably we want water to move from one lakebasin to the nextwithout mixing with water incoming from lakebasins further upstream. This we want so that substances do not travel all the way to the lake outlet on one time stepTherefore we try to remove all outflows from the lakebasins before we add the removed ​water into the downstream lakebasins. This might not be possible so we keep track of how much we can't move and repeat the third step if necessary 
  
 === Outflow of lake composed of lake basins === === Outflow of lake composed of lake basins ===
  
  
-For the last lake basin outflow is estimated by a rating curve, either a specific equation or with the general equation, or by regulation routine. ​Since all the water (above threshold) in the lake (from all lake basins) accumulates in the last lake basin the water level cannot be used directly, but it is recalculated to calculate the outflow from the lake. The last lake basin water level (//wlm//) is scaled by the subbasin lake area (//area//) to the whole lake area (//​lakearea//​). If the calculated lake water level (//wlake//) is higher than the threshold (//​wthresh//​) the outflow is estimated by the rating curve. +The main outflow of the lake is assumed to be located in the last lake basin. Here outflow is estimated by a rating curve, either a specific equation or with the general equation, or by regulation routine. The threshold may be changing over the year as described in Section Two rating curves above. If the water level is below the threshold then the outflow is zero or if the production flow regulation is used there is production flow. See Section Production flow above. ​In addition the lake can have outflows out of the multi-basin lake from other lakebasins. These additional outflows are then the flow in the branch of these lakebasins. The outflow in a branch going out of the multi-basin lake is specified in LakeData for that lakebasin. It can be a rating curve or a production flow. If it is a production flow it uses the same thresholds as those for the main outflow of the multi-basin lake, i.e. //w0// and //wmin//
- +
-  wlake = (wlm – wthresh) * area / lakearea + wthresh +
-  outflow = rate * (wlake – wthresh)**exp +
- +
-The threshold may be changing over the year as described in Section Two rating curves above. If the water level is below the threshold then the outflow is zero or if the production flow regulation is used there is production flow. See Section Production flow above. ​Production ​flow is also applied on the recalculated water stage.+
  
 ==== Initalisation of lake volume ==== ==== Initalisation of lake volume ====
  
-Unless a starting state is given from a file, the lakes start the simulation filled with water to their outflow threshold. That means for ilakes and simple olakes ​a water level equal to //​lake_depth//​. Dams are filled to the dam's maximum elevation (equal to //​lake_depth//​),​ except for flood control dams which are initializied with an empty regulation volume. ​+Unless a starting state is given from a file, the lakes start the simulation filled with water to their outflow threshold. That means for most lakes a water level equal to //​lake_depth//​. Dams are filled to the dam's maximum elevation (equal to //​lake_depth//​),​ except for flood control dams which are initializied with an empty regulation volume. ​
  
 For lakes with outflow determined by a rating curve, the water level of the lake will be higher than the outflow threshold level. The equilibrium level will depend on the size of the inflow and the outflow rating curve parameters. Depending on the residence time of water in the lake it may take time for this level to be established,​ and until then the outflow of the lake will be simulated lower than it should be. Thus a spin-up time is needed for a model simulation. For lakes with outflow determined by a rating curve, the water level of the lake will be higher than the outflow threshold level. The equilibrium level will depend on the size of the inflow and the outflow rating curve parameters. Depending on the residence time of water in the lake it may take time for this level to be established,​ and until then the outflow of the lake will be simulated lower than it should be. Thus a spin-up time is needed for a model simulation.
Line 458: Line 503:
  
 ^Section ^Symbol ^Parameter/​Data ^File ^ ^Section ^Symbol ^Parameter/​Data ^File ^
-|Common lake processes| |//​deeplake//​|[[start:​hype_file_reference:​par.txt|par.txt]]| 
 |Local lake (ilake)| |//gldepi, illdepth, gratk, gratp, grata, ilratk, ilratp//​|[[start:​hype_file_reference:​par.txt|par.txt]]| |Local lake (ilake)| |//gldepi, illdepth, gratk, gratp, grata, ilratk, ilratp//​|[[start:​hype_file_reference:​par.txt|par.txt]]|
 |:::​|//​icatch//​|//​icatch//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]]| |:::​|//​icatch//​|//​icatch//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]]|
 |:::|::: |or //gicatch, illicatch//​|[[start:​hype_file_reference:​par.txt|par.txt]]| |:::|::: |or //gicatch, illicatch//​|[[start:​hype_file_reference:​par.txt|par.txt]]|
 +|:::| |//lks_num, lks_dp_N, lks_fi_N, lks_fa_N//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]]|
 |Simple outlet lake or dam (olake)|//​lake<​sub>​depth</​sub>//​|//​lake_depth//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]] or [[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]| |Simple outlet lake or dam (olake)|//​lake<​sub>​depth</​sub>//​|//​lake_depth//​|[[start:​hype_file_reference:​geodata.txt|GeoData.txt]] or [[start:​hype_file_reference:​lakedata.txt|LakeData.txt]] or [[start:​hype_file_reference:​damdata.txt|DamData.txt]]|
 |:::​|:::​|//​gldepo,​ olldepth//​|[[start:​hype_file_reference:​par.txt|par.txt]]| |:::​|:::​|//​gldepo,​ olldepth//​|[[start:​hype_file_reference:​par.txt|par.txt]]|
Line 474: Line 519:
 |Outlet lake with two outlets| |//​ldtype//​=5 or 6|[[start:​hype_file_reference:​lakedata.txt|LakeData.txt]]| |Outlet lake with two outlets| |//​ldtype//​=5 or 6|[[start:​hype_file_reference:​lakedata.txt|LakeData.txt]]|
 |:::| |//w0ref, maxQprod, minflow, obsflow//​|:::​| |:::| |//w0ref, maxQprod, minflow, obsflow//​|:::​|
-|Outlet lake (olake) as a lake basin| |//​ldtype//​=2,​ 3 or 4|[[start:​hype_file_reference:​lakedata.txt|LakeData.txt]]| +
-|:::​|//​lakearea//​|//​area//​|:::​|+
  
 ==== Links to relevant modules in the code ==== ==== Links to relevant modules in the code ====
Line 484: Line 528:
 |::: |average_flow_rating_curve|ouflow with rating curve| |::: |average_flow_rating_curve|ouflow with rating curve|
 |::: |calculate_ilake_outflow|local lake| |::: |calculate_ilake_outflow|local lake|
-|::: |calculate_outflow_from_outlet_lake|simple outlet lake| +|::: |calculate_ilakesection_outflow|:::|
-|::: |:::|outlet lake as a lakebasin| +
-|:::​|:::​|outlet lake with two outlets|+
 |:::​|set_general_rating_k|simple outlet lake| |:::​|set_general_rating_k|simple outlet lake|
-|:::|calculate_olake_waterstage|outlet lake as a lakebasin+|::: |calculate_outflow_from_outlet_lake calculate_branched_flow|simple ​outlet lake| 
-|:::|calculate_branched_flow|outlet lake with two outlets| +|:::|:::|outlet lake with two outlets| 
-|:::|calculate_branched_flow_new|:::|+|:::|calculate_lake_outlet_outflow|outlet lake with two outlets| 
 +|:::​|calculate_lakebasin_average_waterstage|outlet lake as multi-basin lake| 
 +|:::​|calculate_outflow_from_lakebasin_lake|:::​| 
 +|:::​|calculate_branched_flow|:::|
 |[[http://​hype.sourceforge.net/​doxy-html/​namespacemodelmodule.html|modelmodule (model_hype.f90)]] |initiate_model | local lake | |[[http://​hype.sourceforge.net/​doxy-html/​namespacemodelmodule.html|modelmodule (model_hype.f90)]] |initiate_model | local lake |
 +|::: |calculate_flow_from_undivided_lake|simple outlet lake|
 +|:::​|:::​|outlet lake with two outlets|
 +|::: |calculate_flow_for_lakebasin_lake|outlet lake as multi-basin lake|
  
 ==== References ==== ==== References ====
Line 501: Line 549:
  
 |{{:​start:​hype_model_description:​FloodScenarios.png?​400|}}| |{{:​start:​hype_model_description:​FloodScenarios.png?​400|}}|
-| Figure ​7: Five possible scenarios of flooding.|+| Figure ​5: Five possible scenarios of flooding.|
  
 ==== Common floodplain processes ==== ==== Common floodplain processes ====
Line 514: Line 562:
 <m> a_max = fpf * classarea ​ </m> <m> a_max = fpf * classarea ​ </m>
  
-|{{:​start:​hype_model_description:​FloodVarFlow.png?​400|}}| +| {{:​start:​hype_model_description:​FloodVarFlow.png?​400}} ​    ​
-| Figure ​8: Illustration of floodplain variables of a lake.|+| Figure ​6: Illustration of floodplain variables of a lake.  |
  
 The exchange of water between lake (or river) and floodplain is determined by the respective water levels (//​wl<​sub>​body</​sub>//​ and //​wl<​sub>​plain</​sub>//​),​ the equilibrium water level (//​wl<​sub>​equil</​sub>//​) and the thresholds between the water bodies (//​fl<​sub>​body</​sub>/​fl<​sub>​plain</​sub>//​). ​ The exchange of water between lake (or river) and floodplain is determined by the respective water levels (//​wl<​sub>​body</​sub>//​ and //​wl<​sub>​plain</​sub>//​),​ the equilibrium water level (//​wl<​sub>​equil</​sub>//​) and the thresholds between the water bodies (//​fl<​sub>​body</​sub>/​fl<​sub>​plain</​sub>//​). ​
Line 538: Line 586:
  
 |{{:​start:​hype_model_description:​FloodVar2.png?​400|}}| |{{:​start:​hype_model_description:​FloodVar2.png?​400|}}|
-| Figure ​9: Illustration of floodplain soil flows.|+| Figure ​7: Illustration of floodplain soil flows.|
  
 ==== Connected floodplains ==== ==== Connected floodplains ====
Line 599: Line 647:
  
 |{{:​start:​hype_model_description:​mainflow.png?​400|}}| |{{:​start:​hype_model_description:​mainflow.png?​400|}}|
-| Figure ​5: Main flow in relation to total flow for four different parameter combinations.|+| Figure ​8: Main flow in relation to total flow for four different parameter combinations.|
  
 |{{:​start:​hype_model_description:​branchflow.png?​400|}}| |{{:​start:​hype_model_description:​branchflow.png?​400|}}|
-| Figure ​6: Branch flow in relation to total flow for four different parameter combinations.|+| Figure ​9: Branch flow in relation to total flow for four different parameter combinations.|
  
  
start/hype_model_description/hype_routing.txt · Last modified: 2024/01/25 11:37 (external edit)