Skip to content

Data Flow

This page traces the path of a calculation from a user's Bill of Quantities (BoQ) input to EN 15978 results. Modules marked STUB or PLANNED are not yet implemented; they are shown here to document the intended architecture.

End-to-end flow

flowchart TD
    BOQ["📋 Bill of Quantities input\nassemblies · Uniclass codes · quantities"]

    subgraph "Phase 1 — Material explosion"
        MATEXP["quantities\nBoQ → material explosion\n— STUB —"]
    end

    subgraph "Phase 1 — EPD resolution"
        EPDS[("Seed EPD library\ndata/seed_epds/*.json\nopenEPD + proxy_provenance")]
        PROXY["proxy_engine\n5-step proxy cascade\n— STUB —"]
        PEDIGREE["pedigree\nWeidema 5-axis DQI → GSD²\n— STUB —"]
        INTERP["interpolation\ndata-table linear interpolation\n— STUB —"]
    end

    subgraph "Phase 1–2 — Per-module impact calc"
        A1A3["lca.a1_a3\nProduct stage\n— STUB —"]
        A4["lca.a4\nTransport to site\n— STUB —"]
        A5["lca.a5\nInstallation\n— STUB —"]
        B4["lca.b4\nReplacement (RSL cycle)\n— STUB —"]
        B6["lca.b6\nOperational energy ❶\n— STUB —"]
        C1C4["lca.c1 · c2 · c3 · c4\nEnd of life\n— STUB —"]
        D["lca.d\nBeyond boundary ❷\n— STUB —"]
    end

    subgraph "Phase 2 — Aggregation"
        AGGR["Aggregation\nΣ per indicator · per module"]
        UNCERT["uncertainty\nMonte Carlo — 10 000 iter.\n— STUB —"]
    end

    subgraph "Phase 3 — Output"
        RESULTS["EN 15978 Results\nper-indicator · per-module table"]
        REPORT["reporting\nEN 15978 §9 structured output\n— STUB —"]
    end

    BOQ --> MATEXP
    MATEXP --> A1A3
    MATEXP --> A4
    MATEXP --> A5
    MATEXP --> B4
    MATEXP --> B6
    MATEXP --> C1C4
    MATEXP --> D

    EPDS --> PROXY
    PROXY --> PEDIGREE
    PEDIGREE --> INTERP
    PROXY --> A1A3
    PROXY --> A4
    PROXY --> A5

    THERM["thermal\nISO 10456 / 6946\n— STUB —"] --> ENERGY["energy\nCLTD/CLF/SCL\n— STUB —"]
    ENERGY --> B6

    A1A3 --> AGGR
    A4 --> AGGR
    A5 --> AGGR
    B4 --> AGGR
    B6 --> AGGR
    C1C4 --> AGGR
    D --> AGGR

    AGGR --> UNCERT
    UNCERT --> RESULTS
    RESULTS --> REPORT

B6 operational energy uses a simplified CLTD/CLF engine and carries a "simplified — indicative" disclaimer per PROJECT.md decision #17. A pluggable EnergyPlus/IES VE import is deferred to v2.

Module D results are reported separately and must not be netted against A–C per EN 15804+A2 §6.4.3.2 and METHODOLOGY.md §9.

Where proxy_engine and pedigree are consulted

The proxy cascade is consulted when a seed EPD does not exist for the exact material in the exact regional context. The five steps are:

  1. Regional EPD (Sub-Saharan Africa)
  2. Country-adjacent EPD (EPDASA / INIES)
  3. Climate-analogue EPD
  4. Generic EPD with documented adaptation
  5. Peer-reviewed literature value

At each step, pedigree scores the data quality on Weidema's five axes and converts the score to GSD² for Monte Carlo input. interpolation is consulted when a calculation input falls between two tabulated reference points (see METHODOLOGY.md §5a for the audit-trail requirement).

Data table interpolation points

Module Table source Interpolation trigger
energy ASHRAE CLTD/CLF latitude bands Project latitude ∉ tabulated rows
energy ASHRAE SCL tables Solar time ∉ tabulated columns
thermal ISO 10456 thermal properties Temperature / moisture state between rows
lca.b4 RSL tables (ISO 15686 / climate category) RSP or climate parameter between rows
proxy_engine IPCC EFDB grid factors Project year between annual timesteps

Planned modules

All modules shown as STUB in the diagram above are skeleton files containing only a docstring and a NotImplementedError. No calculation logic has been implemented yet. Phase 1 begins with quantities and lca.a1_a3 (see ROADMAP.md).