# Ice Thermal Storage[LINK]

## Simple Ice Storage Model[LINK]

This model (object name ThermalStorage:Ice:Simple) simulates the performance of an ice storage tank. The model is based on an integrated chiller and storage tank model developed for a special optimization project (Henze and Krarti 2002). This implementation removed the integrated chiller and allows the tank to be charged by any chiller configuration in an EnergyPlus plant loop..

This thermal storage model is based on a simple simulation of an ice storage tank with a fixed capacity. The tank is charged, or frozen, in an ice-on-coil configuration where ice builds up on the outside of the tubes carrying the brine or glycol solution from the chiller. There are two discharge (melt) options, internal or external. Internal melt uses the same fluid tubes for charging and discharging. External melt uses a separate fluid path for discharge such that the outer layers of ice melt first. The ice storage model includes an implied 3-way valve to control the amount if charge/discharge based on the incoming water temperature and the outlet node setpoint temperature. The tank is controlled using the PlantEquipmentOperation:ComponentSetpoint plant operation scheme, and requires that a setpoint be placed by a setpoint manager on the ice storage Plant Outlet Node. The model currently does not calculate any tank losses.

### Model Description[LINK]

#### Initialization[LINK]

The storage tank is assumed to be fully charged (full of ice) at the beginning of each environment. The tank is then allowed to charge and discharge during the warmup days of the environment.

The ice storage module is a passive component and will accept any flow rate placed on the inlet node. The load on the ice storage tank is determined by the inlet node flow rate, the inlet node temperature, and the outlet node setpoint temperature. A positive load indicates a request for cooling and the tank discharges if possible. A negative load indicates a request for charging the tank if possible. A zero load indicates the tank is dormant in which case all flow bypasses the tank and the outlet node temperature is set to the inlet node temperature. The model includes an implied 3-way valve which controls the leaving water temperature to the outlet node setpoint temperature if possible.

When charging is requested, the following limits are calculated to determine the actual charging rate:

If the entering water temperature is greater than -1∘C, the charging rate is zero.

If the entering water temperature is greater than or equal to the outlet setpoint temperature, the charging rate is zero.

If the current fraction of ice stored is 1.0, the tank is fully charge, and the charging rate is zero.

If the requested charging rate times the current system timestep is more than the remaining uncharged storage capacity, the charging rate is limited to that required to completely fill the tank.

The maximum charging rate which the chilled water flow can provide is determined by the entering water temperature and flow rate and an outlet temperature which is the minimum of -1∘C or the outlet setpoint temperature.

The maximum charging rate which the tank can accept is calculated by the following equations developed in the prior work (Henze and Krarti 2002):

UAIceCh=(1.3879−7.6333∗y+26.3423∗y2−47.6084∗y3+41.8498∗y4−14.2948∗y5)∗ITSNomCap/TimeInterval/10.0

where:

*UAIceCh* is the UA value for charging

*y* is the current ice fraction stored

*ITSNomCap* is the nominal storage capacity (GJ)

TimeInterval is 3600 (s).

The smallest charging rate determined by the above rules is selected and the corresponding leaving water temperature is calculated.

When discharging is requested, the following limits are calculated to determine the actual charging rate:

If the entering water temperature is less than 1∘C, the discharge rate is zero.

If the entering water temperature is less than or equal to the outlet setpoint temperature, the discharge rate is zero.

If the current fraction of ice stored is 0.0, the tank is fully discharged, and the discharge rate is zero.

If the requested discharge rate times the current system timestep is more than the remaining charged storage capacity, the discharge rate is limited to that required to completely deplete the ice in the tank.

The maximum discharge rate which the chilled water flow can accept is determined by the entering water temperature and flow rate and an outlet temperature which is the maximum of 1∘C or the outlet setpoint temperature.

The maximum discharge rate which the tank can deliver is calculated by the following equations developed in the prior work (Henze and Krarti 2002):

For ice-on-coil internal melt:

UAIceDisCh=(1.3879−7.6333∗y+26.3423∗y2−47.6084∗y3+41.8498∗y4−14.2948∗y5)∗ITSNomCap/TimeInterval/10.0

For ice-on-coil external melt:

UAIceDisCh=(1.1756−5.3689∗y+17.3602∗y2−30.1077∗y3+25.6387∗y4−8.5102∗y5)∗ITSNomCap/TimeInterval/10.0

