Commercial User Guide

Warning

This page contains features that are unfinished, were never implemented, or have since been deprecated. We preserve these pages for archival purposes, and also as a foundational resource for prospective developers who may wish to implement the same or similar feature. Many of these pages provide robust explanations of the theory behind a particular module or feature that we hope readers will find useful.

This page does not reflect the current state of GridLAB-D™

Using the Office

Default Office

The "default office" is an incomplete construct. The minimum definition for an office object includes:

object office{
   floor_height 6 ft;
   floor_area 4000 sf;
   interior_mass 2000;
   interior_UA 2.0;
   exterior_UA 2.0;
   hvac.cooling.capacity -4500; // must be negative
   hvac.heating.capacity 4500;
}

Office

Single-zone commercial office building with rooftop package unit

Synopsis

class office {
    double floor_area[sf];
    double floor_height[ft];
    double exterior_ua[Btu/degF/h];
    double interior_ua[Btu/degF/h];
    double interior_mass[Btu/degF];
    double glazing[sf];
    double glazing.north[sf];
    double glazing.northeast[sf];
    double glazing.east[sf];
    double glazing.southeast[sf];
    double glazing.south[sf];
    double glazing.southwest[sf];
    double glazing.west[sf];
    double glazing.northwest[sf];
    double glazing.horizontal[sf];
    double glazing.coefficient[pu];
    double occupancy;
    double occupants;
    char256 schedule;
    double air_temperature[degF];
    double mass_temperature[degF];
    double temperature_change[degF/h];
    double outdoor_temperature[degF];
    double Qh[Btu/h];
    double Qs[Btu/h];
    double Qi[Btu/h];
    double Qz[Btu/h];
    enumeration {OFF=0, VENT=5, ECON=4, COOL=3, AUX=2, HEAT=1} hvac_mode;
    double hvac.cooling.balance_temperature[degF];
    double hvac.cooling.capacity[Btu/h];
    double hvac.cooling.capacity_perF[Btu/degF/h];
    double hvac.cooling.design_temperature[degF];
    double hvac.cooling.efficiency[pu];
    double hvac.cooling.cop[pu];
    double hvac.heating.balance_temperature[degF];
    double hvac.heating.capacity[Btu/h];
    double hvac.heating.capacity_perF[Btu/degF/h];
    double hvac.heating.design_temperature[degF];
    double hvac.heating.efficiency[pu];
    double hvac.heating.cop[pu];
    double lights.capacity[kW];
    double lights.fraction[pu];
    double plugs.capacity[kW];
    double plugs.fraction[pu];
    complex demand[kW];
    complex total_load[kW];
    complex energykWh;
    double power_factor;
    complex power[kW];
    complex current[A];
    complex admittance[1/Ohm];
    complex hvac.demand[kW];
    complex hvac.load[kW];
    complex hvac.energykWh;
    double hvac.power_factor;
    complex lights.demand[kW];
    complex lights.load[kW];
    complex lights.energykWh;
    double lights.power_factor;
    double lights.heatgain_fraction;
    double lights.heatgain[Units|kW];
    complex plugs.demand[Units|kW];
    complex plugs.load[Units|kW];
    complex plugs.energy[Units|kWh];
    double plugs.power_factor;
    double plugs.heatgain_fraction;
    double plugs.heatgain[kW];
    double cooling_setpoint[degF];
    double heating_setpoint[degF];
    double thermostat_deadband[degF];
    double control.ventilation_fraction;
    double control.lighting_fraction;
    double ACH;
}

Office Schedule

The office has a built-in occupancy schedule subsystem that is used to determine the minimum air change coefficient. This subsystem parses a string and constructs a bitfield for the hours of each day that the building should be occupied. By default, office buildings are occupied from 8am to 5pm local time, Monday through Friday.

The format for the office schedule consists of two parts, the day and the hours, in a semicolon delimited list. The default string is 1-5 8-17. The first part is the range for the days of the week, with 0 being Sunday, 1 for Monday, etc. The hours are numbered 0-23 and reflect a 24 hour clock. Multiple schedule elements can be aggregated with an OR operation by seperating them with semicolons. For example, 1-4 8-17; 5 8-20; 6 8-23; 0 8-20 would define an 8-5 schedule Mon-Thur, 8-8 on Friday, 8am-11pm on Saturday, and 8-8 on Sunday.

Properties

