Introduction

This vignette demonstrates how cdmAcm0008 operationalises the CDM large-scale methodology ACM0008 Consolidated methodology for coal mine methane projects. The package translates the methodology’s numbered equations into tidyverse-friendly helpers, enabling analysts to reproduce baseline, project, leakage, and net emission reduction estimates for methane capture, utilisation, and oxidation systems.

Applicability Checks

The package exposes helpers to test key applicability conditions.

library(cdmAcm0008)

check_applicability_mine_type("underground", TRUE)
#> [1] TRUE
check_applicability_methane_content(c(0.34, 0.36))
#> [1] TRUE TRUE
check_applicability_utilisation_pathway(c("oxidation", "venting"), c(TRUE, TRUE))
#> [1]  TRUE FALSE

Simulated Dataset

We provide a simulation utility built with tidyverse conventions to generate representative monitoring data.

monitoring <- simulate_acm0008_dataset(periods = 2, observations_per_period = 8, seed = 456)

knitr::kable(head(monitoring))
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
period year month day observation flow_rate_m3_per_h operating_hours methane_fraction oxidation_efficiency electricity_use_mwh grid_emission_factor_t_per_mwh
P01 2025 1 13 1 480.7104 90 0.4290182 0.9871161 4.215238 0.7382984
P01 2025 1 5 2 502.1766 90 0.4114541 0.9551299 3.469615 0.6849305
P01 2025 1 3 3 557.9854 90 0.4436208 0.9655561 3.643902 0.6034589
P01 2025 1 6 4 533.7801 90 0.4036098 0.9863811 4.624942 0.6232039
P01 2025 1 21 5 575.4044 90 0.3297266 0.9892088 4.478498 0.6307406
P01 2025 1 28 6 551.5279 90 0.3529537 0.9842680 5.180571 0.6494586

Equation Walkthrough

Equation-level helpers align with the methodology’s numbering.

period_one <- dplyr::filter(monitoring, period == "P01")
volume <- calculate_methane_volume_acm0008(period_one$flow_rate_m3_per_h, period_one$operating_hours)
baseline <- calculate_baseline_emissions_acm0008(volume, period_one$methane_fraction)
project <- calculate_project_emissions_acm0008(volume, period_one$methane_fraction, period_one$oxidation_efficiency)
leakage <- calculate_leakage_emissions_acm0008(period_one$electricity_use_mwh, period_one$grid_emission_factor_t_per_mwh)
net <- calculate_net_emission_reductions_acm0008(baseline, project, leakage)

tibble::tibble(
  observation = period_one$observation,
  baseline,
  project,
  leakage,
  net
)
#> # A tibble: 8 × 5
#>   observation baseline project leakage   net
#>         <int>    <dbl>   <dbl>   <dbl> <dbl>
#> 1           1     372.    4.79    3.11  364.
#> 2           2     373.   16.7     2.38  354.
#> 3           3     447.   15.4     2.20  429.
#> 4           4     389.    5.29    2.88  381.
#> 5           5     342.    3.69    2.82  336.
#> 6           6     351.    5.53    3.36  342.
#> 7           7     378.    5.43    2.65  370.
#> 8           8     372.   16.0     2.95  353.

Monitoring Period Aggregation

period_summary <- aggregate_monitoring_periods_acm0008(monitoring)
knitr::kable(period_summary)
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
period flow_rate_m3_per_h operating_hours methane_fraction oxidation_efficiency electricity_use_mwh grid_emission_factor_t_per_mwh recovered_volume_m3 baseline_emissions project_emissions leakage_emissions net_emission_reductions
P01 532.9157 720 0.3956607 0.9762876 34.13802 0.6554359 383699.3 3024.370 72.85274 22.36003 2929.157
P02 506.1975 720 0.4079785 0.9512821 38.43943 0.6635422 364462.2 2987.023 150.57966 25.51303 2810.930

Meta-Function

totals <- estimate_emission_reductions_acm0008(monitoring)
knitr::kable(totals)
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
total_recovered_volume_m3 total_baseline_emissions total_project_emissions total_leakage_emissions total_net_emission_reductions
748161.5 6011.393 223.4324 47.87306 5740.088

Function Reference

reference <- tibble::tribble(
  ~Function, ~Signature, ~Purpose,
  "check_applicability_mine_type", "(mine_type, requires_drainage, allowed_types)", "Validate coal mine classification and drainage availability.",
  "calculate_baseline_emissions_acm0008", "(recovered_volume_m3, methane_fraction, methane_density_t_per_m3, gwp_ch4)", "Translate Equation 2 for baseline emissions.",
  "estimate_emission_reductions_acm0008", "(monitoring_data)", "Summarise monitoring data into total emission reductions."
)

knitr::kable(reference)
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
Function Signature Purpose
check_applicability_mine_type (mine_type, requires_drainage, allowed_types) Validate coal mine classification and drainage availability.
calculate_baseline_emissions_acm0008 (recovered_volume_m3, methane_fraction, methane_density_t_per_m3, gwp_ch4) Translate Equation 2 for baseline emissions.
estimate_emission_reductions_acm0008 (monitoring_data) Summarise monitoring data into total emission reductions.

Workflow Overview

workflow <- tibble::tribble(
  ~Step, ~Description,
  "1", "Confirm applicability via mine type, methane content, and utilisation pathway checks.",
  "2", "Collect monitoring data on methane flows, composition, oxidation efficiency, and electricity use.",
  "3", "Apply equation helpers to compute baseline, project, and leakage emissions.",
  "4", "Aggregate emissions by monitoring period and estimate total reductions."
)

knitr::kable(workflow)
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
Step Description
1 Confirm applicability via mine type, methane content, and utilisation pathway checks.
2 Collect monitoring data on methane flows, composition, oxidation efficiency, and electricity use.
3 Apply equation helpers to compute baseline, project, and leakage emissions.
4 Aggregate emissions by monitoring period and estimate total reductions.