where:

UAIceDisCh is the UA value for discharging

*y* = 1 - current ice fraction stored

*ITSNomCap* is the nominal storage capacity (GJ)

TimeInterval is 3600 (s).

The smallest discharge rate determined by the above rules is selected and the corresponding leaving water temperature is calculated.

Henze, Gregor P. and Moncef Krarti. 2002. Predictive Optimal Control of Active and Passive Building Thermal Storage Inventory, Final Report for Phase I: Analysis, Modeling, and Simulation. U.S. Department of Energy National Energy Technology Laboratory Cooperative Agreement DE-FC-26-01NT41255, December 2002.

## Detailed Ice Storage Model[LINK]

The following section describes how the detailed ice storage model works in EnergyPlus (object name ThermalStorage:Ice:Detailed).

### Charging and Discharging Equation[LINK]

The actual performance of the ice storage unit depends on the physical geometry, materials, and characteristics of the ice storage unit. Modeling both the charging and discharging performance of a particular ice storage unit is accomplished in EnergyPlus using Curve objects that establish the relationships between various parameters of the unit and the output of the unit itself. The input that controls what curve objects are used and what parameters are the independent variables in those curves are: Discharging Curve Variable Specifications, Discharging Curve Name, Charging Curve Variable Specifications, and Charging Curve Name.

The Variable Specifications input fields determine which parameters are used as the independent variables in the curves referenced by the Curve Name inputs. There are four options for the Variable Specifications fields: FractionChargedLMTD, FractionDischargedLMTD, LMTDMassFlow, and LMTDFractionCharged. Each option defines which two variables are the independent variables in the curve equation as well as the order. For example, FractionChargedLMTD uses the fraction of full charge of the storage component as the first variable and the normalized LMTD (or LMTD*) as the second variable. Note that using options that use either LMTD or MassFlow actually use normalized values LMTD* and MassFlow*. LMTD is normalized by dividing the actual value by 10∘C while MassFlow is normalized by dividing the actual mass flow rate by the equivalent of 100 gallons per minute.

One equation that might be used to characterize the discharging performance of an ice storage component is a QuadraticLinear Curve. If the discharging equation referenced in the detailed ice storage unit is a QuadraticLinear equation that uses FractionDischargedLMTD for the variable specification, then this would result in the following equation for characterizing the ice storage component’s discharging process:

q∗=[C1+C2(1−Pc)+C3(1−Pc)2]+[C4+C5(1−Pc)+C6(1−Pc)2]ΔT∗lm

or

q∗=[C1+C2(Pd)+C3(Pd)2]+[C4+C5(Pd)+C6(Pd)2]ΔT∗lm

where:

q∗≡qΔtQstor

ΔT∗lm≡ΔTlmΔTnominal

ΔTlm≡Tbrine,in−Tbrine,outln(Tbrine,in−Tbrine,freezeTbrine,out−Tbrine,freeze)

q is the instantaneous heat transfer rate

Qstor is the total latent storage capacity

Δt is a time step used in the curve fit (usually one hour)

ΔTnominal is a nominal temperature difference (18∘F = 10∘C)

Tbrine,in is the tank brine inlet temperature

Tbrine,out is the tank brine outlet temperature

Tfreeze is the freezing temperature of water or the latent energy storage material

Pc is the fraction charged

Pd is the fraction discharged.

Likewise, if the charging equation referenced in the detailed ice storage unit is a QuadraticLinear equation that uses FractionChargedLMTD for the variable specification, then this would result in the following equation for characterizing the ice storage component’s charging process:

q∗=[C1+C2(Pc)+C3(Pc)2]+[C4+C5(Pc)+C6(Pc)2]ΔT∗lm

Note that the time step used for the curve fit of performance data might differ from the time step used within the EnergyPlus simulation. These are actually two separate time steps and are kept separate.

### Charging Algorithm[LINK]

During charging, manufacturers have stated that they attempt to charge the unit at the maximum rate until the unit is completely charged. This, of course, occurs during off-peak electric hours. Thus, once the setpoint has been scheduled for charging, the unit will charge at the maximum possible rate. This means that the flow rate through the ice storage device equals the flow to the component (or no bypass). The only time flow to the ice storage unit would be reduced is at the end of the charge cycle when more ice making capacity is available in a particular time step than is needed to fully charge the tank. In this case, the flow to the tank would be reduced appropriately to top off the tank storage capacity. We also have a setpoint goal for the outlet temperature of the ice storage device as defined by the setpoint schedule.

