House

In this section, we describe the residential and small commercial building thermal load calculation, the modeling approach, major assumption and model testing and validation.

The major heat gains and losses that contribute to the building cooling or heating load consist of the following:

  1. Conduction through exterior walls, roof, and glass
  2. Heat gain/loss from infiltration of outside air through opening
  3. Solar radiation through glass
  4. Internal gains from lighting, people, equipment

Items 1, 2, and 3 are considered driven by the external source, while item 4 is consider internally generated. The thermal load can be either sensible or latent. Sensible load results in increase/decrease in the air temperature; latent load results in increase/decrease of water vapor, which increases/decreases the humidity. Items 1 and 3 are solely sensible, items 2 can be both sensible and latent, internal gains from lights are sensible and internal gains from people and equipment can be both sensible and latent.

In general, the amount of heat that must be removed (cooling load) or added (heating load) is not always equal to the amount of heat received or lost at a given time. The difference is a result of the heat storage and time lag effects [citation]. Only a portion of the heat entering or leaving building actually heats/cools the room air immediately; the rest heats the building mass – the roof, walls, floors and building mass and air mass. The heat that is stored in the mass will result in heating/cooling load at a later time. So, the modeling approach will have to account for the storage effect.

To account for the storage effects when estimating the conduction gains from the exterior walls, roofs, and glass cooling load temperature difference method (CLTD) can be used:

Synopsis

class house {
    parent residential_enduse;
    function attach_enduse();
    object weather; 
    double floor_area[sf];
    double gross_wall_area[sf]; 
    double ceiling_height[ft];
    double aspect_ratio;
    double envelope_UA[Btu/degF];
    double window_wall_ratio;
    double number_of_doors; 
    double exterior_wall_fraction;
    double interior_exterior_wall_ratio;
    double exterior_ceiling_fraction;
    double exterior_floor_fraction; 
    double window_shading;
    double window_exterior_transmission_coefficient;
    double solar_heatgain_factor; 
    double airchange_per_hour; 
    double airchange_UA[Btu/degF]; 
        double UA;
    double internal_gain[Btu/h]; 
    double solar_gain[Btu/h]; 
    double incident_solar_radiation[Btu/h]; 
    double heat_cool_gain[Btu/h]; 
        set {NONE=0,H=1,N=2,E=3,S=4,W=5} include_solar_quadrant;
        enumeration {DEFAULT=0,FLAT=1,LINEAR=2,CURVED=3} heating_cop_curve;
    double thermostat_deadband[degF]; 
    int16 thermostat_cycle_time; 
    timestamp thermostat_last_cycle_time; 
    double heating_setpoint[degF]; 
    double cooling_setpoint[degF]; 
    double design_heating_setpoint[degF]; 
    double design_cooling_setpoint[degF]; 
    double over_sizing_factor; 
    double design_heating_capacity[Btu/h]; 
    double design_cooling_capacity[Btu/h]; 
    double cooling_design_temperature[degF]; 
    double heating_design_temperature[degF]; 
    double design_peak_solar[Btu/h]; 
    double design_internal_gains[Btu/h]; 
    double air_heat_fraction[pu]; 
    double mass_solar_gain_fraction[pu]; 
    double mass_internal_gain_fraction[pu]; 
    double auxiliary_heat_capacity[Btu/h]; 
    double aux_heat_deadband[degF]; 
    double aux_heat_temperature_lockout[degF]; 
    double aux_heat_time_delay[s]; 
    double cooling_supply_air_temp[degF]; 
    double heating_supply_air_temp[degF]; 
    double duct_pressure_drop[inh2o]; 
    double fan_design_power[W]; 
    double fan_low_power_fraction[pu]; 
    double fan_power[kW]; 
    double fan_design_airflow[cfm]; 
    double fan_impedance_fraction[pu]; 
    double fan_power_fraction[pu]; 
    double fan_current_fraction[pu]; 
    double fan_power_factor[pu]; 
    double heating_demand; 
    double cooling_demand; 
    double heating_COP[pu]; 
    double cooling_COP[Btu/kWh]; 
    double air_temperature[degF]; 
    double outdoor_temperature[degF]; 
    double outdoor_rh[%]; 
    double mass_heat_capacity[Btu/degF]; 
    double mass_heat_coeff[Btu/degF]; 
    double mass_temperature[degF]; 
    double air_volume[cf]; 
    double air_mass[lb]; 
    double air_heat_capacity[Btu/degF]; 
    double latent_load_fraction[pu]; 
    double total_thermal_mass_per_floor_area[Btu/degF];
    double interior_surface_heat_transfer_coeff[Btu/h];
    double number_of_stories; 
    double is_AUX_on; 
    double is_HEAT_on; 
    double is_COOL_on; 
    double thermal_storage_present; 
    double thermal_storage_in_use; 
    set {RESISTIVE=16, TWOSTAGE=8, FORCEDAIR=4, AIRCONDITIONING=2, GAS=1} system_type; 
    set {LOCKOUT=4, TIMER=2, DEADBAND=1, NONE=0} auxiliary_strategy; 
    enumeration {AUX=3, COOL=4, OFF=1, HEAT=2, UNKNOWN=0} system_mode; 
    enumeration {AUX=3, COOL=4, OFF=1, HEAT=2, UNKNOWN=0} last_system_mode; 
    enumeration {RESISTANCE=4, HEAT_PUMP=3, GAS=2, NONE=1} heating_system_type;
    enumeration {HEAT_PUMP=2, ELECTRIC=2, NONE=1} cooling_system_type;
    enumeration {ELECTRIC=2, NONE=1} auxiliary_system_type;
    enumeration {TWO_SPEED=3, ONE_SPEED=2, NONE=1} fan_type;
    enumeration {UNKNOWN=7, VERY_GOOD=6, GOOD=5, ABOVE_NORMAL=4, NORMAL=3, BELOW_NORMAL=2, LITTLE=1, VERY_LITTLE=0} thermal_integrity_level; 
    enumeration {LOW_E_GLASS=2, GLASS=1, OTHER=0} glass_type; 
    enumeration {INSULATED=4, WOOD=3, THERMAL_BREAK=2, ALUMINIUM=1, ALUMINUM=1, NONE=0} window_frame; 
    enumeration {HIGH_S=5, LOW_S=4, REFL=3, ABS=2, CLEAR=1, OTHER=0} glazing_treatment; 
    enumeration {OTHER=4, THREE=3, TWO=2, ONE=1} glazing_layers; 
    enumeration {FULL=2, BASIC=1, NONE=0} motor_model; 
    enumeration {VERY_GOOD=4, |GOOD=3, AVERAGE=2, POOR=1, VERY_POOR=0} motor_efficiency; 
    int64 last_mode_timer;
    double hvac_motor_efficiency[unit]; 
    double hvac_motor_loss_power_factor[unit]; 
    double Rroof[Btu/degF.h]; 
    double Rwall[Btu/degF.h]; 
    double Rfloor[Btu/degF.h]; 
    double Rwindows[Btu/degF.h]; 
    double Rdoors[Btu/degF.h]; 
    double hvac_breaker_rating[A]; 
    double hvac_power_factor[unit]; 
    double hvac_load[kW]; 
    double last_heating_load; 
    double last_cooling_load; 
    complex hvac_power; 
    double total_load; 
    end use panel; 
    double design_internal_gain_density[W/sf]; 
    bool compressor_on;
    int64 compressor_count;
    timestamp hvac_last_on;
    timestamp hvac_last_off;
    double hvac_period_length;
    double hvac_duty_cycle;
    enumeration {NONE=2, BAND=1, FULL=0} thermostat_control; 
}

