The cropland module simulates the dynamics of cropland area and agricultural crop production and calculates corresponding carbon contents and the biodiversity value of the existing cropland.
Description | Unit | A | B | |
---|---|---|---|---|
fm_bii_coeff (bii_class44, potnatveg) |
Biodiversity Intactness Index coefficients | \(unitless\) | x | x |
fm_carbon_density (t_all, j, land, c_pools) |
LPJmL carbon density for land and carbon pools | \(tC/ha\) | x | x |
fm_luh2_side_layers (j, luh2_side_layers10) |
luh2 side layers | \(grid cell share\) | x | x |
pm_avl_cropland_iso (iso) |
Available land area for cropland at ISO level | \(10^6 ha\) | x | x |
sm_fix_SSP2 | year until which all parameters are fixed to SSP2 values | \(year\) | x | x |
vm_AEI (j) |
Area equipped for irrigation in each grid cell | \(10^6 ha\) | x | |
vm_bv (j, landcover44, potnatveg) |
Biodiversity stock for all land cover classes | \(Mha\) | x | x |
vm_land (j, land) |
Land area of the different land types | \(10^6 ha\) | x | x |
vm_prod (j, k) |
Production in each cell | \(10^6 tDM/yr\) | x | x |
vm_yld (j, kve, w) |
Yields (variable because of technical change) | \(tDM/ha/yr\) | x | x |
Description | Unit | |
---|---|---|
fm_croparea (t_all, j, w, kcr) |
Different croparea type areas | \(10^6 ha\) |
vm_area (j, kcr, w) |
Agricultural production area | \(10^6 ha\) |
vm_carbon_stock_croparea (j, ag_pools) |
Carbon stock in croparea | \(tC\) |
vm_rotation_penalty (i) |
Penalty for violating rotational constraints | \(10^6 USD_{05MER}\) |
This realization calculates the crop specific agricultural crop area endogenously based on yield data provided by module 14_yields and detailed rotational constraints. In addition, corresponding carbons stocks and BII values are calculated.
The crop specific interface vm_area
is used in many
other modules, including 18_residues, 38_factor_costs, 41_area_equipped_for_irrigation,
42_water_demand, 50_nr_soil_budget, 53_methane and 59_som.
This realization allows for different scenarios of rotational constraints which are either implemented via hard constraints or penalty payments if constraints are exceeded. Rotational constraints are defined for total croparea as well as for irrigated areas only to avoid overspecialization on irrigated land.
Agricultural production is calculated by multiplying the area under production with corresponding yields. Production from rainfed and irrigated areas is summed up:
\[\begin{multline*} vm\_prod(j2,kcr) = \sum_{w}\left( vm\_area(j2,kcr,w) \cdot vm\_yld(j2,kcr,w)\right) \end{multline*}\]
A penalty is applied for the violation of bioenergy tree (betr) rules. The penalty applies to the missing bioenergy tree land, i.e. where bioenergy tree land is lower than a certain fraction of total cropland.
\[\begin{multline*} v30\_betr\_missing(j2) \geq vm\_land(j2,"crop") \cdot \sum_{ct} i30\_betr\_target(ct,j2) - vm\_area(j2,"betr","rainfed") \end{multline*}\]
Rotational constraints prevent over-specialization. In this realization, they are either implemented via rules (i30_implementation = 1) or a penalty payment if the constraints are violated (i30_implementation = 0). Rule-based rotational constraints (i30_implementation = 1): Minimum and maximum rotational constraints limit the placing of crops. These rotational constraints reflect crop rotations limiting the share a specific crop can cover of the total area of a cluster.
\[\begin{multline*} \sum_{rota\_kcr30(rotamax\_red30,kcr),w} vm\_area(j2,kcr,w) \leq \sum_{kcr,w}vm\_area(j2,kcr,w) \cdot \sum_{ct}i30\_rotation\_rules(ct,rotamax\_red30) \end{multline*}\]
\[\begin{multline*} \sum_{rota\_kcr30(rotamin\_red30,kcr),w} vm\_area(j2,kcr,w) \geq \sum_{kcr,w}vm\_area(j2,kcr,w) \cdot \sum_{ct}i30\_rotation\_rules(ct,rotamin\_red30) \end{multline*}\]
\[\begin{multline*} vm\_rotation\_penalty(i2) \geq \sum_{cell(i2,j2)}\left( \sum_{rota30}\left( v30\_penalty(j2,rota30) \cdot \sum_{ct} i30\_rotation\_incentives(ct,rota30)\right) + \sum_{rotamax\_red30}\left( v30\_penalty\_max\_irrig(j2,rotamax\_red30) \cdot \sum_{ct} i30\_rotation\_incentives(ct,rotamax\_red30)\right) + v30\_betr\_missing(j2) \cdot \sum_{ct} i30\_betr\_penalty(ct) \right) \end{multline*}\]
The penalty applies to the areas which exceed a certain maximum share of the land. Below this share, negative benefits are avoided by defining the penalty to be positive.
\[\begin{multline*} v30\_penalty(j2,rotamax\_red30) \geq \sum_{rota\_kcr30(rotamax\_red30,kcr),w}vm\_area(j2,kcr,w) - \sum_{kcr,w}vm\_area(j2,kcr,w) \cdot \sum_{ct}i30\_rotation\_rules(ct,rotamax\_red30) \end{multline*}\]
Minimum constraints apply penalties when a certain mimimum share of a group is not achieved. This is used to guarantee a minimum crop group diversity withing cells.
\[\begin{multline*} v30\_penalty(j2,rotamin\_red30) \geq \sum_{kcr,w}vm\_area(j2,kcr,w) \cdot \sum_{ct}i30\_rotation\_rules(ct,rotamin\_red30) - \sum_{rota\_kcr30(rotamin\_red30,kcr),w} vm\_area(j2,kcr,w) \end{multline*}\]
The following maximum constraint avoids over-specialization in irrigated systems. No minimum constraint is included for irrigated areas for computational reasons. Minimum constraints just need to be met on total areas.
\[\begin{multline*} v30\_penalty\_max\_irrig(j2,rotamax\_red30) \geq \sum_{rota\_kcr30(rotamax\_red30,kcr)} vm\_area(j2,kcr,"irrigated") - vm\_AEI(j2) \cdot \sum_{ct}i30\_rotation\_rules(ct,rotamax\_red30) \end{multline*}\]
The carbon stocks of the above ground carbon pools are calculated based on croparea and related carbon density.
\[\begin{multline*} vm\_carbon\_stock\_croparea(j2,ag\_pools) = \sum_{kcr,w} vm\_area(j2,kcr,w) \cdot \sum_{ct} fm\_carbon\_density(ct,j2,"crop",ag\_pools) \end{multline*}\]
The biodiversity value for cropland is calculated separately for annual and perennial crops:
\[\begin{multline*} vm\_bv(j2,"crop\_ann",potnatveg) = \sum_{crop\_ann30,w} vm\_area(j2,crop\_ann30,w) \cdot fm\_bii\_coeff("crop\_ann",potnatveg) \cdot fm\_luh2\_side\_layers(j2,potnatveg) \end{multline*}\]
\[\begin{multline*} vm\_bv(j2,"crop\_per",potnatveg) = \sum_{crop\_per30,w} vm\_area(j2,crop\_per30,w) \cdot fm\_bii\_coeff("crop\_per",potnatveg) \cdot fm\_luh2\_side\_layers(j2,potnatveg) \end{multline*}\]
regional cropland area is calculated for the cropland growth constraint
\[\begin{multline*} v30\_crop\_area(i2) = \sum_{cell(i2,j2), kcr, w} vm\_area(j2,kcr,w) \end{multline*}\]
First, all 2nd generation bioenergy area is fixed to zero, irrespective of type and rainfed/irrigation.
vm_area.fx(j,kbe30,w)=0;
Second, the bounds for 2nd generation bioenergy area are released depending on the dynamic sets bioen_type_30 and bioen_water_30. SSP2 default settings are used for the historic period. In addition, rule-based rotational constraints (i30_implementation = 1) are assumed for the historic period.
if(m_year(t) <= sm_fix_SSP2,
vm_area.up(j,kbe30,"rainfed") = Inf;
i30_implementation = 1;
else
vm_area.up(j,bioen_type_30,bioen_water_30) = Inf;
i30_implementation = s30_implementation;
);
Limitations There are currently no known limitations of this realization.
This realization calculates the crop specific agricultural crop area endogenously based on yield data provided by module 14_yields and simplified rotational constraints. In addition, corresponding carbons stocks and BII values are calculated.
The crop specific interface vm_area
is used in many
other modules, including 18_residues, 38_factor_costs, 41_area_equipped_for_irrigation,
42_water_demand, 50_nr_soil_budget, 53_methane and 59_som.
Agricultural production is calculated by multiplying the area under production with corresponding yields. Production from rainfed and irrigated areas is summed up:
\[\begin{multline*} vm\_prod(j2,kcr) = \sum_{w}\left( vm\_area(j2,kcr,w) \cdot vm\_yld(j2,kcr,w)\right) \end{multline*}\]
A penalty is applied for the violation of bioenergy tree (betr) rules. The penalty applies to the missing bioenergy tree land, i.e. where bioenergy tree land is lower than a certain fraction of total cropland.
\[\begin{multline*} v30\_betr\_missing(j2) \geq vm\_land(j2,"crop") \cdot \sum_{ct} i30\_betr\_target(ct,j2) - vm\_area(j2,"betr","rainfed") \end{multline*}\]
\[\begin{multline*} vm\_rotation\_penalty(i2) \geq \sum_{cell(i2,j2)}\left( v30\_betr\_missing(j2) \cdot \sum\left(ct, i30\_betr\_penalty(ct)\right)\right) \end{multline*}\]
As additional constraints minimum and maximum rotational constraints limit the placing of crops. On the one hand, these rotational constraints reflect crop rotations limiting the share a specific crop can cover of the total area of a cluster:
\[\begin{multline*} \sum_{crp\_kcr30(crpmax30,kcr)} vm\_area(j2,kcr,w) \leq \sum_{kcr} vm\_area(j2,kcr,w) \cdot f30\_rotation\_max\_shr(crpmax30) \end{multline*}\]
On the other hand, it reflects boundary conditions such as minimum self sufficiency constraints:
\[\begin{multline*} \sum_{crp\_kcr30(crpmin30,kcr)} vm\_area(j2,kcr,w) \geq \sum_{kcr} vm\_area(j2,kcr,w) \cdot f30\_rotation\_min\_shr(crpmin30) \end{multline*}\]
The carbon stocks of the above ground carbon pools are calculated based on croparea and related carbon density.
\[\begin{multline*} vm\_carbon\_stock\_croparea(j2,ag\_pools) = \sum_{kcr,w} vm\_area(j2,kcr,w) \cdot \sum_{ct} fm\_carbon\_density(ct,j2,"crop",ag\_pools) \end{multline*}\]
The biodiversity value for cropland is calculated separately for annual and perennial crops:
\[\begin{multline*} vm\_bv(j2,"crop\_ann",potnatveg) = \sum_{crop\_ann30,w} vm\_area(j2,crop\_ann30,w) \cdot fm\_bii\_coeff("crop\_ann",potnatveg) \cdot fm\_luh2\_side\_layers(j2,potnatveg) \end{multline*}\]
\[\begin{multline*} vm\_bv(j2,"crop\_per",potnatveg) = \sum_{crop\_per30,w} vm\_area(j2,crop\_per30,w) \cdot fm\_bii\_coeff("crop\_per",potnatveg) \cdot fm\_luh2\_side\_layers(j2,potnatveg) \end{multline*}\]
regional cropland area is calculated for the cropland growth constraint
\[\begin{multline*} v30\_crop\_area(i2) = \sum_{cell(i2,j2), kcr, w} vm\_area(j2,kcr,w) \end{multline*}\]
First, all 2nd generation bioenergy area is fixed to zero, irrespective of type and rainfed/irrigation.
vm_area.fx(j,kbe30,w)=0;
Second, the bounds for 2nd generation bioenergy area are released depending on the dynamic sets bioen_type_30 and bioen_water_30. SSP2 default settings are used for the historic period.
if(m_year(t) <= sm_fix_SSP2,
vm_area.up(j,kbe30,"rainfed") = Inf;
else
vm_area.up(j,bioen_type_30,bioen_water_30) = Inf;
);
Limitations There are currently no known limitations of this realization.
Description | Unit | A | B | |
---|---|---|---|---|
f30_rotation_incentives (rota30, incentscen30) |
penalties for violating rotation rules | \(USD_{05MER}\) | x | |
f30_rotation_max_shr (crp30) |
Maximum allowed area shares for each crop type | \(1\) | x | |
f30_rotation_min_shr (crp30) |
Minimum allowed area shares for each crop type | \(1\) | x | |
f30_rotation_rules (rota30, rotascen30) |
Rotation min or max shares | \(1\) | x | |
i30_betr_penalty (t) |
Penalty for violation of betr target | \(USD_{05MER}/ha\) | x | x |
i30_betr_scenario_fader (t_all) |
Bioenergy land scenario fader | \(1\) | x | x |
i30_betr_target (t, j) |
Target share for bioenergy land on total cropland | \(1\) | x | x |
i30_implementation | Switch for rule-based (1) or penalty-based (0) implementation of rotation scenarios | x | ||
i30_rotation_incentives (t_all, rota30) |
Penalty for violating rotational constraints | \(USD_{05MER}/ha\) | x | |
i30_rotation_rules (t_all, rota30) |
Rotational constraints | \(1\) | x | |
i30_rotation_scenario_fader (t_all) |
Crop rotation scenario fader | \(1\) | x | x |
p30_country_dummy (iso) |
Dummy parameter indicating whether country is affected by selected policy | \(1\) | x | x |
p30_country_weight (i) |
Policy country weight per region | \(1\) | x | x |
q30_betr_missing (j) |
Missing bioenergy tree land towards target | \(10^6 ha\) | x | x |
q30_bv_ann (j, potnatveg) |
Biodiversity value of annual cropland | \(10^6 ha\) | x | x |
q30_bv_per (j, potnatveg) |
Biodiversity value of perennial cropland | \(10^6 ha\) | x | x |
q30_carbon (j, ag_pools) |
Croplarea above ground carbon content calculation | \(10^6 tC\) | x | x |
q30_cost (i) |
Cost | \(10^6 USD_{05MER}\) | x | |
q30_crop_reg (i) |
Total regional crop production area | \(10^6 ha\) | x | x |
q30_prod (j, kcr) |
Production of cropped products | \(10^6 tDM\) | x | x |
q30_rotation_max (j, rotamax30) |
Local maximum rotational constraints | \(10^6 ha\) | x | x |
q30_rotation_max_irrig (j, rotamax30) |
Local maximum rotational constraints | \(10^6 ha\) | x | |
q30_rotation_max2 (j, rotamax30) |
Local maximum rotational constraints | \(10^6 ha\) | x | |
q30_rotation_min (j, rotamin30) |
Local minimum rotational constraints | \(10^6 ha\) | x | x |
q30_rotation_min2 (j, rotamin30) |
Local minimum rotational constraints | \(10^6 ha\) | x | |
q30_rotation_penalty (i) |
Total penalty for rotational constraint violations | \(10^6 USD_{05MER}\) | x | |
s30_annual_max_growth | Max annual cropland growth as share of previous cropland | \(1\) | x | x |
s30_betr_penalty | Penalty for violation of betr target | \(USD_{05MER}/ha\) | x | x |
s30_betr_scenario_start | Bioenergy land scenario start year | x | x | |
s30_betr_scenario_target | Bioenergy land scenario target year | x | x | |
s30_betr_start | Share of bioenergy land on total cropland in start year | \(1\) | x | x |
s30_betr_start_noselect | Share of bioenergy land on total cropland in start year | \(1\) | x | x |
s30_betr_target | Share of bioenergy land on total cropland in target year | \(1\) | x | x |
s30_betr_target_noselect | Share of bioenergy land on total cropland in target year | \(1\) | x | x |
s30_implementation | Switch for rule-based (1) or penalty-based (0) implementation of rotation scenarios | x | ||
s30_rotation_scenario_start | Rotation scenario start year | x | x | |
s30_rotation_scenario_target | Rotation scenario target year | x | x | |
v30_betr_missing (j) |
Missing bioenergy tree land towards target | \(10^6 ha\) | x | x |
v30_crop_area (i) |
Total regional crop production area | \(10^6 ha\) | x | x |
v30_penalty (j, rota30) |
Penalty for violating rotational constraints | \(10^6 USD_{05MER}\) | x | |
v30_penalty_max_irrig (j, rotamax30) |
Penalty for violating max rotational constraints on irrigated land | \(10^6 USD_{05MER}\) | x |
description | |
---|---|
ag_pools(c_pools) | Above ground carbon pools |
bii_class44 | bii coefficent land cover classes |
bioen_type_30(kbe30) | dynamic set bioen type |
bioen_water_30(w) | dynamic set bioen water |
c_pools | Carbon pools |
cell(i, j) | number of LPJ cells per region i |
crop_ann30(kcr) | annual crops |
crop_per30(kcr) | perennial crops |
crp_kcr30(crp30, kcr) | Mapping of crop types into crop rotation types |
crp30 | Crop rotation types |
crpmax30(crp30) | Maximum crop rotation |
crpmin30(crp30) | Minimum crop rotation |
ct(t) | Current time period |
i | all economic regions |
i_to_iso(i, iso) | mapping regions to iso countries |
i2(i) | World regions (dynamic set) |
incentscen30 | rotation inventive scenarios |
iso | list of iso countries |
j | number of LPJ cells |
j2(j) | Spatial Clusters (dynamic set) |
k(kall) | Primary products |
kbe30(kcr) | bio energy activities |
kcr(kve) | Cropping activities |
kve(k) | Land-use activities |
land | Land pools |
landcover44 | land cover classes used in bii calculation |
luh2_side_layers10 | side layers from LUH2 |
policy_countries30(iso) | countries to be affected by SNV policy |
potnatveg(luh2_side_layers10) | potentially forested biomes |
rota_kcr30(rota30, kcr) | Mapping of crop types into crop rotation types |
rota30 | rotational rules |
rotamax_red30(rotamax30) | Maximum crop rotation reduced set |
rotamax30(rota30) | rotational maximum rules |
rotamin_red30(rotamin30) | Minimum crop rotation reduced set |
rotamin30(rota30) | rotational minimum rules |
rotascen30 | rotation constraint scenarios |
t_all(t_ext) | 5-year time periods |
t_past(t_all) | Timesteps with observed data |
t(t_all) | Simulated time periods |
type | GAMS variable attribute used for the output |
w | Water supply type |
Jan Philipp Dietrich, Florian Humpenöder, Benjamin Bodirsky
09_drivers, 10_land, 11_costs, 14_yields, 17_production, 18_residues, 29_cropland, 32_forestry, 41_area_equipped_for_irrigation, 42_water_demand, 44_biodiversity, 50_nr_soil_budget, 52_carbon, 53_methane, 59_som