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

How to model pump energy to refill WaterUse:Storage tank

asked 2018-01-12 22:29:02 -0600

TomB gravatar image

updated 2018-01-13 02:43:58 -0600

I would like to use OpenStudio (via Energyplyus measures) to model a set of pumps moving water into a storage tank.

mains water --> cooling tower transfer pumpset --> cooling tower water tank --> cooling tower water use

The Cooling Tower object has a field for Water Storage Tank, so I can connect the water system. But, I am struggling to figure out a method to put a set of pumps between the mains water supply and the storage tank.

How can I account for the pumping energy to move cold water from the mains supply to a water tank?

WaterUseStorage WaterUseConnection

edit. see question

edit retag flag offensive close merge delete


Isn't the question you linked to enough? It looks kinda like a duplicate, unless you think there's a possibility for some other answer on this specific case (doubt it)

Julien Marrec gravatar image Julien Marrec  ( 2018-01-13 05:44:10 -0600 )edit

i am not having much joy using the approach you suggested in the other question.i may have found a method using a Water:Use:Well object. i'll edit the question again once i have it figured it out.

TomB gravatar image TomB  ( 2018-01-13 20:19:04 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-01-13 22:14:31 -0600

TomB gravatar image

I have tackled this by an EnergyPlusMeasure, to

  • Insert a Water:Use:Storage
  • Insert a Water:Use:GroundwaterWell
  • Insert the name of the water tank into the Cooling Tower object using the approach in this answer

The heart of the code in the measure is copied below. However, it has not been succesfull.

There seems to be an issue with the EnergyPlus calculations, my reasoning is;

  • The Well Requested Volume Flow Rate is enough to refill the Tank in one timestep.
  • However, the !- Pump Rated Flow Rate {m3/s} is limited (by me) to 3 l/s
  • The actual pump flow rate (which is equal to Tank Inlet Volume Flow Rate) is as per user entry
  • The tank only gets 10 minutes * 3 Litres/second = 1.8 m3
  • The tank requested 10 minutes * 0.0044 Litres/second = 2.8 m3 (which would fill it up)
  • After one Timestep the pump stops refilling the tank - but it is well short of the tank's 3 m3 capacity.

This looks like a bug in EnergyPlus - the Water:Use:Storage is assumed to refill at the requested rate, even when the user has tried to limit this rate.

image description

# add a new WaterUse:Storage object to the model
new_water_storage_string = "
    Cooling Tower Water Storage Tank,             !- Name
    Mains,                               !- Water Quality Subcategory
    #{tankVolume.to_s},         !- Maximum Capacity {m3}
    #{tankVolume.to_s},         !- Initial Volume {m3}
    #{pumpFlowRate.to_s},      !- Design In Flow Rate {m3}
    ,     !- Design Out Flow Rate {m3}
    ,                                        !- Overflow Destination
    GroundwaterWell,      !- Type of Supply Controlled by Float Valve
    0.20,              !- Float Valve On Capacity {m3}
    #{tankVolume.to_s},             !- Float Valve Off Capacity {m3}
    0.10,               !- Backup Mains Capacity {m3}
    ,                      !- Other Tank Name
    ScheduledTemperature,                    !- Water Thermal Mode
    Thermostat Always 18,                     !- Water Temperature Schedule Name
    ,                                        !- Ambient Temperature Indicator
    ,                                        !- Ambient Temperature Schedule Name
    ,                                        !- Zone Name
    ,                                        !- Tank Surface Area {m2}
    ,                                        !- Tank U Value {W/m2-K}
    ;                                        !- Tank Outside Surface Material Name
idfObject = OpenStudio::IdfObject::load(new_water_storage_string)
object = idfObject.get
wsObject = workspace.addObject(object)

# add a mains staging tank WaterUse:Storage object to the model
well_string = "
      Cooling Tower Transfer Pumps,                       !- Name
      Cooling Tower Water Storage Tank,  !- Storage Tank Name
      ,                       !- Pump Depth {m}
      #{pumpFlowRate.to_s},                       !- Pump Rated Flow Rate {m3/s}
      ,                       !- Pump Rated Head {Pa}
      #{pumpPower.to_s},                       !- Pump Rated Power Consumption {W}
      ,                       !- Pump Efficiency
      ,                       !- Well Recovery Rate {m3/s}
      ,                       !- Nominal Well Storage Volume {m3}
      ,                       !- Water Table Depth Mode
      ,                       !- Water Table Depth {m}
      ;                       !- Water Table Depth Schedule Name
# Load it up
idfObject = OpenStudio::IdfObject::load(well_string)
object = idfObject.get
wellObject = workspace.addObject(object)

# Clobber the Cooling Tower IDF Object - insert Tank Name
water_connections_objs = workspace.getObjectsByType("CoolingTower:VariableSpeed".to_IddObjectType)
sel_water_connection = water_connections_objs[0]
water_connections_objs.each do |water_connections_obj|
  water_connections_obj.setString(23,"Cooling Tower Water Storage Tank")
  # magic number hardcoded to suit object/e+version. tch tch.
edit flag offensive delete link more


look at that post I think it is the same. issue was opened.

Avi gravatar image Avi  ( 2018-01-14 00:12:15 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer


Question Tools


Asked: 2018-01-12 22:29:02 -0600

Seen: 98 times

Last updated: Jan 13 '18