Crop modules
Note
At the moment only two modules of leaf_dynamics and root_dynamics are
differentiable w.r.t two parameters of SPAN and TDWI. But the package is under
continuous development. So make sure that you install the latest version.
diffwofost.physical_models.crop.leaf_dynamics.WOFOST_Leaf_Dynamics
Bases: SimulationObject
Leaf dynamics for the WOFOST crop model.
Implementation of biomass partitioning to leaves, growth and senenscence
of leaves. WOFOST keeps track of the biomass that has been partitioned to
the leaves for each day (variable LV), which is called a leaf class).
For each leaf class the leaf age (variable 'LVAGE') and specific leaf area
(variable SLA) are also registered. Total living leaf biomass is
calculated by summing the biomass values for all leaf classes. Similarly,
leaf area is calculated by summing leaf biomass times specific leaf area
(LV * SLA).
Senescense of the leaves can occur as a result of physiological age, drought stress or self-shading.
Simulation parameters (provide in cropdata dictionary)
| Name | Description | Type | Unit |
|---|---|---|---|
| RGRLAI | Maximum relative increase in LAI. | SCr | ha ha⁻¹ d⁻¹ |
| SPAN | Life span of leaves growing at 35 Celsius | SCr | d |
| TBASE | Lower threshold temp. for ageing of leaves | SCr | C |
| PERDL | Max. relative death rate of leaves due to water stress | SCr | |
| TDWI | Initial total crop dry weight | SCr | kg ha⁻¹ |
| KDIFTB | Extinction coefficient for diffuse visible light as function of DVS | TCr | |
| SLATB | Specific leaf area as a function of DVS | TCr | ha kg⁻¹ |
State variables
| Name | Description | Pbl | Unit |
|---|---|---|---|
| LV | Leaf biomass per leaf class | N | kg ha⁻¹ |
| SLA | Specific leaf area per leaf class | N | ha kg⁻¹ |
| LVAGE | Leaf age per leaf class | N | d |
| LVSUM | Sum of LV | N | kg ha⁻¹ |
| LAIEM | LAI at emergence | N | - |
| LASUM | Total leaf area as sum of LV*SLA, not including stem and pod area | N | - |
| LAIEXP | LAI value under theoretical exponential growth | N | - |
| LAIMAX | Maximum LAI reached during growth cycle | N | - |
| LAI | Leaf area index, including stem and pod area | Y | - |
| WLV | Dry weight of living leaves | Y | kg ha⁻¹ |
| DWLV | Dry weight of dead leaves | N | kg ha⁻¹ |
| TWLV | Dry weight of total leaves (living + dead) | Y | kg ha⁻¹ |
Rate variables
| Name | Description | Pbl | Unit |
|---|---|---|---|
| GRLV | Growth rate leaves | N | kg ha⁻¹ d⁻¹ |
| DSLV1 | Death rate leaves due to water stress | N | kg ha⁻¹ d⁻¹ |
| DSLV2 | Death rate leaves due to self-shading | N | kg ha⁻¹ d⁻¹ |
| DSLV3 | Death rate leaves due to frost kill | N | kg ha⁻¹ d⁻¹ |
| DSLV | Maximum of DSLV1, DSLV2, DSLV3 | N | kg ha⁻¹ d⁻¹ |
| DALV | Death rate leaves due to aging | N | kg ha⁻¹ d⁻¹ |
| DRLV | Death rate leaves as a combination of DSLV and DALV | N | kg ha⁻¹ d⁻¹ |
| SLAT | Specific leaf area for current time step, adjusted for source/sink limited leaf expansion rate | N | ha kg⁻¹ |
| FYSAGE | Increase in physiological leaf age | N | - |
| GLAIEX | Sink-limited leaf expansion rate (exponential curve) | N | ha ha⁻¹ d⁻¹ |
| GLASOL | Source-limited leaf expansion rate (biomass increase) | N | ha ha⁻¹ d⁻¹ |
External dependencies
| Name | Description | Provided by | Unit |
|---|---|---|---|
| DVS | Crop development stage | DVS_Phenology | - |
| FL | Fraction biomass to leaves | DVS_Partitioning | - |
| FR | Fraction biomass to roots | DVS_Partitioning | - |
| SAI | Stem area index | WOFOST_Stem_Dynamics | - |
| PAI | Pod area index | WOFOST_Storage_Organ_Dynamics | - |
| TRA | Transpiration rate | Evapotranspiration | cm day⁻¹ ? |
| TRAMX | Maximum transpiration rate | Evapotranspiration | cm day⁻¹ ? |
| ADMI | Above-ground dry matter increase | CropSimulation | kg ha⁻¹ d⁻¹ |
| RFTRA | Reduction factor for transpiration (water & oxygen) | Y | - |
| RF_FROST | Reduction factor frost kill | FROSTOL (optional) | - |
Outputs
| Name | Description | Pbl | Unit |
|---|---|---|---|
| LAI | Leaf area index, including stem and pod area | Y | - |
| TWLV | Dry weight of total leaves (living + dead) | Y | kg ha⁻¹ |
Methods:
-
initialize–Initialize the WOFOST_Leaf_Dynamics simulation object.
-
calc_rates–Calculate the rates of change for the leaf dynamics.
-
integrate–Integrate the leaf dynamics state variables.
initialize
Initialize the WOFOST_Leaf_Dynamics simulation object.
Parameters:
-
day(date) –The starting date of the simulation.
-
kiosk(VariableKiosk) –A container for registering and publishing (internal and external) state variables. See PCSE documentation for details.
-
parvalues(ParameterProvider) –A dictionary-like container holding all parameter sets (crop, soil, site) as key/value. The values are arrays or scalars. See PCSE documentation for details.
Source code in src/diffwofost/physical_models/crop/leaf_dynamics.py
calc_rates
Calculate the rates of change for the leaf dynamics.
Parameters:
-
day(date) –The current date of the simulation.
-
drv(WeatherDataContainer) –A dictionary-like container holding weather data elements as key/value. The values are arrays or scalars. See PCSE documentation for details.
Source code in src/diffwofost/physical_models/crop/leaf_dynamics.py
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | |
integrate
Integrate the leaf dynamics state variables.
Parameters:
-
day(date) –The current date of the simulation.
-
delt(float, default:1.0) –The time step for integration. Defaults to 1.0.
Source code in src/diffwofost/physical_models/crop/leaf_dynamics.py
diffwofost.physical_models.crop.root_dynamics.WOFOST_Root_Dynamics
Bases: SimulationObject
Root biomass dynamics and rooting depth.
Root growth and root biomass dynamics in WOFOST are separate processes, with the only exception that root growth stops when no more biomass is sent to the root system.
Root biomass increase results from the assimilates partitioned to
the root system. Root death is defined as the current root biomass
multiplied by a relative death rate (RDRRTB). The latter as a function
of the development stage (DVS).
Increase in root depth is a simple linear expansion over time until the
maximum rooting depth (RDM) is reached.
Simulation parameters
| Name | Description | Type | Unit |
|---|---|---|---|
| RDI | Initial rooting depth | SCr | cm |
| RRI | Daily increase in rooting depth | SCr | cm day⁻¹ |
| RDMCR | Maximum rooting depth of the crop | SCR | cm |
| RDMSOL | Maximum rooting depth of the soil | SSo | cm |
| TDWI | Initial total crop dry weight | SCr | kg ha⁻¹ |
| IAIRDU | Presence of air ducts in the root (1) or not (0) | SCr | - |
| RDRRTB | Relative death rate of roots as a function of development stage | TCr | - |
State variables
| Name | Description | Pbl | Unit |
|---|---|---|---|
| RD | Current rooting depth | Y | cm |
| RDM | Maximum attainable rooting depth at the minimum of the soil and crop maximum rooting depth | N | cm |
| WRT | Weight of living roots | Y | kg ha⁻¹ |
| DWRT | Weight of dead roots | N | kg ha⁻¹ |
| TWRT | Total weight of roots | Y | kg ha⁻¹ |
Rate variables
| Name | Description | Pbl | Unit |
|---|---|---|---|
| RR | Growth rate root depth | N | cm |
| GRRT | Growth rate root biomass | N | kg ha⁻¹ d⁻¹ |
| DRRT | Death rate root biomass | N | kg ha⁻¹ d⁻¹ |
| GWRT | Net change in root biomass | N | kg ha⁻¹ d⁻¹ |
Signals send or handled
None
External dependencies:
| Name | Description | Provided by | Unit |
|---|---|---|---|
| DVS | Crop development stage | DVS_Phenology | - |
| DMI | Total dry matter increase | CropSimulation | kg ha⁻¹ d⁻¹ |
| FR | Fraction biomass to roots | DVS_Partitioning | - |
Outputs:
| Name | Description | Provided by | Unit |
|---|---|---|---|
| RD | Current rooting depth | Y | cm |
| TWRT | Total weight of roots | Y | kg ha⁻¹ |
IMPORTANT NOTICE
Currently root development is linear and depends only on the fraction of assimilates send to the roots (FR) and not on the amount of assimilates itself. This means that roots also grow through the winter when there is no assimilation due to low temperatures. There has been a discussion to change this behaviour and make root growth dependent on the assimilates send to the roots: so root growth stops when there are no assimilates available for growth.
Finally, we decided not to change the root model and keep the original WOFOST approach because of the following reasons: - A dry top layer in the soil could create a large drought stress that reduces the assimilates to zero. In this situation the roots would not grow if dependent on the assimilates, while water is available in the zone just below the root zone. Therefore a dependency on the amount of assimilates could create model instability in dry conditions (e.g. Southern-Mediterranean, etc.). - Other solutions to alleviate the problem above were explored: only put this limitation after a certain development stage, putting a dependency on soil moisture levels in the unrooted soil compartment. All these solutions were found to introduce arbitrary parameters that have no clear explanation. Therefore all proposed solutions were discarded.
We conclude that our current knowledge on root development is insufficient to propose a better and more biophysical approach to root development in WOFOST.
Methods:
-
initialize–Initialize the model.
-
calc_rates–Calculate the rates of change of the state variables.
-
integrate–Integrate the state variables using the rates of change.
initialize
Initialize the model.
Parameters:
-
day(date) –The starting date of the simulation.
-
kiosk(VariableKiosk) –A container for registering and publishing (internal and external) state variables. See PCSE documentation for details.
-
parvalues(ParameterProvider) –A dictionary-like container holding all parameter sets (crop, soil, site) as key/value. The values are arrays or scalars. See PCSE documentation for details.
Source code in src/diffwofost/physical_models/crop/root_dynamics.py
calc_rates
Calculate the rates of change of the state variables.
Parameters:
-
day(date, default:None) –The current date of the simulation.
-
drv(WeatherDataContainer, default:None) –A dictionary-like container holding weather data elements as key/value. The values are arrays or scalars. See PCSE documentation for details.
Source code in src/diffwofost/physical_models/crop/root_dynamics.py
integrate
Integrate the state variables using the rates of change.
Parameters:
-
day(date, default:None) –The current date of the simulation.
-
delt(float, default:1.0) –The time step for integration. Defaults to 1.0.
Source code in src/diffwofost/physical_models/crop/root_dynamics.py
Utility (under development)
diffwofost.physical_models.utils.EngineTestHelper
EngineTestHelper(parameterprovider, weatherdataprovider, agromanagement, test_config, external_states=None)
Bases: Engine
An engine which is purely for running the YAML unit tests.