Environmental Impacts

Overview

The environmental module accounts for greenhouse gas emissions, land use change and nitrogen pollution from food production. These impacts are monetized and included in the objective function via configurable prices/penalties.

This is currently a work in progress and not all relevant environmental impacts are implemented and monetized yet.

Greenhouse Gas Emissions

The model tracks three major greenhouse gases using 100-year global warming potentials (GWP100):

  • CO₂ (GWP = 1): From land use change, fuel combustion

  • CH₄ (GWP = 28): From enteric fermentation (ruminants), rice paddies, manure

  • N₂O (GWP = 265): From nitrogen fertilizer application, manure

All emissions are aggregated to CO₂-equivalent (internally tracked in MtCO₂-eq; the configured price still applies per tonne) for carbon pricing.

Sources of Emissions

Crop Production:
  • N₂O from fertilizer (direct and indirect)

  • CH₄ from flooded rice cultivation

  • CO₂ from machinery/fuel (if included)

Livestock:
  • CH₄ from enteric fermentation (ruminants)

  • N₂O and CH₄ from manure management

  • CO₂ from feed production (indirect)

Land Use Change:
  • CO₂ from clearing vegetation (forest, grassland → cropland)

  • Soil carbon losses

Direct N₂O emission factors

The model uses the 2019 Refinement to the IPCC Guidelines for National Greenhouse Gas Inventories to parameterise direct N₂O emissions from managed soils. Table 11.1 (updated) is reproduced below to make the default emission factors and their uncertainty ranges readily accessible when configuring fertilizer-related pathways.

Default emission factors to estimate direct N₂O emissions from managed soils (IPCC, 2019 Refinement - Table 11.1)

Emission factor

Aggregated default value

Aggregated uncertainty range

Disaggregation

Default value

Uncertainty range

EF1 for N additions from synthetic fertilisers, organic amendments and crop residues, and N mineralised from mineral soil as a result of loss of soil carbon [kg N₂O-N (kg N)-1]

0.010

0.002 – 0.018

Synthetic fertiliser inputs in wet climates

Other N inputs in wet climates

All N inputs in dry climates

0.016 (wet synthetic)

0.006 (wet other)

0.005 (dry)

0.013 – 0.019

0.001 – 0.011

0.000 – 0.011

EF1FR for flooded rice fields [kg N₂O-N (kg N)-1]

0.004

0.000 – 0.029

Continuous flooding

Single and multiple drainage

0.003

0.005

0.000 – 0.010

0.000 – 0.016

EF3PRP,CPP for cattle (dairy, non-dairy and buffalo), poultry and pigs [kg N₂O-N (kg N)-1]

0.004

0.000 – 0.014

Wet climates

Dry climates

0.006

0.002

0.000 – 0.027

0.000 – 0.007

EF3PRP,SO for sheep and “other animals” [kg N₂O-N (kg N)-1]

0.003

0.000 – 0.010

Carbon Pricing

Emissions are priced at a configurable rate:

emissions:
  ghg_price: 200 # USD_2024/tCO2-eq (emissions stored in MtCO2-eq internally)
  ch4_to_co2_factor: 27.0 # IPCC AR6 GWP100 (WG1, Chapter 7, Table 7.15; https://www.ipcc.ch/report/ar6/wg1/chapter/chapter-7/)
  n2o_to_co2_factor: 273.0 # IPCC AR6 GWP100 (WG1, Chapter 7, Table 7.15; https://www.ipcc.ch/report/ar6/wg1/chapter/chapter-7/)

# --- section: land use change ---
luc:
  horizon_years: 25
  managed_flux_mode: "zero"
  forest_fraction_threshold: 0.2  # Minimum forest fraction (0-1) to apply regrowth sequestration
  spared_land_agb_threshold_tc_per_ha: 20.0  # Max AGB (tC/ha) for spared land eligibility

Land Use Change

Land-use change (LUC) emissions capture the carbon consequences of converting land between natural vegetation, cropland, pasture, and spared (actively rewilded) states. The model derives annualized per-hectare coefficients for each resource class and water supply that quantify the net CO₂ flux associated with allocating an additional hectare to a specific land use.

