Table of Contents

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-value
  • RoofRValue: Roof insulation R-value
  • FloorRValue: Floor/ceiling insulation R-value
  • WindowUValue: Window U-factor
  • DoorUValue: Door U-factor
  • GroundWallRValue: Below-grade wall insulation R-value
  • GroundFloorRValue: Slab insulation R-value
  • SkylightUValue: 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();