Example

Basic House

The default house does not require any parameters be set. Thus, the minimum allowed specification for a single family house is:

module residential;
object house {
}

With no parameters specified, the default parameters are inhereted, specified in the table below.

Table 1: Default House Parameter Values
Parameter Default value
load.power_fraction 0.8
load.impedance_fraction 0.2
load.current_fraction 0.0
design_internal_gain_density 0.6 [W/sf]
thermal_integrity_level UNKNOWN
hvac_breaker_rating 0.0 [A]
hvac_power_factor 0.0
Tmaterials 0.0 [degF]
cooling_supply_air_temp 50.0 [degF]
heating_supply_air_temp 150.0 [degF]
heating_system_type HEAT_PUMP
cooling_system_type UNKNOWN
auxiliary_system_type UNKNOWN
fan_type UNKNOWN
fan_power_factor 0.96
fan_current_fraction 0.7332
fan_impedance_fraction 0.2534
fan_power_fraction 0.0135
glazing_layers TWO
glass_type LOW_E_GLASS
glazing_treatment CLEAR
window_frame THERMAL_BREAK
motor_model NONE
motor_efficiency AVERAGE
hvac_motor_efficiency 1.0
hvac_motor_loss_power_factor 0.125
hvac_motor_real_loss 0.0
hvac_motor_reactive_loss 0.0
is_AUX_on FALSE
is_HEAT_on FALSE
is_COOL_on FALSE
thermal_storage_present FALSE
thermal_storage_inuse FALSE

Implicit end uses

To enable implicit end uses in the house model, add or remove the desired end uses (all caps) that you wish to include.

module residential {
   implicit_enduses LIGHTS|PLUGS|OCCUPANCY|NONE;
}

Properties

The following tables describe the available properties for definition in a house object. These properties are organized into the following categories: physical design, HVAC design, heatflow, fan design, thermostat, derived, load, and enumerations.

Table 2: Physical Design Properties
Property name Type Unit Description Default Value
floor_area double sf Home conditioned floor area 2,500 ft²
gross_wall_area double sf Gross outdoor wall area
ceiling_height double ft Average ceiling height 8 ft
aspect_ratio double none Aspect ratio of the home's footprint
window_wall_ratio double none Ratio (WWR) of window area to wall area 0.15
number_of_doors double none Number of doors 4
exterior_wall_fraction double none Ratio (EWR)of exterior wall ratio to wall area 100%
interior_exterior_wall_ratio double none Ratio of interior to exterior walls 1.5
exterior_ceiling_fraction double none Ratio (ECR) of external ceiling sf to floor area 100%
exterior_floor_fraction double none Ratio (EFR) of floor area used in UA calculation 100%
number_of_stories double none Number of stories within the structure 1
Rroof double degF.sf.h/Btu Roof R-value 30 °F.ft².hr/Btu
Rwall double degF.sf.h/Btu Wall R-value 19 °F.ft².hr/Btu
Rfloor double degF.sf.h/Btu Floor R-value 22 °F.ft².hr/Btu
Rwindows double degF.sf.h/Btu Window R-value
Rdoors double degF.sf.h/Btu Door R-value 5 °F.ft².hr/Btu
window_shading double none Transmission coefficient through window due to glazing
window_exterior_transmission_coefficient double none (WETC) Coefficient for the amount of energy that passes through window 60%
area_per_door double sf Area per exterior door 19.5 ft²

The primary values for the thermal envelope of a modeled house are Rroof, Rwall, Rfloor, Rwindows, and Rdoors. The R-value of a surface is the inverse of its U-value. If one or more of these values are set explicitly, they will be used over the values set by the following options for that field.

Two methods exist for describing the HVAC system presence. The first method exclusively uses the system_type property for describing a house's HVAC system, described later in the enumerations table, such as GAS, AIRCONDITIONING, or RESISTIVE. This high level description contains a set of values joined by pipes to describe the system. If neither GAS nor RESISTIVE are set, the model will assume that a given house has a heat pump, a one-speed central ventilation fan, auxiliary heating with an auxiliary deadband for heating.

The second method uses a combination of heating_system_type, cooling_system_type, auxiliary_system_type, auxiliary_strategy, and fan_type to describe the HVAC system more explicitly. The three system types controls what mechanism, if any, is used. The fan_type controls the presence of central ventilation and whether or not it has a low-power setting. Auxiliary heat strategies can be put together with pipes (with the exception of "NONE", which has adds nothing) to combine the control options.

It is assumed that any system with a heat pump will have electric auxiliary heating, and that any system with central heating or cooling will include a fan for circulation.

