Introduction

AMS-III.F covers project activities that avoid methane emissions from organic waste by implementing controlled aerobic composting. This vignette demonstrates how cdmAmsIIIf operationalises the methodology with tidyverse data structures and composable helpers.

Simulate Monitoring Data

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

Check Applicability

feedstock <- check_applicability_feedstock_management_iiif(simulated$applicability, group_cols = "site_id")
practices <- check_applicability_composting_practices_iiif(simulated$applicability, group_cols = "site_id")
monitoring <- check_applicability_monitoring_framework_iiif(simulated$applicability, group_cols = "site_id")

applicability <- feedstock %>%
  left_join(practices, by = "site_id") %>%
  left_join(monitoring, by = "site_id")

applicability
#> # A tibble: 2 × 4
#>   site_id feedstock_applicable composting_practices_app…¹ monitoring_framework…²
#>   <chr>   <lgl>                <lgl>                      <lgl>                 
#> 1 ST1     TRUE                 FALSE                      TRUE                  
#> 2 ST2     TRUE                 FALSE                      FALSE                 
#> # ℹ abbreviated names: ¹​composting_practices_applicable,
#> #   ²​monitoring_framework_applicable

Run Equation Helpers

baseline <- calculate_baseline_methane_emissions_iiif(
  simulated$baseline,
  group_cols = "site_id",
  oxidation_factor_col = "baseline_oxidation_fraction"
)
project <- calculate_project_emissions_iiif(
  simulated$project,
  group_cols = "site_id",
  compost_oxidation_col = "compost_oxidation_fraction"
)
leakage <- calculate_leakage_emissions_iiif(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 ST1                        2145.                   346.                   9.82
#> 2 ST2                        2354.                   409.                  38.2 
#> # ℹ abbreviated names: ¹​project_emissions_tco2e, ²​leakage_emissions_tco2e

Estimate Emission Reductions

reductions <- estimate_emission_reductions_ams_iiif(
  baseline_data = simulated$baseline,
  project_data = simulated$project,
  leakage_data = simulated$leakage,
  group_cols = "site_id",
  baseline_args = list(oxidation_factor_col = "baseline_oxidation_fraction"),
  project_args = list(compost_oxidation_col = "compost_oxidation_fraction")
)

reductions
#> # A tibble: 2 × 5
#>   site_id baseline_emissions_tco2e project_emissions_tc…¹ leakage_emissions_tc…²
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 ST1                        2145.                   346.                   9.82
#> 2 ST2                        2354.                   409.                  38.2 
#> # ℹ 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_iiif(
  simulated$baseline,
  group_cols = c("site_id", "period"),
  oxidation_factor_col = "baseline_oxidation_fraction"
)
project_period <- calculate_project_emissions_iiif(
  simulated$project,
  group_cols = c("site_id", "period"),
  compost_oxidation_col = "compost_oxidation_fraction"
)
leakage_period <- calculate_leakage_emissions_iiif(
  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_iiif(
  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 ST1                      2                    2145.                    346.
#> 2 ST2                      2                    2354.                    409.
#> # ℹ 1 more variable: leakage_emissions_tco2e <dbl>

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