Table 1: Office Properties
Property name Type Unit Description
floor_area double ft^2 Floor area of the office (presuming one floor).
floor_height double ft Ceiling height within the office interior
exterior_ua double BTU/degF/hr Exterior thermal resistance
interior_ua double BTU/degF/hr Interior thermal resistance
interior_mass double BTU/degF The thermal mass of the interior finishing and building materials
glazing double ft^2 The external glazing area (total area)
glazing.north double ft^2 The external glazing area facing north
glazing.northeast double ft^2 The external glazing area facing north-east
glazing.east double ft^2 The external glazing area facing east
glazing.southeast double ft^2 The external glazing area facing south-east
glazing.south double ft^2 The external glazing area facing south
glazing.southwest double ft^2 The external glazing area facing south-west
glazing.west double ft^2 The external glazing area facing west
glazing.northwest double ft^2 The external glazing area facing north-west
glazing.horizontal double ft^2 The external glazing area facing up (skyward)
glazing.coefficient double per unit The fraction of solar radiation that is transmitted by the glazing.
occupancy double - Current occupancy ratio
occupants double people Total occupants for the office
schedule char256 - Schedule string. Semicolon delimited cron-style schedule definition.
air_temperature double degF Office interior air temperature
mass_temperature double degF Office interior mass temperature
temperature_change double degF/hr The rate of change of temperature since the last update
Qh double BTU/hr The HVAC gain/loss since the last update
Qs double BTU/hr The solar heat gain since the last update
Qi double BTU/hr The internal heat gains since the last update
Qz double BTU/hr The inter-zonal heat gain/loss since the last update
hvac_mode enumeration - Current mode of the HVAC system. HEAT, AUX, COOL, ECON, VENT, or OFF.
hvac.cooling.balance_temperature double degF The balance temperature of the HVAC cooler
hvac.cooling.capacity double BTU/hr The constant heat output capacity of the HVAC cooler (should be negative)
hvac.cooling.capacity_perF double BTU/degF/hr The temperature-dependent heat output capacity of the HVAC cooler (should be negative)
hvac.cooling.design_temperature double degF The design temperature of the HVAC cooler
hvac.cooling.efficiency double - The cooling efficiency of the HVAC cooler
hvac.cooling.cop double - Coefficient of performance of the HVAC cooler
hvac.heating.balance_temperature double degF The balance temperature of the HVAC heater
hvac.heating.capacity double BTU/hr The constant heat output capacity of the HVAC heater
hvac.heating.capacity_perF double BTU/degF/hr The temperature-dependent heat output capacity of the HVAC heater
hvac.heating.design_temperature double degF The design temperature of the HVAC heater
hvac.heating.efficiency double BTU/W The heating efficiency of the HVAC heater
hvac.heating.cop double - Coefficient of performance of the HVAC heater
lights.capacity double kW Total power of the lights installed in the office
lights.fraction double pu The fraction of the installed lights that are turned on
plugs.capacity double kW Total power of the devices plugged into wall sockets
plugs.fraction double pu The current fraction of the total power draw from the various devices
demand complex kW Aggregate peak power draw from the office
total_load complex kW Current aggregate power draw from the office
energy complex kWh Accumulated energy consumed by the office
power_factor complex - The power factor of the house load
power complex kW Constant power component of the office load
current complex A Constant current component of the office load
admittance complex 1/Ohm Constant resistance component of the office load
hvac.demand[kW] complex kW The HVAC load
hvac.load[kW] complex kW The HVAC load
hvac.energy double kWh The HVAC energy use
hvac.power_factor complex - The HVAC power factor
lights.demand[kW] complex kW The lighting load
lights.load complex kW The lighting load
lights.energy complex kWh The lighting energy use
lights.power_factor double - The lighting power factor
plugs.demand complex kW The plug load
plugs.load complex kW The plug load
plugs.energy complex kWh The plug energy use
plugs.power_factor double - The plug power factor
cooling_setpoint double degF The cooling thermostat set-point
heating_setpoint double degF The heating thermostat set-point
thermostat_deadband double degF The thermostat deadband (hysteresis)
control.ventilation_fraction double pu The current outside air fraction for ventilation
control.lighting_fraction double pu The current lighting fraction in effect

Commercial - Commercial building developer's guide

Note

Deprecated - The small office building is part of the original implementation of the commercial module and is expected to be deprecated when the full commercial building implementation is completed. This will include deprecation of the multizone class. Small office buildings will be derived from the building implementation when that is validated and released.

Bug