Table 3: HVAC Design Properties
Property name Type Unit Description Default Value
cooling_design_temperature double degF System cooling design temperature 75°F
heating_design_temperature double degF System heating design temperature 70°F
design_peak_solar double Btu/h System design solar load
design_internal_gains double Btu/h System design internal gains A function of floor area (see Design Internal Gains)
cooling_supply_air_temp double degF Temperature of air blown out of the cooling system 50°F
heating_supply_air_temp double degF Temperature of air blown out of the heating system 150°F
duct_pressure_drop double in End-to-end pressure drop for the ventilation ducts (inches of water) \(\frac{1}{2}\)
heating_COP double pu System heating performance coefficient 3.50
cooling_COP double Btu/kWh System cooling performance coefficient 3.50
design_heating_capacity double Btu/h System heating capacity
design_cooling_capacity double Btu/h System cooling capacity
design_heating_setpoint double degF System design heating setpoint
design_cooling_setpoint double degF System design cooling setpoint
auxiliary_heat_capacity double Btu/h Installed auxiliary heating capacity
over_sizing_factor double unit Over sizes the heating and cooling system from standard specifications (0.2 = 120% sizing) 0%

Example HVAC Configurations

The following snippets can be used to define the HVAC system within a house. The two methods will results in the same system in both cases. The values for the houses with the separate system types are being set explicitly for clarity, even if the defaults would apply the same value.

Only one method is listed for the auxiliary heating strategies because the older style of describing the HVAC system did not include options for auxiliary heating types, presence, or strategies. A combination with system_type, auxiliary_system_type, and auxiliary_strategy, will work without options colliding.

Gas heating

object house{
 system_type GAS;
}

object house{
 heating_system_type GAS;
 cooling_system_type NONE;
 auxiliary_system_type NONE;
}

Heat pump

object house{
 system_type AIRCONDITIONING|FORCEDAIR;
}

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type HEAT_PUMP;
 auxiliary_system_type ELECTRIC;
 auxiliary_system_type DEADBAND;
 fan_type ONE_SPEED;
}

Heat pump with two-speed fan

object house {
 system_type AIRCONDITIONING|TWOSTAGE;
}

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 fan_type TWO_SPEED;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy DEADBAND;
}

Baseboard heating

object house{
 system_type RESISTIVE;
}

object house{
 heating_system_type RESISTANCE;
 cooling_system_type NONE;
 auxiliary_system_type NONE;
 fan_type NONE;
}

Electric heat and central air

object house{
 system_type RESISTIVE|FORCEDAIR;
}

object house{
 heating_system_type RESISTANCE;
 cooling_system_type NONE;
 auxiliary_system_type NONE;
 fan_type ONE_SPEED;
}

Auxiliary heat with timer

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy TIMER;
}

Auxiliary heat with deadband

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy DEADBAND;
}

Auxiliary heating with Timer and Lockout

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy TIMER|LOCKOUT;
}

Auxiliary heating with Deadband and Lockout

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy DEADBAND|LOCKOUT;
}

Auxiliary heating with Deadband, Lockout, and Timer

object house{
 heating_system_type HEAT_PUMP;
 cooling_system_type ELECTRIC;
 auxiliary_system_type ELECTRIC;
 auxiliary_strategy DEADBAND|LOCKOUT|TIMER;
}

Auxiliary Strategy

Options for the control strategy for auxiliary heating in the house are:

Strategy Description
NONE If auxiliary heat is being used, at least one auxiliary_strategy should be specified.
LOCKOUT Auxiliary heat will come "on" whenever thermostat calls for heating and outdoor air temperature is below the value set for aux_heat_temperature_lockout. It remains "on" until the thermostat is satisfied.
DEADBAND (default) Auxiliary heat will come "on" when indoor air temperature drops by more than the value set for aux_heat_deadband below the heating_setpoint. It remains "on" until the thermostat is satisfied.
TIMER Auxiliary heat will come "on" when heating_system_type has been "on" for longer than the value specified for aux_heat_time_delay. It remains "on" until the thermostat is satisfied.
Default When auxiliary_system_type is set to ELECTRIC, the default setting for auxiliary_strategy is DEADBAND (with 2 degF).

Design Internal Gains

The design internal gains as a function of floor area are approximated as a regression against mean annual ELCAP consumption data for the “Other” end use by floor area categories, as follows (from spreadsheets ELCAP Load Shapes_Q3.xls and Internal Gains Default.xls):

Table 4: Regression of ELCAP “Other” Annual End Use Load vs. Floor Area
End Use Size of Home (ft 2) Regression: ln(Other) = ln(a) + b ln(x)*
850 1350 2100
Other 6730 7298
ln( End Use ) ln( Size of Home (ft 2) ) b
6.745 7.208 7.650
ln( Other ) 8.814 8.895
Predicted End Use Size of Home (ft 2) EU = a xb
850 1350 2100
Other 6403 7856

For the “Other” end use (excludes heating and water heating) in the ELCAP metered end use data project, the results of a linear regression of the average annual energy consumption as a function of floor area of the form Other = a xb can be converted by an axis transformation into a linear regression of the form

\[log_e (kWh/yr) = log_e(a) + b\ log_e(floor area, ft^2)\]

with the resulting coefficients a and b shown in the table above.

Also from ELCAP, the ratio of the maximum hourly load of the summer average load shape to the mean hourly load for the year is 1.32 (hour 18). Combined with the regression results, and converting the units from kWh/yr to Btu/hr, the design internal gains as a function of floor area is

Design_internal_gains = 324.9 * (floor_area)0.442 * 1.32 * 3413 / 8760

Air Conditioning (Cooling)

House_e only supports electrically-powered forced-air vapor-compression cooling, which can represent either a central air conditioner or a window/wall unit that cycles on and off to maintain the air temperature below the cooling thermostat setpoint. This is defined as an electric Cool_system_type. If no air conditioning is provided, input none for this parameter.