In solving the performance of the ice storage unit, we have effectively two equations. One of these equations is determined by the user input and characterizes the output of the unit (q∗) as a function of LMTD* and fraction charged/discharged or normalized mass flow rate. The other equation is:

q=˙mCp(Ti−To)

Both of these equations have q and To as unknowns. However, since the setpoint temperature is the goal for To, we can use this as an initial guess for To. Below is an outline of the algorithm:

Initialize To = Tset

Calculate LMTD*

Calculate q* from charging equation for the current percent charged (We will assume that the EnergyPlus time step is sufficiently small so that we do not need to find the average percent charged for the time step. This was necessary when one hour time steps were used as in BLAST, but EnergyPlus generally uses relatively short time steps. Since there is already some iteration involved in the solution, we would like to avoid another layer of iteration if at all possible. One alternative that could be implemented would be to make a second pass with a closer average value based on what happens during the time step. This would effectively double the execution time for the model and would need to be justified before implementation.)

Calculate To,new and compare it to To

Use To,new to calculate a new LMTD* and iterate until To converges to some acceptable level

Charging would continue in subsequent time steps until the final state of the ice storage unit at the end of a particular time step is fully charged. If running a chiller would “overcharge” the tank, then the flow to the tank would be reduced (greater than zero bypass flow) while maintaining the same setpoint temperature coming out of the tank (though not necessarily out of the component).

### Discharging Algorithm[LINK]

During discharging, we cannot assume that all of the flow is sent through the ice storage unit and thus some of it may be bypassed around it locally. This ice storage model includes a built-in bypass leg to accommodate this without requiring the user to enter this additional information. This also allows the bypass leg/valve to be controlled by the ice storage unit.

While we cannot assume that all of the flow is sent through the ice storage unit, we can use that as an initial guess in order to determine the current performance of the ice storage system. Most of the discharging algorithm then becomes very similar to the charging process.

In solving the performance of the ice storage unit, we have effectively two equations. One of these equations is determined by the user input and characterizes the output of the unit (q∗) as a function of LMTD* and fraction charged/discharged or normalized mass flow rate. The other equation is:

q=˙mCp(Ti−To)

Both of these equations have q and To as unknowns. However, since the setpoint temperature is the goal for To, we can use this as an initial guess for To. Below is an outline of the algorithm:

Initialize To = Tset

Calculate LMTD*

Calculate q* from charging equation for the current percent charged (we will assume that the EnergyPlus time step is sufficiently small so that we do not need to find the average percent charged for the time step; this was necessary when one hour time steps were used as in BLAST, but EnergyPlus generally uses relatively short time steps)

Calculate To,new and compare it to To

Use To,new to calculate a new LMTD* and iterate until To converges to some acceptable level

Once To has converged, we need to compare this value again to Tset. If To is greater than or equal to Tset, then we either just met the load (equal) or can’t quite meet it (greater than). In this case, we simply leave To as is because we cannot meet the setpoint temperature.

If To is less than Tset, then we have more capacity available than we need. In this case, we need to bypass some of the flow. Since the load on the ice storage device and the outlet temperature are not changing (we are just reducing the flow), we only need to split the flow and do not need to recalculate the action of the ice storage device. Some systems may be slightly dependent on the actual flow through the device itself. However, in an actual application, this only means that a slightly different amount will bypass the device. The overall energy impact will be the same and thus it is not necessary to be concerned about flow rate dependence.

Discharging would continue in subsequent time steps until the final state of the ice storage unit at the end of a particular time step is fully discharged.

Strand, R.K. 1992. “Indirect Ice Storage System Simulation,” M.S. Thesis, Department of Mechanical and Industrial Engineering, University of Illinois at Urbana-Champaign.

## Other Ice Thermal Storage Options[LINK]

Thermal storage can also be modeled as integrated with a packaged air-conditioning unit. For this option, see Section [packaged-thermal-storage-cooling-coil].

## Ice Thermal Storage[LINK]

## Simple Ice Storage Model[LINK]

