Introduction

AMS-III.G covers project activities that recover and destroy landfill methane. This vignette demonstrates how cdmAmsIIIg operationalises the methodology with tidyverse data structures and composable helpers.

Simulate Monitoring Data

library(cdmAmsIIIg)
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_iiig_dataset(n_sites = 2, n_periods = 2, seed = 2025)
str(simulated, max.level = 1)
#> List of 4
#>  $ baseline     : tibble [4 × 7] (S3: tbl_df/tbl/data.frame)
#>  $ project      : tibble [4 × 12] (S3: tbl_df/tbl/data.frame)
#>  $ leakage      : tibble [4 × 9] (S3: tbl_df/tbl/data.frame)
#>  $ applicability: tibble [2 × 10] (S3: tbl_df/tbl/data.frame)

Check Applicability

landfill <- check_applicability_landfill_characteristics_iiig(simulated$applicability, group_cols = "site_id")
gas <- check_applicability_gas_management_iiig(simulated$applicability, group_cols = "site_id")
monitoring <- check_applicability_monitoring_framework_iiig(simulated$applicability, group_cols = "site_id")

applicability <- landfill %>%
  left_join(gas, by = "site_id") %>%
  left_join(monitoring, by = "site_id")

applicability
#> # A tibble: 2 × 4
#>   site_id landfill_applicable gas_management_applicable monitoring_applicable
#>   <chr>   <lgl>               <lgl>                     <lgl>                
#> 1 LF1     TRUE                FALSE                     TRUE                 
#> 2 LF2     TRUE                FALSE                     TRUE

Run Equation Helpers

baseline <- calculate_baseline_methane_emissions_iiig(
  simulated$baseline,
  group_cols = "site_id",
  days_col = "days_in_period"
)
project <- calculate_project_emissions_iiig(
  simulated$project,
  group_cols = "site_id",
  days_col = "days_in_period"
)
leakage <- calculate_leakage_emissions_iiig(simulated$leakage, group_cols = "site_id")

dplyr::bind_cols(baseline, project[-1], leakage[-1])
#> # A tibble: 2 × 4
#>   site_id baseline_emissions_tco2e project_emissions_tc…¹ leakage_emissions_tc…²
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 LF1                     1056018.                332216.                   155.
#> 2 LF2                      957942.                372444.                   180.
#> # ℹ abbreviated names: ¹​project_emissions_tco2e, ²​leakage_emissions_tco2e

Estimate Emission Reductions

reductions <- estimate_emission_reductions_ams_iiig(
  baseline_data = simulated$baseline,
  project_data = simulated$project,
  leakage_data = simulated$leakage,
  group_cols = "site_id",
  baseline_args = list(days_col = "days_in_period"),
  project_args = list(days_col = "days_in_period")
)

reductions
#> # A tibble: 2 × 5
#>   site_id baseline_emissions_tco2e project_emissions_tc…¹ leakage_emissions_tc…²
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 LF1                     1056018.                332216.                   155.
#> 2 LF2                      957942.                372444.                   180.
#> # ℹ abbreviated names: ¹​project_emissions_tco2e, ²​leakage_emissions_tco2e
#> # ℹ 1 more variable: net_emission_reductions_tco2e <dbl>

Aggregate Monitoring Periods

baseline_period <- calculate_baseline_methane_emissions_iiig(
  simulated$baseline,
  group_cols = c("site_id", "period"),
  days_col = "days_in_period"
)
project_period <- calculate_project_emissions_iiig(
  simulated$project,
  group_cols = c("site_id", "period"),
  days_col = "days_in_period"
)
leakage_period <- calculate_leakage_emissions_iiig(
  simulated$leakage,
  group_cols = c("site_id", "period")
)

period_results <- baseline_period %>%
  left_join(project_period, by = c("site_id", "period")) %>%
  left_join(leakage_period, by = c("site_id", "period")) %>%
  mutate(monitoring_period = period)

aggregate_monitoring_periods_iiig(
  period_results,
  group_cols = "site_id",
  monitoring_col = "monitoring_period"
)
#> # A tibble: 2 × 5
#>   site_id monitoring_periods baseline_emissions_tco2e project_emissions_tco2e
#>   <chr>                <int>                    <dbl>                   <dbl>
#> 1 LF1                      2                 1056018.                 332216.
#> 2 LF2                      2                  957942.                 372444.
#> # ℹ 1 more variable: leakage_emissions_tco2e <dbl>

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