Skip to contents

Estimates enteric methane (CH4) emissions from cattle using IPCC Tier 1 or Tier 2 approaches with practical defaults for dairy systems.

Usage

calc_emissions_enteric(
  n_animals,
  cattle_category = "dairy_cows",
  production_system = "mixed",
  avg_milk_yield = 6000,
  avg_body_weight = NULL,
  dry_matter_intake = NULL,
  feed_inputs = NULL,
  ym_percent = 6.5,
  emission_factor_ch4 = NULL,
  tier = 1L,
  gwp_ch4 = 27.2,
  boundaries = NULL
)

Arguments

n_animals

Numeric scalar > 0. Number of animals.

cattle_category

Character. One of "dairy_cows", "heifers", "calves", "bulls". Default = "dairy_cows".

production_system

Character. One of "intensive", "extensive", "mixed". Default = "mixed".

avg_milk_yield

Numeric >= 0. Average annual milk yield per cow (kg/year). Default = 6000. Used in Tier 2 fallback for dairy cows.

avg_body_weight

Numeric > 0. Average live weight (kg). If NULL, a category-specific default is used (e.g. 550 kg for dairy cows).

dry_matter_intake

Numeric > 0. Dry matter intake (kg/animal/day). If provided (Tier 2), overrides body-weight/energy-based estimation.

feed_inputs

Named numeric vector/list with feed DM amounts in kg/year per herd (e.g., grain_dry, grain_wet, byproducts, proteins). Optional. If given and dry_matter_intake is NULL, DMI is inferred as sum(feed_inputs)/(n_animals*365).

ym_percent

Numeric in (0, 100]. Methane conversion factor Ym (% of GE to CH4). Default = 6.5.

emission_factor_ch4

Numeric > 0. If provided, CH4 EF (kg CH4/head/year) is used directly; otherwise it is calculated (Tier 1 or Tier 2).

tier

Integer 1 or 2. Default = 1.

gwp_ch4

Numeric. GWP for CH4 (100-yr, AR6). Default = 27.2.

boundaries

Optional list from set_system_boundaries().

Value

List with CH4 (kg), CO2eq (kg), inputs, factors, and metadata. Includes co2eq_kg for compatibility with calc_total_emissions().

Examples

# \donttest{
# Tier 1, mixed dairy cows
calc_emissions_enteric(n_animals = 100)
#> $source
#> [1] "enteric"
#> 
#> $category
#> [1] "dairy_cows"
#> 
#> $production_system
#> [1] "mixed"
#> 
#> $ch4_kg
#> [1] 11500
#> 
#> $co2eq_kg
#> [1] 312800
#> 
#> $emission_factors
#> $emission_factors$emission_factor_ch4
#> [1] 115
#> 
#> $emission_factors$ym_percent
#> [1] 6.5
#> 
#> $emission_factors$gwp_ch4
#> [1] 27.2
#> 
#> $emission_factors$method_used
#> [1] "Tier 1"
#> 
#> 
#> $inputs
#> $inputs$n_animals
#> [1] 100
#> 
#> $inputs$avg_body_weight
#> [1] 550
#> 
#> $inputs$avg_milk_yield
#> [1] 6000
#> 
#> $inputs$dry_matter_intake
#> NULL
#> 
#> $inputs$feed_inputs
#> NULL
#> 
#> $inputs$tier
#> [1] 1
#> 
#> 
#> $methodology
#> [1] "IPCC Tier 1 (default factors)"
#> 
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#> 
#> $date
#> [1] "2025-09-11"
#> 
#> $per_animal
#> $per_animal$ch4_kg
#> [1] 115
#> 
#> $per_animal$co2eq_kg
#> [1] 3128
#> 
#> $per_animal$milk_intensity_kg_co2eq_per_kg_milk
#> [1] 0.5213
#> 
#> 

# Tier 2 with explicit DMI
calc_emissions_enteric(
  n_animals = 120, tier = 2, avg_milk_yield = 7500, dry_matter_intake = 18
)
#> $source
#> [1] "enteric"
#> 
#> $category
#> [1] "dairy_cows"
#> 
#> $production_system
#> [1] "mixed"
#> 
#> $ch4_kg
#> [1] 16989.91
#> 
#> $co2eq_kg
#> [1] 462125.7
#> 
#> $emission_factors
#> $emission_factors$emission_factor_ch4
#> [1] 141.583
#> 
#> $emission_factors$ym_percent
#> [1] 6.5
#> 
#> $emission_factors$gwp_ch4
#> [1] 27.2
#> 
#> $emission_factors$method_used
#> [1] "Tier 2"
#> 
#> 
#> $inputs
#> $inputs$n_animals
#> [1] 120
#> 
#> $inputs$avg_body_weight
#> [1] 550
#> 
#> $inputs$avg_milk_yield
#> [1] 7500
#> 
#> $inputs$dry_matter_intake
#> [1] 18
#> 
#> $inputs$feed_inputs
#> NULL
#> 
#> $inputs$tier
#> [1] 2
#> 
#> 
#> $methodology
#> [1] "IPCC Tier 2 (GE-based where possible)"
#> 
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#> 
#> $date
#> [1] "2025-09-11"
#> 
#> $per_animal
#> $per_animal$ch4_kg
#> [1] 141.583
#> 
#> $per_animal$co2eq_kg
#> [1] 3851.047
#> 
#> $per_animal$milk_intensity_kg_co2eq_per_kg_milk
#> [1] 0.5135
#> 
#> 

# Boundary exclusion: enteric not included
b <- list(include = c("manure", "energy"))
calc_emissions_enteric(100, boundaries = b)$co2eq_kg  # NULL → excluded
#> NULL
# }