Converts methane balances and optional energy inputs into project emissions for AMS-III.H wastewater recovery systems.

calculate_project_emissions_iiih(
  data,
  influent_flow_col = "influent_flow_m3_per_day",
  cod_concentration_col = "cod_mg_l",
  degradable_cod_fraction_col = "biodegradable_fraction",
  project_capture_efficiency_col = "project_capture_efficiency_fraction",
  destruction_efficiency_col = "destruction_efficiency_fraction",
  project_oxidation_fraction_col = "project_oxidation_fraction",
  fugitive_leakage_fraction_col = "fugitive_leakage_fraction",
  days_col = "days_in_period",
  electricity_consumption_col = "electricity_consumption_mwh",
  electricity_emission_factor_col = "electricity_ef_tco2_per_mwh",
  thermal_energy_consumption_col = "thermal_energy_consumption_gj",
  thermal_energy_emission_factor_col = "thermal_energy_ef_tco2_per_gj",
  group_cols = NULL,
  output_col = "project_emissions_tco2e",
  methane_conversion_factor_m3_per_kg_cod = 0.35,
  methane_density_t_per_m3 = 0.00067,
  gwp_ch4 = 28
)

Arguments

data

Tibble containing project monitoring data.

influent_flow_col

Column storing influent wastewater flow in m3 per day.

cod_concentration_col

Column storing influent COD concentration in mg/L.

degradable_cod_fraction_col

Optional column storing the biodegradable COD fraction.

project_capture_efficiency_col

Column storing methane capture efficiency under the project scenario.

destruction_efficiency_col

Column storing destruction efficiency of the flare or utilisation equipment.

project_oxidation_fraction_col

Optional column storing oxidation fractions for uncaptured methane.

fugitive_leakage_fraction_col

Optional column storing additional leakage fractions.

days_col

Optional column storing the number of days represented by each record.

electricity_consumption_col

Optional column storing electricity use in MWh.

electricity_emission_factor_col

Optional column storing emission factors in tCO2 per MWh.

thermal_energy_consumption_col

Optional column storing supplemental fuel use in GJ.

thermal_energy_emission_factor_col

Optional column storing emission factors in tCO2 per GJ.

group_cols

Optional character vector specifying grouping columns.

output_col

Name of the output column for project emissions in tCO2e.

methane_conversion_factor_m3_per_kg_cod

Methane generation potential in m3 CH4 per kg COD.

methane_density_t_per_m3

Density of methane in tonnes per cubic metre.

gwp_ch4

Global warming potential of methane.

Value

Tibble containing grouped project emissions in tCO2e.

Examples

project <- tibble::tibble(
  site_id = c("WW1", "WW2"),
  influent_flow_m3_per_day = c(5500, 3200),
  cod_mg_l = c(3200, 1800),
  project_capture_efficiency_fraction = c(0.75, 0.65),
  destruction_efficiency_fraction = c(0.985, 0.97)
)
calculate_project_emissions_iiih(project, group_cols = "site_id")
#> Error in dplyr::mutate(data_tbl, .days = if (!is.null(days_col)) .data[[days_col]] else 1,     .cod_load_kg = .data[[influent_flow_col]] * .data[[cod_concentration_col]]/1000,     .cod_load_kg = if (!is.null(degradable_cod_fraction_col)) {        .cod_load_kg * .data[[degradable_cod_fraction_col]]    } else {        .cod_load_kg    }, .cod_load_kg = .cod_load_kg * .days, .generated_m3 = .cod_load_kg *         methane_conversion_factor_m3_per_kg_cod, .captured_m3 = .generated_m3 *         .data[[project_capture_efficiency_col]], .destroyed_m3 = .captured_m3 *         .data[[destruction_efficiency_col]], .oxidised_m3 = if (!is.null(project_oxidation_fraction_col)) {        (.generated_m3 - .captured_m3) * .data[[project_oxidation_fraction_col]]    } else {        0    }, .fugitive_m3 = if (!is.null(fugitive_leakage_fraction_col)) {        .captured_m3 * .data[[fugitive_leakage_fraction_col]]    } else {        0    }, .residual_m3 = pmax(.generated_m3 - .destroyed_m3 - .oxidised_m3 +         .fugitive_m3, 0), .methane_component = .residual_m3 *         methane_density_t_per_m3 * gwp_ch4, .electricity_component = if (!is.null(electricity_consumption_col) &&         !is.null(electricity_emission_factor_col)) {        .data[[electricity_consumption_col]] * .data[[electricity_emission_factor_col]]    } else {        0    }, .thermal_component = if (!is.null(thermal_energy_consumption_col) &&         !is.null(thermal_energy_emission_factor_col)) {        .data[[thermal_energy_consumption_col]] * .data[[thermal_energy_emission_factor_col]]    } else {        0    }, .project_component = .methane_component + .electricity_component +         .thermal_component):  In argument: `.days = if (!is.null(days_col))
#>   .data[["days_in_period"]] else 1`.
#> Caused by error in `.data[["days_in_period"]]`:
#> ! Column `days_in_period` not found in `.data`.