NECB Templates and Baseline Support
InpLab provides comprehensive support for the National Energy Code of Canada for Buildings (NECB), enabling rapid assignment of standardized building characteristics to spaces and zones for energy code compliance analysis.
Overview
NECB compliance requires modeling both proposed and baseline building designs. InpLab simplifies this process through:
- Predefined Templates: Over 80 NECB-compliant space templates with standardized internal loads
- Automated Baseline Creation: Tools to generate NECB baseline models from proposed designs
- Construction Sets: Lookup tables for NECB-required insulation and fenestration values
- System Performance: Automated application of NECB system sizing and efficiency requirements
NECB Template Enum
The NecbTemplate enum contains over 80 predefined templates based on NECB internal load data:
public enum NecbTemplate
{
Workshop,
Void,
AtriumHeightLessThan6m,
AtriumHeight6To12m,
AtriumHeightGreaterThan12m,
AudienceSeatingAreaPermanentAuditorium,
AudienceSeatingAreaPermanentConventionCentre,
// ... many more templates for different space types
OfficeEnclosedLessThanOrEqualTo25m2,
OfficeEnclosedGreaterThan25m2,
OfficeOpenPlan,
// ... continues with retail, healthcare, manufacturing, etc.
}
Templates cover various building types including offices, retail spaces, healthcare facilities, manufacturing areas, and more.
Load Types
The LoadType enum defines the different internal load categories:
public enum LoadType
{
Lighting, // Lighting power density (W/m²)
Plug, // Equipment/plug load power density (W/m²)
People, // Occupant density (m²/person)
DhwFlowPerAreaPeak, // Domestic hot water flow rate per area
DhwWattPerOcc // Domestic hot water heating per occupant
}
## Standards Enum
The `Standards` enum specifies which version of energy standards to use for template values:
```csharp
public enum Standards
{
Necb2011,
Necb2015,
Necb2017,
Ashrae9012007,
Ashrae9012010,
Ashrae9012013,
Ashrae9012016,
Ashrae9012019,
Ashrae902022
}
Assigning NECB Templates
Bulk Assignment by Activity Description
Assign templates to all spaces with a specific activity description:
// Assign office template to all spaces with "Office" activity
var officeSpaces = model.AssignNecbTemplate(
Standards.Necb2017,
NecbTemplate.OfficeOpenPlan,
BuildingType.Office,
"Office"
);
Individual Space Assignment
Assign templates to individual spaces with optional load customizations:
// Simple assignment
space.AssignTemplate(Standards.Necb2017, NecbTemplate.Workshop);
// With load overrides
space.AssignTemplateWithOverrides(Standards.Necb2017, NecbTemplate.OfficeOpenPlan)
.WithLighting(12.5) // Override lighting to 12.5 W/m�b2
.WithEquipment(8.0) // Override equipment to 8.0 W/m�b2
.WithPeople(10.0); // Override density to 10 m²/person
NECB Baseline Construction Sets
The NecbBaseline class and NecbConstructionSets provide automated application of NECB-compliant construction properties to building models for baseline energy modeling.
NecbConstructionSets Class
The NecbConstructionSets static class provides lookup tables for NECB construction values across different climate zones and standards years.
Retrieving Construction Values
using InpLab.Builders;
using InpLab.Enums;
// Get construction set for Zone 5, NECB 2020, in IP units
var constructionSet = NecbConstructionSets.GetNecbConstructionSet(
NecbClimateZone.Zone5,
Standards.Necb2020,
ipUnits: true
);
Console.WriteLine($"Wall R-Value: {constructionSet.WallRValue}");
Console.WriteLine($"Roof R-Value: {constructionSet.RoofRValue}");
Console.WriteLine($"Window U-Value: {constructionSet.WindowUValue}");
Available Properties
WallRValue: Above-grade wall insulation R-valueRoofRValue: Roof insulation R-valueFloorRValue: Floor/ceiling insulation R-valueWindowUValue: Window U-factorDoorUValue: Door U-factorGroundWallRValue: Below-grade wall insulation R-valueGroundFloorRValue: Slab insulation R-valueSkylightUValue: Skylight U-factor
NecbBaseline Class
The NecbBaseline class applies NECB construction and system requirements to an existing model for energy code compliance analysis.
Initialization
// Create NECB baseline for Zone 6, NECB 2020
var baseline = new NecbBaseline(
model: myModel,
climateZone: NecbClimateZone.Zone6,
standard: Standards.Necb2020,
ipUnits: true // Use IP units
);
Applying Constructions
// Apply NECB construction values to all building surfaces
baseline.ApplyConstructions();
This automatically updates:
- Window and skylight U-values
- Door construction U-values
- Wall, roof, and floor R-values
- Below-grade wall and slab R-values
Adding NECB Skylights
For baseline models, skylights are limited to 2% of roof area as per NECB requirements:
// Add NECB-compliant skylights (2% of roof area)
baseline.AddNecbSkylights();
Removing Shading Devices
NECB requires removal of certain shading devices for baseline models:
// Remove manual shading devices as per NECB requirements
baseline.RemoveShades();
Setting System Performance
Apply NECB system performance curves and sizing ratios:
// Apply NECB system performance requirements
baseline.SetNecbSystemPerformance();
This sets:
- Heating and cooling sizing ratios (1.3 heating, 1.1 cooling)
- Supply air temperature limits
- Fan performance curves
- DX cooling performance curves
- Furnace efficiency curves
Fenestration Area Limits
Calculate maximum allowable fenestration-to-wall ratio (FDWR) based on heating degree days:
// Get max FDWR for 5000 HDD location
double maxFdwr = NecbBaseline.GetMaxFdwr(5000); // Returns ~0.33
Complete Baseline Setup Example
using InpLab;
using InpLab.Builders;
using InpLab.Enums;
// Load your proposed model
var model = Model.OpenFromFile("proposed_building.inp");
// Create NECB baseline
var baseline = new NecbBaseline(
model,
NecbClimateZone.Zone5,
Standards.Necb2020
);
// Apply all NECB requirements
baseline.ApplyConstructions();
baseline.AddNecbSkylights();
baseline.RemoveShades();
baseline.SetNecbSystemPerformance();
// Save the baseline model
model.Overwrite();