## Overview[LINK]

This model (object name ThermalStorage:Ice:Simple) simulates the performance of an ice storage tank. The model is based on an integrated chiller and storage tank model developed for a special optimization project (Henze and Krarti 2002). This implementation removed the integrated chiller and allows the tank to be charged by any chiller configuration in an EnergyPlus plant loop..

This thermal storage model is based on a simple simulation of an ice storage tank with a fixed capacity. The tank is charged, or frozen, in an ice-on-coil configuration where ice builds up on the outside of the tubes carrying the brine or glycol solution from the chiller. There are two discharge (melt) options, internal or external. Internal melt uses the same fluid tubes for charging and discharging. External melt uses a separate fluid path for discharge such that the outer layers of ice melt first. The ice storage model includes an implied 3-way valve to control the amount if charge/discharge based on the incoming water temperature and the outlet node setpoint temperature. The tank is controlled using the PlantEquipmentOperation:ComponentSetpoint plant operation scheme, and requires that a setpoint be placed by a setpoint manager on the ice storage Plant Outlet Node. The model currently does not calculate any tank losses.

## Model Description[LINK]

## Initialization[LINK]

The storage tank is assumed to be fully charged (full of ice) at the beginning of each environment. The tank is then allowed to charge and discharge during the warmup days of the environment.

## Control[LINK]

The ice storage module is a passive component and will accept any flow rate placed on the inlet node. The load on the ice storage tank is determined by the inlet node flow rate, the inlet node temperature, and the outlet node setpoint temperature. A positive load indicates a request for cooling and the tank discharges if possible. A negative load indicates a request for charging the tank if possible. A zero load indicates the tank is dormant in which case all flow bypasses the tank and the outlet node temperature is set to the inlet node temperature. The model includes an implied 3-way valve which controls the leaving water temperature to the outlet node setpoint temperature if possible.

## Charging[LINK]

When charging is requested, the following limits are calculated to determine the actual charging rate:

If the entering water temperature is greater than -1∘C, the charging rate is zero.

If the entering water temperature is greater than or equal to the outlet setpoint temperature, the charging rate is zero.

If the current fraction of ice stored is 1.0, the tank is fully charge, and the charging rate is zero.

If the requested charging rate times the current system timestep is more than the remaining uncharged storage capacity, the charging rate is limited to that required to completely fill the tank.

The maximum charging rate which the chilled water flow can provide is determined by the entering water temperature and flow rate and an outlet temperature which is the minimum of -1∘C or the outlet setpoint temperature.

The maximum charging rate which the tank can accept is calculated by the following equations developed in the prior work (Henze and Krarti 2002):

UAIceCh=(1.3879−7.6333∗y+26.3423∗y2−47.6084∗y3+41.8498∗y4−14.2948∗y5)∗ITSNomCap/TimeInterval/10.0

where:

UAIceChis the UA value for chargingyis the current ice fraction storedITSNomCapis the nominal storage capacity (GJ)TimeInterval is 3600 (s).

The smallest charging rate determined by the above rules is selected and the corresponding leaving water temperature is calculated.

## Discharging[LINK]

When discharging is requested, the following limits are calculated to determine the actual charging rate:

If the entering water temperature is less than 1∘C, the discharge rate is zero.

If the entering water temperature is less than or equal to the outlet setpoint temperature, the discharge rate is zero.

If the current fraction of ice stored is 0.0, the tank is fully discharged, and the discharge rate is zero.

If the requested discharge rate times the current system timestep is more than the remaining charged storage capacity, the discharge rate is limited to that required to completely deplete the ice in the tank.

The maximum discharge rate which the chilled water flow can accept is determined by the entering water temperature and flow rate and an outlet temperature which is the maximum of 1∘C or the outlet setpoint temperature.

The maximum discharge rate which the tank can deliver is calculated by the following equations developed in the prior work (Henze and Krarti 2002):

For ice-on-coil internal melt:

UAIceDisCh=(1.3879−7.6333∗y+26.3423∗y2−47.6084∗y3+41.8498∗y4−14.2948∗y5)∗ITSNomCap/TimeInterval/10.0

For ice-on-coil external melt:

UAIceDisCh=(1.1756−5.3689∗y+17.3602∗y2−30.1077∗y3+25.6387∗y4−8.5102∗y5)∗ITSNomCap/TimeInterval/10.0