As of Navajo (Version 4.3) the office building class has not been validated. Use of the residential house class is recommended with appropriate adjustments to parameters until validation is completed.

Building

The building class implements that abstract class used to solve all linearized multizone building models. All multizone commercial building classes are derived from this class.

Class members

General Properties

Property| Unit | Constraints | Default | Description | Remarks
--|--|--|--|--|--| T | degF | N×1 ∈ R | Ø | Node temperatures N | (int16) | ∈ N + | 1 | Number of nodes in model
U | Btu/degF/h | N×N symmetric ∈ R 2 | Ø | Node conductances
C | Btu/degF | N×1 ∈
R * | Ø | Node capacitance | NaN indicates outdoor node
Q | Btu/h | N×1 ∈
R | Ø | Node heat flows \(Q_s\) | Btu/h | N×1 ∈ R *** | Ø | Node solar heat gain \(Q_i\) | Btu/h | N×1 ∈ *R *** | Ø | Node internal heat gain

Default HVAC properties

Property| Unit | Constraints | Default | Description | Remarks
--|--|--|--|--|--| \(Q_{fl}\) | Btu/h | N×1 ∈ R *** | NaN | Node fan heat gain at low power \(Q_{fh}\) | Btu/h | N×1 ∈ R *** | NaN | Node fan heat gain at high power \(Q_f\) | Btu/h | N×1 ∈ R *** | NaN | Node heat gain from fans \(Q_{hc}\) | Btu/h | N×1 ∈ R *** | NaN | Node heating capacity \(Q_h\) | Btu/h | N×1 ∈ R *** | NaN | Node heat gain from heating \(Q_{cc}\) | Btu/h | N×1 ∈ R *** | NaN | Node cooling capacity \(Q_c\) | Btu/h | N×1 ∈ **R *** | NaN | Node heat loss from cooling

Note

NaN is used to indicate that no default HVAC equipment is associated with the node

Default controller properties

Property| Unit | Constraints | Default | Description | Remarks
--|--|--|--|--|--| \(T_s\) | (double) | N×1 ∈ {0,1,2,3,4,5} | NaN | HVAC state | 0=OFF, 1=VENT, 2=HEAT, 3=COOL, 4=AUX, 5=ECON
\(V_m\) | pu/h | N×1 ∈ R *** | NaN | Minimum ventilation required |
\(T_h\) | degF | N×1 ∈
R + | NaN | Heating set-point | Must be less than \(Tc-2Td\)
\(T_c\) | degF | N×1 ∈
R + | NaN | Cooling set-point | Must be greater than \(Th+2Td\)
\(T_d\) | degF | N×1 ∈
R + | NaN | Set-point deadband |
\(t_l\) | s | N×1 ∈
N** + | 300 | Control lockout time | Must be less than or equal to maximum_timestep

Note

NaN is used to indicate that no default control equipment is associated with the node

Other members

autosize (bool) FALSE Enables automatic sizing of arrays
load (end use) Electric end use load composition

Default HVAC Controller

The default controller implements a simple single zone vent/heat/cool/aux control. To override the default controller you must implement the plc() function is the derived class.

The default control strategy for node n is as follows:

if mode == OFF || mode == VENT
  if T < Th-2*Td
    mode = AUX
  else if T < Th - Td/2
    mode = HEAT
  else if T > Tc + Td/2
    mode = COOL
  else if Vm > 0 
    mode = VENT
  else
    mode = OFF

else if mode == HEAT
  if T < Th-2*Td
    mode = AUX
  else if T > Th+Td/2
    if Vm > 0
      mode = VENT
    else
      mode = OFF

else if mode == COOL
  if T < Tc - Td/2
    if Vm > 0
      mode = VENT
    else
      mode = OFF

else if mode == AUX
  if T > Th - Td/2
    if Vm > 0
      mode = VENT
    else
      mode = OFF

Note

Implementing the plc() function for a building means that the default controller is disabled for all nodes in the building. This means that if you want to continue using the default controller for some nodes you must call the building::plc() function directly for that node.

Options

Warn Control

Determines whether air temperature control in commercial buildings is monitored.

module commercial {
warn_control TRUE
}

Warn High Temp

Determines the commercial building indoor air temperature above which a warning is produced.

module commercial {
warn_high_temp 90 degF;
}

Warn Low Temp

Determines the commercial building indoor air temperature below which a warning is produced.

module commercial {
warn_low_temp 50 degF;
}