Introduction

This vignette documents the workflow implemented by cdmAcm0013 for the Clean Development Mechanism (CDM) methodology ACM0013. The methodology covers new grid-connected fossil fuel power plants that employ a less greenhouse gas intensive technology than the baseline grid generation they displace.

Applicability Checks

library(cdmAcm0013)

dataset <- simulate_acm0013_dataset(periods = 2, seed = 2025)
check_applicability_acm0013(dataset)
#> [1] TRUE

Simulated Dataset

monitoring <- simulate_acm0013_dataset(periods = 6, seed = 2025)
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 is_new_plant grid_connected electricity_sent_out_mwh baseline_emission_factor_tco2_per_mwh technology_emission_factor_tco2_per_mwh fuel_consumed fuel_emission_factor_tco2_per_unit auxiliary_electricity_mwh auxiliary_emission_factor_tco2_per_mwh other_project_emissions_tco2e upstream_fuel_emissions_tco2e displaced_unit_emissions_tco2e other_leakage_tco2e
1 TRUE TRUE 48087.15 0.9465240 0.7853121 80174152 7.34e-05 569.2827 0.6283929 38.423012 168.0829 86.41569 3.050059
2 TRUE TRUE 35476.71 0.8951523 0.6047385 67151587 7.92e-05 457.4357 0.6530104 40.734224 181.1187 75.09143 14.840804
3 TRUE TRUE 44362.46 0.9028432 0.7032556 71923290 7.78e-05 591.6823 0.8977290 49.891654 114.4853 74.63464 19.312213
4 TRUE TRUE 52146.86 0.8996865 0.6872761 81293106 7.20e-05 618.2340 0.8715938 40.662285 210.4004 91.30972 4.348235
5 TRUE TRUE 42301.21 0.9560569 0.7046745 65792501 7.86e-05 664.7624 0.7210183 37.452852 126.9043 103.55314 2.039359
6 TRUE TRUE 42311.50 0.9008504 0.7571335 79306338 7.26e-05 445.6165 0.8791400 6.553761 119.7397 92.05448 15.356158

Equation Walkthrough

monitoring <- monitoring |>
  dplyr::mutate(
    baseline_emissions_tco2e = calculate_baseline_emissions_acm0013(
      electricity_sent_out_mwh,
      baseline_emission_factor_tco2_per_mwh
    ),
    project_emissions_tco2e = calculate_project_emissions_acm0013(
      fuel_consumed,
      fuel_emission_factor_tco2_per_unit,
      auxiliary_electricity_mwh = auxiliary_electricity_mwh,
      auxiliary_emission_factor_tco2_per_mwh = auxiliary_emission_factor_tco2_per_mwh,
      other_project_emissions_tco2e = other_project_emissions_tco2e
    ),
    leakage_emissions_tco2e = calculate_leakage_emissions_acm0013(
      upstream_fuel_emissions_tco2e,
      displaced_unit_emissions_tco2e,
      other_leakage_tco2e
    )
  )
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 is_new_plant grid_connected electricity_sent_out_mwh baseline_emission_factor_tco2_per_mwh technology_emission_factor_tco2_per_mwh fuel_consumed fuel_emission_factor_tco2_per_unit auxiliary_electricity_mwh auxiliary_emission_factor_tco2_per_mwh other_project_emissions_tco2e upstream_fuel_emissions_tco2e displaced_unit_emissions_tco2e other_leakage_tco2e baseline_emissions_tco2e project_emissions_tco2e leakage_emissions_tco2e
1 TRUE TRUE 48087.15 0.9465240 0.7853121 80174152 7.34e-05 569.2827 0.6283929 38.423012 168.0829 86.41569 3.050059 45515.64 6278.446 257.5486
2 TRUE TRUE 35476.71 0.8951523 0.6047385 67151587 7.92e-05 457.4357 0.6530104 40.734224 181.1187 75.09143 14.840804 31757.06 5656.777 271.0509
3 TRUE TRUE 44362.46 0.9028432 0.7032556 71923290 7.78e-05 591.6823 0.8977290 49.891654 114.4853 74.63464 19.312213 40052.34 6175.139 208.4322
4 TRUE TRUE 52146.86 0.8996865 0.6872761 81293106 7.20e-05 618.2340 0.8715938 40.662285 210.4004 91.30972 4.348235 46915.83 6431.929 306.0583
5 TRUE TRUE 42301.21 0.9560569 0.7046745 65792501 7.86e-05 664.7624 0.7210183 37.452852 126.9043 103.55314 2.039359 40442.36 5685.960 232.4968
6 TRUE TRUE 42311.50 0.9008504 0.7571335 79306338 7.26e-05 445.6165 0.8791400 6.553761 119.7397 92.05448 15.356158 38116.33 6155.646 227.1503