where:

UAIceDisCh is the UA value for discharging

y= 1 - current ice fraction storedITSNomCapis the nominal storage capacity (GJ)TimeInterval is 3600 (s).

The smallest discharge rate determined by the above rules is selected and the corresponding leaving water temperature is calculated.

## References[LINK]

Henze, Gregor P. and Moncef Krarti. 2002. Predictive Optimal Control of Active and Passive Building Thermal Storage Inventory, Final Report for Phase I: Analysis, Modeling, and Simulation. U.S. Department of Energy National Energy Technology Laboratory Cooperative Agreement DE-FC-26-01NT41255, December 2002.

## Detailed Ice Storage Model[LINK]

The following section describes how the detailed ice storage model works in EnergyPlus (object name ThermalStorage:Ice:Detailed).

## Charging and Discharging Equation[LINK]

The actual performance of the ice storage unit depends on the physical geometry, materials, and characteristics of the ice storage unit. Modeling both the charging and discharging performance of a particular ice storage unit is accomplished in EnergyPlus using Curve objects that establish the relationships between various parameters of the unit and the output of the unit itself. The input that controls what curve objects are used and what parameters are the independent variables in those curves are: Discharging Curve Variable Specifications, Discharging Curve Name, Charging Curve Variable Specifications, and Charging Curve Name.

The Variable Specifications input fields determine which parameters are used as the independent variables in the curves referenced by the Curve Name inputs. There are four options for the Variable Specifications fields: FractionChargedLMTD, FractionDischargedLMTD, LMTDMassFlow, and LMTDFractionCharged. Each option defines which two variables are the independent variables in the curve equation as well as the order. For example, FractionChargedLMTD uses the fraction of full charge of the storage component as the first variable and the normalized LMTD (or LMTD*) as the second variable. Note that using options that use either LMTD or MassFlow actually use normalized values LMTD* and MassFlow*. LMTD is normalized by dividing the actual value by 10∘C while MassFlow is normalized by dividing the actual mass flow rate by the equivalent of 100 gallons per minute.

One equation that might be used to characterize the discharging performance of an ice storage component is a QuadraticLinear Curve. If the discharging equation referenced in the detailed ice storage unit is a QuadraticLinear equation that uses FractionDischargedLMTD for the variable specification, then this would result in the following equation for characterizing the ice storage component’s discharging process:

q∗=[C1+C2(1−Pc)+C3(1−Pc)2]+[C4+C5(1−Pc)+C6(1−Pc)2]ΔT∗lm

or

q∗=[C1+C2(Pd)+C3(Pd)2]+[C4+C5(Pd)+C6(Pd)2]ΔT∗lm

where:

q∗≡qΔtQstor

ΔT∗lm≡ΔTlmΔTnominal

ΔTlm≡Tbrine,in−Tbrine,outln(Tbrine,in−Tbrine,freezeTbrine,out−Tbrine,freeze)

q is the instantaneous heat transfer rate

Qstor is the total latent storage capacity

Δt is a time step used in the curve fit (usually one hour)

ΔTnominal is a nominal temperature difference (18∘F = 10∘C)

Tbrine,in is the tank brine inlet temperature

Tbrine,out is the tank brine outlet temperature

Tfreeze is the freezing temperature of water or the latent energy storage material

Pc is the fraction charged

Pd is the fraction discharged.

Likewise, if the charging equation referenced in the detailed ice storage unit is a QuadraticLinear equation that uses FractionChargedLMTD for the variable specification, then this would result in the following equation for characterizing the ice storage component’s charging process:

q∗=[C1+C2(Pc)+C3(Pc)2]+[C4+C5(Pc)+C6(Pc)2]ΔT∗lm

Note that the time step used for the curve fit of performance data might differ from the time step used within the EnergyPlus simulation. These are actually two separate time steps and are kept separate.

## Charging Algorithm[LINK]

During charging, manufacturers have stated that they attempt to charge the unit at the maximum rate until the unit is completely charged. This, of course, occurs during off-peak electric hours. Thus, once the setpoint has been scheduled for charging, the unit will charge at the maximum possible rate. This means that the flow rate through the ice storage device equals the flow to the component (or no bypass). The only time flow to the ice storage unit would be reduced is at the end of the charge cycle when more ice making capacity is available in a particular time step than is needed to fully charge the tank. In this case, the flow to the tank would be reduced appropriately to top off the tank storage capacity. We also have a setpoint goal for the outlet temperature of the ice storage device as defined by the setpoint schedule.

