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

# How to model pump energy to refill WaterUse:Storage tank

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 https://unmethours.com/question/28149...

edit retag 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)

( 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.

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

Sort by ยป oldest newest most voted

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.

# add a new WaterUse:Storage object to the model
new_water_storage_string = "
WaterUse:Storage,
Cooling Tower Water Storage Tank,             !- Name
Mains,                               !- Water Quality Subcategory
#{tankVolume.to_s},         !- Maximum Capacity {m3}
#{tankVolume.to_s},         !- Initial Volume {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
"
object = idfObject.get

# add a mains staging tank WaterUse:Storage object to the model
well_string = "
WaterUse:Well,
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
"
object = idfObject.get

# 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.
runner.registerInfo(water_connections_obj.getString(23).to_s)
end

more

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

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