Validation¶
Pipeline validated against the TABULA reference values (ยฑ2% tolerance on q_h_nd) across 2,147 buildings in 20 European countries. Last run: November 2025.
Results by country¶
| Country | Buildings | Pass rate |
|---|---|---|
| ๐ฆ๐น Austria | 165 | 100% โ |
| ๐ง๐ช Belgium | 99 | 100% โ |
| ๐ง๐ฌ Bulgaria | 78 | 100% โ |
| ๐จ๐พ Cyprus | 36 | 100% โ |
| ๐จ๐ฟ Czech Republic | 84 | 100% โ |
| ๐ฉ๐ฐ Denmark | 91 | 100% โ |
| ๐ซ๐ท France | 120 | 100% โ |
| ๐ฉ๐ช Germany | 232 | 100% โ |
| ๐ฌ๐ท Greece | 144 | 100% โ |
| ๐ญ๐บ Hungary | 45 | 100% โ |
| ๐ฎ๐ช Ireland | 118 | 100% โ |
| ๐ฎ๐น Italy | 106 | 100% โ |
| ๐ณ๐ฑ Netherlands | 135 | 100% โ |
| ๐ณ๐ด Norway | 69 | 100% โ |
| ๐ต๐ฑ Poland | 78 | 100% โ |
| ๐ท๐ธ Serbia | 111 | 100% โ |
| ๐ธ๐ฎ Slovenia | 112 | 100% โ |
| ๐ธ๐ช Sweden | 171 | 100% โ |
| ๐ฌ๐ง United Kingdom | 81 | 100% โ |
| ๐ช๐ธ Spain | 72 | 22.2% โ |
Overall: 97.4% (2,091 / 2,147 buildings passing)
Spain: known issue¶
56 of 72 buildings fail (77.8%). The failures are systematic (calculated values consistently deviate from the TABULA reference), which points to a Spain-specific parameter rather than a general pipeline bug.
Status: under investigation.
Investigation checklist¶
- Compare climate zone parameters against Mediterranean-specific values
- Check construction type and attic/cellar condition code handling for Spanish archetypes
- Validate thermal bridge calculations against Spanish building standards
- Field-by-field comparison of a failing building against the TABULA Excel workbook
- Cross-reference with the Spanish national energy performance methodology (CTE DB-HE)
Validation methodology¶
- Tolerance: ยฑ2% on
q_h_nd(annual heating energy demand, kWh/(mยฒยทa)) - Reference: TABULA Excel workbook (
data/tabula-calculator-lite.xlsx) - Pipeline: 17-level cascading calculation: geometry, envelope, U-values, climate, solar gains, thermal bridges, heat transfer coefficients
Scope
This runs the pipeline directly against each database row's unmodified
TABULA defaults โ it never goes through the /api/v1/calculate/{code}
HTTP handler, so it doesn't exercise that endpoint's optional overrides
(A_ref, surfaces, etc.). Those are additive: a request with no body
reaches the exact same code path this validation covers.
Running validation¶
Requires a populated database (./bin/build_db must have been run first) and a valid .env file.