Authorship note: this analysis and report were written by Claude (Anthropic's AI assistant) during the NECB compliance-gem validation effort in this repository, and submitted from the repository owner's account at their direction.
Two construction paths coexist in the NECB code and disagree by ~4% on what a Table 3.2.2.2 U-value means:
- OSut path (
add_construction_sets → TBD.genConstruction, used by the NECB2020 prototypes): uo is the "desired Uo factor (with air film resistance)" — the table value is treated as overall transmittance including films (wall film 0.150, roof 0.140 m²·K/W). A generated NECB2020 archetype wall carries construction-only conductance 0.276 for the 0.265 table value.
- BTAP path (
apply_standard_construction_properties → customize_opaque_construction → setConductance): the table value is applied as construction-only conductance (films excluded) — the same wall comes out at 0.265, ~4% more insulation than the OSut path.
The NECB 1.4.1.2 definition supports the OSut reading: overall thermal transmittance "reflects the capacity of all elements to transfer heat through the thickness of the assembly, as well as, for instance, through air films on both faces of above-ground components."
Same code, same table, two different buildings depending on which API a caller reaches — and the BTAP path is the over-stringent, non-code-literal one. Suggest aligning customize_opaque_construction/apply_standard_construction_properties to subtract film resistances (or at minimum documenting the convention on both APIs).
Verification detail: the film arithmetic reproduces generated archetype values exactly — 1/(1/0.265 − 0.150) = 0.276 (wall), 1/(1/0.156 − 0.140) = 0.159 (roof), and archetype SimpleGlazing windows correctly carry the table value verbatim (1.9/2.69 — NFRC U-factors already include films).
🤖 Generated with Claude Code
Two construction paths coexist in the NECB code and disagree by ~4% on what a Table 3.2.2.2 U-value means:
add_construction_sets→TBD.genConstruction, used by the NECB2020 prototypes):uois the "desired Uo factor (with air film resistance)" — the table value is treated as overall transmittance including films (wall film 0.150, roof 0.140 m²·K/W). A generated NECB2020 archetype wall carries construction-only conductance 0.276 for the 0.265 table value.apply_standard_construction_properties→customize_opaque_construction→setConductance): the table value is applied as construction-only conductance (films excluded) — the same wall comes out at 0.265, ~4% more insulation than the OSut path.The NECB 1.4.1.2 definition supports the OSut reading: overall thermal transmittance "reflects the capacity of all elements to transfer heat through the thickness of the assembly, as well as, for instance, through air films on both faces of above-ground components."
Same code, same table, two different buildings depending on which API a caller reaches — and the BTAP path is the over-stringent, non-code-literal one. Suggest aligning
customize_opaque_construction/apply_standard_construction_propertiesto subtract film resistances (or at minimum documenting the convention on both APIs).Verification detail: the film arithmetic reproduces generated archetype values exactly — 1/(1/0.265 − 0.150) = 0.276 (wall), 1/(1/0.156 − 0.140) = 0.159 (roof), and archetype SimpleGlazing windows correctly carry the table value verbatim (1.9/2.69 — NFRC U-factors already include films).
🤖 Generated with Claude Code