Water Thermal Tanks (includes Water Heaters)[LINK]
Water thermal tanks are devices for storing thermal energy in water. The most common types are water heaters. devices for storing and heating water. Typical water heater applications are for domestic hot water heating, lowtemperature radiant space heating, and energy storage for solar hot water systems or waste heat recovery. In EnergyPlus, water heater objects can be coupled to a plant loop simulation or used standalone. There are also chilled water storage tanks that can be used to hold cold water.
Mixed Water Thermal Tank[LINK]
The input object WaterHeater:Mixed provides a model that simulates a wellmixed water tank, i.e. nonstratified, and is appropriate for simulating many types of water heaters and storage tanks, including gas and electric residential water heaters, a variety of large commercial water heaters, and also instantaneous, tankless water heaters. This model is used for both the mixed water heater and the mixed chilled water storage tanks.
Energy Balance[LINK]
The wellmixed assumption implies that all water in the tank is at the same temperature. To calculate the water temperature, the model analytically solves the differential equation governing the energy balance of the water tank:
ρVcpdTdt=qnet
where:
ρ is the density of water
V is the volume of the tank
cp is the specific heat of water
T is the temperature of the tank water
t is the time
qnet is the net heat transfer rate to the tank water.
The density and volume can be replaced with the total mass m of water in the tank to get:
mcpdTdt=qnet
The net heat transfer rate qnet is the sum of gains and losses due to multiple heat transfer pathways.
qnet=qheater+qoncycpara+qoffcycpara+qoncycloss+qoffcycloss+quse+qsource
where:
qheater is the heat added by the heating element or burner
qoncycpara is the heat added due to oncycle parasitic loads (zero when off)
qoffcycpara is the heat added due to offcycle parasitic loads (zero when on)
qoncycloss is the heat transfer to/from the ambient environment (zero when off)
qoffcycloss is the heat transfer to/from the ambient environment (zero when on)
quse is the heat transfer to/from the use side plant connections
qsource is the heat transfer to/from the source side plant connections
qoncycloss and qoffcycloss are defined as:
qoncycloss=UAoncyc(Tamb−T)
qoffcycloss=UAoffcyc(Tamb−T)
where:
UAoncyc is the oncycle loss coefficient to ambient environment (zero when off)
UAoffcyc is the offcycle loss coefficient to ambient environment (zero when on)
Tamb is the temperature of ambient environment
quse and qsource are defined as:
quse=εuse˙musecp(Tuse−T)
qsource=εsource˙msourcecp(Tsource−T)
where:
εuse is the heat exchanger effectiveness for the use side plant connections
˙muse is the mass flow rate for the use side plant connections
Tuse is the inlet fluid temperature of the use side plant connections
εsource is the heat exchanger effectiveness for the source side plant connections
˙msource is the mass flow rate for the source side plant connections
Tsource is the inlet fluid temperature of the use side plant connections.
Incorporating all of these equations into the original differential equation:
mCpdTdt=qheater+qoncyc+qoffcyc+UAoncyc(Tamb−T)+UAoffcyc(Tamb−T)+εuse˙museCp(Tuse−T)+εsource˙msourceCp(Tsource−T)
Associating terms not dependent on temperature T and terms dependent on temperature T yields:
dTdt=[1mCp(qheater+qoncyc+qoffcyc+UAoncycTamb+UAoffcycTamb+εuse˙museCpTuse+εsource˙msourceCpTsource)]+[−1mCp(UAoncyc+UAoffcyc+εuse˙museCp+εsource˙msourceCp)]T
The differential equation now has the form:
dTdt=a+bT
where:
a=1mcp(qheater+qoncyc+qoffcyc+UAoncycTamb+UAoffcycTamb+εuse˙musecpTuse+εsource˙msourcecpTsource)
b=−1mcp(UAoncyc+UAoffcyc+εuse˙musecp+εsource˙msourcecp)
The solution to the differential equation can be written in terms of a and b as:
T(t)=(ab+Ti)ebt−ab
where
T(t) = temperature of the tank water at time t
Ti = initial temperature of the tank water at time t = 0
However, if b = 0, the solution instead is:
T(t)=at+Ti
Since the control algorithm must sometimes calculate the time needed to reach a specified temperature, the equations above can also be rearranged to solve for t.
t=1bln(a/abb+Tfa/abb+Ti)
or, if b = 0:
t=Tf−Tia
where Tf is the final temperature of the tank water at time t.
In the special case where b = 0 and a = 0, and Tf ≠ Ti, the time t is infinity.
Water Heater Control Algorithm[LINK]
For water heaters, control options allow the heater to cycle or modulate to meet the load. When cycling, the heater element or burner is either on or off. The heater remains fully on while heating the tank up to the setpoint temperature. When the setpoint is reached, the heater turns off. The heater remains off until the tank temperature falls below the “cutin” temperature, i.e., the setpoint temperature minus the deadband temperature difference. The heater continuously cycles on and off to maintain the tank temperature within the deadband. Most storagetank water heaters cycle.
When modulating, the heater power varies between the maximum and minimum heater capacities. The heater stays on as long as the required total demand is above the minimum capacity. Below the minimum capacity, the heater will begin to cycle on and off based on the deadband temperature difference. Most tankless/instantaneous water heaters modulate.
Within a time step, the differential equation is solved separately for when the heater element or burner is “on” (oncycle) and when it is “off” (offcycle). This approach allows ambient losses and parasitic loads to be divided into oncycle and offcycle effects and accounted for in detail.
An illustration of how the control algorithm cycles on and off is shown below. Ambient losses cool the tank temperature until the bottom of the deadband is reached (50∘C) at which point the heater cycles on and reheats the tank back to the setpoint (60∘C). A water draw causes hot water to be replaced with cold water from the water mains. The incoming cold water rapidly cools the tank. In this example the heater cannot keep up with the water draw and the tank temperature continues to drop until the water draw ends.
Although the instantaneous tank water temperature may vary considerably within a timestep (due to cycling, etc.), only the average temperature over the timestep is reported. The model calculates the average by piecewise integration of the area under the instantaneous temperature curve for each unique set of conditions. The instantaneous temperature is preserved internally by the program and is propogated from the end of one timestep to the beginning of the next.
Chilled Water Tank Control Algorithm[LINK]
The input objects ThermalStorage:ChilledWater:Mixed and ThermalStorage:ChilledWater:Stratified provide chilled water tank models that do not include active cooling elements, there is only indirect cooling by remote devices such as a chiller. The tank’s setpoint controls are used to determine if flow is to be requested through the source side of the tank. The setpont and deadband control scheme is similar to the water heater but the logic is flipped around for cooling instead of heating. The setpoint temperatue is the “cutout” temperature and the setpoint plus deadband is the “cutin” temperature. If the tank temperature ( or tank sensing node for stratified tanks) is above the “cutin” temperature, then flow is requested. If temperatures are below the “cutout” temperature, then flow is not requested. The chilled water tanks also have separate availability schedules for the use side and source side for additional control options.
Standard Ratings[LINK]
For water heaters, the industry standard ratings of Recovery Efficiency and Energy Factor are calculated according to the 10CFR430 test procedure. To emulate the test procedure, a 24hour simulation of the water heater is performed internally using the specified test conditions:
Setpoint Temperature = 57.2∘C (135∘F)
Ambient Temperature = 19.7∘C (67.5∘F)
Ambient Relative Humidity = 50% (used for heat pump water heaters)
Inlet Temperature (Water Mains) = 14.4∘C (58∘F)
For heat pump water heaters, the water heater tank’s heating element and water heater tank parasitic loads are disabled and the userdefined water heating capacity, energy use, and parasitic loads for the heat pump are used to calculate Recovery Efficiency and Energy Factor.
The simulated test procedure performs six equal draws of approximately 0.041 m3 (10.7 gal) in each of the first six hours of the simulation. Each draw occurs over the first timestep of the hour.
The Recovery Efficiency is calculated when the water heater recovers to the setpoint after the first draw.
RE=m1cp(57.2−14.4)E1
where:
m1 is the water mass of the first draw
cp is the specific heat of water
E1 is the fuel energy consumed until the setpoint is recovered (including parasitics).
Note: When the standards rating for a heat pump water heater is calculated, the fuel energy consumed refers to the total energy consumed by the heat pump compressor, evaporator fan, condenser pump, and parasitic loads. It is assumed that the parasitic loads for a heat pump water heater do not contribute to heating the water (ref. Heat Pump Water Heater).
The Energy Factor is calculated at the end of the 24hour simulation period.
EF=mtotalcp(57.2−14.4)Etotal
where:
mtotal is the total water mass of all six draws
cp is the specific heat of water
Etotal is the total fuel energy consumed over 24 hours (including parasitics).
Under certain input parameters, the rating method will not succeed and a warning message will be generated. Problems occur when inputs do not allow the tank to recover to the setpoint temperature within the test period. This can occur if the maximum heater capacity is undersized, or if the deadband temperature difference is large enough that the first draw of the test does not trigger the heater to come on. In either case, the Recovery Efficiency test will not compute properly because recovery to the setpoint was not achieved.
10CFR430. Title 10, Code of Federal Regulations, Part 430  Energy Conservation Program for Consumer Products, Appendix E to Subpart B  Uniform Test Procedure for Measuring the Energy Consumption of Water Heaters.
Heat Pump Water Heater[LINK]
The input objects WaterHeater:HeatPump:* provide models for a heat pump water heater (HPWH) that is a compound object consisting of a water heater tank (e.g., WaterHeater:Mixed or WaterHeater:Stratified), a direct expansion (DX) “coil” (i.e., an airtowater DX compression system which includes a water heating coil, air coil, compressor, and water pump), and a fan to provide air flow across the air coil associated with the DX compression system. These objects work together to model a system which heats water using zone air, outdoor air, or a combination of zone and outdoor air as the primary heat source.
There are two types of heat pump water heater models available:
WaterHeater:HeatPump:PumpedCondenser: This model is used to represent a heat pump water heater where water is removed from the tank, pumped through a condenser, and returned to the tank at a higher temperature.
WaterHeater:HeatPump:WrappedCondenser: This model is used for heat pump water heaters that are more typical in the residential building context where the heating coil is wrapped around or submerged in the tank.
Each type of WaterHeater:HeatPump:* object is compatible with certain Coil:WaterHeating:AirToWaterHeatPump:* objects as shown in Table 1.
Compatibility of Water Heater Objects
PumpedCondenser 
Pumped 
PumpedCondenser 
VariableSpeed 
WrappedCondenser 
Wrapped 
Additionally the WaterHeater:HeatPump:WrappedCondenser object is only compatible with stratified tanks. Therefore, WaterHeater:HeatPump:* has the tank compatibility as shown in Table 2.
Compatibility of Water Heaters with Tank Types
WaterHeater:HeatPump:* 



