Introduction

AMS-III.E covers project activities that avoid methane production from the decay of biomass by subjecting the material to combustion, gasification, or mechanical-thermal treatment. This vignette demonstrates how cdmAmsIIIe operationalises the methodology with tidyverse data structures and composable helpers.

Simulate Monitoring Data

library(cdmAmsIIIe)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

simulated <- simulate_ams_iiie_dataset(n_plants = 2, n_periods = 2, seed = 2024)
str(simulated, max.level = 1)
#> List of 4
#>  $ baseline     : tibble [4 × 6] (S3: tbl_df/tbl/data.frame)
#>  $ project      : tibble [4 × 8] (S3: tbl_df/tbl/data.frame)
#>  $ leakage      : tibble [4 × 7] (S3: tbl_df/tbl/data.frame)
#>  $ applicability: tibble [2 × 8] (S3: tbl_df/tbl/data.frame)

Check Applicability

feedstock <- check_applicability_feedstock_characteristics_iiie(simulated$applicability, group_cols = "plant_id")
control <- check_applicability_biomass_control_iiie(simulated$applicability, group_cols = "plant_id")
monitoring <- check_applicability_monitoring_practices_iiie(simulated$applicability, group_cols = "plant_id")

applicability <- feedstock %>%
  left_join(control, by = "plant_id") %>%
  left_join(monitoring, by = "plant_id")

applicability
#> # A tibble: 2 × 4
#>   plant_id feedstock_applicable biomass_control_applica…¹ monitoring_practices…²
#>   <chr>    <lgl>                <lgl>                     <lgl>                 
#> 1 PL1      TRUE                 TRUE                      TRUE                  
#> 2 PL2      TRUE                 TRUE                      TRUE                  
#> # ℹ abbreviated names: ¹​biomass_control_applicable,
#> #   ²​monitoring_practices_applicable

Run Equation Helpers

baseline <- calculate_baseline_methane_emissions_iiie(simulated$baseline, group_cols = "plant_id")
project <- calculate_project_emissions_iiie(simulated$project, group_cols = "plant_id")
leakage <- calculate_leakage_emissions_iiie(simulated$leakage, group_cols = "plant_id")

dplyr::bind_cols(baseline, project[-1], leakage[-1])
#> # A tibble: 2 × 4
#>   plant_id baseline_emissions_tc…¹ project_emissions_tc…² leakage_emissions_tc…³
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 PL1                        1683.                   208.                  116. 
#> 2 PL2                        2027.                   326.                   66.1
#> # ℹ abbreviated names: ¹​baseline_emissions_tco2e, ²​project_emissions_tco2e,
#> #   ³​leakage_emissions_tco2e

Estimate Emission Reductions

reductions <- estimate_emission_reductions_ams_iiie(
  baseline_data = simulated$baseline,
  project_data = simulated$project,
  leakage_data = simulated$leakage,
  group_cols = "plant_id"
)

reductions
#> # A tibble: 2 × 5
#>   plant_id baseline_emissions_tc…¹ project_emissions_tc…² leakage_emissions_tc…³
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 PL1                        1683.                   208.                  116. 
#> 2 PL2                        2027.                   326.                   66.1
#> # ℹ abbreviated names: ¹​baseline_emissions_tco2e, ²​project_emissions_tco2e,
#> #   ³​leakage_emissions_tco2e
#> # ℹ 1 more variable: net_emission_reductions_tco2e <dbl>

Aggregate Monitoring Periods

period_results <- simulated$baseline %>%
  mutate(
    baseline_emissions_tco2e = calculate_baseline_methane_emissions_iiie(
      data = ., group_cols = NULL
    )$baseline_emissions_tco2e / n(),
    project_emissions_tco2e = calculate_project_emissions_iiie(
      data = simulated$project, group_cols = NULL
    )$project_emissions_tco2e / n(),
    leakage_emissions_tco2e = calculate_leakage_emissions_iiie(
      data = simulated$leakage, group_cols = NULL
    )$leakage_emissions_tco2e / n()
  )

aggregate_monitoring_periods_iiie(period_results, group_cols = "plant_id", monitoring_col = "period")
#> # A tibble: 2 × 5
#>   plant_id monitoring_periods baseline_emissions_tco2e project_emissions_tco2e
#>   <chr>                 <int>                    <dbl>                   <dbl>
#> 1 PL1                       2                    1855.                    267.
#> 2 PL2                       2                    1855.                    267.
#> # ℹ 1 more variable: leakage_emissions_tco2e <dbl>

The helpers and workflow wrapper simplify reproducing AMS-III.E calculations with tidy inputs while providing traceable applicability evidence.