In solving the performance of the ice storage unit, we have effectively two equations. One of these equations is determined by the user input and characterizes the output of the unit (q∗) as a function of LMTD* and fraction charged/discharged or normalized mass flow rate. The other equation is:

q=˙mCp(Ti−To)

Both of these equations have q and To as unknowns. However, since the setpoint temperature is the goal for To, we can use this as an initial guess for To. Below is an outline of the algorithm:

Initialize To = Tset

Calculate LMTD*

Calculate q* from charging equation for the current percent charged (We will assume that the EnergyPlus time step is sufficiently small so that we do not need to find the average percent charged for the time step. This was necessary when one hour time steps were used as in BLAST, but EnergyPlus generally uses relatively short time steps. Since there is already some iteration involved in the solution, we would like to avoid another layer of iteration if at all possible. One alternative that could be implemented would be to make a second pass with a closer average value based on what happens during the time step. This would effectively double the execution time for the model and would need to be justified before implementation.)

Calculate To,new and compare it to To

Use To,new to calculate a new LMTD* and iterate until To converges to some acceptable level

Charging would continue in subsequent time steps until the final state of the ice storage unit at the end of a particular time step is fully charged. If running a chiller would “overcharge” the tank, then the flow to the tank would be reduced (greater than zero bypass flow) while maintaining the same setpoint temperature coming out of the tank (though not necessarily out of the component).

## Discharging Algorithm[LINK]

During discharging, we cannot assume that all of the flow is sent through the ice storage unit and thus some of it may be bypassed around it locally. This ice storage model includes a built-in bypass leg to accommodate this without requiring the user to enter this additional information. This also allows the bypass leg/valve to be controlled by the ice storage unit.

While we cannot assume that all of the flow is sent through the ice storage unit, we can use that as an initial guess in order to determine the current performance of the ice storage system. Most of the discharging algorithm then becomes very similar to the charging process.

In solving the performance of the ice storage unit, we have effectively two equations. One of these equations is determined by the user input and characterizes the output of the unit (q∗) as a function of LMTD* and fraction charged/discharged or normalized mass flow rate. The other equation is:

q=˙mCp(Ti−To)

Both of these equations have q and To as unknowns. However, since the setpoint temperature is the goal for To, we can use this as an initial guess for To. Below is an outline of the algorithm:

Initialize To = Tset

Calculate LMTD*

Calculate q* from charging equation for the current percent charged (we will assume that the EnergyPlus time step is sufficiently small so that we do not need to find the average percent charged for the time step; this was necessary when one hour time steps were used as in BLAST, but EnergyPlus generally uses relatively short time steps)

Calculate To,new and compare it to To

Use To,new to calculate a new LMTD* and iterate until To converges to some acceptable level

Once To has converged, we need to compare this value again to Tset. If To is greater than or equal to Tset, then we either just met the load (equal) or can’t quite meet it (greater than). In this case, we simply leave To as is because we cannot meet the setpoint temperature.

If To is less than Tset, then we have more capacity available than we need. In this case, we need to bypass some of the flow. Since the load on the ice storage device and the outlet temperature are not changing (we are just reducing the flow), we only need to split the flow and do not need to recalculate the action of the ice storage device. Some systems may be slightly dependent on the actual flow through the device itself. However, in an actual application, this only means that a slightly different amount will bypass the device. The overall energy impact will be the same and thus it is not necessary to be concerned about flow rate dependence.

Discharging would continue in subsequent time steps until the final state of the ice storage unit at the end of a particular time step is fully discharged.

## References[LINK]

Strand, R.K. 1992. “Indirect Ice Storage System Simulation,” M.S. Thesis, Department of Mechanical and Industrial Engineering, University of Illinois at Urbana-Champaign.

## Other Ice Thermal Storage Options[LINK]

Thermal storage can also be modeled as integrated with a packaged air-conditioning unit. For this option, see Section [packaged-thermal-storage-cooling-coil].

Documentation content copyright © 1996-2022 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.