Conceptual overview

For every grid cell on the common suitability grid, the workflow computes three main quantities:

  • Pulse emissions (:math:`P_{i,u}`) – the one-off release (or uptake) that occurs when land transitions from its natural state to land use \(u\) (cropland or pasture). We estimate above-ground biomass (AGB), below-ground biomass (BGB), and soil organic carbon (SOC) stocks for both the natural and agricultural equilibria, then convert the difference to CO₂ using the stoichiometric factor \(44/12\).

  • Annual regrowth (:math:`R_i`) – the ongoing sequestration potential when land is spared or allowed to regrow. Regrowth is only applied where forest cover is present in the baseline land-cover map.

  • Managed flux (:math:`M_{i,u}`) – ongoing emissions from managed systems (e.g., peat oxidation, continuous tillage). The current implementation sets \(M_{i,u} = 0\) everywhere as a simplifying assumption.

The per-hectare land-use change factor (LEF) combines these components over the planning horizon \(H\) (years) configured in config/default.yaml:

\[\mathrm{LEF}_{i,u} = \frac{P_{i,u}}{H} + (R_i - M_{i,u})\]

LEFs are computed for three uses (cropland, pasture, spared). Cropland and pasture incur positive costs when they release carbon; spared land yields negative LEFs because regrowth produces a CO₂ sink. Area-weighted aggregation over resource classes produces region-level coefficients that the optimisation layer consumes.

Input datasets

The LUC pipeline harmonises several global datasets to the common grid:

These layers are reprojected, resampled, and combined by dedicated Snakemake rules to produce per-cell biomass/SOC stocks, forest masks, and regrowth rates ready for downstream processing. Figure Land-use change input layers harmonised to the modelling grid: forest fraction (Copernicus CCI), above-ground biomass (ESA Biomass CCI v6.0), soil organic carbon 0–30 cm (SoilGrids 2.0), and natural forest regrowth potential (Cook-Patton & Griscom, 2020). summarises the harmonised rasters on the common model grid.

Global maps showing forest fraction, biomass, soil carbon, and regrowth inputs

Land-use change input layers harmonised to the modelling grid: forest fraction (Copernicus CCI), above-ground biomass (ESA Biomass CCI v6.0), soil organic carbon 0–30 cm (SoilGrids 2.0), and natural forest regrowth potential (Cook-Patton & Griscom, 2020).

Model integration

The land-use change workflow consists of two scripts:

  1. prepare_luc_inputs.py aligns the raw rasters to the resource-class grid and stores intermediate masks and carbon pools under processing/{config}/luc/.

  2. build_luc_carbon_coefficients.py derives pulse emissions, annual LEFs, and aggregates them to luc_carbon_coefficients.csv.

During model construction, build_model.py loads these coefficients, converts the LEFs to marginal CO₂ flows (MtCO₂ per Mha-year), and attaches them to:

  • Crop production links (cropland LEFs)

  • Grazing links that supply ruminant feed (pasture LEFs)

  • Spared-land allocation links that credit regrowth sinks (filtered by current biomass—see below)

All flows connect to a single global co2 bus. A flexible CO₂ store with marginal cost equal to the carbon price (emissions.ghg_price) accumulates the net balance, so positive flows are penalised while negative flows earn credits. This approach keeps LUC accounting endogenous to the optimisation problem while leveraging a consistent carbon price alongside other greenhouse-gas sources. The spatial pattern of the resulting LEFs is shown in Annualised land-use change emission factors (LEFs) used in the optimisation. Warm colors indicate positive emissions costs (CO₂ release), while cool colors represent sequestration credits..

Spared land filtering

Regrowth sequestration rates from Cook-Patton et al. (2020) represent young regenerating forest (0-30 years) on previously cleared or degraded land. They do not apply to mature forests, which have already accumulated most of their carbon stock and exhibit near-zero net sequestration.

To avoid incorrectly crediting sequestration on mature forest, the LEF calculation for spared land includes a conditional that sets the sequestration benefit to zero where current above-ground biomass (AGB) exceeds a configurable threshold (luc.spared_land_agb_threshold_tc_per_ha, default 20 tC/ha). Specifically:

