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,
low-temperature 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 stand-alone. There are also chilled
water storage tanks that can be used to hold cold water.
The input object WaterHeater:Mixed
provides a model that simulates a well-mixed water tank,
i.e. non-stratified, 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.
The well-mixed 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:
\[\rho V{c_p}\frac{{dT}}{{dt}} =
{q_{net}}\]
where:
\(\rho\) is the
density of water
V is the volume of the tank
c\(_{p}\) is the
specific heat of water
T is the temperature of the tank water
t is the time
q\(_{net}\) 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:
\[m{c_p}\frac{{dT}}{{dt}} =
{q_{net}}\]
The net heat transfer rate q\(_{net}\) is the sum of gains
and losses due to multiple heat transfer pathways.
T\(_{i}\) =
initial temperature of the tank water at time t =
0
However, if b = 0, the solution instead is:
\[T\left( t \right) = at +
{T_i}\]
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.
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 “cut-in” 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 storage-tank 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”
(on-cycle) and when it is “off” (off-cycle). This approach
allows ambient losses and parasitic loads to be divided into
on-cycle and off-cycle 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\(^{\circ}\)C) at which point the
heater cycles on and reheats the tank back to the setpoint
(60\(^{\circ}\)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 piece-wise 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.
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 “cut-out” temperature and the setpoint plus
deadband is the “cut-in” temperature. If the tank temperature
( or tank sensing node for stratified tanks) is above the
“cut-in” temperature, then flow is requested. If temperatures
are below the “cut-out” 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.
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 24-hour simulation of the water heater is
performed internally using the specified test conditions:
Setpoint Temperature = 57.2\(^{\circ}\)C (135\(^{\circ}\)F)
Ambient Temperature = 19.7\(^{\circ}\)C (67.5\(^{\circ}\)F)
Ambient Relative Humidity = 50% (used for heat pump
water heaters)
Inlet Temperature (Water Mains) = 14.4\(^{\circ}\)C (58\(^{\circ}\)F)
For heat pump water heaters, the water heater tank’s
heating element and water heater tank parasitic loads are
disabled and the user-defined 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 m\(^{3}\)
(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.
\(E_{1}\) 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 24-hour
simulation period.
\(m_{total}\) is the total
water mass of all six draws
\(c_{p}\) is the specific
heat of water
\(E_{total}\) 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.
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 air-to-water 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
WaterHeater:HeatPump:*
WaterHeater:*
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:*
WaterHeater:*
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).
Schematic of a heat pump water
heater using optional mixer/splitter nodesSchematic of a Heat Pump Water
Heater with Inlet Air from a ZoneSchematic of a Heat Pump Water
Heater with Inlet Air from Outdoors
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.
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 cut-in temperature for the heat pump
compressor is defined as the heat pump compressor’s setpoint
temperature minus its dead band temperature difference.
\({T_{HP,\,cut - in}}\) is
the cut-in temperature for the heat pump compressor (\(^{\circ}\)C)
\({T_{HP,set\,point}}\) is
the heat pump compressor setpoint temperature (\(^{\circ}\)C)
\({T_{HP,dead\,band}}\) is
the heat pump compressor dead band temperature difference
(\(^{\circ}\)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 cut-in 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 cut-in 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\) is the current
value of the inlet air mixer schedule (fraction of outdoor
air, 0-1)
\({T_{inlet}}\) is the
inlet air dry-bulb temperature to the HPWH evaporator/fan
assembly (\(^{\circ}\)C)
\({T_{outdoor}}\) is the
outdoor air dry-bulb temperature (\(^{\circ}\)C)
\({T_{zone}}\) is the zone
(exhaust) air dry-bulb temperature (\(^{\circ}\)C)
\({\omega_{inlet}}\) is
the inlet air humidity ratio to the HPWH evaporator/fan
assembly (kg/kg)
\({\omega_{outdoor}}\) is
the outdoor air humidity ratio (kg/kg)
\({\omega_{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 user-supplied schedules as follows.
\(R{H_{inlet}}\) is the
inlet air relative humidity to heat pump water heater
evaporator/fan assembly (0-1)
\(PsyWFnTdbRhPb\) is a
psychrometric function returning air humidity ratio given
dry-bulb 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 air-side/water-side 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 cut-in
temperature,
the inlet air dry-bulb 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
cut-in temperature) or heating (tank water temperature dropped
below the compressor cut-in 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 cut-in and cut-out
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 cut-in temperature, the heat pump
compressor part-load ratio is estimated using the ratio of the
temperature differences shown below. The part-load ratio can
not be less than zero or greater than one.
\(PLR\) is the part-load
ratio of the heat pump water heater compressor
\({T_{tank,float}}\) is
the tank temperature in float mode when heating capacity is
set to zero (\(^{\circ}\)C)
\({T_{tank,initial}}\) is
the tank temperature at the beginning of the simulation time
step (\(^{\circ}\)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:
\({\dot m_{water,avg}}\)
is the average condenser water mass flow rate for the time
step (kg/s)
\({\dot V_{water}}\) is
the condenser water volumetric flow rate, user input (m\(^{3}\)/s)
\({\rho_{water}}\) is the
density of condenser inlet water (kg/m\(^{3}\))
\({\dot m_{air,avg}}\) is
the average evaporator/fan air mass flow rate for the time
step (kg/s)
\({\dot V_{air}}\) is the
evaporator/fan air volumetric flow rate, user input (m\(^{3}\)/s)
\({\rho_{air}}\) is the
density of evaporator/fan inlet air (kg/m\(^{3}\)).
The water tank temperature is then calculated based on heat
pump operation at the part-load 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 (cut-out) temperature, then the part-load ratio is
reduced and the water heater tank is simulated again. The
process is performed iteratively until the part-load 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 part-load 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.
If the resulting tank temperature is above the heat pump
compressor’s setpoint (cut-out) temperature, the part-load
ratio of the heat pump compressor is reduced and the water
heater tank is simulated again. The process is performed
iteratively until the part-load ratio of the heat pump
compressor achieves the desired setpoint temperature (to the
extent possible).
The air-side 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, air-side performance, and water-side
temperature difference are performed in the associated DX Coil
object. See the engineering reference section for the
Coil:WaterHeating:AirToWaterHeatPump object for details.
After completing the float mode or heating mode
calculations and the final part-load ratio has been
determined, the output (report) variables are calculated as
follows:
\({P_{parasitic,on}}\) is
the on-cycle parasitic electric load, user input (W)
\({P_{parasitic,off}}\) is
the off-cycle parasitic electric load, user input (W)
\({t_{sys}}\) is the HVAC
system simulation time step (hours).
Note: All heat pump water heater output variables,
including off-cycle 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).
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.
Similar to the well-mixed model, the stratified model
solves the same fundamental differential equation governing
the energy balance on a mass of water:
\[m{c_p}\frac{{dT}}{{dt}} =
{q_{net}}\]
where:
m is the mass of water
c\(_{p}\) is the
specific heat of water
T is the temperature of water
t is the time
q\(_{net}\) 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.
\[{m_n}{c_p}\frac{{d{T_n}}}{{dt}} =
{q_{net,n}}\]
where:
m\(_{n}\) is the
mass of water for node n
c\(_{p}\) is the
specific heat of water
T\(_{n}\) is the
temperature of water for node n
t is the time
q\(_{net,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
\[\frac{d{T}}{dt} = a T +
b\]
The net heat transfer rate q\(_{net}\) 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).
\(q_{heater}\), \(q_{oncycpara,n}\), and \(q_{offcycpara,n}\) are all added
to the \(b\) coefficient
because they do not depend on the current node
temperature.
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.
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 Q\(_{use}\) and Q\(_{source}\), and energy
balance equations as follows:
To solve the differential equations the nodal heat balance
equations are modified into the form:
\[\label{strat-tank-diffeq}
\frac{d{T_n}}{dt} = a T_n + 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.
The solution is obtained by separating the \(q_{net}\) terms described above
into their respective \(a\)
and \(b\) parts, solving for
\(T_{final}\) and \(T_{avg}\), 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.
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 \(dT_{max}\). The time until that
temperature change occurs is estimated for each node by
rearranging [strat-tank-diffeq] to
solve for \(dt\).
\[dt = \frac{dT_{max}}{aT +
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.
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.
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.
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 = {\dot
V_{loop.des}}*{t_{draw}}\)
Residential HUD-FHA Minimum. The volume is determined
from a set of rules defined in Table [table:residential-hud-fha-minimum].
This is from Chapter 48 of 1999 ASHRAE Handbook HVAC
Applications, Americal Society of Heating Refrigeration and
Air-conditioning 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
user-entered 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 user-entered volume per floor area
factor.
Per Unit. The tank volume is determined by multiplying
a user-entered volume per unit and a user-entered 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 user-entered
volume per collector area factor.
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:
Residential HUD-FHA 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 Air-conditioning
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
user-entered factor for recovery capacity per person. The
heater capacity is then:
Per Floor Area. The heater capacity is determined by
summing the floor area in all the zones in the model and using
a user-entered factor for recovery capacity per floor area.
The heater capacity is then:
Per Unit. The heater capacity is determined from a
user-entered Recovery Capacity per unit and a user-entered
number of units. The heater capacity is then:
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
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:
\({t_{Recover}}\) 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\(^{\circ}\)C and the
final assumed setpoint temperature is 57.2\(^{\circ}\)C. For chilled water
tanks, the starting temperature is 14.4\(^{\circ}\)C and the final
temperature is 9.0\(^{\circ}\)C.
\(\varepsilon\) is \({\varepsilon_{use}}\) or \({\varepsilon_{source}}\)
\({T_{PlantDesign}}\) is
the exit temperature specified in the Plant Sizing object
\({T_{setpoint}}\) is the
final tank temperature of 57.2\(^{\circ}\)C for heaters and
9.0\(^{\circ}\)C for chilled
water tanks
\({T_{start}}\) is the
initial tank temperature of 14.4\(^{\circ}\)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, low-temperature 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 stand-alone. 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 well-mixed water tank, i.e. non-stratified, 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 well-mixed 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:
\[\rho V{c_p}\frac{{dT}}{{dt}} = {q_{net}}\]
where:
\(\rho\) is the density of water
V is the volume of the tank
c\(_{p}\) is the specific heat of water
T is the temperature of the tank water
t is the time
q\(_{net}\) 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:
\[m{c_p}\frac{{dT}}{{dt}} = {q_{net}}\]
The net heat transfer rate q\(_{net}\) is the sum of gains and losses due to multiple heat transfer pathways.
\[{q_{net}} = {q_{heater}} + {q_{oncycpara}} + {q_{offcycpara}} + {q_{oncycloss}} + {q_{offcycloss}} + {q_{use}} + {q_{source}}\]
where:
\(q_{heater}\) is the heat added by the heating element or burner
\(q_{oncycpara}\) is the heat added due to on-cycle parasitic loads (zero when off)
\(q_{offcycpara}\) is the heat added due to off-cycle parasitic loads (zero when on)
\(q_{oncycloss}\) is the heat transfer to/from the ambient environment (zero when off)
\(q_{offcycloss}\) is the heat transfer to/from the ambient environment (zero when on)
\(q_{use}\) is the heat transfer to/from the use side plant connections
\(q_{source}\) is the heat transfer to/from the source side plant connections
\(q_{oncycloss}\) and \(q_{offcycloss}\) are defined as:
\[{q_{oncycloss}} = U{A_{oncyc}}\left( {{T_{amb}} - T} \right)\]
\[{q_{offcycloss}} = U{A_{offcyc}}\left( {{T_{amb}} - T} \right)\]
where:
\(UA_{oncyc}\) is the on-cycle loss coefficient to ambient environment (zero when off)
\(UA_{offcyc}\) is the off-cycle loss coefficient to ambient environment (zero when on)
\(T_{amb}\) is the temperature of ambient environment
\(q_{use}\) and \(q_{source}\) are defined as:
\[{q_{use}} = {\varepsilon_{use}}{\dot m_{use}}{c_p}\left( {{T_{use}} - T} \right)\]
\[{q_{source}} = {\varepsilon_{source}}{\dot m_{source}}{c_p}\left( {{T_{source}} - T} \right)\]
where:
\({\varepsilon_{use}}\) is the heat exchanger effectiveness for the use side plant connections
\({\dot m_{use}}\) is the mass flow rate for the use side plant connections
\(T_{use}\) is the inlet fluid temperature of the use side plant connections
\({\varepsilon_{source}}\) is the heat exchanger effectiveness for the source side plant connections
\({\dot m_{source}}\) is the mass flow rate for the source side plant connections
\(T_{source}\) is the inlet fluid temperature of the use side plant connections.
Incorporating all of these equations into the original differential equation:
\[\begin{array}{rl} mC_p\frac{dT}{dt} =& q_{heater} + q_{oncyc} + q_{offcyc} + UA_{oncyc} \left( T_{amb} - T \right) + UA_{offcyc} \left( T_{amb} - T \right) \\ &+ \varepsilon_{use}\dot{m}_{use}C_p \left( T_{use} - T \right) + \varepsilon_{source}\dot{m}_{source}C_p \left( T_{source} - T \right) \end{array}\]
Associating terms not dependent on temperature T and terms dependent on temperature T yields:
\[\begin{array}{rl} \frac{dT}{dt} =& \left[ \frac{1}{mC_p}\left( \begin{array}{c} q_{heater}+q_{oncyc}+q_{offcyc}+UA_{oncyc}T_{amb}+UA_{offcyc}T_{amb} \\ + \varepsilon_{use}\dot{m}_{use}C_pT_{use} + \varepsilon_{source}\dot{m}_{source}C_pT_{source} \end{array} \right) \right] \\ &+ \left[ \frac{-1}{mC_p}\left( UA_{oncyc} + UA_{offcyc}+\varepsilon_{use}\dot{m}_{use}C_p+\varepsilon_{source}\dot{m}_{source}C_p \right) \right]T \end{array}\]
The differential equation now has the form:
\[\frac{{dT}}{{dt}} = a + bT\]
where:
\[a = \frac{1}{{m{c_p}}}\left( \begin{array}{l}{q_{heater}} + {q_{oncyc}} + {q_{offcyc}} + U{A_{oncyc}}{T_{amb}} + U{A_{offcyc}}{T_{amb}}\\ + {\varepsilon_{use}}{{\dot m}_{use}}{c_p}{T_{use}} + {\varepsilon_{source}}{{\dot m}_{source}}{c_p}{T_{source}}\end{array} \right)\]
\[b = \frac{{ - 1}}{{m{c_p}}}\left( {U{A_{oncyc}} + U{A_{offcyc}} + {\varepsilon_{use}}{{\dot m}_{use}}{c_p} + {\varepsilon_{source}}{{\dot m}_{source}}{c_p}} \right)\]
The solution to the differential equation can be written in terms of a and b as:
\[T\left( t \right) = \left( {\frac{a}{b} + {T_i}} \right){e^{bt}} - \frac{a}{b}\]
where
T(t) = temperature of the tank water at time t
T\(_{i}\) = initial temperature of the tank water at time t = 0
However, if b = 0, the solution instead is:
\[T\left( t \right) = at + {T_i}\]
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 = \frac{1}{b}\ln \left( {\frac{{{\raise0.7ex\hbox{a} \!\mathord{\left/ {\vphantom {a b}}\right.}\!\lower0.7ex\hbox{b}} + {T_f}}}{{{\raise0.7ex\hbox{a} \!\mathord{\left/ {\vphantom {a b}}\right.}\!\lower0.7ex\hbox{b}} + {T_i}}}} \right)\]
or, if b = 0:
\[t = \frac{{{T_f} - {T_i}}}{a}\]
where \(T_{f}\) is the final temperature of the tank water at time t.
In the special case where b = 0 and a = 0, and T\(_{f}\) \(\neq\) T\(_{i}\), 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 “cut-in” 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 storage-tank 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” (on-cycle) and when it is “off” (off-cycle). This approach allows ambient losses and parasitic loads to be divided into on-cycle and off-cycle 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\(^{\circ}\)C) at which point the heater cycles on and reheats the tank back to the setpoint (60\(^{\circ}\)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 piece-wise 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 “cut-out” temperature and the setpoint plus deadband is the “cut-in” temperature. If the tank temperature ( or tank sensing node for stratified tanks) is above the “cut-in” temperature, then flow is requested. If temperatures are below the “cut-out” 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 24-hour simulation of the water heater is performed internally using the specified test conditions:
Setpoint Temperature = 57.2\(^{\circ}\)C (135\(^{\circ}\)F)
Ambient Temperature = 19.7\(^{\circ}\)C (67.5\(^{\circ}\)F)
Ambient Relative Humidity = 50% (used for heat pump water heaters)
Inlet Temperature (Water Mains) = 14.4\(^{\circ}\)C (58\(^{\circ}\)F)
For heat pump water heaters, the water heater tank’s heating element and water heater tank parasitic loads are disabled and the user-defined 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 m\(^{3}\) (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 = \frac{{{m_1}{c_p}\left( {57.2 - 14.4} \right)}}{{{E_1}}}\]
where:
\(m_{1}\) is the water mass of the first draw
\(c_{p}\) is the specific heat of water
\(E_{1}\) 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 24-hour simulation period.
\[EF = \frac{{{m_{total}}{c_p}\left( {57.2 - 14.4} \right)}}{{{E_{total}}}}\]
where:
\(m_{total}\) is the total water mass of all six draws
\(c_{p}\) is the specific heat of water
\(E_{total}\) 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 air-to-water 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).
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 cut-in temperature for the heat pump compressor is defined as the heat pump compressor’s setpoint temperature minus its dead band temperature difference.
\[{T_{HP,\,cut - in}} = {T_{HP,set\,point}} - {T_{HP,dead\,band}}\]
where:
\({T_{HP,\,cut - in}}\) is the cut-in temperature for the heat pump compressor (\(^{\circ}\)C)
\({T_{HP,set\,point}}\) is the heat pump compressor setpoint temperature (\(^{\circ}\)C)
\({T_{HP,dead\,band}}\) is the heat pump compressor dead band temperature difference (\(^{\circ}\)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 cut-in 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 cut-in 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)\]
\[{T_{inlet}} = {T_{outdoor}}\left( {Frac} \right) + {T_{zone}}\left( {1 - Frac} \right)\]
\[{\omega_{inlet}} = {\omega_{outdoor}}\left( {Frac} \right) + {\omega_{zone}}\left( {1 - Frac} \right)\]
where:
\(Frac\) is the current value of the inlet air mixer schedule (fraction of outdoor air, 0-1)
\({T_{inlet}}\) is the inlet air dry-bulb temperature to the HPWH evaporator/fan assembly (\(^{\circ}\)C)
\({T_{outdoor}}\) is the outdoor air dry-bulb temperature (\(^{\circ}\)C)
\({T_{zone}}\) is the zone (exhaust) air dry-bulb temperature (\(^{\circ}\)C)
\({\omega_{inlet}}\) is the inlet air humidity ratio to the HPWH evaporator/fan assembly (kg/kg)
\({\omega_{outdoor}}\) is the outdoor air humidity ratio (kg/kg)
\({\omega_{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 user-supplied schedules as follows.
\[{T_{inlet}} = GetScheduleValue(InletAirTemperatureSchedule)\]
\[{RH_{inlet}} = GetScheduleValue(InletAirHumiditySchedule)\]
\[{\omega_{inlet}} = PsyWFnTdbRhPb({T_{inlet}},R{H_{inlet}},OutBaroPress)\]
where:
\(R{H_{inlet}}\) is the inlet air relative humidity to heat pump water heater evaporator/fan assembly (0-1)
\(PsyWFnTdbRhPb\) is a psychrometric function returning air humidity ratio given dry-bulb 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 air-side/water-side 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 cut-in temperature,
the inlet air dry-bulb 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 cut-in temperature) or heating (tank water temperature dropped below the compressor cut-in 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 cut-in and cut-out 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 cut-in temperature, the heat pump compressor part-load ratio is estimated using the ratio of the temperature differences shown below. The part-load ratio can not be less than zero or greater than one.
\[PLR = MIN\left( {1.0,\,\,MAX\left( {0.0,\,\,\left( {\frac{{{T_{HP,\,cut - in}} - {T_{tank,float}}}}{{{T_{tank,initial}} - {T_{tank,float}}}}} \right)} \right)} \right)\]
where:
\(PLR\) is the part-load ratio of the heat pump water heater compressor
\({T_{tank,float}}\) is the tank temperature in float mode when heating capacity is set to zero (\(^{\circ}\)C)
\({T_{tank,initial}}\) is the tank temperature at the beginning of the simulation time step (\(^{\circ}\)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:
\[{\dot m_{water,avg}} = {\dot V_{water}}\left( {{\rho_{water}}} \right)\left( {PLR} \right)\]
\[\dot m_{air,avg} = {\dot V_{air}}\left( {{\rho_{air}}} \right)\left( {PLR} \right)\]
where:
\({\dot m_{water,avg}}\) is the average condenser water mass flow rate for the time step (kg/s)
\({\dot V_{water}}\) is the condenser water volumetric flow rate, user input (m\(^{3}\)/s)
\({\rho_{water}}\) is the density of condenser inlet water (kg/m\(^{3}\))
\({\dot m_{air,avg}}\) is the average evaporator/fan air mass flow rate for the time step (kg/s)
\({\dot V_{air}}\) is the evaporator/fan air volumetric flow rate, user input (m\(^{3}\)/s)
\({\rho_{air}}\) is the density of evaporator/fan inlet air (kg/m\(^{3}\)).
The water tank temperature is then calculated based on heat pump operation at the part-load 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 (cut-out) temperature, then the part-load ratio is reduced and the water heater tank is simulated again. The process is performed iteratively until the part-load 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 part-load 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.
\[{\dot m_{water,avg}} = {\dot V_{water}}\left( {{\rho_{water}}} \right)\]
\[{\dot m_{air,avg}} = {\dot V_{air}}\left( {\rho air} \right)\]
If the resulting tank temperature is above the heat pump compressor’s setpoint (cut-out) temperature, the part-load ratio of the heat pump compressor is reduced and the water heater tank is simulated again. The process is performed iteratively until the part-load ratio of the heat pump compressor achieves the desired setpoint temperature (to the extent possible).
The air-side 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, air-side performance, and water-side 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 part-load ratio has been determined, the output (report) variables are calculated as follows:
\[Heat~Pump~Water~Heater~Compressor~Part{\rm{ - }}Load~Ratio = PLR\]
\[Heat~Pump~Water~Heater~On{\rm{ - }}Cycle~Parasitic~Electric~Power~(W) = {P_{parasitic,on}}\left( {PLR} \right)\]
\[\begin{split} Heat~Pump~Water~Heater~On{\rm{ - }}Cycle~Parasitic~Electric~Consumption~(J) = \\{P_{parasitic,on}}\left( {PLR} \right)\left( {3600} \right){t_{sys}} \end{split}\]
\[\begin{split} Heat~Pump~Water~Heater~Off{\rm{ - }}Cycle~Parasitic~Electric~Power~(W) = \\{P_{parasitic,off}}\left( {1 - PLR} \right) \end{split}\]
\[\begin{split} Heat~Pump~Water~Heater~Off{\rm{ - }}Cycle~Parasitic~Electric~Consumption~(J) = \\{P_{parasitic,off}}\left( {1 - PLR} \right)\left( {3600} \right)\left( {{t_{sys}}} \right) \end{split}\]
where:
\({P_{parasitic,on}}\) is the on-cycle parasitic electric load, user input (W)
\({P_{parasitic,off}}\) is the off-cycle parasitic electric load, user input (W)
\({t_{sys}}\) is the HVAC system simulation time step (hours).
Note: All heat pump water heater output variables, including off-cycle 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 well-mixed model, the stratified model solves the same fundamental differential equation governing the energy balance on a mass of water:
\[m{c_p}\frac{{dT}}{{dt}} = {q_{net}}\]
where:
m is the mass of water
c\(_{p}\) is the specific heat of water
T is the temperature of water
t is the time
q\(_{net}\) 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.
\[{m_n}{c_p}\frac{{d{T_n}}}{{dt}} = {q_{net,n}}\]
where:
m\(_{n}\) is the mass of water for node n
c\(_{p}\) is the specific heat of water
T\(_{n}\) is the temperature of water for node n
t is the time
q\(_{net,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
\[\frac{d{T}}{dt} = a T + b\]
The net heat transfer rate q\(_{net}\) 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).
\[\begin{array}{ll} q_{net,n} &= q_{heater,n} + q_{oncycpara,n} + q_{offcycpara,n} + q_{oncycloss,n} + q_{offcycloss,n} \\ &+ q_{cond,n} + q_{use,n} + q_{source,n} + q_{flow,n} \end{array}\]
where:
q\(_{heater,n}\) is the heat added by Heater 1 or Heater 2
q\(_{oncycpara,n}\) is the heat added due to on-cycle parasitic loads (zero when off)
q\(_{offcycpara,n}\) is the heat added due to off-cycle parasitic loads (zero when on)
q\(_{oncycloss,n}\) is the heat transfer to/from the ambient environment (zero when off)
q\(_{offcycloss,n}\) is the heat transfer to/from the ambient environment (zero when on)
q\(_{cond,n}\) is the heat transfer due to conduction between the node above and below
q\(_{use,n}\) is the heat transfer to/from the use side plant connections
q\(_{source,n}\) is the heat transfer to/from the source side plant connections
q\(_{flow,n}\) is the heat transfer due to fluid flow from the node above and below
Heater and Parasitic Loads[LINK]
\(q_{heater}\), \(q_{oncycpara,n}\), and \(q_{offcycpara,n}\) are all added to the \(b\) coefficient because they do not depend on the current node temperature.
On- and Off-cycle Losses to Ambient[LINK]
q\(_{oncycloss,n}\) and q\(_{offcycloss,n}\) are defined as:
\[{q_{oncycloss,n}} = ({UA_{tank}} + {UA_{add,n}})({T_{amb}} - {T_n})\]
\[{q_{offcycloss,n}} = ({UA_{tank} + UA_{flue}})({T_{amb}} - {T_n})\]
where:
UA\(_{tank}\) is the loss coefficient to ambient environment for the tank
UA\(_{add,n}\) is the additional node loss coefficient
UA\(_{flue}\) is the additional off-cycle flue loss coefficient to ambient environment (zero when on)
T\(_{amb}\) is the temperature of ambient environment.
Separating it into \(a\) and \(b\) terms for on-cycle losses:
\[\begin{array}{rl} a_n &= - (UA_{tank} + UA_{add,n}) \\ b_n &= (UA_{tank} + UA_{add,n}) T_{amb} \end{array}\]
And for off-cycle losses:
\[\begin{array}{rl} a_n &= - (UA_{tank} + UA_{flue}) \\ b_n &= (UA_{tank} + UA_{flue}) T_{amb} \end{array}\]
Conduction to Adjacent Nodes[LINK]
q\(_{cond,n}\) is defined as:
\[{q_{cond,n}} = \frac{{k{A_{n + 1}}}}{{{L_{n + 1}}}}({T_{n + 1}} - {T_n}) + \frac{{k{A_{n - 1}}}}{{{L_{n - 1}}}}({T_{n - 1}} - {T_n})\]
where:
k is the fluid thermal conductivity of water (0.6 W/m-K)
A\(_{n+1}\) is the shared surface area between node n and node n+1
L\(_{n+1}\) is the distance between the center of mass of node n and n+1
T\(_{n+1}\) is the temperature of node n+1
A\(_{n-1}\) is the shared surface area between node n and node n-1
L\(_{n-1}\) is the distance between the center of mass of node n and n-1
T\(_{n-1}\) is the temperature of node n-1.
Separating into \(a\) and \(b\) terms yields:
\[\begin{array}{rl} a_n &= - \left(\frac{kA_{n+1}}{L_{n+1}} + \frac{kA_{n-1}}{L_{n-1}}\right) \\ b_n &= \frac{kA_{n+1}}{L_{n+1}} T_{n+1} + \frac{kA_{n-1}}{L_{n-1}} T_{n-1} \end{array}\]
Use- and Source-side Plant Connections[LINK]
q\(_{use,n}\), and q\(_{source,n}\) are defined as:
\[{q_{use}} = {\varepsilon_{use}}{\dot m_{use}}{c_p}\left( {{T_{use}} - T} \right)\]
\[{q_{source}} = {\varepsilon_{source}}{\dot m_{source}}{c_p}\left( {{T_{source}} - T} \right)\]
where:
\({\varepsilon_{use}}\) is the heat exchanger effectiveness for the use side plant connections
\({\dot m_{use}}\) is the mass flow rate for the use side plant connections
\(T_{use}\) is the inlet fluid temperature of the use side plant connections
\({\varepsilon_{source}}\) is the heat exchanger effectiveness for the source side plant connections
\({\dot m_{source}}\) is the mass flow rate for the source side plant connections
\(T_{source}\) is the inlet fluid temperature of the source side plant connections.
Separating into \(a\) and \(b\) terms for the source side connection yields:
\[\begin{array}{rl} a_n &= - \varepsilon_{source} \dot{m}_{source} c_p \\ b_n &= \varepsilon_{source} \dot{m}_{source} c_p T_{source} \end{array}\]
And for the use side connection:
\[\begin{array}{rl} a_n &= - \varepsilon_{use} \dot{m}_{use} c_p \\ b_n &= \varepsilon_{use} \dot{m}_{use} c_p T_{use} \end{array}\]
Internodal Flow[LINK]
\(q_{flow,n}\) is defined as:
\[{q_{flow,n}} = {\dot m_{n + 1}}{c_p}({T_{n + 1}} - {T_n}) + {\dot m_{n - 1}}{c_p}({T_{n - 1}} - {T_n})\]
where:
\({\dot m_{n + 1}}\) is the mass flow rate from node n+1
\({\dot m_{n - 1}}\) is the mass flow rate from node n-1.
Separating into \(a\) and \(b\) terms:
\[\begin{array}{rl} a_n &= - c_p (\dot m_{n+1} + \dot m_{n-1}) \\ b_n &= c_p (\dot m_{n+1} T_{n+1} + \dot m_{n-1} T_{n-1}) \end{array}\]
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 Q\(_{use}\) and Q\(_{source}\), and energy balance equations as follows:
\[{T_{use~out,n}} = {T_{use,n}} + \frac{{{q_{use,n}}}}{{{{\dot m}_{use}}{c_p}}}\]
\[{T_{source~out,n}} = {T_{source,n}} - \frac{{{q_{source,n}}}}{{{{\dot m}_{source}}{c_p}}}\]
where:
\(T_{use~out}\) is the outlet fluid temperature of the use side plant connections
\(T_{source~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:
\[\label{strat-tank-diffeq} \frac{d{T_n}}{dt} = a T_n + 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.
\[T_{final} = \left( T_{initial} + \frac{b}{a} \right) e ^ {a \Delta t} - \frac{b}{a}\]
Where \(b\) is a function of the average temperature as calculated by
\[\begin{array}{rl} b &= b(T_{avg}) \\ T_{avg} &= \frac{(T_{initial} - \frac{b}{a}) (e ^ {a \Delta t} - 1)}{a \Delta t} - \frac{b}{a} \end{array}\]
The solution is obtained by separating the \(q_{net}\) terms described above into their respective \(a\) and \(b\) parts, solving for \(T_{final}\) and \(T_{avg}\), 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 \(dT_{max}\). The time until that temperature change occurs is estimated for each node by rearranging [strat-tank-diffeq] to solve for \(dt\).
\[dt = \frac{dT_{max}}{aT + 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 Wisconsin-Madison.
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 = {\dot V_{loop.des}}*{t_{draw}}\)
Residential HUD-FHA Minimum. The volume is determined from a set of rules defined in Table [table:residential-hud-fha-minimum]. This is from Chapter 48 of 1999 ASHRAE Handbook HVAC Applications, Americal Society of Heating Refrigeration and Air-conditioning Engineeers, Atlanta GA. (also used in the Building America Benchmark).
p0.8inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35inp0.35in
# Bedrooms & 1 & 2 & 2 & 2 & 3 & 3 & 3 & 4 & 4 & 4 & 5 & 6
# Bathrooms & All & \(\le 1.5\) & 2-2.5 & \(\ge 3\) & \(\le 1.5\) & 2-2.5 & \(\ge 3\) & \(\le 1.5\) & 2-2.5 & \(\ge 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 user-entered 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 user-entered volume per floor area factor.
Per Unit. The tank volume is determined by multiplying a user-entered volume per unit and a user-entered 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 user-entered 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.
\[q_{heat} = V\rho C_p \left( T_{finish} - T_{start} \right)\]
where:
\[{T_{finish}} = 57.2^{\circ}C\]
\[{T_{start}} = 14.4^{\circ}C\]
Residential HUD-FHA 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 Air-conditioning 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 user-entered factor for recovery capacity per person. The heater capacity is then:
\[{q_{heat}} = \frac{{{N_{people}}{f_{RecoveryPerPerson}}({T_{finish}} - {T_{start}}) \rho {c_p}}}{{3600}}\]
\[q_{heat} = \frac{A_{floors}f_{RecoveryPerFloorArea}\left( T_{finish} - T_{start} \right)\rho C_p}{3600}\]
\[{q_{heat}} = \frac{{{N_{units}}{f_{RecoveryPerUnit}}({T_{finish}} - {T_{start}})\rho {c_p}}}{{3600}}\]
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 = {\left( {\frac{{4~V~A{R^2}}}{\pi }} \right)^{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:
\[\dot V = - \left( \frac{V}{t_{Recover} * 3600 * \varepsilon } \right) * Ln\left( \frac{T_{PlantDesign} - T_{Setpoint}}{T_{PlantDesign} - T_{start}} \right)\]
where:
V is the volume of the tank
\({t_{Recover}}\) 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\(^{\circ}\)C and the final assumed setpoint temperature is 57.2\(^{\circ}\)C. For chilled water tanks, the starting temperature is 14.4\(^{\circ}\)C and the final temperature is 9.0\(^{\circ}\)C.
\(\varepsilon\) is \({\varepsilon_{use}}\) or \({\varepsilon_{source}}\)
\({T_{PlantDesign}}\) is the exit temperature specified in the Plant Sizing object
\({T_{setpoint}}\) is the final tank temperature of 57.2\(^{\circ}\)C for heaters and 9.0\(^{\circ}\)C for chilled water tanks
\({T_{start}}\) is the initial tank temperature of 14.4\(^{\circ}\)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 © 1996-2026 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.