An air conditioner uses an electrically-powered refrigerant pump to move heat from the cooled space and reject it outdoors. Hence, it can remove more heat from the house than the electricity input to the pump, and the COP is thus typically much greater than 1.0 (conservation of energy requires that the heat rejected outdoors is equal to the heat removed from the house plus the energy input to the pump).

The laws of thermodynamics governing the vapor-compression cycle show that the COP decreases as the outdoor temperature increases, because of the increased difficulty of rejecting the heat outdoors. House_e models this phenomena. Similarly, the COP decreases as the supply air temperature decreases, and as the temperature and humidity of the air from the house increase, but these variations are assumed to be relatively small and House_e does not model them.

Default values for the other input parameters are characteristic of a central air conditioner or heat pump. Window/wall air conditioners generally are less efficient, so the Cooling COP under standard conditions is likely to be lower than the default value. A house may utilize multiple window/wall air conditioners in different locations, each with its own thermostat. House_e simulates them together as a single equivalent unit controlled by a single thermostat. It is not uncommon for these units to be too small to keep a house at the cooling setpoint during very hot weather. If this is the case, the user can specify a negative oversizing factor.

Heating

House_e supports a variety of heating system types:

  • The absence of a heating system is indicated by a heat_system_type parameter of value none.
  • In a resistance heat_system_type, heat is provided by an electric resistance heating coil (either in a forced-air furnace, or electric baseboard radiators) that cycles on and off to try to maintain the air temperature above the heating thermostat setpoint. The COP of a resistance heating system is a constant 1.0, being unaffected by the outdoor air temperature. The capacity is likewise unaffected.
  • In a gas heat_system_type, heat is provided by a gas-powered furnace or a boiler that cycles on and off to try to maintain the air temperature above the heating thermostat setpoint, but places no load on the electricity distribution system (except for its fan; see the next section). Its capacity is a constant unaffected by the outdoor air temperature. This can be used to model heating systems supplied by natural gas, propane, wood/biomass, and other non-electric sources.
  • In a heat pump heat_system_type, heat is provided by a heat pump that is a reversible vapor compression cycle, i.e. and air conditioner running in "reverse" that pumps heat from outdoors and rejects it indoors. It cycles on and off to try to maintain the air temperature above the heating thermostat setpoint, but places no load on the electricity distribution system( excpet for its fan; see the next section). Its capacity is a constant unaffected by the outdoor air temperature.

Like an air conditioner, a heat pump's heating COP is not a constant, but instead decreases as the outdoor temperature decreases, because of the increased difficulty of pumping heat from outdoors. House_e models this phenomena. Similarly, the COP and capacity decrease as the supply air temperature increases and as the temperature of the air from the house increases, but these variations are assumed to be relatively small and House_e does not model them.

Auxiliary heating (For Heat Pumps Only)

An auxiliary heating system can be specified for a heat pump heat_system_type by providing a value of electric for the input parameter auxiliary_heat. A heat pump is generally sized to meet the peak cooling requirement, and its heating capacity under standard conditions is generally equal to its cooling capacity. Given its reduced output at very cold outdoor temperatures, it may not have enough capacity to maintain the house at the desired heating setpoint. An auxiliary heat system serves this function. A value of none for the Auxilairy_heat parameter indicates no such auxiliary heat is provided.

If auxiliary heat is specified (the default), then a control strategy for it must also be specified. Three types of control can be modeled by House_e. Atleast one must be specified; two or all three can be specified to work in combination. Each auxiliary heat control strategy can call for auxiliary heat to turn on and the heat pump heating cycle to turn off. The auxiliary heat control strategies supported by House_e are:

  • If a value is provided for the auxiliary_heat_deadband input parameter, then the auxiliary heat comes "on" when the indoor air temperature drops by more than the value below the heating setpoint and remains "on" until the thermostat is satisfied (i.e., when the heating system would normally go "off"). This is the default control strategy (value = 2°F) and the most common one in usage in the U.S in the decades 1980-2010. The problem with it is that if the thermostat is set back at night , it will trigger auxiliary heat when the thermostat is set up in the morning, even under relatively warm conditions.

  • If a value is provided for the auxiliary_heat_lockout_temperature input parameter, then the auxiliary heat comes "on" whenever the thermostat calls for heating and the outdoor air temperature is below value. It remains "on" until the thermostat is satisfied (i.e.,when the heating system would normally go "off"). The default value = none. This is an older control strategy particularly common to early heat pump systems in the U.S.

Note

If used, this parameter should be diversified to represent a realistic range of values in the population by using a distribution as the input. Otherwise an entire population of homes will shift to auxilairy heat at the same time in a GridLAB-D™ simulation

  • If a value is provided for the Auxiliary_time_delay input parameter, then the auxiliary heat comes "on" whenever the heating system has been "on" for more than value minutes but the heating thermostat remains unsatisfied. The auxilairy heat remains "on" until the thermostat is satisfied (i.e.,when the heating system would normally go "off"). The default value is none. This is the most advanced control strategy and is designed to minimize auxiliary heating by giving the heat pump a chance to satisfy the heating requirement before turning to auxiliary heat.

Circulation Fan

Air conditioners and heat pumps require a fan to be specified (Fan_type parameter equal to /-speed or 2-speed). For resistance heating systems without an air conditioning, a fan is optional. If fan_type is none , then the heating system is implicitly a baseboard/radiator system. A fan is assumed to be present, and will be sized to meet the larger of the heating or cooling air flow rate required to meet the heating and cooling design loads, respectively.

A 1-speed Fan_type is "on" when the cooling, heating, or auxiliary heating system is "on". This is the default, and the most common case in the u.S.

The heat from the power to the fan is added to the output of the HVAC system, and the power is add to the electrical load placed by the HVAC system on the electric distribution system.

A 2-speed Fan_type is "on" continually, at full speed when the cooling, heating, or auxiliary heating system is "on", and at low speed to circulate air when the cooling,heating, and auxiliary heating system are each "off" or not present. At low speed, the power of the fan is reduced by the factor of the input parameter Fan_power_low_speed_fraction_of_high_speed. Note that fan power is generally proportional to the square of the flow rate; if the air flow is 50% at low-speed, then the power at low speed is (50%)2 , i.e. 25%.

