Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
These files contain the Decision Tables.
The structure of the decision table files is different than that of most other SWAT+ input files. As usual, the first line is reserved for a title. The second line in the file specifies the total number of decision tables included in the file.
Each decision table has three parts, which all have their own headers. First, the name of the decision table and the number of conditions, alternatives, and actions are specified.
Field | Description | Type |
---|---|---|
Next, the conditions and alternatives are defined. The number of lines used for this part of the decision table depends on the number of conditions.
Field | Description | Type |
---|---|---|
Finally, the outcomes and actions are defined. The number of lines used for this part of the decision table depends on the number of actions.
Field | Description | Type |
---|---|---|
Limit constant
The limit constant is the value the limit variable () is multiplied or divided by or that is added to or subtracted from the limit variable (depending on ).
Condition variable
The following condition variables are currently coded in SWAT+. If a condition field is not listed in 'Additional fields used', you may leave it as null if field type is string or 0.0000 if field type is double/real.
Condition variable | Description | Additional fields used | Comments |
---|
Limit variable
The condition variables, for which a limit variable must be specified, are listed in the table below. Some limit variables must be used in combination with a limit operator (see ).
Condition variable | Limit variable | Description | Limit operator? |
---|
Limit operator
The limit operators available and the limit and condition variables they are used for are listed in the table below.
Operator | Description | Limit variable |
---|
Object ID
If obj_num = 0, the condition will be checked for the current object of the type specified by . If obj_num > 0, the condition will be checked for the object with the specified ID (in the object's file) only.
Exception: prob_unif where obj_num is the first day of the period.
name
Name of the decision table
string
conds
Number of conditions
integer
alts
Number of alternatives
integer
acts
Number of actions
integer
Condition variable
string
Object type
string
Object ID
integer
Limit variable
string
Limit operator
string
Limit constant
real
Alternative
string
Type of action
string
Object type
string
Object ID
integer
Name of the action
string
Action option
string
Action constant
real
Action constant
real
File pointer for action option
string
Outcome
string
* | Multiply limit variable by limit constant | fc, wp, ul (soil_water) evol, pvol (vol and vol_wet) |
+ | Add limit constant to limit variable | fc, wp, ul (soil_water) evol, pvol (vol and vol_wet) |
- | Subtract limit constant from limit variable | fc, wp, ul (soil_water) evol, pvol (vol and vol_wet) |
/ | Divide limit variable by limit constant | fc, wp, ul (soil_water) evol, pvol (vol and vol_wet) |
soil_water | wp | Wilting point | yes |
soil_water | fc | Field capacity | yes |
soil_water | ul | Upper limit | yes |
plant_gro | y | Plant growing | no |
plant_name_gro | no |
hyd_soil_group | no |
land_use | no |
tillage | no |
plant | no |
ch_use | no |
vol | evol | Emergency volume | yes |
vol | pvol | Principal volume | yes |
vol | e-pv | Emergency minus principal volume | no |
wet_depth | no |
vol_wet | evol | Emergency volume | yes |
vol_wet | pvol | Principal volume | yes |
Object ID
If obj_num = 0, the action will be performed for all objects of the type specified by obj. If obj_num > 0, the action will be performed for the object with the specified ID only.
w_stress | Water stress of the plant(s) | If more than one plant is growing, the average stress will be used |
n_stress | Nitrogen stress of the plant(s) | If more than one plant is growing, the average stress will be used |
p_stress | Phosphorus stress of the plant(s) | If more than one plant is growing, the average stress will be used |
phu_plant | Plant Heat Units since start of plant growth | If more than one plant is growing, the Heat Units for the first one will be used |
phu_base0 | Heat Units since January 1 with a base temperature of 0 deg C |
precip_cur | Precipitation on the current day |
precip_next | Precipitation on the next day |
plant_gro | Plant growing |
plant_name_gro | Specific plant growing |
days_plant | Days since last planting |
days_harv | Days since last harvest |
days_irr | Days since last irrigation |
days_act | Days since last action |
day_start | Days since first simulation day of the year |
slope | Slope of the HRU |
soil_water | Total soil water in the soil profile |
jday | Julian day |
month | Month |
year_rot | Rotation year |
year_gro | Growth year of perennials |
year_cal | Calendar year |
year_seq | Sequential year of simulation |
cur_yrs_mat | Current years of maturity for perennial plants |
biomass | Above-ground biomass |
leaf_area | Leaf Area Index |
gound_cov | Total ground cover (above-ground biomass and surface residue) |
p_factor | USLE conservation practice factor |
k_factor | USLE soil erodibility factor |
hyd_soil_group | Hydrologic Soil Group |
p_pet | Precipitation/PET ratio |
p_lab_150 | Soil labile phosphorus of first layer |
soil_temp2 | Soil temperature of second layer |
soil_carbon | Soil organic carbon of first layer |
tile_drained | The HRU is tile-drained |
prob | Probability |
prob_unif | Probability within a defined period assuming uniform distribution |
channel_flo | Channel flow |
tile_flo | Tile flow |
irr_demand | Irrigation demand |
aqu_dep | Aquifer depth below soil surface |
land_use | Land use and management |
tillage | Tillage system (name of tillage decision table) |
plant_com | Plant is in the community |
ch_order | Channel order |
vol | Reservoir volume |
res_inflo | Reservoir inflow |
wet_depth | Average depth of water on an impounded HRU (paddy) |
weirh | Paddy weir height |
vol_wet | Volume of water stored in a wetland |
Object type
The object types for all possible condition variables are listed in the table below.
Condition variable | Object type |
---|---|
Alternative
The alternative is the final piece to construct the “if” statement needed to implement the associated rule. One of the alternative operators listed in the table below must be specified for each condition defined in the Decision Table. The user can define as many alternatives as needed by adding the required number of alt columns and numbering them sequentially (alt1, alt2,...).
The model checks if the condition is met by:
comparing the condition variable to lim_const (if the condition variable has a limit constant but no limit variable and operator),
comparing the condition variable to lim_var (if the condition variable has a limit variable but no limit operator and constant),
comparing the condition variable to lim_var multiplied by/plus/minus/divided by lim_const (if the condition variable has a limit variable, operator, and constant), or
checking if the conditional variable is true (plant_gro, tile_drained, and plant_com).
How the condition variable is compared to 1., 2., or 3. or checked for 4. is controlled by the alternative operator:
Alternative operator | Description |
---|
Action | Option | Description |
---|
Option | Description | const | const2 | fp |
---|
Object type
Action | Object type |
---|
,
,
,
w_stress
hru
n_stress
hru
p_stress
hru
phu_plant
hru
phu_base0
hru
precip_cur
hru
precip_next
hru
plant_gro
hru
plant_name_gro
hru
days_plant
hru
days_harv
hru
days_irr
hru
days_act
hru
day_start
hru
slope
hru
soil_water
hru
jday
hru
month
hru
year_rot
hru
year_gro
hru
year_cal
hru
year_seq
hru
cur_yrs_mat
hru
biomass
hru
leaf_area
hru
gound_cov
hru
p_factor
hru
k_factor
hru
hyd_soil_group
hru
p_pet
hru
p_lab_150
hru
soil_temp2
hru
soil_carbon
hru
tile_drained
hru
prob
hru
prob_unif
hru
channel_flo
cha
tile_flo
hru
irr_demand
hru
aqu_dep
aqu
land_use
hru
tillage
hru
plant
hru
ch_order
cha
vol
res
res_inflo
res
wet_depth
hru
weirh
hru
vol_wet
hru
- | Condition not relevant |
= | Condition met if var equals 1., 2., or 3. or if var is true (4.) |
/ | Condition met if var does not equal 1., 2., or 3. or if var is false (4.) |
>= | Condition met if var is larger than or equals 1., 2., or 3. |
<= | Condition met if var is smaller than or equals 1., 2., or 3. |
> | Condition met if var is larger than 1., 2., or 3. |
< | Condition met if var is smaller than 1., 2., or 3. |
plant, harvest, kill, harvest_kill | "crop" | Pointer to management.sch if one crop is listed behind the name of the DT |
plant, harvest, kill, harvest_kill | "crop1", "crop2", ... | Pointer to management.sch if more than one crop is listed behind the name of the DT |
plant, harvest, kill, harvest_kill | Name of the crop | Pointer to plant community in plant.ini |
release |
rate | Release at constant rate | Release rate in m3/s |
rate_pct | Release at percentage of principal volume | Percentage of principal volume |
inflo_frac | Release at fraction of inflow | Fraction of inflow |
ab_emer | Release all volume above emergency | Emergency volume |
days | Number of days it takes to drawdown to target volume | Number of days | Multiplier | Target volume |
dyrt | Release based on drawdown days and percentage of principal volume | Number of days | Release rate in m3/s |
inflo_targ | Release inflow and all volume over target | Target volume |
irr_dmd | Release based on irrigation demand of HRU or other water allocation object |
weir | Release based on weir equation |
meas | Release measured outflow | Recall file |
irrigate | hru |
irr_demand | hru |
fertilize | hru |
fert_future | hru |
manure_demand | hru |
till | hru |
plant | hru |
harvest | hru |
kill | hru |
harvest_kill | hru |
rot_reset | hru |
pest_apply | hru |
graze | hru |
grow_init | hlt |
grow_end | hlt |
drain_control | hru |
divert |
res_demand |
flow_control |
tile_control | hru |
impound_off | hru |
impound_on | hru |
weir_height | hru |
puddle | hru |
hru_fr_update | hru |
lu_change | hru |
p_factor | hru |
contour | hru |
stripcrop | hru |
terrace | hru |
tile_install | hru |
septic_install | hru |
fstrip_install | hru |
grassww_install | hru |
user_def_bmp | hru |
chan_change |
burn | hru |
cn_update | hru |
pheno_reset | hru |
Name of the action
The name of the action is defined by the user. It is not used by the model.
Outcome
The outcome determines whether or not an action will be triggered when the condition alternative is met. There has to be an outcome defined for each alternative.
The only options for action entries are yes ("y") and no ("n").
If all conditions specified by an alternative are met and the outcome is "y", then the associated action will be performed.
If all conditions specified by an alternative are met but the outcome is "n", the associated action will not be performed.
If not all conditions specified by an alternative are met, the associated action will not be performed, even if the outcome is "y".
The actions that can be triggered using the lum.dtl file are defined in the SWAT+ code. For each action, the type and ID of the object it is applied to, and a user-defined name have to be specified. Certain actions require additional information, which has to be specified in the fields option, const, const2, and fp. The use of these four fields depends on the action. The table below lists the actions implemented in the SWAT+ code, a short description, and the additional fields needed.
Action | Description | Additional fields needed |
---|---|---|
File pointer
The file pointer is only needed for certain actions. The file that is referenced by the file pointer depends on the action. The table below lists the actions that use the file pointer and which file it points to.
irrigate
Irrigation
irr_demand
fertilize
Fertilizer application
fert_future
manure_demand
till
Tillage
plant
Planting
harvest
Harvest
kill
Kill
harvest_kill
Harvest and kill
rot_reset
Reset to beginning of rotation
pest_apply
Pesticide application
graze
Grazing
grow_init
Initiate growing season for HRU-lte
grow_end
End growing season for HRU-lte
drain_control
Drainage water management
divert
Divert water
res_demand
Demand from a reservoir
flow_control
Flow control for water allocation
tile_control
Tile flow control for saturated buffers
impound_off
Turn off impounded water (paddy or wetland)
impound_on
Turn on impounded water (paddy or wetland)
weir_height
Adjust weir height (paddy)
puddle
hru_fr_update
HRU area fraction change
lu_change
Land use change
p_factor
Update USLE P factor
contour
Contouring
stripcrop
Strip cropping
terrace
Terracing
tile_install
Install tile drainage
septic_install
Install septic tank
fstrip_install
Install filterstrip
grassww_install
Install grass waterway
user_def_bmp
User user-defined BMP reductions
chan_change
burn
Burning
cn_update
Update Curve Number
pheno_reset
Action
File referenced by file pointer
harvest
harvest_kill
pest_apply
fertilize