\[\begin{split}\mathrm{LEF}_{\mathrm{spared}} = \begin{cases} -R & \text{if } \mathrm{AGB} \leq \text{threshold} \\ 0 & \text{if } \mathrm{AGB} > \text{threshold} \end{cases}\end{split}\]

This ensures:

  • Low-biomass areas (recently cleared or degraded land suitable for agriculture) receive negative LEFs (sequestration credits) if left unused

  • High-biomass areas (mature tropical rainforest, boreal forest) receive zero spared-land LEF—their carbon value is already captured via high pulse emissions if converted, but they are not credited for additional regrowth

The threshold of 20 tC/ha is intermediate between typical agricultural land (0-10 tC/ha) and mature forest (50-200+ tC/ha). Areas above this threshold are assumed to represent established vegetation that would not exhibit the rapid early-successional regrowth rates quantified by Cook-Patton et al.

Global maps of cropland, pasture, and spared land LEFs

Annualised land-use change emission factors (LEFs) used in the optimisation. Warm colors indicate positive emissions costs (CO₂ release), while cool colors represent sequestration credits.

Limitations and assumptions

The current implementation makes several simplifying assumptions that should be considered when interpreting results:

  • Climatic zones: Zones (tropical, temperate, boreal) are assigned by latitude only (tropical: \(\lvert \phi \rvert < 23.5^\circ\), boreal: \(\lvert \phi \rvert \ge 50^\circ\), temperate: otherwise). This does not account for altitude effects (e.g., highland tropics behave more like temperate zones) or local climate variations. A future enhancement would use actual biome or Köppen-Geiger climate classifications.

  • Agricultural biomass stocks: Cropland and pasture equilibrium above-ground biomass is assumed to be negligible (0 tC/ha) for annual crops. This is a conservative assumption appropriate for grain crops where biomass is harvested annually, but underestimates carbon storage in perennial crops (orchards, oil palm, coffee) and improved pastures. See data/luc_zone_parameters.csv for the zone-specific parameters.

  • Forest mask threshold: Regrowth sequestration is only applied to cells with ≥20% forest cover in the baseline land cover map. This threshold can be adjusted via config['luc']['forest_fraction_threshold'] (default: 0.2). The choice of 20% is intermediate between FAO’s forest definition (≥10% tree cover) and stricter definitions (≥30%).

  • Soil organic carbon depth: SOC stocks in the 0-30 cm layer (from SoilGrids) are scaled to 1 m depth using zone-specific factors from data/luc_zone_parameters.csv. TODO: These factors require verification against IPCC 2006/2019 Guidelines Volume 4 Chapter 2 to ensure they match the intended Tier 1 methodology.

  • Managed flux: Set to zero everywhere (\(M_{i,u} = 0\)), meaning ongoing emissions from agricultural management (e.g., peat oxidation, tillage-induced decomposition) are not currently modeled. Future work could incorporate organic soil maps and management-specific emission factors.

Nitrogen Pollution

Fertilizer application causes nitrogen pollution via:

  • Leaching: NO₃⁻ contaminating groundwater

  • Runoff: Eutrophication of rivers/lakes

  • Volatilization: NH₃ → N₂O emissions

Global Fertilizer Limit

To prevent excessive pollution:

primary:
  land:
    regional_limit: 0.7 # fraction of each region's potential cropland that is made available.
  fertilizer:
    limit: 2e11 # kg (200 Mt total NPK - realistic global scale; converted to Mt inside the model)
    # High-input agriculture N application rates (percentile of global FUBC data)
    n_percentile: 80  # Use 80th percentile for high-input systems (range: 0-100)
    synthetic_n2o_factor: 0.010 # kg N2O-N per kg N input (IPCC 2019 Refinement, Table 11.1 aggregated default)

This caps total nitrogen-phosphorus-potassium application globally, forcing efficient use.

Nitrogen Use Efficiency (NUE)

Crop-specific fertilizer requirements (in data/crops.csv) implicitly include NUE (currently mock data). More efficient crops (legumes, which fix nitrogen) require less fertilizer.