Table 5: Heatflow Properties
Property name Type Unit Description Default Value
solar_heatgain_factor double none Product of the window area, window transmitivity, and the window exterior transmission coefficient
airchange_per_hour double none Number of air-changes per hour 0.5 1/hr
internal_gain double Btu/h Internal heat gains 50%
solar_gain double Btu/h Solar heat gains 50%
incident_solar_radiation double Btu/h.sf Average incident solar radiation hitting the house
heat_cool_gain double Btu/h System heat gains(/losses)
air_heat_fraction double pu Fraction of the heat gain/loss that goes to air (as opposed to mass)
mass_heat_capacity double Btu/degF Interior mass heat capacity
mass_heat_coeff double Btu/degF.h Interior mass heat exchange coefficient
air_heat_capacity double Btu/degF Air thermal mass
total_thermal_mass_per_floor_area double Btu/degF.sf Total thermal mass per floor area 2.0 Btu/°F.ft²
interior_surface_heat_transfer_coeff double Btu/h.degF.sf Interior surface heat transfer coefficient 1.46 Btu/hr.°F.ft²
design_internal_gain_density double W/sf Average density of heat generating devices in the house
Table 6: Fan Design Properties
Property name Type Unit Description
fan_design_power double W Designed maximum pwer draw of the ventilation fan
fan_low_power_fraction double pu Fraction of ventilation fan power draw during low-power mode (two-speed only)
fan_power double kW Current ventilation fan power draw
fan_design_airflow double cfm Designed airflow for the ventilation system
fan_impedance_fraction double pu Impedance component of fan ZIP load
fan_power_fraction double pu Power component of fan ZIP load
fan_current_fraction double pu Current component of fan ZIP load
fan_power_factor double pu Power factor of the fan load
hvac_motor_efficiency double unit Percent efficiency of HVAC motor when using motor model
hvac_motor_loss_power_factor double unit Power factor of motor loasses when using motor model
Table 7: Thermostat Properties
Property name Type Unit Description Default Value
heating_setpoint double degF Thermostat heating setpoint 70°F
cooling_setpoint double degF Thermostat cooling setpoint 75°F
aux_heat_deadband double degF Temperature offset from standard heat activation to auxiliary heat activation 2.0°F
aux_heat_temperature_lockout double degF Temperature at which auxiliary heat will not engage above none
aux_heat_time_delay double s Time required for heater to run until auxiliary heating engages none
thermostat_deadband double degF Deadband of thermostat control 2.0°F
thermostat_cycle_time int16 none Mimimum time in seconds between thermostat updates 120s
thermostat_last_cycle_time timestamp none Last time the thermostat changed state
last_mode_timer int64 none

Table 7. Derived Properties

Table 8: Derived Properties
Property name Type Unit Description Default Value
air_temperature double degF Indoor air temperature. If not explicitly defined, will set to a random value between 60F and 140F
outdoor_temperature double degF Outdoor air temperature
mass_temperature double degF Interior mass temperature
air_volume double cf Air volume = ceiling height * floor area 20,000 cf
air_mass double lb Air mass
air_density double \(lb/ft^3\) Density of the air, set automatically 0.735 \(lb/ft^3\)
latent_load_fraction double pu Fractional increase in cooling load due to latent heat 35%
heating_demand double none The current power draw to run the heating system
cooling_demand double none The current power draw to run the cooling system
envelope_UA double Btu/degF.h Overall UA of the home's envelope
airchange_UA double Btu/degF.h Additional UA due to air infiltration
Table 9: Load Properties
Property name Type Unit Description
panel end use none Total panel end use load
hvac_breaker_rating double A Determines the amount of curren the HVAC circuit breaker can handle
hvac_power_factor double unit Power factor of HVAC
hvac_load double none Heating/cooling system load
total_load double none Total load
Table 10: Properties Specified by Enumeration
Property name Type Unit Description Default Value
system_type set none Describe HVAC system of house. (GAS, AIRCONDITIONING, FORCEDAIR, TWOSTAGE, RESISTIVE)
heating_system_type enumeration none Set heating mechanism for house (RESISTANCE, HEAT_PUMP, GAS, NONE) HEAT_PUMP
cooling_system_type enumeration none Set cooling mechanism for hosue (HEAT_PUMP, ELECTRIC, NONE) NONE
auxiliary_system_type enumeration none Can be specified for HEAT_PUMP heating systems (ELECTRIC, NONE) ELECTRIC
auxiliary_strategy set none Control strategy for auxiliary heat (LOCKOUT, TIMER, DEADBAND, NONE)
system_mode enumeration none Heating/cooling system operation state (UNKNOWN, HEAT, OFF, COOL, AUX)
fan_type enumeration none Circulation fan (TWO_SPEED, ONE_SPEED, NONE) ONE_SPEED
thermal_integrity_level enumeration none Default envelope UA settings (VERY_GOOD, GOOD, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LITTLE, VERY_LITTLE, UNKNOWN)
glass_type enumeration none Type of window glass used (LOW_E_GLASS, GLASS, OTHER) LOW-E Glass
window_frame enumeration none Type of window frame (INSULATED, WOOD, THERMAL_BREAK, ALUMINUM, NONE) Thermal Break
glazing_treatment enumeration none Treatment that increases the reflectivity of exterior windows (HIGH_S, LOW_S, REFL, ABS, CLEAR, OTHER) Clear
glazing_layers enumeration none Number of layers of glass in each window (THREE, TWO, ONE, OTHER) TWO
motor_model enumeration none Indicates the level of detail used in modeling the HVAC motor parameters (FULL, BASIC, NONE)
motor_efficiency enumeration none Describes efficiency of the motor when using a motor model (VERY_GOOD, GOOD, AVERAGE, POOR, VERY_POOR)

Thermal Integrity Table Inputs and Defaults

For the convenience of the user in describing a population of buildings, we allow the thermal properties of the envelope construction to be entered as a table. This is useful because the insulation level of ceilings, walls, floors, and windows tend to be highly correlated, rather than independent, because of construction practices and/or building codes that are a function of the vintage of construction. That is, it is extremely unlikely to find a house with heavily insulated walls, but very little ceiling insulation.