Monitoring Period Aggregation

monitoring <- monitoring |>
  dplyr::mutate(
    net_emission_reductions_tco2e = calculate_net_emission_reductions_acm0013(
      baseline_emissions_tco2e,
      project_emissions_tco2e,
      leakage_emissions_tco2e
    )
  )
aggregate_monitoring_periods_acm0013(monitoring) |>
  knitr::kable()
#> 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 baseline_emissions_tco2e project_emissions_tco2e leakage_emissions_tco2e net_emission_reductions_tco2e
1 45515.64 6278.446 257.5486 38979.65
2 31757.06 5656.777 271.0509 25829.23
3 40052.34 6175.139 208.4322 33668.77
4 46915.83 6431.929 306.0583 40177.84
5 40442.36 5685.960 232.4968 34523.90
6 38116.33 6155.646 227.1503 31733.54

Meta-Function

results <- estimate_emission_reductions_acm0013(
  simulate_acm0013_dataset(periods = 12, seed = 42)
)
results$total_emission_reductions
#> # A tibble: 1 × 4
#>   baseline_emissions_tco2e project_emissions_tco2e leakage_emissions_tco2e
#>                      <dbl>                   <dbl>                   <dbl>
#> 1                  511459.                  73455.                   3428.
#> # ℹ 1 more variable: net_emission_reductions_tco2e <dbl>

Function Reference

reference <- tibble::tibble(
  Function = c(
    "check_applicability_acm0013",
    "calculate_baseline_emissions_acm0013",
    "estimate_emission_reductions_acm0013"
  ),
  Signature = c(
    "(data, efficiency_improvement_threshold = 0.1)",
    "(electricity_generated_mwh, baseline_emission_factor_tco2_per_mwh)",
    "(data)"
  ),
  Purpose = c(
    "Validate ACM0013 applicability conditions",
    "Compute baseline emissions for displaced grid electricity",
    "Run the end-to-end ACM0013 estimator"
  )
)
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_acm0013 (data, efficiency_improvement_threshold = 0.1) Validate ACM0013 applicability conditions
calculate_baseline_emissions_acm0013 (electricity_generated_mwh, baseline_emission_factor_tco2_per_mwh) Compute baseline emissions for displaced grid electricity
estimate_emission_reductions_acm0013 (data) Run the end-to-end ACM0013 estimator

Workflow Overview

workflow <- tibble::tibble(
  Step = c(
    "Confirm applicability",
    "Assemble monitoring dataset",
    "Run equation helpers",
    "Aggregate monitoring periods",
    "Report emission reductions"
  ),
  Description = c(
    "Ensure the plant is new, grid-connected, and lower-emitting than the baseline",
    "Collect electricity output, fuel consumption, and leakage parameters",
    "Transform monitoring data into emissions metrics",
    "Summarise emissions by reporting period",
    "Compile baseline, project, leakage, and net 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
Confirm applicability Ensure the plant is new, grid-connected, and lower-emitting than the baseline
Assemble monitoring dataset Collect electricity output, fuel consumption, and leakage parameters
Run equation helpers Transform monitoring data into emissions metrics
Aggregate monitoring periods Summarise emissions by reporting period
Report emission reductions Compile baseline, project, leakage, and net reductions