The APSIM irrigation module (IRRIGATE)
The APSIM irrigate module allows the user to:-
Parameter File Settings
The module input parameters are as follows:-
Keyword = Setting |
Description |
manual_irrigation = on/off |
Switch to enable or disable the fixed irrigation schedule |
day = day 1 , day 2 , ... , day n |
Day of year of irrigation application |
year = year 1 , year 2 , ... , year n |
Year of irrigation application |
amount = amount 1 , amount 2 , ... , amount n |
Amount of irrigation (mm) |
time = time 1 , time 2 , ... , time n |
Time of Day of application (hh:mm) |
duration = durn 1 , durn 2 , ... , durn n |
Time duration for application (mins) |
default_duration = durn |
Default irrigation duration that can be used in place of real irrigation duration specification. |
default_time = time |
Default irrigation time that can be used in place of real irrigation time specification. |
solutes = sol 1 , sol 2 , ... , sol n |
List of solutes that may be found in irrigation water |
solute_name = amount 1 , amount 2 , ... , amount n |
Amount of solute in irrigation water where solute_name is the name of the solute (eg. no3 for nitrate) |
automatic_irrigation = on/off |
Switch to enable or disable the automatic irrigation schedule |
crit_fr_asw = fraction |
Critical fraction of available soil water (ie. above a 15 bar lower limit) below which irrigation is automatically applied. (0-1) |
asw_depth = depth |
Depth to which available soil water fraction is calculated. (mm) |
Irrigation_allocation = on/off |
Switch to enable or disable the irrigation allocation accounting. (See Irrigation Allocation section below) |
Allocation = amount (mm) |
Irrigation allocation amount (mm). Cannot be used in conjunction with manual irrigation schedule. If this is not provided, it is possible to supply the allocation in ML and application area in hectares. |
default_XXX_conc |
Default concentration of solute XXX to be applied in any irrigation. If solute concentrations are specified when the irrigation is requested, then defaults are ignored. Units = ppm |
Irrigation_efficiency = fraction |
Efficiency of the irrigation. (0-1) ie. Irrigation can be less than applied due to losses from evaporation, wind loss and runoff. |
Note that all irrigation modules are optional. The module will alert the user to incomplete parameterisation if dependencies between optional settings are not handled properly.
The following example shows the list of possible inputs to the irrigation module. Included in this example is the specification both a manual and automatic irrigation schedule and solutes found in the irrigation water.
[user_data_group.irrigate .parameters]
manual_irrigation = on (on/off) ! switch schedule on or off
Solutes = no3 cl () ! list of possible solutes
! found in irrigation water
day = 100 110 120 130 () ! day of year of application
year = 2000 2000 2000 2000 () ! year of application
amount = 10 20 30 40 (mm) ! amount of irrigation
time = 12:00 24:00 1:00 0:00 (hh:mm) ! time of irrigation
! application (24 hour notation)
duration = 60 60 30 30 (min) ! time duration of irrigation
no3 = 10 0 10 0 (kg/ha) ! nitrate in irrigation water
cl = 0 10 0 5 (kg/ha) ! chloride in irrigation water
! The following 2 parameters can be
! used as defaults for related parameters
! above and are used for automatic irrigation applications.
default_duration = 60 (min) ! default irrigation duration
default_time = 12:00 (hh:mm) ! default time for irrigation
! application
automatic_irrigation = on (on/off) ! switch schedule on or off
crit_fr_asw = 0.10 (0-1) ! critical fraction of
! available soil water
! to trigger irrigation
asw_depth = 100 (mm) ! depth for available
! soil water calculations
Requesting Irrigation from other Modules
Any module can request irrigation via the messaging system
irrigate apply amount=50(mm), time=12:00 (hh:mm), duration=30 (min), no3=10 (kg/ha)
Here 50 mm of water will be applied at midday, taking 30 mins to complete the task and in doing so 10 kg/ha of nitrate will be added as solute within the irrigation water.
or
irrigate apply amount = 50 (mm)
In this second example the default irrigation times / durations and zero solute concentrations will be assumed. Solute concentrations are always optional and their absence assumes an absence of solute in irrigation water. Note : only solutes listed in the “solutes” line in the parameter file will be recognised by this module.
or
! Add more than enough to fill the top 2 layers
deficit = (dul_dep(1) - sw_dep(1)) + (dul_dep(2) - sw_dep(2))
if deficit > 0 then
irrigate.amount = deficit * 1.5
endif
In this third example the amount of irrigation is calculated by the manager and passed to irrigate via the use of a direct setting of the amount. This approach is similar to the command
Irrigate set amount = 10 (mm)
But in the later example the amount is not calculated at run time and so is similar to the second example.
Resetting Schedules
Manual and automatic schedules can be enabled and disabled within a simulation via the message system. The syntax of a standard manager message to turn off the manual irrigation schedule would be as follows:
irrigate set manual_irrigation = off
Other related data is unaffected by this switch resetting and so, for example, the automatic irrigation scheduling can be set on and off for set windows in time using a pair of if statements in the manager file.
Parameters for the automatic irrigation calculations can be reset similarly:
irrigate set crit_fr_asw = 0.9 (0-1)
irrigate set asw_depth = 150 (mm)
Working with Irrigation Allocation Budgets
The following example shows how the allocation mechanisms are utilized in the APSIM Irrigate module. Note that only automatic irrigation scheduling and remote scheduling (eg via the manager or operatns modules) is taken into account. The mechanism cannot be used in conjunction with a manual irrigation schedule. The example shows an annual allocation set on the first of July each year, which is applied using automatic irrigation scheduling.
[user_data_group.irrigate .parameters]
automatic_irrigation = on (on/off) ! switch schedule on or off
crit_fr_asw = 0.66 (0-1) ! critical fraction of
! available soil water
! to trigger irrigation
asw_depth = 600 (mm) ! depth for available
! soil water calculations
[user_data_group.manager .start_of_day]
if today = date('1_jul') then
irrigate set allocation = 1000 (mm)
endif
Working with Irrigation Efficiency
The following example shows how the irrigation efficiency is utilized in the APSIM Irrigate module. The example shows an irrigation_efficiency setting of 75%. This means that only 75% of the irrigation is actually being applied due to approximated losses due to evaporation, wind loss or runoff.
[user_data_group.manager .start_of_day]
irrigate.irrigation_efficiency = 0.75
if today = date('1_jul') then
irrigate apply amount = 50
endif
Using Default Solute Concentrations
Default solute concentrations can be specified by a new "getable" parameter(s) called 'default_XXX_conc' , where XXX is the solute name. The units are ppm, and the parameter(s) is read from the parameter file. Note that solutes are not registered in the system simply by defining default concentrations. If you want to track these solutes through the soil, for example, they must be registered elsewhere to trigger a New_Solute Event, for example in the "solute_names = " line in SOLUTE, or by a number of other
modules.
When an irrigation is triggered (from MANAGER or from the parameter file) and no specific information on solutes in the irrigation is supplied, then the default solute concentrations will be used if they are supplied. Any specific information however will over-ride the defaults. If specific information is provided, then details of all the solutes must be given, because no defaults will be used. A parameter file example is given below:
[sample.irrigate.parameters]
default_cl_conc = 100.0
default_br_conc = 50.0
[sample.solute.parameters]
solute_names = cl br
cl = 0 0 0 0 0 0 0 (kg/ha)
br = 0 0 0 0 0 0 0 (kg/ha)
The reportable variable is "irrigation_XXX" where XXX is the solute name.
The units are kg/ha.
Using APSIM Irrigate with APSIM WaterStorage
There is an option to use APSIM Irrigate in conjunction with the APSIM WaterStorage module. Please also read the documentation for APSIM WaterStorage.
APSIM Irrigate works on a ‘mm' basis, whereas APSIM WaterStorage works on real volumes (Ml). Hence, when an irrigation application is specified in mm, an ‘area of application' must be provided in order to calculate the required volume of water from the specified source instance of WaterStorage. As mentioned previously, whenever WaterStorage is used in a simulation for supply of irrigation water, a variable called ‘crop_area' (ha) must be specified in the manager logic.
Irrigations using water from WaterStorage can only be initiated by using the ‘irrigate apply' action in manager. A new optional argument called ‘source' is added to the ‘apply' command line to trigger the use of water from WaterStorage. The required syntax is as follows:
[sample.manager.start_of_day]
if day = 10 then
irrigate apply amount=10 (mm), source = dam bore dam2 ()
endif
The argument ‘source' specifies the sources from which to obtain the irrigation water, in preferential order. In other words, in the above example, if the dam cannot fully supply the required water, the balance will be taken from the bore. If there is still a shortage of water, then dam2 will be asked next to supply water. There is no limit to the number of sources which can be specified.
When the irrigation water is applied to the soil, it will carry the solutes makeup of the water source being used.
Irrigation Module Outputs
The Irrigation module outputs the following variables.
Variable Name |
Description |
irrigation |
Total amount of irrigation added to profile during any timestep (mm) |
manual_irrigation |
Current state of the fixed irrigation schedule (on/off) |
automatic_irrigation |
Current state of the automatic irrigation schedule (on/off) |
crit_fr_asw |
Critical fraction of available soil water (ie. above a 15 bar lower limit) below which irrigation is automatically applied. (0-1) |
asw_depth |
Depth to which available soil water fraction is calculated. (mm) |
allocation |
Current amount of irrigation allocation available for use (mm) |
allocation_ml |
Current amount of irrigation allocation available for use (ML) |
carry_over |
Amount of irrigation allocation unused as at reset of allocation (mm) (Value will be zero for days on which allocation is not reset) |
carry_over_ml |
Amount of irrigation allocation unused as at reset of allocation (ML) |
irr_fasw |
Fraction of available soil water within the critical irrigation soil depth |
irr_deficit |
Deficit of soil water within the critical irrigation soil depth (mm) |
irrig_loss |
Losses resulting from and application of irrigation in conjunction with the irrigation_efficiency mechanism. |
irrig_tot |
Total irrigation specified, not including losses due to irrigation efficiency (mm) |
irrigation_XXX |
Applied quantity of solute XXX, (kg/ha) |