So, the user is allowed to enter the following primary inputs by specifying the thermal integrity level description, rather than each individual parameter, according to the table below.

Table 11: Thermal Integrity Table
Thermal Integrity Level Description Roof/Ceilings (°F·ft²·hr/Btu) Walls (°F·ft²·hr/Btu) Floors (°F·ft²·hr/Btu) Layers Window Glazing Window Treatment Window Frame Doors (°F·ft²·hr/Btu) Infiltration Air Exchange Rate (1/hr)
VERY_LITTLE (0) old, uninsulated 11 4 4 1 Glass Clear Al 3 1.5
LITTLE (1) old, insulated 19 11 4 2 Glass Clear Al 3 1.5
BELOW_NORMAL (2) old, weatherized 19 11 11 2 Glass Clear Al 3 1.0
NORMAL (3) old, retrofit upgraded 30 11 19 2 Glass Clear Tb 3 1.0
ABOVE_NORMAL (4) moderately insulated 30 19 11 2 Glass Clear Tb 3 1.0
GOOD (5) very well insulated 30 19 22 2 Low-e glass Clear Tb 5 0.5
VERY_GOOD (6) extremely well insulated 48 22 30 3 Low-e glass Heat-absorbing In 11 0.5
UNKNOWN

thermal_integrity_level is usable to provide unambiguous insulation settings. It will override any values not already set, but will override that objects initial values. The default value is "UNKNOWN", which will not use the thermal integrity level value lookup table.

Note

Any set of (column-wise) values in the thermal integrity table will be overridden by entry of thermal_integrity_level.

Glazing

The type of glass (glass_type), the window frame (window_frame) material, the window glazing (glazing_treatment), and the number of window pane layers (glazing_layers) can all be set, and will be used to fill in the window R-value and the window solar transmission coefficient.

Both "aluminum" and "aluminium" are accepted keyword spellings for the window frame type.

Translate glazing material into glazing material type (gmt) for U-value with a look-up table

IF( OR(GM="glass", GM="low-e glass"), IF(GM="glass", gmt="G", gmt="L"), “Error: unrecognized glazing material" )

Based on Type = GL & gmt, and on WF, look-up the window U-value (\(U_g\)) in Table 1 (produces the default Window U-value = 0.47 Btu/hr-°F-ft2)

Table 12: Window U-Values as a Function of Window Characteristics
Type Layers Glazing U-value (Btu / hr.°F.ft²) by Frame Type
None Aluminum Tb Wood In
1G 1 Glass 1.04 1.27
2G 2 Glass 0.48 0.81
2L 2 Low-e glass 0.30 0.67
3G 3 Glass 0.31 0.67
3L 3 Low-e glass 0.27 0.64

Ref: Window U-values, AHSRAE Handbook 2005, Table 29.2, Operable

Table 13: Glazing solar heat gain coefficient (glazing_shgc) by window frame type (window_frame)
glazing_treatment CLEAR ABS REFL LOW_S HIGH_S
glazing_layers ONE TWO THREE ONE TWO
window_frame NONE 0.86 0.76 0.68 0.73
ALUMINUM 0.75 0.67 0.60 0.64 0.55
THERMAL_BREAK 0.75 0.67 0.60 0.64 0.55
WOOD 0.64 0.57 0.51 0.54 0.46
INSULATED 0.64 0.57 0.51 0.54 0.46

The glazing heat gain coefficient (SHGC) is the fraction of incident solar radiation admitted through a window, or the product of the nominal SHGC and the window exterior transmission coefficient. glazing_shgc is expressed as a value between 0 and 100%, 0 being the least solar heat transmission, and 100% being the most.

\(SHGC = SHGC_{nom}\ WET\ A_g\)

Table 14: Values for Rwindows.
glass_type LOW_E_GLASS GLASS OTHER
glazing_layers ONE TWO THREE
window_frame NONE undef 1/0.30
ALUMINUM undef 1/0.67 1/0.64
THERMAL_BREAK undef 1/0.47 1/0.43
WOOD undef 1/0.41 1/0.37
INSULATED undef 1/0.33 1/0.31

Window Openings

Warning

Bugs: the simulate_window_openenings model may inadvertently cause the internal temperature of the house to exceed expected values based on the outdoor temperature and the insulation values of the house.

This model is designed to represent the effects of people opening their windows during shoulder temperature periods. This is a complicated human interaction to model, as it is often related to current temperature, forecast of the temperature and other weather conditions, history of temperature, humidity, etc. This model is designed to be a brute force approach to representing this impact.

Basically, you activate the model (simulate_window_openings is FALSE by default), then describe the upper and lower cutoffs of when the window WILL absolutely be open versus absolutely WILL NOT be open (window_low_temperature_cutoff and window_high_temperature_cutoff).

The three coefficients listed below then describe a probability curve between the two cutoff points – the probability of opening or closing a window is now a function of the outside air temperature. The “delta” variable is “how often” to update the model as a function of outdoor air temperature, i.e., if outside air changes by 5 degrees, let's see if the human has changed their mind.

The effect is that if windows are closed, normal operation. If open, the HVAC is overridden (to OFF) and UA is raised by a factor of 10 (which makes heat transfer very fast).

What we don’t have a great model for is the probability curve or what the cutoff values should be! For previous work, we found that a simple linear between the cutoffs was a pretty good representation. I think for cutoffs, we used -2 to +8 around the setpoint.

Table 15: Window Opening Parameters
Parameter Default Value Units
simulate_window_openings FALSE Boolean
is_window_open FALSE double
window_low_temperature_cutoff 60 °F
window_high_temperature_cutoff 80 °F
window_quadratic_coefficient 0 none
window_linear_coefficient 0 none
window_constant_coefficient 1 none
window_temperature_delta 5 °F

Sizing Calculations

This section describes how sensibly sized HVAC units are created.

Design heating load (Btu/hr) = UA * (Design indoor temperature heating – Design outdoor temperature heating)

Design sensible cooling load (Btu/hr) = UA * (Design outdoor temperature cooling - Design indoor temperature cooling) + Design internal gains * 3.413 (Btu/hr-kW) +

Design solar_radiation * Ag * SHGC * WET

Design total cooling load (Btu/hr) = Design_sensible_cooling load * (1 + Latent_cooling_fraction)

For cool system types other than none , the design cooling capacity is nearest 6,000 Btu/hr increment above design cooling load (otherwise the Design_cooling_capacity = 0)

Design_cooling_capacity (Btu/hr) = Round( (Design_total_cooling_load * (1 + Oversizing_ factor) + 3000) / 6000 ) * 6000

Other than for heat pumps, the design heating capacity is nearest 10,000 Btu/hr increment above design heating load (otherwise the Design_heating_capacity (Btu/hr) = 0)

Design_heating_capacity (Btu/hr) = Round( (Design_heating_load * (1 + Oversizing_factor) + 5000) / 10000 ) * 10000 # Heat system types other than heat pump

For heat pumps (only), a rule of thumb is that the heating capacity is equal to the cooling capacity, and the auxiliary heating capacity is equal to the

Design_heating_capacity (Btu/hr) = Design_cooling_capacity # _heat pump_ Heat system type only

For heat pump Heat system types with electric auxiliary heat only:

Auxiliary_capacity (Btu/hr) = Round( (Design_heating_load * (1 + Oversizing_factor) + 5000) / 10000 ) * 10000 # heat pump Heat system type only

For all other cases, the Auxiliary capacity = 0.

For Fan types other than none and Heat system types other than none , determine the volumetric flow rate of air at standard conditions and 150 °F to deliver the greater of the Design_heating_capacity and the Auxiliary_capacity:

Design_heating_airflow = Max(Design_heating_capacity and the Auxiliary_capacity)/( 0.018 * (Design_heating_supply_temperature - Design_indoor_temperature_heating))/ 60

For Cool system types other than none , size a fan to deliver a sufficient volume of air at 50 °F to deliver the Design_cooling _cfm:

Design_cooling_airflow = Design_cooling_capacity /(1 + Latent_fraction)/(0.018 * (Design_indoor_temperature_cooling - Design_cooling_supply_temperature)/60

The power input to the fan is based on the greater of the Design_cooling_airflow and the Design_heating_airflow, assuming a ½ in. of water pressure drop, a 42% efficient fan, and an 88% efficient motor sized to the nearest 1/8 HP (for Fan type none , Fan power = 0)

Fan_power = Round(0.117 * Duct_pressure_drop * Max(Design_cooling_airflow, Design_heating_airflow)/$\frac {0.42}{745.7} + \frac {1}{16})/ \frac{1}{8}))*\frac{1}{8} * \frac{745.7}{0.88}$$