Mixed 
Stratified 
Pumped 
X 
X 
Wrapped 

X 
Numerous configurations of tank location, inlet air source, and DX coil compressor location can be modeled. The DX coil compressor may be located in a zone, outdoors, or the ambient temperature surrounding the compressor may be scheduled. The location of the compressor controls the operation of its crankcase heater. The water heater tank location is specified in the water heater tank object and is independent of the compressor location. In addition, the inlet air configuration may be specified in one of several ways. The heat pump water heater air coil and fan assembly may draw its inlet air from the zone and outdoor air using an optional mixer and splitter assembly as shown in the first figure below. When used, the mixer and splitter air streams are controlled by a single inlet air mixer schedule. When the HPWH draws its inlet air solely from a zone, the mixer/splitter assembly is not required as shown in the second figure below. In this case, the inlet air to the evaporator and fan assembly is made up entirely of zone air and the heat pump outlet air is directed back to the zone. The final figure illustrates a HPWH that draws its inlet air solely from outdoors and exhausts its outlet air outdoors as well. Each of these configurations may also be connected to a plant hot water loop (via the water heater tank use nodes).
Note: The water heater tank location shown in the figures above is completely independent of the heat pump water heater’s inlet air configuration and its compressor location. The water heater tank may be located outdoors, in a zone, or the ambient temperature surrounding the tank can be scheduled as described in the mixed water heater section below.
Model Description[LINK]
The heat pump water heater input requires a compressor setpoint temperature schedule and dead band temperature difference, which are independent from the setpoint temperature schedule and dead band temperature difference for the heater (element or burner) associated with the water heater tank. The cutin temperature for the heat pump compressor is defined as the heat pump compressor’s setpoint temperature minus its dead band temperature difference.
THP,cut−in=THP,setpoint−THP,deadband
where:
THP,cut−in is the cutin temperature for the heat pump compressor (∘C)
THP,setpoint is the heat pump compressor setpoint temperature (∘C)
THP,deadband is the heat pump compressor dead band temperature difference (∘C).
In this model, the heat pump water heater’s DX compression system is considered the primary heat source and the water tank’s heater (element or burner) provides supplemental heat as necessary. Therefore, the cutin temperature for the heat pump compressor (setpoint minus dead band temperature difference) is usually higher than the setpoint temperature for the heater (element or burner) in the associated water heater tank object. At times when the water heater tank setpoint temperature is greater than the cutin temperature of the heat pump compressor, the heat pump compressor is disabled and the tank’s heater is used to heat the water.
The simulation starts by first calculating the air conditions entering the air coil (evaporator)/fan assembly based on the inlet air configuration of the heat pump water heater and the presence of the optional mixer/splitter nodes. When the HPWH draws its inlet air from the zone and outdoors using the optional mixer/splitter nodes (i.e., Inlet Air Configuration = Zone and Outdoor Air), the inlet air conditions are calculated as follows:
Frac=GetScheduleValue(MixerInletAirSchedule)
Tinlet=Toutdoor(Frac)+Tzone(1−Frac)
ωinlet=ωoutdoor(Frac)+ωzone(1−Frac)
where:
Frac is the current value of the inlet air mixer schedule (fraction of outdoor air, 01)
Tinlet is the inlet air drybulb temperature to the HPWH evaporator/fan assembly (∘C)
Toutdoor is the outdoor air drybulb temperature (∘C)
Tzone is the zone (exhaust) air drybulb temperature (∘C)
ωinlet is the inlet air humidity ratio to the HPWH evaporator/fan assembly (kg/kg)
ωoutdoor is the outdoor air humidity ratio (kg/kg)
ωzone is the zone (exhaust) air humidity ratio (kg/kg).
When the heat pump water heater draws its inlet air solely from the zone (i.e., Inlet Air Configuration = Zone Air Only), the inlet air conditions to the evaporator/fan assembly are simply set equal to the zone (exhaust) air conditions. If the heat pump water heater draws its inlet air solely from outdoors (i.e., Inlet Air Configuration = Outdoor Air Only), the inlet air conditions to the evaporator/fan assembly are simply set equal to the outdoor air conditions. When the inlet air to the heat pump water heater evaporator and fan assembly is scheduled (i.e., Inlet Air Configuration = Schedule), the inlet air conditions are determined directly from the usersupplied schedules as follows.
Tinlet=GetScheduleValue(InletAirTemperatureSchedule)
RHinlet=GetScheduleValue(InletAirHumiditySchedule)
ωinlet=PsyWFnTdbRhPb(Tinlet,RHinlet,OutBaroPress)
where:
RHinlet is the inlet air relative humidity to heat pump water heater evaporator/fan assembly (01)
PsyWFnTdbRhPb is a psychrometric function returning air humidity ratio given drybulb temperature, relative humidity, and barometric pressure
OutBaroPress is the outdoor barometric pressure (Pa).
For each simulation time step, the heat pump water heating capacity, energy use, and airside/waterside mass flow rates are set to zero and the water heater tank is simulated with the heat pump compressor disabled when any of the following conditions apply:
the HPWH is scheduled off by its availability schedule,
the water heater tank setpoint temperature is greater than or equal to the heat pump compressor cutin temperature,
the inlet air drybulb temperature to the evaporator/fan assembly is less than the Minimum Inlet Air Temperature for Heat Pump Compressor Operation (as specified by the user in the HPWH input object), or
the HPWH setpoint temperature is greater than or equal to the Maximum Temperature Limit (specified in the Water Heater:Mixed object).
Otherwise, simulation of the heat pump water heater is based on its current mode of operation. This mode of operation is either floating (heat pump compressor is off and tank water temperature has not fallen below the heat pump compressor cutin temperature) or heating (tank water temperature dropped below the compressor cutin temperature on a previous time step but was unable to reach the compressor setpoint temperature). Each mode is handled differently and they will be discussed separately.
If the heat pump water heater is using the stratified tank model, then there is more than one value for the tank temperature. The model includes input for where the heat pump controls detect the temperature. The input data in the associated WaterHeater:Stratified includes up to two heights in the tank where the temperature is measured and a weight associated with each. The associated stratified tank nodes are selected based on these heights. When the heat pump model needs to evaluate the tank temperature of a stratified tank, it evaluates the temperature at the tank nodes associated with these locations.
When the heat pump water heater tank temperature is floating between the heat pump compressor’s cutin and cutout temperatures at the end of the previous simulation time step, both the heat pump compressor and the water heater tank’s heating element are disabled and a resulting tank temperature is calculated. If the resulting tank temperature is below the heat pump compressor’s cutin temperature, the heat pump compressor partload ratio is estimated using the ratio of the temperature differences shown below. The partload ratio can not be less than zero or greater than one.
PLR=MIN(1.0,MAX(0.0,(THP,cut−in−Ttank,floatTtank,initial−Ttank,float)))
where:
PLR is the partload ratio of the heat pump water heater compressor
Ttank,float is the tank temperature in float mode when heating capacity is set to zero (∘C)
Ttank,initial is the tank temperature at the beginning of the simulation time step (∘C).
Since the pump and fan are assumed to cycle on and off with the heat pump compressor, the average condenser water (for pumped condensers only) and evaporator air mass flow rates for the simulation time step are calculated based on the PLR calculated above:
˙mwater,avg=˙Vwater(ρwater)(PLR)
˙mair,avg=˙Vair(ρair)(PLR)
where:
˙mwater,avg is the average condenser water mass flow rate for the time step (kg/s)
˙Vwater is the condenser water volumetric flow rate, user input (m3/s)
ρwater is the density of condenser inlet water (kg/m3)
˙mair,avg is the average evaporator/fan air mass flow rate for the time step (kg/s)
˙Vair is the evaporator/fan air volumetric flow rate, user input (m3/s)
ρair is the density of evaporator/fan inlet air (kg/m3).
The water tank temperature is then calculated based on heat pump operation at the partload ratio estimated above and with the water tank’s heating element enabled. If the resulting water tank temperature is above the heat pump compressor’s setpoint (cutout) temperature, then the partload ratio is reduced and the water heater tank is simulated again. The process is performed iteratively until the partload ratio of the heat pump compressor achieves the desired setpoint temperature (to the extent possible).
When the HPWH is in heating mode at the end of the previous simulation time step (i.e., the heat pump compressor operated during the previous simulation time step but was unable to achieve the setpoint temperature), both the heat pump compressor and the water heater tank’s heating element are enabled. The partload ratio of the heat pump compressor is set to 1, and the condenser water (for pumped condensers) and evaporator air mass flow rates are set to their maximum flow rates.
˙mwater,avg=˙Vwater(ρwater)
˙mair,avg=˙Vair(ρair)
If the resulting tank temperature is above the heat pump compressor’s setpoint (cutout) temperature, the partload ratio of the heat pump compressor is reduced and the water heater tank is simulated again. The process is performed iteratively until the partload ratio of the heat pump compressor achieves the desired setpoint temperature (to the extent possible).
The airside outlet conditions of the HPWH are calculated through simulation of the fan and DX coil with either a blow through or draw through fan placement (user selectable). If mixer/splitter nodes are used, the HPWH model splits the heat pump outlet air mass flow rate with exhaust air flow equaling the outdoor air flow, and the balance of the outlet air being sent to the zone supply air node (i.e., ensures that the heat pump water heater does not contribute to zone pressurization or depressurization). Calculations of heat pump water heating capacity, energy use, airside performance, and waterside temperature difference are performed in the associated DX Coil object. See the engineering reference section for the Coil:WaterHeating:AirToWaterHeatPump object for details.
Model Outputs[LINK]
After completing the float mode or heating mode calculations and the final partload ratio has been determined, the output (report) variables are calculated as follows:
Heat Pump Water Heater Compressor Part−Load Ratio=PLR
Heat Pump Water Heater On−Cycle Parasitic Electric Power (W)=Pparasitic,on(PLR)
Heat Pump Water Heater On−Cycle Parasitic Electric Consumption (J)=Pparasitic,on(PLR)(3600)tsys
Heat Pump Water Heater Off−Cycle Parasitic Electric Power (W)=Pparasitic,off(1−PLR)
Heat Pump Water Heater Off−Cycle Parasitic Electric Consumption (J)=Pparasitic,off(1−PLR)(3600)(tsys)
where:
Pparasitic,on is the oncycle parasitic electric load, user input (W)
Pparasitic,off is the offcycle parasitic electric load, user input (W)
tsys is the HVAC system simulation time step (hours).
Note: All heat pump water heater output variables, including offcycle ancillary electric power and consumption, equal 0 when the heat pump water heater availability schedule equals 0 (i.e., the heat pump water heater is scheduled OFF).
Stratified Water Thermal Tank[LINK]
The input objects WaterHeater:Stratified and ThermalStorage:ChilledWater:Stratified provide models for a stratified water thermal tank that divides the water tank into multiple nodes of equal volume. This model is used for both the stratified water heater and the stratified chilled water storage tank. The nodes are coupled by vertical conduction effects, internode fluid flow, and temperature inversion mixing. The object simultaneously solves the differential equations governing the energy balances on the nodes using an analytical solution to a simplified representation of the heat balance equation. The system time step is divided into multiple substeps at which control decisions are evaluated that allow the simulation to capture events that occur on a short time scale.
Energy Balance[LINK]
Similar to the wellmixed model, the stratified model solves the same fundamental differential equation governing the energy balance on a mass of water:
mcpdTdt=qnet
where:
m is the mass of water
cp is the specific heat of water
T is the temperature of water
t is the time
qnet is the net heat transfer rate.
The difference for the stratified model is that it must solve the energy balance on n number of nodes simultaneously. Node 1 is at the top of the water tank and node n is at the bottom of the water tank.
mncpdTndt=qnet,n
where:
mn is the mass of water for node n
cp is the specific heat of water
Tn is the temperature of water for node n
t is the time
qnet,n is the net heat transfer rate for node n.
It will be advantageous for the numerical solution to rearrange the nodal differential equation into the form
dTdt=aT+b
The net heat transfer rate qnet is the sum of gains and losses due to multiple heat transfer pathways. Each term is defined as described below and separated into the part that is multiplied by the current node temperature (a term) and everything else (b term).
qnet,n=qheater,n+qoncycpara,n+qoffcycpara,n+qoncycloss,n+qoffcycloss,n+qcond,n+quse,n+qsource,n+qflow,n
where:
qheater,n is the heat added by Heater 1 or Heater 2
qoncycpara,n is the heat added due to oncycle parasitic loads (zero when off)
qoffcycpara,n is the heat added due to offcycle parasitic loads (zero when on)
qoncycloss,n is the heat transfer to/from the ambient environment (zero when off)
qoffcycloss,n is the heat transfer to/from the ambient environment (zero when on)
qcond,n is the heat transfer due to conduction between the node above and below
quse,n is the heat transfer to/from the use side plant connections
qsource,n is the heat transfer to/from the source side plant connections
qflow,n is the heat transfer due to fluid flow from the node above and below
Heater and Parasitic Loads[LINK]
qheater, qoncycpara,n, and qoffcycpara,n are all added to the b coefficient because they do not depend on the current node temperature.
On and Offcycle Losses to Ambient[LINK]
qoncycloss,n and qoffcycloss,n are defined as:
qoncycloss,n=(UAtank+UAadd,n)(Tamb−Tn)
qoffcycloss,n=(UAtank+UAflue)(Tamb−Tn)
where:
UAtank is the loss coefficient to ambient environment for the tank
UAadd,n is the additional node loss coefficient
UAflue is the additional offcycle flue loss coefficient to ambient environment (zero when on)
Tamb is the temperature of ambient environment.
Separating it into a and b terms for oncycle losses:
an=−(UAtank+UAadd,n)bn=(UAtank+UAadd,n)Tamb
And for offcycle losses:
an=−(UAtank+UAflue)bn=(UAtank+UAflue)Tamb
Conduction to Adjacent Nodes[LINK]
qcond,n is defined as:
qcond,n=kAn+1Ln+1(Tn+1−Tn)+kAn−1Ln−1(Tn−1−Tn)
where:
k is the fluid thermal conductivity of water (0.6 W/mK)
An+1 is the shared surface area between node n and node n+1
Ln+1 is the distance between the center of mass of node n and n+1
Tn+1 is the temperature of node n+1
An−1 is the shared surface area between node n and node n1
Ln−1 is the distance between the center of mass of node n and n1
Tn−1 is the temperature of node n1.
Separating into a and b terms yields:
an=−(kAn+1Ln+1+kAn−1Ln−1)bn=(kAn+1Ln+1Tn+1+kAn−1Ln−1Tn−1)Tamb
Use and Sourceside Plant Connections[LINK]
quse,n, and qsource,n are defined as:
quse=εuse˙musecp(Tuse−T)
qsource=εsource˙msourcecp(Tsource−T)
where:
εuse is the heat exchanger effectiveness for the use side plant connections
˙muse is the mass flow rate for the use side plant connections
Tuse is the inlet fluid temperature of the use side plant connections
εsource is the heat exchanger effectiveness for the source side plant connections
˙msource is the mass flow rate for the source side plant connections
Tsource is the inlet fluid temperature of the source side plant connections.
Separating into a and b terms for the source side connection yields:
an=−εsrc˙msrccpbn=εsrc˙msrccpTsrc
And for the use side connection:
an=−εuse˙musecpbn=εuse˙musecpTuse
Internodal Flow[LINK]
qflow,n is defined as:
qflow,n=˙mn+1cp(Tn+1−Tn)+˙mn−1cp(Tn−1−Tn)
where:
˙mn+1 is the mass flow rate from node n+1
˙mn−1 is the mass flow rate from node n1.
Separating into a and b terms:
an=−cp(˙mn+1+˙mn−1)bn=cp(˙mn+1Tn+1+˙mn−1Tn−1)
Inversion Mixing[LINK]
Inversion mixing occurs when the node below is warmer than the node above. The difference in temperatures drives a difference in density that causes the nodes to mix. Usually inversion mixing occurs very rapidly.
At the end of each sub timestep, the algorithm checks for temperature inversions and instantaneously mixes inverted nodes by calculating a weighted average of the node temperatures of the inverted nodes. This is done iteratively up the tank until there are no more temperature inversions.
Use and Source Effectiveness Correction[LINK]
The use and source fluid steam outlet temperatures calculation procedure depends on the values of the effectiveness. If the effectiveness is 1.0, then complete mixing of these fluid steam and the tank water is assumed. In this case the outlet temperatures for the use and source streams will be simply the tank water temperatures at point of the outlet nodes. When the effectiveness is less than 1.0, an indirect heat exchange is assumed between the use or source stream and the water in the stratified thermal storage tank. When the effectiveness is less than 1.0, the use and source outlet temperatures are calculated using Quse and Qsource, and energy balance equations as follows:
Tuse out,n=Tuse,n+quse,n˙musecp
Tsource out,n=Tsource,n−qsource,n˙msourcecp
where:
Tuse out is the outlet fluid temperature of the use side plant connections
Tsource out is the outlet fluid temperature of the source side plant connections.
Numerical Solution[LINK]
To solve the differential equations the nodal heat balance equations are modified into the form:
dTndt=aTn+b
Where a is a constant and b can be a function of either time or the temperature of adjacent nodes. If b is assumed to be constant, the solution of the differential equation is readily solved. Since b is not generally constant a reasonable approximation can be made by assuming b is equal to its average value over the sub timestep.
Solving the differential equation yields the following solution for the temperature of a node at the end of a sub timestep.
Tfinal=(Tinitial+ba)eaΔt−ba
Where b is a function of the average temperature as calculated by
b=b(Tavg)Tavg=(Tinitial−ba)(eaΔt−1)aΔt−ba
The solution is obtained by separating the qnet terms described above into their respective a and b parts, solving for Tfinal and Tavg, recalculating b using the new average temperatures and iterating until the temperatures converge, at which point temperature inversions are resolved and controls decisions are made before moving on to the next sub timestep.
Adaptive Sub Timestep[LINK]
The sub timestep is allowed to vary between 10 seconds and 10 minutes. The length of the sub timestep is determined by the current heat transfer rates in the tank, which are used to predict the amount of time until a control decision (1.3.2.2) will need to be made. The sub timestep is then selected to approach the time of the control decision.
First, the temperature difference required for a heater to turn on or off for each control node is calculated by determining the difference between its setpoint temperature and the current temperature if the heater is on or its cut in temperature and current temperature if the heater is off. The minimum of the temperature differences is selected as the maximum allowable nodal temperature change dTmax. The time until that temperature change occurs is estimated for each node by rearranging [strattankdiffeq] to solve for dt.
dt=dTmaxaT+b
Finally, the minimum of the nodal dt values is used as the sub timestep unless it is outside the allowable bounds or it will extend beyond the end of the timestep. In those cases, the sub timestep is adjusted to fit within the bounds.
Control Logic Evaluation[LINK]
Before each system time step is calculated the following evaluations are made:
Use and source inlet flow rates are applied to the inlet nodes
Internode flow is determined and net flow rates are determined
Before each sub timestep is calculated, the following evaluations are made:
Thermostatic controls for heater 1 and heater 2 are evaluated to determine if the heater elements should turn on or off
Node 1 temperature is compared against the maximum limit to determine if venting is necessary
Adjoining node temperatures are compared to determine if there are any temperature inversions for which the inversion mixing rate should be used.
Source inlet temperatures for the desuperheater are recalculated and applied to the inlet nodes using the heat rate calculated in the system time step loop
The solution continues looping through all substeps until the system time step is completed.
Duffie, J., and W. Beckman. 1980. Solar Engineering of Thermal Processes. John Wiley & Sons.
Newton, B. 1995. Modeling of Solar Storage Tanks. Master’s Dissertation, University of WisconsinMadison.
Water Heating Sizing[LINK]
Some inputs for water heaters can be autosized using the input object WaterHeater:Sizing. This section describes the sizing calculations for water heaters. There are six general methods for sizing tank volume and heating capacity.
Autosizing Tank Volume[LINK]
The volume a water heater can be sized in the following ways depending on the design method chosen by the user.
Peak Draw. The volume is determined from the loop design flow rate. The water heater is positioned on the supply side of a plant loop. After the plant sizing routines have run, the model obtains the design flow rate for all components on the demand side. The tank volume is then: V=˙Vloop.des∗tdraw
Residential HUDFHA Minimum. The volume is determined from a set of rules defined in Table 3. This is from Chapter 48 of 1999 ASHRAE Handbook HVAC Applications, Americal Society of Heating Refrigeration and Airconditioning Engineeers, Atlanta GA. (also used in the Building America Benchmark).
Residential HUDFHA Minimum
# Bedrooms 
1 
2 
2 
2 
3 
3 
3 
4 
4 
4 
5 
6 
# Bathrooms 
All 
≤1.5 
22.5 
≥3 
≤1.5 
22.5 
≥3 
≤1.5 
22.5 
≥3 
All 
All 
Gas 












