4. Residue burning: about 24× too high

The package's burning total adds the CO2 from burning, and multiplies NOx by the N2O warming factor (GWP) (R/merge_outputs.R:810-812). IPCC 2006 Vol 4 Ch 2 (p. 2.41) counts only non-CO2 gases for burning on cropland and grassland, because the CO2 is taken back up when the crop regrows. NOx has no GWP.

1 t DM residue burnt IPCC Current Fixed
kg CO2e 75.3 1,802.5 75.3
--- a/R/merge_outputs.R	2026-09-29 10:31:17
+++ b/R/merge_outputs.R	2026-09-29 10:31:17
@@ -807,9 +807,11 @@
 
   burning <- 0
   if (nrow(ghg_burn) > 0 && ncol(ghg_burn) >= 5 && "ghg_gas" %in% names(ghg_burn)) {
-    burning <- sum_num(ghg_burn[ghg_burn$ghg_gas == "CO2", 5]) +
-      sum_num(ghg_burn[ghg_burn$ghg_gas == "CH4", 5]) * methane +
-      sum_num(ghg_burn[ghg_burn$ghg_gas == "Nox", 5]) * N2O
+    # IPCC 2006 Vol 4 Ch 2 p. 2.41: residue-burning CO2 is re-absorbed and not counted.
+    # NOx has no GWP. Read the amount by name, not by column position.
+    burn_amount <- ghg_burn$amount_of_ghg_emission_from_fire
+    burning <- sum_num(burn_amount[ghg_burn$ghg_gas == "CH4"]) * methane +
+      sum_num(burn_amount[ghg_burn$ghg_gas == "N2O"]) * N2O
   }
   burning_per_ha_kg_co2_e <- safe_zero_div(burning, area_required_on_farm_ha)
   burning_kg_co2_e_per_kg_fpcm <- safe_zero_div(burning, total_milk_produced_kg_fpcm_per_year)
@@ -1326,4 +1328,4 @@
   )
 
   c(app_output, batch_output[setdiff(names(batch_output), names(app_output))])
-}
+}
Reproduce this Open in Colab (R runtime; section 4)
Rscript reproduce_critical_issues.R 4 using reproduce_critical_issues.R (installs what it needs into its own library and cleaned @ 800d53a). Add CLEANED_FIXES=proposed_fixes.R with proposed_fixes.R for the fixed column.
Test: test-critical-04-burning-co2e.R · Proposed change: F04.diff · Open an issue in CIAT/cleaned

Comments

Comments are GitHub Discussions on peetmate/cleaned-review; sign in with GitHub to post.