Heating/Cooling Thermostat Operations

For convenience, define a set of HVAC functionality indicators, F, which define the capabilities of the HVAC system and whether they are enabled at a given time:

  • Fcool = Boolean(Cool_system_type = electric & cooling system is enabled )

  • Fheat = Boolean(Heat_system_type \(\neq\) none & heating system is enabled)

  • Faux = Boolean(Heat_system_type = heat pump & Auxiliary_heat = electric & heating system is enabled )

  • Ffan = Boolean(Fan type\(\neq\)none)

Also define a set of state variables:

  • Coolon = Boolean(Cooling system is “on” )
  • Cooloff = Boolean(Cooling system is “off” )=\(1-\text{Cool}_\text{on}\)
  • Heaton = Boolean(Cooling system is “on” )
  • Heatoff = Boolean( Heating system is “off” )=\(1-\text{Heat}_\text{on}\)

For heat pumps with electric auxiliary heat, define additional functionality indicators and state variables:

  • Faux_deadband = Boolean(Faux & \(dT_\text{aux}\neq\)none)
  • Faux_lockout=Boolean(Faux & Taux_on\(\neq\)none)
  • Faux_delay=Boolean(Faux & taux_on \(\neq\)none )
  • Auxon = Boolean( Auxiliary heat is “on” )
  • Auxoff = Boolean(Auxiliary heat is “off” ) = 1 - Auxon

Further, define the time (in minutes) from the last state change as thvac.

To initialize the time-series, heating, cooling (and auxiliary heat) are “off”: Coolon = Heaton = Auxon = 0 Cooloff = Heatoff = Auxoff = 1

Cooling Thermostat

  • Coolon = Boolean(Cooloff \(t_\text{hvac}\) > \(t_\text{min}\) & \(F_\text{cool}\) & \(T_\text{air}\) > (Tset_cool + ½ dTdeadband))

  • Cooloff = Boolean(Coolon&thvac > tmin& Fcool & Tair \(\leq\) (Tset_cool - ½ dTdeadband))

Heating Thermostat

  • Heaton = Boolean( Heatoff & thvac > tmin & Fheat & Tair \(\leq\) (Tset_heat - ½ dTdeadband))

  • Heatoff = Boolean( Heaton & thvac > tmin & Fheat & Tair > (Tset_heat + ½ dTdeadband) )

Auxiliary Heating Control (Heat Pumps Only)