Storage (gal) 
20 
30 
30 
40 
30 
40 
40 
40 
40 
50 
50 
50 
Burner (kBtu/hr) 
27 
36 
36 
36 
36 
36 
38 
36 
38 
38 
47 
50 
Electric 












Storage (gal) 
20 
30 
40 
50 
40 
50 
50 
50 
50 
66 
66 
80 
Burner (kW) 
2.5 
3.5 
4.5 
5.5 
4.5 
5.5 
5.5 
5.5 
5.5 
5.5 
5.5 
5.5 
Per Person. The tank volume is determined by summing the design level of people in the model and multiplying by a userentered volume per person factor.
Per Floor Area. The tank volume is determined by summing the floor area in all the zones in the model and multiplying by a userentered volume per floor area factor.
Per Unit. The tank volume is determined by multiplying a userentered volume per unit and a userentered number of units.
Per Solar Collector Area. The tank volume is determined by summing the collector area in all the hot water solar collectors in the model and multiplying by a userentered volume per collector area factor.
Autosizing Heater Capacity[LINK]
The heater capacity can be sized in the following ways depending on the design method chosen by the user.
 Peak Draw. The heater capacity is determined from the tank volume, assumed start and finish temperatures and a user defined time for recovery. The heater capacity is then:
qheat=VρCp(Tfinish−Tstart)
where:
Tfinish=57.2∘C
Tstart=14.4∘C
Residential HUDFHA Minimum. The heater capacity is determined from a set of rules defined by the table above. This is from 1999 ASHRAE Handbook HVAC Applications, Americal Society of Heating Refrigeration and Airconditioning Engineeers, Atlanta GA. (also used the Building America Benchmark).
Per Person. The heater capacity is determined by summing the design level of people in the model and using a userentered factor for recovery capacity per person. The heater capacity is then:
qheat=NpeoplefRecoveryPerPerson(Tfinish−Tstart)ρcp3600
 Per Floor Area. The heater capacity is determined by summing the floor area in all the zones in the model and using a userentered factor for recovery capacity per floor area. The heater capacity is then:
