Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

The most straightforward approach of putting a Pump:ConstantSpeed on each branch in front of each Chiller:Electric:EIR, putting a Pump:VariableSpeed on the demand inlet, and using 'CommonPipe' does not work because of a bug in EnergyPlus that keeps the branch pumps running even when no flow is required.

I believe that the alternative modeling approach below meets the requirements of 90.1 Appendix G when the baseline model has more than 1 chiller while avoiding the EnergyPlus bug.

Chilled water loop:

  • PlantLoop
    • Branch for each chiller
    • Chiller 'Sizing Factor' = 1/number of chillers (if autosizing chillers) for all chillers
    • 'Common Pipe Simuation' = 'CommonPipe' (found by clicking dotted line in center of PlantLoop)
    • 'Load Distribution Scheme' = 'SequentialLoad'
  • HeaderedPumps:ConstantSpeed on Supply Inlet Node as constant primary pump per chiller
    • 'Pump Control Type' = 'Intermittent'
    • 'Number of Pumps in Bank' = number of chillers
  • Pump:VariableSpeed on Demand Inlet Node as variable secondary pump
    • 'Pump Control Type' = 'Intermittent'
    • Pump coefficients set to represent required pump control type

image description

Condenser water loop:

  • PlantLoop
    • Branch for each cooling tower
    • Cooling tower 'Sizing Factor' = 1/number of cooling towers (if autosizing cooling towers) for all towers
    • 'Load Distribution Scheme' = 'SequentialLoad'
  • HeaderedPumps:ConstantSpeed on Supply Inlet Node as constant pump per cooling tower
    • 'Pump Control Type' = 'Intermittent'
    • 'Number of Pumps in Bank' = number of cooling towers

image description

Measure code

Here are links to the openstudio-standards code that implements the approach described above:

The most straightforward approach of putting a Pump:ConstantSpeed on each branch in front of each Chiller:Electric:EIR, putting a Pump:VariableSpeed on the demand inlet, and using 'CommonPipe' does not work because of a bug in EnergyPlus that keeps the branch pumps running even when no flow is required.

I believe that the alternative modeling approach below meets the requirements of 90.1 Appendix G when the baseline model has more than 1 chiller while avoiding the EnergyPlus bug.

This approach works because the chillers and cooling towers are all sized equally, and therefore the pump staging matches their operation. If you had different sized chillers, you would need to use a more complex approach and model the primary side and secondary side as two separate PlantLoops connected by a HeatExchangerFluidToFluid, model a separate condenser water loop for each cooling tower, and review the timeseries data to ensure things were working as intended.

Chilled water loop:

  • PlantLoop
    • Branch for each chiller
    • Chiller 'Sizing Factor' = 1/number of chillers (if autosizing chillers) for all chillers
    • 'Common Pipe Simuation' = 'CommonPipe' (found by clicking dotted line in center of PlantLoop)
    • 'Load Distribution Scheme' = 'SequentialLoad'
  • HeaderedPumps:ConstantSpeed on Supply Inlet Node as constant primary pump per chiller
    • 'Pump Control Type' = 'Intermittent'
    • 'Number of Pumps in Bank' = number of chillers
  • Pump:VariableSpeed on Demand Inlet Node as variable secondary pump
    • 'Pump Control Type' = 'Intermittent'
    • Pump coefficients set to represent required pump control type

image description

Condenser water loop:

  • PlantLoop
    • Branch for each cooling tower
    • Cooling tower 'Sizing Factor' = 1/number of cooling towers (if autosizing cooling towers) for all towers
    • 'Load Distribution Scheme' = 'SequentialLoad'
  • HeaderedPumps:ConstantSpeed on Supply Inlet Node as constant pump per cooling tower
    • 'Pump Control Type' = 'Intermittent'
    • 'Number of Pumps in Bank' = number of cooling towers

image description

Measure code

Here are links to the openstudio-standards code that implements the approach described above: