Index: doc/wflow_sbm.rst =================================================================== diff -u -r911009b83b9c498347ba719f6a3bbec960014691 -r9b13f977a853b6b237e43c7275e922654bd4ce26 --- doc/wflow_sbm.rst (.../wflow_sbm.rst) (revision 911009b83b9c498347ba719f6a3bbec960014691) +++ doc/wflow_sbm.rst (.../wflow_sbm.rst) (revision 9b13f977a853b6b237e43c7275e922654bd4ce26) @@ -642,11 +642,20 @@ the kinematic wave reservoir -Irrigation -~~~~~~~~~~ +Irrigation and water demand +~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Irrigation areas can be defined by specifying two maps: +Water demand (surface water only) by irrigation can be configured in two ways: +1. By specifying the water demand externally (as a lookup table, series of maps etc) + +2. By defining irrigation areas. Within those areas the demand is calculated as the difference between + potential ET and actual transpiration + +For both options a fraction of the supplied water can be put back into the river a specified locations + +The following maps and variables can be defined: + :wflow_irrigationareas.map: Map of areas where irrigation is applied. Each area has a unique id. The areas do not need to be continuous but all cells with the same id are assumed to belong to the same irrigation area. @@ -655,14 +664,50 @@ Map of intake points at the river(s). The id of each point should correspond to the id of an area in the wflow_irrigationareas map. -The irrigation algorithim works as follows: For each of the areas the difference between potential transpiration -and actual transpiration is determined. Next, this is converted to a demand in :math:`m^3/s` at the corresponding -intake point at the river. The demand is converted to a supply (taking into account the available water in the river) -and converted to an amount in mm over the irrigation area. The supply is converted in the *next timestep* as extra water -available for infiltration in the irrigation area. +:wflow_irrisurfacereturns.map: + Map of water return points at the river(s). The id of each point should correspond to the id of an area in the + wflow_irrigationareas map or/and the wflow_irrisurfaceintake.map. -This option has only be tested in combination with a monthly LAI climatology as input. +:IrriDemandExternal: Irrigation demand supplied to the model. This can be doen by adding an entry to the + modelparameters section. if this is doen the irrigation demand supplied here is used and it is NOT determined + by the model. Water demand should be given with a negative sign! See below for and example entry + in the modelparameters section: :: + IrriDemandExternal=intbl/IrriDemandExternal.tbl,tbl,-34.0,0,staticmaps/wflow_irrisurfaceintakes.map + + In this example the default demand is :math:`-34 m^3/s`. The demand must be linked to the map + wflow_irrisurfaceintakes.map. Alternatively we can define this as a timeseries of + maps: :: + + IrriDemandExternal=/inmaps/IRD,timeseries,-34.0,0 + + + +:DemandReturnFlowFraction: Fraction of the supplied water the returns back into the river system (between 0 and 1). + This fraction must be supplied at the wflow_irrisurfaceintakes.map locations but the water that is returned + to the river will be returned at the wflow_irrisurfacereturns.map locations. If this variable is not defined + the default is 0.0. See below for an example entry in the modelparameters section: :: + + DemandReturnFlowFraction=intbl/IrriDemandReturn.tbl,tbl,0.0,0,staticmaps/wflow_irrisurfaceintakes.map + + +The irrigation model can be used in the following two modes: + +1. An external water demand is given (the user has specified the IrriDemandExternal variable). In this case the demand + is enforced. If a matching irrigation area is found the supplied water is converted to an amount in mm over the + irrigation area. The supply is converted in the *next timestep* as extra water available for infiltration in + the irrigation area. If a DemandReturnFlowFraction is defined this fraction is the supply is returned to the + river at the wflow_irrisurfacereturns.map points. + +2. Irrigation areas have been defined and no IrriDemandExternal has been defined. In this case the model will + estimate the irrigation water demand. The irrigation algorithim works as follows: For each of the areas the + difference between potential transpiration and actual transpiration is determined. Next, this is converted to a + demand in :math:`m^3/s` at the corresponding intake point at the river. The demand is converted to a supply + (taking into account the available water in the river) and converted to an amount in mm over the irrigation area. + The supply is converted in the *next timestep* as extra water available for infiltration in the irrigation area. + This option has only be tested in combination with a monthly LAI climatology as input. If a DemandReturnFlowFraction + is defined this fraction is the supply is returned to the river at the wflow_irrisurfacereturns.map points. + Leakage ~~~~~~~ Index: wflow-py/wflow/wflow_sbm.py =================================================================== diff -u -rab79dd3b45d01b014a3059575a8855e8526e4dfa -r9b13f977a853b6b237e43c7275e922654bd4ce26 --- wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision ab79dd3b45d01b014a3059575a8855e8526e4dfa) +++ wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision 9b13f977a853b6b237e43c7275e922654bd4ce26) @@ -374,19 +374,8 @@ modelparameters.append( self.ParamType(name="IrrigationSurfaceReturn", stack='staticmaps/wflow_irrisurfacereturns.map', type="staticmap", default=0.0, verbose=False, lookupmaps=[])) - #modelparameters.append( - # self.ParamType(name="IrriDemand", stack="/inmaps/IRD", type="timeseries", default=0.0, verbose=False, - # lookupmaps=[])) - # modelparameters.append(self.ParamType(name="ReserVoirLocs", stack='staticmaps/wflow_reservoirlocs.map', - # type="staticmap", default=0.0, verbose=False, lookupmaps=[])) - # modelparameters.append(self.ParamType(name="ResTargetFullFrac",stack='intbl/ResTargetFullFrac.tbl',type="tblsparse",default=0.8,verbose=False,lookupmaps=['staticmaps/wflow_reservoirlocs.map'])) - # modelparameters.append(self.ParamType(name="ResTargetMinFrac",stack='intbl/ResTargetMinFrac.tbl',type="tblsparse",default=0.4,verbose=False,lookupmaps=['staticmaps/wflow_reservoirlocs.map'])) - # modelparameters.append(self.ParamType(name="ResMaxVolume",stack='intbl/ResMaxVolume.tbl',type="tblsparse",default=0.0,verbose=False,lookupmaps=['staticmaps/wflow_reservoirlocs.map'])) - # modelparameters.append(self.ParamType(name="ResMaxRelease",stack='intbl/ResMaxRelease.tbl',type="tblsparse",default=1.0,verbose=False,lookupmaps=['staticmaps/wflow_reservoirlocs.map'])) - # modelparameters.append(self.ParamType(name="ResDemand",stack='intbl/ResDemand.tbl',type="tblsparse",default=1.0,verbose=False,lookupmaps=['staticmaps/wflow_reservoirlocs.map'])) - return modelparameters