qheat=AfloorsfRecoveryPerFloorArea(Tfinish−Tstart)ρCp3600
 Per Unit. The heater capacity is determined from a userentered Recovery Capacity per unit and a userentered number of units. The heater capacity is then:
qheat=NunitsfRecoveryPerUnit(Tfinish−Tstart)ρcp3600
 Per Solar Collector Area. The water heater is assumed to be used for solar hot water storage and the heater capacity is set to zero.
Autosizing Tank Height[LINK]
If the water heater is Stratified, then the geometry is important and the height of the tank can be scaled with changes in volume. For tank shapes of Vertical Cylinder, the user defined height aspect ratio, AR, is used to calculate a tank height, H, using
H=(4 V AR2π)1/3
Autosizing Plant Connection Flow Rates[LINK]
When the water thermal tank is connected to a plant loop, it is convient to autosize the design volume flow rates through the plant connections. When the water thermal tank is connected to the supply side of plant loop and flow rates are autosized, the flow rate is the sum of the flow requests of all the various components on the demand side of that plant loop. When the water thermal tank is connected on the demand side of a plant loop (e.g. as for indirect water heating with a boiler) and flow rates are autosized, the design flow rates are calculated with the following equation:
˙V=−(VtRecover∗3600∗ε)∗Ln(TPlantDesign−TSetpointTPlantDesign−Tstart)
where:
V is the volume of the tank
tRecover is the user parameter for the time it takes for the tank to recover from assumed starting temperature to an assumed setpoint temperature. For water heaters, the starting temperature is 14.4∘C and the final assumed setpoint temperature is 57.2∘C. For chilled water tanks, the starting temperature is 14.4∘C and the final temperature is 9.0∘C.
ε is εuse or εsource
TPlantDesign is the exit temperature specified in the Plant Sizing object
Tsetpoint is the final tank temperature of 57.2∘C for heaters and 9.0∘C for chilled water tanks
Tstart is the initial tank temperature of 14.4∘C.
If the demand side connections are autosized and a water heater’s tank volume is autosized, then the problem cannot be readily solved in EnergyPlus because the demand side connection flows need to be reported earlier in the simulation and the tank volume is not yet available. This situation is resolved by using an interim, nominal tank volume for sizing the connections and the actual volume is calculated later in the simulation.
Water Thermal Tanks (includes Water Heaters)[LINK]
Water thermal tanks are devices for storing thermal energy in water. The most common types are water heaters. devices for storing and heating water. Typical water heater applications are for domestic hot water heating, lowtemperature radiant space heating, and energy storage for solar hot water systems or waste heat recovery. In EnergyPlus, water heater objects can be coupled to a plant loop simulation or used standalone. There are also chilled water storage tanks that can be used to hold cold water.
Mixed Water Thermal Tank[LINK]
The input object WaterHeater:Mixed provides a model that simulates a wellmixed water tank, i.e. nonstratified, and is appropriate for simulating many types of water heaters and storage tanks, including gas and electric residential water heaters, a variety of large commercial water heaters, and also instantaneous, tankless water heaters. This model is used for both the mixed water heater and the mixed chilled water storage tanks.
Energy Balance[LINK]
The wellmixed assumption implies that all water in the tank is at the same temperature. To calculate the water temperature, the model analytically solves the differential equation governing the energy balance of the water tank:
ρVcpdTdt=qnet
where:
ρ is the density of water
V is the volume of the tank
cp is the specific heat of water
T is the temperature of the tank water
t is the time
qnet is the net heat transfer rate to the tank water.
The density and volume can be replaced with the total mass m of water in the tank to get:
mcpdTdt=qnet
The net heat transfer rate qnet is the sum of gains and losses due to multiple heat transfer pathways.
qnet=qheater+qoncycpara+qoffcycpara+qoncycloss+qoffcycloss+quse+qsource
where:
qheater is the heat added by the heating element or burner
qoncycpara is the heat added due to oncycle parasitic loads (zero when off)
qoffcycpara is the heat added due to offcycle parasitic loads (zero when on)
qoncycloss is the heat transfer to/from the ambient environment (zero when off)
qoffcycloss is the heat transfer to/from the ambient environment (zero when on)
quse is the heat transfer to/from the use side plant connections
qsource is the heat transfer to/from the source side plant connections
qoncycloss and qoffcycloss are defined as:
qoncycloss=UAoncyc(Tamb−T)
qoffcycloss=UAoffcyc(Tamb−T)
where:
UAoncyc is the oncycle loss coefficient to ambient environment (zero when off)
UAoffcyc is the offcycle loss coefficient to ambient environment (zero when on)
Tamb is the temperature of ambient environment
quse and qsource are defined as:
quse=εuse˙musecp(Tuse−T)
qsource=εsource˙msourcecp(Tsource−T)
where:
εuse is the heat exchanger effectiveness for the use side plant connections
˙muse is the mass flow rate for the use side plant connections
Tuse is the inlet fluid temperature of the use side plant connections
εsource is the heat exchanger effectiveness for the source side plant connections
˙msource is the mass flow rate for the source side plant connections
Tsource is the inlet fluid temperature of the use side plant connections.
Incorporating all of these equations into the original differential equation:
mCpdTdt=qheater+qoncyc+qoffcyc+UAoncyc(Tamb−T)+UAoffcyc(Tamb−T)+εuse˙museCp(Tuse−T)+εsource˙msourceCp(Tsource−T)
Associating terms not dependent on temperature T and terms dependent on temperature T yields:
dTdt=[1mCp(qheater+qoncyc+qoffcyc+UAoncycTamb+UAoffcycTamb+εuse˙museCpTuse+εsource˙msourceCpTsource)]+[−1mCp(UAoncyc+UAoffcyc+εuse˙museCp+εsource˙msourceCp)]T
The differential equation now has the form:
dTdt=a+bT
where:
a=1mcp(qheater+qoncyc+qoffcyc+UAoncycTamb+UAoffcycTamb+εuse˙musecpTuse+εsource˙msourcecpTsource)
b=−1mcp(UAoncyc+UAoffcyc+εuse˙musecp+εsource˙msourcecp)
The solution to the differential equation can be written in terms of a and b as:
T(t)=(ab+Ti)ebt−ab
where
T(t) = temperature of the tank water at time t
Ti = initial temperature of the tank water at time t = 0
However, if b = 0, the solution instead is:
T(t)=at+Ti
Since the control algorithm must sometimes calculate the time needed to reach a specified temperature, the equations above can also be rearranged to solve for t.
t=1bln(a/abb+Tfa/abb+Ti)
or, if b = 0:
t=Tf−Tia
where Tf is the final temperature of the tank water at time t.
In the special case where b = 0 and a = 0, and Tf ≠ Ti, the time t is infinity.
Water Heater Control Algorithm[LINK]
For water heaters, control options allow the heater to cycle or modulate to meet the load. When cycling, the heater element or burner is either on or off. The heater remains fully on while heating the tank up to the setpoint temperature. When the setpoint is reached, the heater turns off. The heater remains off until the tank temperature falls below the “cutin” temperature, i.e., the setpoint temperature minus the deadband temperature difference. The heater continuously cycles on and off to maintain the tank temperature within the deadband. Most storagetank water heaters cycle.
When modulating, the heater power varies between the maximum and minimum heater capacities. The heater stays on as long as the required total demand is above the minimum capacity. Below the minimum capacity, the heater will begin to cycle on and off based on the deadband temperature difference. Most tankless/instantaneous water heaters modulate.
Within a time step, the differential equation is solved separately for when the heater element or burner is “on” (oncycle) and when it is “off” (offcycle). This approach allows ambient losses and parasitic loads to be divided into oncycle and offcycle effects and accounted for in detail.
An illustration of how the control algorithm cycles on and off is shown below. Ambient losses cool the tank temperature until the bottom of the deadband is reached (50∘C) at which point the heater cycles on and reheats the tank back to the setpoint (60∘C). A water draw causes hot water to be replaced with cold water from the water mains. The incoming cold water rapidly cools the tank. In this example the heater cannot keep up with the water draw and the tank temperature continues to drop until the water draw ends.
Although the instantaneous tank water temperature may vary considerably within a timestep (due to cycling, etc.), only the average temperature over the timestep is reported. The model calculates the average by piecewise integration of the area under the instantaneous temperature curve for each unique set of conditions. The instantaneous temperature is preserved internally by the program and is propogated from the end of one timestep to the beginning of the next.
Water Heater Cycle Control Algorithm [fig:waterheatercyclecontrolalgorithm]
Chilled Water Tank Control Algorithm[LINK]
The input objects ThermalStorage:ChilledWater:Mixed and ThermalStorage:ChilledWater:Stratified provide chilled water tank models that do not include active cooling elements, there is only indirect cooling by remote devices such as a chiller. The tank’s setpoint controls are used to determine if flow is to be requested through the source side of the tank. The setpont and deadband control scheme is similar to the water heater but the logic is flipped around for cooling instead of heating. The setpoint temperatue is the “cutout” temperature and the setpoint plus deadband is the “cutin” temperature. If the tank temperature ( or tank sensing node for stratified tanks) is above the “cutin” temperature, then flow is requested. If temperatures are below the “cutout” temperature, then flow is not requested. The chilled water tanks also have separate availability schedules for the use side and source side for additional control options.
Standard Ratings[LINK]
For water heaters, the industry standard ratings of Recovery Efficiency and Energy Factor are calculated according to the 10CFR430 test procedure. To emulate the test procedure, a 24hour simulation of the water heater is performed internally using the specified test conditions:
Setpoint Temperature = 57.2∘C (135∘F)
Ambient Temperature = 19.7∘C (67.5∘F)
Ambient Relative Humidity = 50% (used for heat pump water heaters)
Inlet Temperature (Water Mains) = 14.4∘C (58∘F)
For heat pump water heaters, the water heater tank’s heating element and water heater tank parasitic loads are disabled and the userdefined water heating capacity, energy use, and parasitic loads for the heat pump are used to calculate Recovery Efficiency and Energy Factor.
The simulated test procedure performs six equal draws of approximately 0.041 m3 (10.7 gal) in each of the first six hours of the simulation. Each draw occurs over the first timestep of the hour.
The Recovery Efficiency is calculated when the water heater recovers to the setpoint after the first draw.
RE=m1cp(57.2−14.4)E1
where:
m1 is the water mass of the first draw
cp is the specific heat of water
E1 is the fuel energy consumed until the setpoint is recovered (including parasitics).
Note: When the standards rating for a heat pump water heater is calculated, the fuel energy consumed refers to the total energy consumed by the heat pump compressor, evaporator fan, condenser pump, and parasitic loads. It is assumed that the parasitic loads for a heat pump water heater do not contribute to heating the water (ref. Heat Pump Water Heater).
The Energy Factor is calculated at the end of the 24hour simulation period.
EF=mtotalcp(57.2−14.4)Etotal
where:
mtotal is the total water mass of all six draws
cp is the specific heat of water
Etotal is the total fuel energy consumed over 24 hours (including parasitics).
Under certain input parameters, the rating method will not succeed and a warning message will be generated. Problems occur when inputs do not allow the tank to recover to the setpoint temperature within the test period. This can occur if the maximum heater capacity is undersized, or if the deadband temperature difference is large enough that the first draw of the test does not trigger the heater to come on. In either case, the Recovery Efficiency test will not compute properly because recovery to the setpoint was not achieved.
References[LINK]
10CFR430. Title 10, Code of Federal Regulations, Part 430  Energy Conservation Program for Consumer Products, Appendix E to Subpart B  Uniform Test Procedure for Measuring the Energy Consumption of Water Heaters.
Heat Pump Water Heater[LINK]
Overview[LINK]
The input objects WaterHeater:HeatPump:* provide models for a heat pump water heater (HPWH) that is a compound object consisting of a water heater tank (e.g., WaterHeater:Mixed or WaterHeater:Stratified), a direct expansion (DX) “coil” (i.e., an airtowater DX compression system which includes a water heating coil, air coil, compressor, and water pump), and a fan to provide air flow across the air coil associated with the DX compression system. These objects work together to model a system which heats water using zone air, outdoor air, or a combination of zone and outdoor air as the primary heat source.
There are two types of heat pump water heater models available:
WaterHeater:HeatPump:PumpedCondenser: This model is used to represent a heat pump water heater where water is removed from the tank, pumped through a condenser, and returned to the tank at a higher temperature.
WaterHeater:HeatPump:WrappedCondenser: This model is used for heat pump water heaters that are more typical in the residential building context where the heating coil is wrapped around or submerged in the tank.
Each type of WaterHeater:HeatPump:* object is compatible with certain Coil:WaterHeating:AirToWaterHeatPump:* objects as shown in Table 1.
Additionally the WaterHeater:HeatPump:WrappedCondenser object is only compatible with stratified tanks. Therefore, WaterHeater:HeatPump:* has the tank compatibility as shown in Table 2.
Numerous configurations of tank location, inlet air source, and DX coil compressor location can be modeled. The DX coil compressor may be located in a zone, outdoors, or the ambient temperature surrounding the compressor may be scheduled. The location of the compressor controls the operation of its crankcase heater. The water heater tank location is specified in the water heater tank object and is independent of the compressor location. In addition, the inlet air configuration may be specified in one of several ways. The heat pump water heater air coil and fan assembly may draw its inlet air from the zone and outdoor air using an optional mixer and splitter assembly as shown in the first figure below. When used, the mixer and splitter air streams are controlled by a single inlet air mixer schedule. When the HPWH draws its inlet air solely from a zone, the mixer/splitter assembly is not required as shown in the second figure below. In this case, the inlet air to the evaporator and fan assembly is made up entirely of zone air and the heat pump outlet air is directed back to the zone. The final figure illustrates a HPWH that draws its inlet air solely from outdoors and exhausts its outlet air outdoors as well. Each of these configurations may also be connected to a plant hot water loop (via the water heater tank use nodes).
Schematic of a heat pump water heater using optional mixer/splitter nodes [fig:schematicofaheatpumpwaterheaterusing001]
Schematic of a Heat Pump Water Heater with Inlet Air from a Zone [fig:schematicofaheatpumpwaterheaterwith]
Schematic of a Heat Pump Water Heater with Inlet Air from Outdoors [fig:schematicofaheatpumpwaterheaterwith001]
Note: The water heater tank location shown in the figures above is completely independent of the heat pump water heater’s inlet air configuration and its compressor location. The water heater tank may be located outdoors, in a zone, or the ambient temperature surrounding the tank can be scheduled as described in the mixed water heater section below.
Model Description[LINK]
The heat pump water heater input requires a compressor setpoint temperature schedule and dead band temperature difference, which are independent from the setpoint temperature schedule and dead band temperature difference for the heater (element or burner) associated with the water heater tank. The cutin temperature for the heat pump compressor is defined as the heat pump compressor’s setpoint temperature minus its dead band temperature difference.
THP,cut−in=THP,setpoint−THP,deadband
where:
THP,cut−in is the cutin temperature for the heat pump compressor (∘C)
THP,setpoint is the heat pump compressor setpoint temperature (∘C)
THP,deadband is the heat pump compressor dead band temperature difference (∘C).
In this model, the heat pump water heater’s DX compression system is considered the primary heat source and the water tank’s heater (element or burner) provides supplemental heat as necessary. Therefore, the cutin temperature for the heat pump compressor (setpoint minus dead band temperature difference) is usually higher than the setpoint temperature for the heater (element or burner) in the associated water heater tank object. At times when the water heater tank setpoint temperature is greater than the cutin temperature of the heat pump compressor, the heat pump compressor is disabled and the tank’s heater is used to heat the water.
The simulation starts by first calculating the air conditions entering the air coil (evaporator)/fan assembly based on the inlet air configuration of the heat pump water heater and the presence of the optional mixer/splitter nodes. When the HPWH draws its inlet air from the zone and outdoors using the optional mixer/splitter nodes (i.e., Inlet Air Configuration = Zone and Outdoor Air), the inlet air conditions are calculated as follows:
Frac=GetScheduleValue(MixerInletAirSchedule)
Tinlet=Toutdoor(Frac)+Tzone(1−Frac)
ωinlet=ωoutdoor(Frac)+ωzone(1−Frac)
where:
Frac is the current value of the inlet air mixer schedule (fraction of outdoor air, 01)
Tinlet is the inlet air drybulb temperature to the HPWH evaporator/fan assembly (∘C)
Toutdoor is the outdoor air drybulb temperature (∘C)
Tzone is the zone (exhaust) air drybulb temperature (∘C)
ωinlet is the inlet air humidity ratio to the HPWH evaporator/fan assembly (kg/kg)
ωoutdoor is the outdoor air humidity ratio (kg/kg)
ωzone is the zone (exhaust) air humidity ratio (kg/kg).
When the heat pump water heater draws its inlet air solely from the zone (i.e., Inlet Air Configuration = Zone Air Only), the inlet air conditions to the evaporator/fan assembly are simply set equal to the zone (exhaust) air conditions. If the heat pump water heater draws its inlet air solely from outdoors (i.e., Inlet Air Configuration = Outdoor Air Only), the inlet air conditions to the evaporator/fan assembly are simply set equal to the outdoor air conditions. When the inlet air to the heat pump water heater evaporator and fan assembly is scheduled (i.e., Inlet Air Configuration = Schedule), the inlet air conditions are determined directly from the usersupplied schedules as follows.
Tinlet=GetScheduleValue(InletAirTemperatureSchedule)
RHinlet=GetScheduleValue(InletAirHumiditySchedule)
ωinlet=PsyWFnTdbRhPb(Tinlet,RHinlet,OutBaroPress)
where:
RHinlet is the inlet air relative humidity to heat pump water heater evaporator/fan assembly (01)
PsyWFnTdbRhPb is a psychrometric function returning air humidity ratio given drybulb temperature, relative humidity, and barometric pressure
OutBaroPress is the outdoor barometric pressure (Pa).
For each simulation time step, the heat pump water heating capacity, energy use, and airside/waterside mass flow rates are set to zero and the water heater tank is simulated with the heat pump compressor disabled when any of the following conditions apply:
the HPWH is scheduled off by its availability schedule,
the water heater tank setpoint temperature is greater than or equal to the heat pump compressor cutin temperature,
the inlet air drybulb temperature to the evaporator/fan assembly is less than the Minimum Inlet Air Temperature for Heat Pump Compressor Operation (as specified by the user in the HPWH input object), or
the HPWH setpoint temperature is greater than or equal to the Maximum Temperature Limit (specified in the Water Heater:Mixed object).
Otherwise, simulation of the heat pump water heater is based on its current mode of operation. This mode of operation is either floating (heat pump compressor is off and tank water temperature has not fallen below the heat pump compressor cutin temperature) or heating (tank water temperature dropped below the compressor cutin temperature on a previous time step but was unable to reach the compressor setpoint temperature). Each mode is handled differently and they will be discussed separately.
If the heat pump water heater is using the stratified tank model, then there is more than one value for the tank temperature. The model includes input for where the heat pump controls detect the temperature. The input data in the associated WaterHeater:Stratified includes up to two heights in the tank where the temperature is measured and a weight associated with each. The associated stratified tank nodes are selected based on these heights. When the heat pump model needs to evaluate the tank temperature of a stratified tank, it evaluates the temperature at the tank nodes associated with these locations.
Float Mode[LINK]
When the heat pump water heater tank temperature is floating between the heat pump compressor’s cutin and cutout temperatures at the end of the previous simulation time step, both the heat pump compressor and the water heater tank’s heating element are disabled and a resulting tank temperature is calculated. If the resulting tank temperature is below the heat pump compressor’s cutin temperature, the heat pump compressor partload ratio is estimated using the ratio of the temperature differences shown below. The partload ratio can not be less than zero or greater than one.
PLR=MIN(1.0,MAX(0.0,(THP,cut−in−Ttank,floatTtank,initial−Ttank,float)))
where:
PLR is the partload ratio of the heat pump water heater compressor
Ttank,float is the tank temperature in float mode when heating capacity is set to zero (∘C)
Ttank,initial is the tank temperature at the beginning of the simulation time step (∘C).
Since the pump and fan are assumed to cycle on and off with the heat pump compressor, the average condenser water (for pumped condensers only) and evaporator air mass flow rates for the simulation time step are calculated based on the PLR calculated above:
˙mwater,avg=˙Vwater(ρwater)(PLR)
˙mair,avg=˙Vair(ρair)(PLR)
where:
˙mwater,avg is the average condenser water mass flow rate for the time step (kg/s)
˙Vwater is the condenser water volumetric flow rate, user input (m3/s)
ρwater is the density of condenser inlet water (kg/m3)
˙mair,avg is the average evaporator/fan air mass flow rate for the time step (kg/s)
˙Vair is the evaporator/fan air volumetric flow rate, user input (m3/s)
ρair is the density of evaporator/fan inlet air (kg/m3).
The water tank temperature is then calculated based on heat pump operation at the partload ratio estimated above and with the water tank’s heating element enabled. If the resulting water tank temperature is above the heat pump compressor’s setpoint (cutout) temperature, then the partload ratio is reduced and the water heater tank is simulated again. The process is performed iteratively until the partload ratio of the heat pump compressor achieves the desired setpoint temperature (to the extent possible).
Heating Mode[LINK]
When the HPWH is in heating mode at the end of the previous simulation time step (i.e., the heat pump compressor operated during the previous simulation time step but was unable to achieve the setpoint temperature), both the heat pump compressor and the water heater tank’s heating element are enabled. The partload ratio of the heat pump compressor is set to 1, and the condenser water (for pumped condensers) and evaporator air mass flow rates are set to their maximum flow rates.
˙mwater,avg=˙Vwater(ρwater)
˙mair,avg=˙Vair(ρair)
If the resulting tank temperature is above the heat pump compressor’s setpoint (cutout) temperature, the partload ratio of the heat pump compressor is reduced and the water heater tank is simulated again. The process is performed iteratively until the partload ratio of the heat pump compressor achieves the desired setpoint temperature (to the extent possible).
The airside outlet conditions of the HPWH are calculated through simulation of the fan and DX coil with either a blow through or draw through fan placement (user selectable). If mixer/splitter nodes are used, the HPWH model splits the heat pump outlet air mass flow rate with exhaust air flow equaling the outdoor air flow, and the balance of the outlet air being sent to the zone supply air node (i.e., ensures that the heat pump water heater does not contribute to zone pressurization or depressurization). Calculations of heat pump water heating capacity, energy use, airside performance, and waterside temperature difference are performed in the associated DX Coil object. See the engineering reference section for the Coil:WaterHeating:AirToWaterHeatPump object for details.
Model Outputs[LINK]
After completing the float mode or heating mode calculations and the final partload ratio has been determined, the output (report) variables are calculated as follows:
Heat Pump Water Heater Compressor Part−Load Ratio=PLR
Heat Pump Water Heater On−Cycle Parasitic Electric Power (W)=Pparasitic,on(PLR)
Heat Pump Water Heater On−Cycle Parasitic Electric Consumption (J)=Pparasitic,on(PLR)(3600)tsys
Heat Pump Water Heater Off−Cycle Parasitic Electric Power (W)=Pparasitic,off(1−PLR)
Heat Pump Water Heater Off−Cycle Parasitic Electric Consumption (J)=Pparasitic,off(1−PLR)(3600)(tsys)
where:
Pparasitic,on is the oncycle parasitic electric load, user input (W)
Pparasitic,off is the offcycle parasitic electric load, user input (W)
tsys is the HVAC system simulation time step (hours).
Note: All heat pump water heater output variables, including offcycle ancillary electric power and consumption, equal 0 when the heat pump water heater availability schedule equals 0 (i.e., the heat pump water heater is scheduled OFF).
Stratified Water Thermal Tank[LINK]
The input objects WaterHeater:Stratified and ThermalStorage:ChilledWater:Stratified provide models for a stratified water thermal tank that divides the water tank into multiple nodes of equal volume. This model is used for both the stratified water heater and the stratified chilled water storage tank. The nodes are coupled by vertical conduction effects, internode fluid flow, and temperature inversion mixing. The object simultaneously solves the differential equations governing the energy balances on the nodes using an analytical solution to a simplified representation of the heat balance equation. The system time step is divided into multiple substeps at which control decisions are evaluated that allow the simulation to capture events that occur on a short time scale.
Energy Balance[LINK]
Similar to the wellmixed model, the stratified model solves the same fundamental differential equation governing the energy balance on a mass of water:
mcpdTdt=qnet
where:
m is the mass of water
cp is the specific heat of water
T is the temperature of water
t is the time
qnet is the net heat transfer rate.
The difference for the stratified model is that it must solve the energy balance on n number of nodes simultaneously. Node 1 is at the top of the water tank and node n is at the bottom of the water tank.
mncpdTndt=qnet,n
where:
mn is the mass of water for node n
cp is the specific heat of water
Tn is the temperature of water for node n
t is the time
qnet,n is the net heat transfer rate for node n.
It will be advantageous for the numerical solution to rearrange the nodal differential equation into the form
dTdt=aT+b
The net heat transfer rate qnet is the sum of gains and losses due to multiple heat transfer pathways. Each term is defined as described below and separated into the part that is multiplied by the current node temperature (a term) and everything else (b term).
qnet,n=qheater,n+qoncycpara,n+qoffcycpara,n+qoncycloss,n+qoffcycloss,n+qcond,n+quse,n+qsource,n+qflow,n
where:
qheater,n is the heat added by Heater 1 or Heater 2
qoncycpara,n is the heat added due to oncycle parasitic loads (zero when off)
qoffcycpara,n is the heat added due to offcycle parasitic loads (zero when on)
qoncycloss,n is the heat transfer to/from the ambient environment (zero when off)
qoffcycloss,n is the heat transfer to/from the ambient environment (zero when on)
qcond,n is the heat transfer due to conduction between the node above and below
quse,n is the heat transfer to/from the use side plant connections
qsource,n is the heat transfer to/from the source side plant connections
qflow,n is the heat transfer due to fluid flow from the node above and below
Heater and Parasitic Loads[LINK]
qheater, qoncycpara,n, and qoffcycpara,n are all added to the b coefficient because they do not depend on the current node temperature.
On and Offcycle Losses to Ambient[LINK]
qoncycloss,n and qoffcycloss,n are defined as:
qoncycloss,n=(UAtank+UAadd,n)(Tamb−Tn)
qoffcycloss,n=(UAtank+UAflue)(Tamb−Tn)
where:
UAtank is the loss coefficient to ambient environment for the tank
UAadd,n is the additional node loss coefficient
UAflue is the additional offcycle flue loss coefficient to ambient environment (zero when on)
Tamb is the temperature of ambient environment.
Separating it into a and b terms for oncycle losses:
an=−(UAtank+UAadd,n)bn=(UAtank+UAadd,n)Tamb
And for offcycle losses:
an=−(UAtank+UAflue)bn=(UAtank+UAflue)Tamb
Conduction to Adjacent Nodes[LINK]
qcond,n is defined as:
qcond,n=kAn+1Ln+1(Tn+1−Tn)+kAn−1Ln−1(Tn−1−Tn)
where:
k is the fluid thermal conductivity of water (0.6 W/mK)
An+1 is the shared surface area between node n and node n+1
Ln+1 is the distance between the center of mass of node n and n+1
Tn+1 is the temperature of node n+1
An−1 is the shared surface area between node n and node n1
Ln−1 is the distance between the center of mass of node n and n1
Tn−1 is the temperature of node n1.
Separating into a and b terms yields:
an=−(kAn+1Ln+1+kAn−1Ln−1)bn=(kAn+1Ln+1Tn+1+kAn−1Ln−1Tn−1)Tamb
Use and Sourceside Plant Connections[LINK]
quse,n, and qsource,n are defined as:
quse=εuse˙musecp(Tuse−T)
qsource=εsource˙msourcecp(Tsource−T)
where:
εuse is the heat exchanger effectiveness for the use side plant connections
˙muse is the mass flow rate for the use side plant connections
Tuse is the inlet fluid temperature of the use side plant connections
εsource is the heat exchanger effectiveness for the source side plant connections
˙msource is the mass flow rate for the source side plant connections
Tsource is the inlet fluid temperature of the source side plant connections.
Separating into a and b terms for the source side connection yields:
an=−εsrc˙msrccpbn=εsrc˙msrccpTsrc
And for the use side connection:
an=−εuse˙musecpbn=εuse˙musecpTuse
Internodal Flow[LINK]
qflow,n is defined as:
qflow,n=˙mn+1cp(Tn+1−Tn)+˙mn−1cp(Tn−1−Tn)
where:
˙mn+1 is the mass flow rate from node n+1
˙mn−1 is the mass flow rate from node n1.
Separating into a and b terms:
an=−cp(˙mn+1+˙mn−1)bn=cp(˙mn+1Tn+1+˙mn−1Tn−1)
Inversion Mixing[LINK]
Inversion mixing occurs when the node below is warmer than the node above. The difference in temperatures drives a difference in density that causes the nodes to mix. Usually inversion mixing occurs very rapidly.
At the end of each sub timestep, the algorithm checks for temperature inversions and instantaneously mixes inverted nodes by calculating a weighted average of the node temperatures of the inverted nodes. This is done iteratively up the tank until there are no more temperature inversions.
Use and Source Effectiveness Correction[LINK]
The use and source fluid steam outlet temperatures calculation procedure depends on the values of the effectiveness. If the effectiveness is 1.0, then complete mixing of these fluid steam and the tank water is assumed. In this case the outlet temperatures for the use and source streams will be simply the tank water temperatures at point of the outlet nodes. When the effectiveness is less than 1.0, an indirect heat exchange is assumed between the use or source stream and the water in the stratified thermal storage tank. When the effectiveness is less than 1.0, the use and source outlet temperatures are calculated using Quse and Qsource, and energy balance equations as follows:
Tuse out,n=Tuse,n+quse,n˙musecp
Tsource out,n=Tsource,n−qsource,n˙msourcecp
where:
Tuse out is the outlet fluid temperature of the use side plant connections
Tsource out is the outlet fluid temperature of the source side plant connections.
Numerical Solution[LINK]
To solve the differential equations the nodal heat balance equations are modified into the form:
dTndt=aTn+b
Where a is a constant and b can be a function of either time or the temperature of adjacent nodes. If b is assumed to be constant, the solution of the differential equation is readily solved. Since b is not generally constant a reasonable approximation can be made by assuming b is equal to its average value over the sub timestep.
Solving the differential equation yields the following solution for the temperature of a node at the end of a sub timestep.
Tfinal=(Tinitial+ba)eaΔt−ba
Where b is a function of the average temperature as calculated by
b=b(Tavg)Tavg=(Tinitial−ba)(eaΔt−1)aΔt−ba
The solution is obtained by separating the qnet terms described above into their respective a and b parts, solving for Tfinal and Tavg, recalculating b using the new average temperatures and iterating until the temperatures converge, at which point temperature inversions are resolved and controls decisions are made before moving on to the next sub timestep.
Adaptive Sub Timestep[LINK]
The sub timestep is allowed to vary between 10 seconds and 10 minutes. The length of the sub timestep is determined by the current heat transfer rates in the tank, which are used to predict the amount of time until a control decision (1.3.2.2) will need to be made. The sub timestep is then selected to approach the time of the control decision.
First, the temperature difference required for a heater to turn on or off for each control node is calculated by determining the difference between its setpoint temperature and the current temperature if the heater is on or its cut in temperature and current temperature if the heater is off. The minimum of the temperature differences is selected as the maximum allowable nodal temperature change dTmax. The time until that temperature change occurs is estimated for each node by rearranging [strattankdiffeq] to solve for dt.
dt=dTmaxaT+b
Finally, the minimum of the nodal dt values is used as the sub timestep unless it is outside the allowable bounds or it will extend beyond the end of the timestep. In those cases, the sub timestep is adjusted to fit within the bounds.
Control Logic Evaluation[LINK]
Before each system time step is calculated the following evaluations are made:
Use and source inlet flow rates are applied to the inlet nodes
Internode flow is determined and net flow rates are determined
Before each sub timestep is calculated, the following evaluations are made:
Thermostatic controls for heater 1 and heater 2 are evaluated to determine if the heater elements should turn on or off
Node 1 temperature is compared against the maximum limit to determine if venting is necessary
Adjoining node temperatures are compared to determine if there are any temperature inversions for which the inversion mixing rate should be used.
Source inlet temperatures for the desuperheater are recalculated and applied to the inlet nodes using the heat rate calculated in the system time step loop
The solution continues looping through all substeps until the system time step is completed.
References[LINK]
Duffie, J., and W. Beckman. 1980. Solar Engineering of Thermal Processes. John Wiley & Sons.
Newton, B. 1995. Modeling of Solar Storage Tanks. Master’s Dissertation, University of WisconsinMadison.
Water Heating Sizing[LINK]
Some inputs for water heaters can be autosized using the input object WaterHeater:Sizing. This section describes the sizing calculations for water heaters. There are six general methods for sizing tank volume and heating capacity.
Autosizing Tank Volume[LINK]
The volume a water heater can be sized in the following ways depending on the design method chosen by the user.
Peak Draw. The volume is determined from the loop design flow rate. The water heater is positioned on the supply side of a plant loop. After the plant sizing routines have run, the model obtains the design flow rate for all components on the demand side. The tank volume is then: V=˙Vloop.des∗tdraw
Residential HUDFHA Minimum. The volume is determined from a set of rules defined in Table 3. This is from Chapter 48 of 1999 ASHRAE Handbook HVAC Applications, Americal Society of Heating Refrigeration and Airconditioning Engineeers, Atlanta GA. (also used in the Building America Benchmark).
Per Person. The tank volume is determined by summing the design level of people in the model and multiplying by a userentered volume per person factor.
Per Floor Area. The tank volume is determined by summing the floor area in all the zones in the model and multiplying by a userentered volume per floor area factor.
Per Unit. The tank volume is determined by multiplying a userentered volume per unit and a userentered number of units.
Per Solar Collector Area. The tank volume is determined by summing the collector area in all the hot water solar collectors in the model and multiplying by a userentered volume per collector area factor.
Autosizing Heater Capacity[LINK]
The heater capacity can be sized in the following ways depending on the design method chosen by the user.
qheat=VρCp(Tfinish−Tstart)
where:
Tfinish=57.2∘C
Tstart=14.4∘C
Residential HUDFHA Minimum. The heater capacity is determined from a set of rules defined by the table above. This is from 1999 ASHRAE Handbook HVAC Applications, Americal Society of Heating Refrigeration and Airconditioning Engineeers, Atlanta GA. (also used the Building America Benchmark).
Per Person. The heater capacity is determined by summing the design level of people in the model and using a userentered factor for recovery capacity per person. The heater capacity is then:
qheat=NpeoplefRecoveryPerPerson(Tfinish−Tstart)ρcp3600
qheat=AfloorsfRecoveryPerFloorArea(Tfinish−Tstart)ρCp3600
qheat=NunitsfRecoveryPerUnit(Tfinish−Tstart)ρcp3600
Autosizing Tank Height[LINK]
If the water heater is Stratified, then the geometry is important and the height of the tank can be scaled with changes in volume. For tank shapes of Vertical Cylinder, the user defined height aspect ratio, AR, is used to calculate a tank height, H, using
H=(4 V AR2π)1/3
Autosizing Plant Connection Flow Rates[LINK]
When the water thermal tank is connected to a plant loop, it is convient to autosize the design volume flow rates through the plant connections. When the water thermal tank is connected to the supply side of plant loop and flow rates are autosized, the flow rate is the sum of the flow requests of all the various components on the demand side of that plant loop. When the water thermal tank is connected on the demand side of a plant loop (e.g. as for indirect water heating with a boiler) and flow rates are autosized, the design flow rates are calculated with the following equation:
˙V=−(VtRecover∗3600∗ε)∗Ln(TPlantDesign−TSetpointTPlantDesign−Tstart)
where:
V is the volume of the tank
tRecover is the user parameter for the time it takes for the tank to recover from assumed starting temperature to an assumed setpoint temperature. For water heaters, the starting temperature is 14.4∘C and the final assumed setpoint temperature is 57.2∘C. For chilled water tanks, the starting temperature is 14.4∘C and the final temperature is 9.0∘C.
ε is εuse or εsource
TPlantDesign is the exit temperature specified in the Plant Sizing object
Tsetpoint is the final tank temperature of 57.2∘C for heaters and 9.0∘C for chilled water tanks
Tstart is the initial tank temperature of 14.4∘C.
If the demand side connections are autosized and a water heater’s tank volume is autosized, then the problem cannot be readily solved in EnergyPlus because the demand side connection flows need to be reported earlier in the simulation and the tank volume is not yet available. This situation is resolved by using an interim, nominal tank volume for sizing the connections and the actual volume is calculated later in the simulation.
Documentation content copyright © 19962020 The Board of Trustees of the University of Illinois and the Regents of the University of California through the Ernest Orlando Lawrence Berkeley National Laboratory. All rights reserved. EnergyPlus is a trademark of the US Department of Energy.
This documentation is made available under the EnergyPlus Open Source License v1.0.