mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
S0380.187: include electric secondary heating in Appendix M1 D_PV,m — closes gas+PV PE/CO2 gap
The PV onsite/export β-split (SAP 10.2 Appendix M1 §3a, p.93) divides PV generation by the monthly PV-eligible electricity demand D_PV,m. The cascade included main and water electricity (when those fuels are electric) but had no term for SECONDARY space heating. For the 10 cohort-2 gas-main + electric-secondary + PV certs, the (215)m secondary electric fuel was dropped from D_PV,m — understating demand in the heating months only, depressing the monthly β, and under-crediting onsite PV primary energy. Spec: Appendix M1 §3a counts E_space,m as the dwelling's TOTAL electric space-heating demand; for a gas-main/electric-secondary dwelling that is the secondary fuel. Diagnosis was decisive: E_PV (generation) matched the worksheet exactly every month, the onsite (233a) split diverged ONLY in heating months (Jun-Sep near-exact), and all 10 affected certs have PV while all clean gas certs have none. Empirically adding (215)m to D_PV closed cert 3136 onsite 726.9 → 790.3 (worksheet 792.1). Impact (calc − full-precision dr87 worksheet), the 10 certs: PE +0.5..+1.5 → +0.02..+0.046 kWh/m²; CO2 −0.5..−1.1 → +0.002..+0.0095 kg. The whole 47-cert cohort now matches at PE <0.05 / CO2 <0.025. SAP integers unchanged; chain SAP 1e-4 pins intact (164 pass). The uniform ~0.03 PE remnant on PV certs is the separate (233a)/(233b) summer-month D_PV discrepancy. Re-pinned the 10 worksheet + 9 lodged golden residuals (improvements). 2273 pass, 0 regressions; pyright net-zero (file's 32 errors pre-existing). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
b4c04210f4
commit
fdd2f60ef2
2 changed files with 57 additions and 36 deletions
|
|
@ -2291,24 +2291,39 @@ def _pv_eligible_demand_monthly_kwh(
|
|||
electric_shower_monthly_kwh: tuple[float, ...],
|
||||
pumps_fans_monthly_kwh: tuple[float, ...],
|
||||
main_1_fuel_monthly_kwh: tuple[float, ...],
|
||||
secondary_fuel_monthly_kwh: tuple[float, ...],
|
||||
hot_water_monthly_kwh: tuple[float, ...],
|
||||
main_fuel_code_table_12: Optional[int],
|
||||
secondary_fuel_code_table_12: Optional[int],
|
||||
water_heating_fuel_code_table_12: Optional[int],
|
||||
) -> tuple[float, ...]:
|
||||
"""SAP 10.2 Appendix M1 §3a (p.93) — monthly PV-eligible demand
|
||||
D_PV,m. Always includes lighting + appliances + cooking + electric
|
||||
shower + pumps & fans. Includes E_space,m only when the main
|
||||
heating fuel is electricity at the standard tariff (codes 30, 32,
|
||||
34, 35, 38 per spec). Includes E_water,m only when the water
|
||||
heating fuel code is 30 (standard electricity) per spec.
|
||||
shower + pumps & fans. Includes E_space,m (main AND secondary space
|
||||
heating) only for the electric tariffs eligible for PV self-use
|
||||
(codes 30, 32, 34, 35, 38 per spec). Includes E_water,m only when
|
||||
the water heating fuel code is 30 (standard electricity) per spec.
|
||||
|
||||
Secondary space heating is included on the same footing as main:
|
||||
Appendix M1 §3a counts E_space,m as the dwelling's total electric
|
||||
space-heating demand, which for a gas-main / electric-secondary
|
||||
dwelling is the (215)m secondary fuel. Omitting it understates
|
||||
D_PV,m in the heating months only — depressing the monthly β →
|
||||
onsite split and under-crediting PV primary energy (the calc-vs-
|
||||
worksheet (233a) gap localised on the cohort-2 gas+PV certs:
|
||||
cert 3136 onsite 726.9 → 790.3 vs worksheet 792.1).
|
||||
|
||||
The off-peak immersion × (243) Ewater branch and the Appendix G4
|
||||
PV diverter adjustment are deferred — current cohort fixtures
|
||||
don't exercise them."""
|
||||
include_space = (
|
||||
include_main_space = (
|
||||
main_fuel_code_table_12 is not None
|
||||
and main_fuel_code_table_12 in _PV_ELIGIBLE_SPACE_HEATING_FUEL_CODES
|
||||
)
|
||||
include_secondary_space = (
|
||||
secondary_fuel_code_table_12 is not None
|
||||
and secondary_fuel_code_table_12 in _PV_ELIGIBLE_SPACE_HEATING_FUEL_CODES
|
||||
)
|
||||
include_water = (
|
||||
water_heating_fuel_code_table_12 is not None
|
||||
and water_heating_fuel_code_table_12 in _PV_ELIGIBLE_WATER_HEATING_FUEL_CODES
|
||||
|
|
@ -2322,8 +2337,10 @@ def _pv_eligible_demand_monthly_kwh(
|
|||
+ electric_shower_monthly_kwh[m]
|
||||
+ pumps_fans_monthly_kwh[m]
|
||||
)
|
||||
if include_space:
|
||||
if include_main_space:
|
||||
d += main_1_fuel_monthly_kwh[m]
|
||||
if include_secondary_space:
|
||||
d += secondary_fuel_monthly_kwh[m]
|
||||
if include_water:
|
||||
d += hot_water_monthly_kwh[m]
|
||||
monthly.append(d)
|
||||
|
|
@ -6308,11 +6325,13 @@ def cert_to_inputs(
|
|||
pumps_fans_kwh, _DAYS_IN_MONTH,
|
||||
),
|
||||
main_1_fuel_monthly_kwh=energy_requirements_result.main_1_fuel_monthly_kwh,
|
||||
secondary_fuel_monthly_kwh=energy_requirements_result.secondary_fuel_monthly_kwh,
|
||||
hot_water_monthly_kwh=hot_water_monthly_kwh_for_pv,
|
||||
main_fuel_code_table_12=(
|
||||
API_FUEL_TO_TABLE_12.get(main_fuel, main_fuel)
|
||||
if main_fuel is not None else None
|
||||
),
|
||||
secondary_fuel_code_table_12=_secondary_fuel_code(epc),
|
||||
water_heating_fuel_code_table_12=(
|
||||
API_FUEL_TO_TABLE_12.get(
|
||||
epc.sap_heating.water_heating_fuel,
|
||||
|
|
|
|||
|
|
@ -430,17 +430,17 @@ _EXPECTATIONS: tuple[_GoldenExpectation, ...] = (
|
|||
# ------------------------------------------------------------------
|
||||
_GoldenExpectation(cert_number="0036-6325-1100-0063-1226", actual_sap=63, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.4019, expected_co2_resid_tonnes_per_yr=+0.0255, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0100-5141-0522-4696-3463", actual_sap=86, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.5174, expected_co2_resid_tonnes_per_yr=+0.0277, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0200-3155-0122-2602-3563", actual_sap=81, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+1.6041, expected_co2_resid_tonnes_per_yr=-0.0096, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0300-2403-2650-2206-0235", actual_sap=77, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+1.1308, expected_co2_resid_tonnes_per_yr=+0.0443, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0310-2763-5450-2506-3501", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+1.2791, expected_co2_resid_tonnes_per_yr=+0.0150, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0200-3155-0122-2602-3563", actual_sap=81, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.5078, expected_co2_resid_tonnes_per_yr=-0.0085, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0300-2403-2650-2206-0235", actual_sap=77, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.0541, expected_co2_resid_tonnes_per_yr=+0.0454, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0310-2763-5450-2506-3501", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.1087, expected_co2_resid_tonnes_per_yr=+0.0159, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0320-2126-2150-2326-6161", actual_sap=72, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2060, expected_co2_resid_tonnes_per_yr=+0.0128, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0320-2756-8640-2296-1101", actual_sap=90, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2370, expected_co2_resid_tonnes_per_yr=+0.0303, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0330-2257-3640-2196-3145", actual_sap=85, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.2809, expected_co2_resid_tonnes_per_yr=+0.0350, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0360-2266-5650-2106-8285", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.6646, expected_co2_resid_tonnes_per_yr=-0.0170, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0360-2266-5650-2106-8285", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.0150, expected_co2_resid_tonnes_per_yr=-0.0162, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0380-2530-6150-2326-4161", actual_sap=66, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.0893, expected_co2_resid_tonnes_per_yr=-0.0315, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0390-2066-4250-2026-4555", actual_sap=65, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2522, expected_co2_resid_tonnes_per_yr=+0.0005, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0464-3032-0205-4276-3204", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+1.1607, expected_co2_resid_tonnes_per_yr=+0.0451, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0652-3022-1205-2826-1200", actual_sap=71, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.9954, expected_co2_resid_tonnes_per_yr=+0.0276, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0464-3032-0205-4276-3204", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.2728, expected_co2_resid_tonnes_per_yr=+0.0459, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="0652-3022-1205-2826-1200", actual_sap=71, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.0524, expected_co2_resid_tonnes_per_yr=+0.0284, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="1536-9325-5100-0433-1226", actual_sap=66, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.1568, expected_co2_resid_tonnes_per_yr=-0.0456, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="2007-3011-9205-8136-3204", actual_sap=68, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.3773, expected_co2_resid_tonnes_per_yr=-0.0325, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="2031-3007-0205-1296-3204", actual_sap=64, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.4198, expected_co2_resid_tonnes_per_yr=-0.0420, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
|
|
@ -462,7 +462,7 @@ _EXPECTATIONS: tuple[_GoldenExpectation, ...] = (
|
|||
_GoldenExpectation(cert_number="2590-3025-7205-9066-0200", actual_sap=66, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.1309, expected_co2_resid_tonnes_per_yr=-0.0036, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="2699-3025-5205-8066-0200", actual_sap=69, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.4755, expected_co2_resid_tonnes_per_yr=-0.0016, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="2800-7999-0322-4594-3563", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.2868, expected_co2_resid_tonnes_per_yr=-0.0049, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="3136-7925-4500-0246-6202", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+1.0936, expected_co2_resid_tonnes_per_yr=-0.0485, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="3136-7925-4500-0246-6202", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.3181, expected_co2_resid_tonnes_per_yr=-0.0476, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="3336-2825-9400-0512-8292", actual_sap=78, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2060, expected_co2_resid_tonnes_per_yr=-0.0420, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="4536-5424-8600-0109-1226", actual_sap=82, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.0660, expected_co2_resid_tonnes_per_yr=-0.0053, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="4536-8325-3100-0409-1222", actual_sap=66, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2794, expected_co2_resid_tonnes_per_yr=+0.0093, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
|
|
@ -470,10 +470,10 @@ _EXPECTATIONS: tuple[_GoldenExpectation, ...] = (
|
|||
_GoldenExpectation(cert_number="6835-3920-2509-0933-5226", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.5284, expected_co2_resid_tonnes_per_yr=-0.0237, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="7700-3362-0922-7022-3563", actual_sap=63, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.4141, expected_co2_resid_tonnes_per_yr=+0.0216, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="7800-1501-0922-7127-3563", actual_sap=65, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.0594, expected_co2_resid_tonnes_per_yr=+0.0440, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="7836-3125-0600-0526-2202", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.9583, expected_co2_resid_tonnes_per_yr=+0.0165, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="7836-3125-0600-0526-2202", actual_sap=80, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.1181, expected_co2_resid_tonnes_per_yr=+0.0172, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9036-0824-3500-0420-8222", actual_sap=84, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.2791, expected_co2_resid_tonnes_per_yr=+0.0337, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9370-3060-1205-3546-4204", actual_sap=88, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.0131, expected_co2_resid_tonnes_per_yr=-0.0060, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9380-2957-7490-2595-3141", actual_sap=75, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.9173, expected_co2_resid_tonnes_per_yr=-0.0244, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9380-2957-7490-2595-3141", actual_sap=75, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=+0.2253, expected_co2_resid_tonnes_per_yr=-0.0238, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9421-3045-3205-1646-6200", actual_sap=87, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.3253, expected_co2_resid_tonnes_per_yr=-0.0046, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9796-3058-6205-0346-9200", actual_sap=90, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.3101, expected_co2_resid_tonnes_per_yr=-0.0013, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
_GoldenExpectation(cert_number="9836-7525-9500-0575-1202", actual_sap=75, expected_sap_resid=+0, expected_pe_resid_kwh_per_m2=-0.0766, expected_co2_resid_tonnes_per_yr=+0.0011, notes="Cohort-2 baseline pin captured by S0380.69."),
|
||||
|
|
@ -508,34 +508,36 @@ class _WorksheetPin:
|
|||
expected_co2_resid_kg: float
|
||||
|
||||
|
||||
# The 47 worksheet-validated certs (9 ASHP + 38 cohort-2). Findings at
|
||||
# capture (HEAD post-S0380.185), calc − worksheet:
|
||||
# - CO2: exact on 37/47 (<0.02 kg); the 10 higher-consumption gas certs
|
||||
# carry a small −0.5..−1.1 kg under-count.
|
||||
# - PE : exact on 37/47 (<0.05 kWh/m²); the SAME 10 carry a +0.5..+1.5
|
||||
# kWh/m² over-count.
|
||||
# PE-over + CO2-under on the same certs is the fingerprint of a small
|
||||
# gas→electricity fuel-split difference (electricity PE 1.51 > gas 1.13,
|
||||
# but electricity CO2 0.136 < gas 0.21), not a factor-value error — the
|
||||
# next slice candidate. Values frozen from the dr87 PDFs (untracked, so
|
||||
# not parsed at test time) per the worksheet_unrounded_sap convention.
|
||||
# The 47 worksheet-validated certs (9 ASHP + 38 cohort-2). calc −
|
||||
# worksheet now sits at PE <0.05 kWh/m² and CO2 <0.025 kg across the
|
||||
# whole cohort. S0380.187 closed the 10-cert gas+PV cluster that
|
||||
# previously carried PE +0.5..+1.5 / CO2 −0.5..−1.1: those certs are
|
||||
# gas-main + electric-secondary + PV, and the electric secondary
|
||||
# heating (215)m was being omitted from the Appendix M1 §3a PV-eligible
|
||||
# demand D_PV,m — depressing the monthly β onsite/export split and
|
||||
# under-crediting PV primary energy in the heating months only. The
|
||||
# uniform ~0.02..0.046 PE remnant on the PV certs is the separate
|
||||
# (233a)/(233b) summer-month D_PV discrepancy, unrelated to the
|
||||
# secondary fix. Values frozen from the dr87 PDFs
|
||||
# (untracked, so not parsed at test time) per the worksheet_unrounded_sap
|
||||
# convention.
|
||||
_WORKSHEET_PE_CO2: tuple[_WorksheetPin, ...] = (
|
||||
_WorksheetPin(cert_number="0036-6325-1100-0063-1226", ws_pe_kwh_per_m2=213.4019, ws_co2_kg_per_yr=2125.4851, expected_pe_resid=-0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="0100-5141-0522-4696-3463", ws_pe_kwh_per_m2=53.4939, ws_co2_kg_per_yr=427.6895, expected_pe_resid=+0.0235, expected_co2_resid_kg=+0.0195),
|
||||
_WorksheetPin(cert_number="0200-3155-0122-2602-3563", ws_pe_kwh_per_m2=192.4660, ws_co2_kg_per_yr=2191.4589, expected_pe_resid=+1.1381, expected_co2_resid_kg=-1.0649),
|
||||
_WorksheetPin(cert_number="0300-2403-2650-2206-0235", ws_pe_kwh_per_m2=224.9069, ws_co2_kg_per_yr=2445.3496, expected_pe_resid=+1.2239, expected_co2_resid_kg=-1.0351),
|
||||
_WorksheetPin(cert_number="0310-2763-5450-2506-3501", ws_pe_kwh_per_m2=233.8452, ws_co2_kg_per_yr=1715.8602, expected_pe_resid=+1.4339, expected_co2_resid_kg=-0.8667),
|
||||
_WorksheetPin(cert_number="0200-3155-0122-2602-3563", ws_pe_kwh_per_m2=192.4660, ws_co2_kg_per_yr=2191.4589, expected_pe_resid=+0.0418, expected_co2_resid_kg=+0.0041),
|
||||
_WorksheetPin(cert_number="0300-2403-2650-2206-0235", ws_pe_kwh_per_m2=224.9069, ws_co2_kg_per_yr=2445.3496, expected_pe_resid=+0.0390, expected_co2_resid_kg=+0.0065),
|
||||
_WorksheetPin(cert_number="0310-2763-5450-2506-3501", ws_pe_kwh_per_m2=233.8452, ws_co2_kg_per_yr=1715.8602, expected_pe_resid=+0.0461, expected_co2_resid_kg=+0.0033),
|
||||
_WorksheetPin(cert_number="0320-2126-2150-2326-6161", ws_pe_kwh_per_m2=177.7940, ws_co2_kg_per_yr=2312.8161, expected_pe_resid=+0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="0320-2756-8640-2296-1101", ws_pe_kwh_per_m2=45.7367, ws_co2_kg_per_yr=430.2596, expected_pe_resid=+0.0263, expected_co2_resid_kg=+0.0247),
|
||||
_WorksheetPin(cert_number="0330-2249-8150-2326-4121", ws_pe_kwh_per_m2=199.4413, ws_co2_kg_per_yr=3066.3286, expected_pe_resid=-0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="0330-2257-3640-2196-3145", ws_pe_kwh_per_m2=66.2620, ws_co2_kg_per_yr=435.0043, expected_pe_resid=+0.0189, expected_co2_resid_kg=+0.0093),
|
||||
_WorksheetPin(cert_number="0350-2968-2650-2796-5255", ws_pe_kwh_per_m2=55.7024, ws_co2_kg_per_yr=470.7988, expected_pe_resid=+0.0164, expected_co2_resid_kg=+0.0146),
|
||||
_WorksheetPin(cert_number="0360-2266-5650-2106-8285", ws_pe_kwh_per_m2=162.9804, ws_co2_kg_per_yr=2183.7720, expected_pe_resid=+0.6841, expected_co2_resid_kg=-0.7413),
|
||||
_WorksheetPin(cert_number="0360-2266-5650-2106-8285", ws_pe_kwh_per_m2=162.9804, ws_co2_kg_per_yr=2183.7720, expected_pe_resid=+0.0346, expected_co2_resid_kg=+0.0055),
|
||||
_WorksheetPin(cert_number="0380-2471-3250-2596-8761", ws_pe_kwh_per_m2=56.4872, ws_co2_kg_per_yr=292.5490, expected_pe_resid=+0.0387, expected_co2_resid_kg=+0.0199),
|
||||
_WorksheetPin(cert_number="0380-2530-6150-2326-4161", ws_pe_kwh_per_m2=174.9107, ws_co2_kg_per_yr=2368.5251, expected_pe_resid=+0.0000, expected_co2_resid_kg=+0.0000),
|
||||
_WorksheetPin(cert_number="0390-2066-4250-2026-4555", ws_pe_kwh_per_m2=176.7478, ws_co2_kg_per_yr=2500.4581, expected_pe_resid=-0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="0464-3032-0205-4276-3204", ws_pe_kwh_per_m2=179.2365, ws_co2_kg_per_yr=1845.9475, expected_pe_resid=+0.9242, expected_co2_resid_kg=-0.8342),
|
||||
_WorksheetPin(cert_number="0652-3022-1205-2826-1200", ws_pe_kwh_per_m2=251.0214, ws_co2_kg_per_yr=2828.3691, expected_pe_resid=+0.9740, expected_co2_resid_kg=-0.7228),
|
||||
_WorksheetPin(cert_number="0464-3032-0205-4276-3204", ws_pe_kwh_per_m2=179.2365, ws_co2_kg_per_yr=1845.9475, expected_pe_resid=+0.0364, expected_co2_resid_kg=+0.0020),
|
||||
_WorksheetPin(cert_number="0652-3022-1205-2826-1200", ws_pe_kwh_per_m2=251.0214, ws_co2_kg_per_yr=2828.3691, expected_pe_resid=+0.0310, expected_co2_resid_kg=+0.0095),
|
||||
_WorksheetPin(cert_number="1536-9325-5100-0433-1226", ws_pe_kwh_per_m2=180.8432, ws_co2_kg_per_yr=2054.3609, expected_pe_resid=-0.0000, expected_co2_resid_kg=+0.0000),
|
||||
_WorksheetPin(cert_number="2007-3011-9205-8136-3204", ws_pe_kwh_per_m2=172.6227, ws_co2_kg_per_yr=2567.5298, expected_pe_resid=-0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="2031-3007-0205-1296-3204", ws_pe_kwh_per_m2=191.4198, ws_co2_kg_per_yr=2257.9561, expected_pe_resid=-0.0000, expected_co2_resid_kg=+0.0000),
|
||||
|
|
@ -548,7 +550,7 @@ _WORKSHEET_PE_CO2: tuple[_WorksheetPin, ...] = (
|
|||
_WorksheetPin(cert_number="2636-0525-2600-0401-2296", ws_pe_kwh_per_m2=52.5660, ws_co2_kg_per_yr=395.4880, expected_pe_resid=+0.0212, expected_co2_resid_kg=+0.0168),
|
||||
_WorksheetPin(cert_number="2699-3025-5205-8066-0200", ws_pe_kwh_per_m2=168.4755, ws_co2_kg_per_yr=2498.3764, expected_pe_resid=-0.0000, expected_co2_resid_kg=+0.0000),
|
||||
_WorksheetPin(cert_number="2800-7999-0322-4594-3563", ws_pe_kwh_per_m2=89.2727, ws_co2_kg_per_yr=395.0757, expected_pe_resid=+0.0141, expected_co2_resid_kg=+0.0067),
|
||||
_WorksheetPin(cert_number="3136-7925-4500-0246-6202", ws_pe_kwh_per_m2=238.6376, ws_co2_kg_per_yr=1752.3516, expected_pe_resid=+1.4560, expected_co2_resid_kg=-0.8858),
|
||||
_WorksheetPin(cert_number="3136-7925-4500-0246-6202", ws_pe_kwh_per_m2=238.6376, ws_co2_kg_per_yr=1752.3516, expected_pe_resid=+0.0443, expected_co2_resid_kg=+0.0033),
|
||||
_WorksheetPin(cert_number="3336-2825-9400-0512-8292", ws_pe_kwh_per_m2=84.7840, ws_co2_kg_per_yr=458.0332, expected_pe_resid=+0.0099, expected_co2_resid_kg=+0.0058),
|
||||
_WorksheetPin(cert_number="3800-8515-0922-3398-3563", ws_pe_kwh_per_m2=58.7712, ws_co2_kg_per_yr=440.6740, expected_pe_resid=+0.0195, expected_co2_resid_kg=+0.0156),
|
||||
_WorksheetPin(cert_number="4536-5424-8600-0109-1226", ws_pe_kwh_per_m2=63.9133, ws_co2_kg_per_yr=494.6357, expected_pe_resid=+0.0207, expected_co2_resid_kg=+0.0176),
|
||||
|
|
@ -557,14 +559,14 @@ _WORKSHEET_PE_CO2: tuple[_WorksheetPin, ...] = (
|
|||
_WorksheetPin(cert_number="6835-3920-2509-0933-5226", ws_pe_kwh_per_m2=224.4924, ws_co2_kg_per_yr=1476.3032, expected_pe_resid=+0.0360, expected_co2_resid_kg=-0.0013),
|
||||
_WorksheetPin(cert_number="7700-3362-0922-7022-3563", ws_pe_kwh_per_m2=196.5859, ws_co2_kg_per_yr=2321.5875, expected_pe_resid=+0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="7800-1501-0922-7127-3563", ws_pe_kwh_per_m2=172.9406, ws_co2_kg_per_yr=3144.0259, expected_pe_resid=-0.0000, expected_co2_resid_kg=-0.0000),
|
||||
_WorksheetPin(cert_number="7836-3125-0600-0526-2202", ws_pe_kwh_per_m2=183.0794, ws_co2_kg_per_yr=1817.2248, expected_pe_resid=+0.8789, expected_co2_resid_kg=-0.7461),
|
||||
_WorksheetPin(cert_number="7836-3125-0600-0526-2202", ws_pe_kwh_per_m2=183.0794, ws_co2_kg_per_yr=1817.2248, expected_pe_resid=+0.0387, expected_co2_resid_kg=+0.0027),
|
||||
_WorksheetPin(cert_number="9036-0824-3500-0420-8222", ws_pe_kwh_per_m2=56.7016, ws_co2_kg_per_yr=433.6372, expected_pe_resid=+0.0192, expected_co2_resid_kg=+0.0155),
|
||||
_WorksheetPin(cert_number="9285-3062-0205-7766-7200", ws_pe_kwh_per_m2=56.9079, ws_co2_kg_per_yr=454.7771, expected_pe_resid=+0.0185, expected_co2_resid_kg=+0.0156),
|
||||
_WorksheetPin(cert_number="9370-3060-1205-3546-4204", ws_pe_kwh_per_m2=51.9889, ws_co2_kg_per_yr=494.0023, expected_pe_resid=+0.0242, expected_co2_resid_kg=+0.0229),
|
||||
_WorksheetPin(cert_number="9380-2957-7490-2595-3141", ws_pe_kwh_per_m2=207.1976, ws_co2_kg_per_yr=2176.1656, expected_pe_resid=+0.7198, expected_co2_resid_kg=-0.5344),
|
||||
_WorksheetPin(cert_number="9380-2957-7490-2595-3141", ws_pe_kwh_per_m2=207.1976, ws_co2_kg_per_yr=2176.1656, expected_pe_resid=+0.0278, expected_co2_resid_kg=+0.0067),
|
||||
_WorksheetPin(cert_number="9418-3062-8205-3566-7200", ws_pe_kwh_per_m2=58.5508, ws_co2_kg_per_yr=394.3858, expected_pe_resid=+0.0201, expected_co2_resid_kg=+0.0124),
|
||||
_WorksheetPin(cert_number="9421-3045-3205-1646-6200", ws_pe_kwh_per_m2=59.6459, ws_co2_kg_per_yr=295.3567, expected_pe_resid=+0.0288, expected_co2_resid_kg=+0.0145),
|
||||
_WorksheetPin(cert_number="9501-3059-8202-7356-0204", ws_pe_kwh_per_m2=182.3673, ws_co2_kg_per_yr=3554.1642, expected_pe_resid=+0.4570, expected_co2_resid_kg=-0.7517),
|
||||
_WorksheetPin(cert_number="9501-3059-8202-7356-0204", ws_pe_kwh_per_m2=182.3673, ws_co2_kg_per_yr=3554.1642, expected_pe_resid=+0.0180, expected_co2_resid_kg=+0.0058),
|
||||
_WorksheetPin(cert_number="9796-3058-6205-0346-9200", ws_pe_kwh_per_m2=53.6467, ws_co2_kg_per_yr=198.7122, expected_pe_resid=+0.0432, expected_co2_resid_kg=+0.0183),
|
||||
_WorksheetPin(cert_number="9836-7525-9500-0575-1202", ws_pe_kwh_per_m2=253.8868, ws_co2_kg_per_yr=3101.1029, expected_pe_resid=+0.0366, expected_co2_resid_kg=+0.0026),
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue