Introduction

AMS-III.H covers project activities that recover and utilise methane from anaerobic wastewater treatment. This vignette demonstrates how cdmAmsIIIh operationalises the methodology with tidyverse data structures and composable helpers.

Simulate Monitoring Data

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

Check Applicability

wastewater <- check_applicability_wastewater_characteristics_iiih(simulated$applicability, group_cols = "site_id")
recovery <- check_applicability_recovery_system_iiih(simulated$applicability, group_cols = "site_id")
monitoring <- check_applicability_monitoring_framework_iiih(simulated$applicability, group_cols = "site_id")

applicability <- wastewater %>%
  left_join(recovery, by = "site_id") %>%
  left_join(monitoring, by = "site_id")

applicability
#> # A tibble: 2 × 4
#>   site_id wastewater_applicable recovery_applicable monitoring_applicable
#>   <chr>   <lgl>                 <lgl>               <lgl>                
#> 1 WW1     FALSE                 FALSE               FALSE                
#> 2 WW2     TRUE                  FALSE               FALSE

Run Equation Helpers

baseline <- calculate_baseline_methane_emissions_iiih(
  simulated$baseline,
  group_cols = "site_id",
  days_col = "days_in_period"
)
project <- calculate_project_emissions_iiih(
  simulated$project,
  group_cols = "site_id",
  days_col = "days_in_period"
)
leakage <- calculate_leakage_emissions_iiih(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 WW1                        5121.                  1333.                   209.
#> 2 WW2                        4093.                  1246.                   302.
#> # ℹ abbreviated names: ¹​project_emissions_tco2e, ²​leakage_emissions_tco2e

Estimate Emission Reductions

reductions <- estimate_emission_reductions_ams_iiih(
  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 WW1                        5121.                  1333.                   209.
#> 2 WW2                        4093.                  1246.                   302.
#> # ℹ 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_iiih(
  simulated$baseline,
  group_cols = c("site_id", "period"),
  days_col = "days_in_period"
)
project_period <- calculate_project_emissions_iiih(
  simulated$project,
  group_cols = c("site_id", "period"),
  days_col = "days_in_period"
)
leakage_period <- calculate_leakage_emissions_iiih(
  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_iiih(
  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 WW1                      2                    5121.                   1333.
#> 2 WW2                      2                    4093.                   1246.
#> # ℹ 1 more variable: leakage_emissions_tco2e <dbl>

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