To allow a state change from heating to auxiliary to occur in a single time step, the heating and cooling state change evaluations should be followed by:

  • Auxon = Boolean( Heaton & Auxoff & OR(NOT(Faux_deadband) * ( Tair \(\leq\)( Tset_heat - ½ dTaux) ) & OR (NOT(Faux_lockout * (Tair \(\leq\) Taux) & OR(NOT (Faux_delay,(thvac > taux) )

  • Auxoff = Boolean( Auxon & T Faux_deadband * ( Tair > (Tset_heat + dTdeadband) ) & thvac > tmin )

If Auxon then Heatoff = 1 and Heaton = 0

Band control

Under band control regime (e.g., object house {thermostat_control BAND;}), the setpoint and deadband settings are ignore, and instead the HVAC control uses the band control variables:

  • TauxOn - The indoor temperature at which auxiliary heating is turned on.

  • TheatOn - The indoor temperature at which normal heating is turned on.

  • TheatOff - The indoor temperature at which heating is turned off.

  • TcoolOff - The indoor temperature at which cooling is turned off.

  • TcoolOn - The indoor temperature at which cooling is turned on.

The control regime is used for external controllers that wish to directly control the actual temperatures at which the HVAC system changes state.

No control

Under no control regime, i.e., object house {thermostat_control NONE;}, all control variables are ignored and the HVAC system mode is not changed by any internal logic. The variable system_mode determines the state of the HVAC system and must be controlled directly from the external controller.

Outdoor Temperature Adjustments to Capacity and COP

The DOE-2 building stimulation program provides curves that adjust nameplate COPs and capacities for heat pumps and air conditioners as a function of the wet-bulb temperature (Twb) of the return air and/or the outdoor air temperature (Tout). The curves relevant to the House_e model (from DOE-2 Reference Manual, Part 1, Version 1.2, pg IV.194-199) are shown in Table 5, below. Variables involving CAP refer to capacity and variables involving EIR refer to DOE-2’s energy input ratio, which is the inverse of COP.

Table 16: DOE-2 System-Equipment Default Curves
Keyword Curve Variables Curve Type Applicable SYSTEM-TYPE(s) Default Curve Coefficients
COOL-CAP-FT SDL-C1 Twb,Tout bi-linear RESYS 0.59815404
COOL-EIR-FT SDL-C11 Twb,Tout bi-linear RESYS 0.49957503
HEAT-CAP-FT SDL-C51 Tout quadratic RESYS 0.34148808
HEAT-EIR-FT SDL-C56 Tout cubic RESYS 2.03914613

Extracted from Table IV.11, DOE-2 Reference Manual, Part 1, Version 1.2 (pg IV.72-73)

House_e does not explicitly model moisture in the home, so the Twb is assumed to be at the standard test condition 67°F. Eliminating Twb as a variable and inverting the EIR equations to produce equivalent COP equations gives the correction factor equations of the forms:

F_COP_T = \(\frac{1}{EIR-FT} = \frac{1}{(K_{0} + K_{1} * T_{out} + K_{2} * T_{out}^{2} + K_{3} * T_{out}^{3})}\)

F_Capacity_Tout = CAP-FT = \(K_{0} + K_{1} * T_{out} + K_{2} * T_{out}^{2} + K_{3} * T_{out}^{3}\)

The resulting coefficients used by GridLAB-D™ are shown in the Table 6, below.

Table 17: GridLAB-D™ Equipment COP Factors**
HVAC Equipment COP Factor K 0 K 1 K 2 K 3 Limit
F_Cool_COP_Tout -0.01363961 0.01066989 0.0 0.0 40
F_Heat_COP_Tout 2.03914613 -0.03906753 0.00045617 -0.00000203 80
F_Cooling_Capacity_Tout 1.48924533 -0.00514995 0.0 0.0 -
F_Heating_Capacity_Tout 0.34148808 0.00894102 0.00010787 0.0 -

These are then used to compute the actual COP and capacity as a function of outdoor temperature, as follows:

Note that part-load effects (the effect of starting a heating/cooling cycle are not yet accounted for in GridLAB-D™). They will be added in a future release.

HVAC and Electrical Loads

  1. If the Heat system type is not a heat pump, then the heating capacity is Heating_capacity = Design_heating_capacity

  2. If the Heat system type is a heat pump, then the heating capacity is determined using Table 6 and the previous section to evaluate F_Heating_Capacity_Tout

    Heating_capacity = Design_heating_capacity * F_Heating_Capacity_Tout

  3. The actual capacity at operating conditions for air conditioning is determined using Table 6 and the previous section to evaluate F_Cooling_Capacity_Tout

    Cooling_capacity = Design_cooling_capacity * F_Cooling_Capacity_Tout

  4. The electrical load of the fan is

    Pfan = Ffan * (HVACon * Fan_power +F2-speed* HVACoff * Fan_power_low_speed_fraction

  5. The sensible heat provided by the HVAC system to the air (Qhvac), with a sign convention of heating positive and cooling negative, is

    Qhvac = Heaton * Heating_capacity + Auxon * Auxiliary_capacity –Coolon * Cooling_capacity / (1 + Latent_cooling_fraction) + Pfan

  6. If use_latent_heat is set to TRUE the latent heat is

    Latent_heat_load = Cooling_capacity * (1 - 1 / Latent_cooling_fraction)

  7. if use_latent_heat is set to FALSE, the latent heat is

    Latent_heat_load = 0;

  8. If the Heat system type is not a heat pump, then the heating COP is

    Heat_COP = 1

  9. If the Heat system type is not a heat pump, then the heating COP is determined using Table 6 and the previous section to evaluate F_Heating_Capacity_Tout

    Heat_COP = Heat_COP_std * F_Heat_COP_Tout

  10. The cooling capacity is determined using Table 6 and the previous section to evaluate F_Cool_COP_Tout

    Cool_COP = Cool_COP_std * F_Cool_COP_Tout

  11. Define additional HVAC functionality indicators, indicating electricity as the source for heating and the presence of a two-speed fan

    Felectric = Boolean(Heat_system_type = heat pump

    Heat_system_type = resistance )

    F2-speed = Boolean(Fan_type = 2-speed )

  12. Define additional state variables indicating that heating/cooling is “on” or “off”

    Hvacon = Boolean( Heaton Coolon )

    Hvacoff = Boolean( Heatoff & Cooloff )

  13. The electrical power drawn by the HVAC system (Phvac, kW) is the sum of the heating, cooling, and fan electricity consumption

    Phvac = FelectricHeaton * ( Heating_Capacity / 3.413 (Btu/hr- kW) ) / Heating_COP + (Cooling_Capacity / 3.413 (Btu/hr-kW) ) * 1 + Latent_Cooling_Fraction) / Cooling_COP + Pfan

  • Residential module
    • User's Guide
    • Appliances
    • house class – Single-family home model.
    • residential_enduse class – Abstract residential end use class.
    • occupantload – Residential occupants (sensible and latent heat).
    • ZIPload – Generic constant impedance/current/power end use load.
  • Technical Documents
    • Requirements
    • Specifications
    • Developer notes
    • Technical support document
    • Validation