logo

NCC 2025: The Facade Calculator

{{ glazU.toFixed(1) }}
{{ glazSHGC.toFixed(2) }}
{{ wallR.toFixed(2) }}
Overall compliance
{{ overallLabel }}
⚠ Non-compliant glazing: {{ glazingUNonCompliantAspects.join(', ') }}
U {{ uPass ? '✓' : '✗' }} · M1 {{ m1Pass ? '✓' : '✗' }} · M2 {{ saPass ? '✓' : '✗' }} · passes if U AND ({{ saMethod === 'm1' ? 'M1' : saMethod === 'm2' ? 'M2' : 'M1 OR M2' }})
Enable at least one orientation
Wall-glazing U-value
{{ hasIncluded ? (uPass ? 'PASS' : 'FAIL') : '—' }}
{{ hasIncluded ? uSys.toFixed(2) : '—' }} W/m²·K
Limit {{ uLim.toFixed(2) }} · CZ{{ climateZone }} {{ buildingClass === 'commercial' ? 'Comm.' : 'Ward' }}
Method 1 (per-aspect)
{{ hasIncluded ? (m1Pass ? 'PASS' : 'FAIL') : '—' }}
{{ hasIncluded ? m1PassCount + '/' + m1PerAspect.length : '—' }} aspects pass
Method 2 (energy ratio)
{{ hasIncluded ? (saPass ? 'PASS' : 'FAIL') : '—' }}
{{ hasIncluded ? erProposed.toFixed(2) : '—' }} / {{ hasIncluded ? erReference.toFixed(2) : '—' }}
ERprop ≤ ERref · {{ hasIncluded ? ((erProposed / (erReference || 1)) * 100).toFixed(0) + '% of budget used' : '—' }}
{{ radarView === 'm1' ? 'SA per orientation · Method 1 footprint' : radarView === 'm2' ? 'ER contributions per orientation · Method 2 footprint' : 'SA + ER per orientation · Both methods' }}
{{ hasIncluded ? (radarBadgePass ? 'within limits' : 'over limits') : '—' }}
Compliance budget used
{{ hasIncluded ? (overallPass ? 'complies' : 'over budget') : '—' }}