First time here? Check out the Help page!
1 | initial version |
I have tackled this by an EnergyPlusMeasure, to
Water:Use:Storage
Water:Use:GroundwaterWell
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. !- Pump Rated Flow Rate {m3/s}
is limited (by me) to 3 l/s Tank Inlet Volume Flow Rate
) is as per user entry 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}
#{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 = "
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
"
# 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.
runner.registerInfo(water_connections_obj.getString(23).to_s)
end