MAgPIE - An Open Source land-use modeling framework

4.8.2

created with goxygen 1.4.4

Cropland (30_croparea)

Description

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.

Interfaces

Interfaces to other modules

Input

module inputs (A: detail_apr24 | B: simple_apr24)
  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

Output

module outputs
  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}\)

Realizations

(A) detail_apr24

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.

(B) simple_apr24

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.

Definitions

Objects

module-internal objects (A: detail_apr24 | B: simple_apr24)
  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

Sets

sets in use
  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

Authors

Jan Philipp Dietrich, Florian Humpenöder, Benjamin Bodirsky

See Also

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

References