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

CoilCoolingDXMultiSpeed coil in AirLoopHVAC - unitary system wrapper

If I am not too mistaken, the following snippet of a measure for OpenStudio 2.9.1 should create an empty AirLoopHVAC and populate it with an AirLoopHVACUnitarySystem. Then cooling coil, heating coil and supply fan of this unitary system are reset, presumably to erase them from the unitary system. Then a CoilCoolingDXMultiSpeed is created and three stages CoilCoolingDXMultiSpeedStageData are assigned to it, and that cooling coil is then assigned to the unitary system. Finally, the unitary system is inserted into the air loop HVAC.

air_loop_HVAC = OpenStudio::Model::AirLoopHVAC.new(model)

unitary_system = OpenStudio::Model::AirLoopHVACUnitarySystem.new(model)

unitary_system.resetCoolingCoil()
unitary_system.resetHeatingCoil()
unitary_system.resetSupplyFan()

cooling_coil = OpenStudio::Model::CoilCoolingDXMultiSpeed.new(model)
cooling_stage = OpenStudio::Model::CoilCoolingDXMultiSpeedStageData.new(model)
cooling_stage = OpenStudio::Model::CoilCoolingDXMultiSpeedStageData.new(model)
cooling_stage = OpenStudio::Model::CoilCoolingDXMultiSpeedStageData.new(model)

unitary_system.setCoolingCoil(cooling_coil)



This does seem to populate the HVAC diagram in the OpenStudio Application exactly as intended, including the unitary system only showing a cooling coil, i.e. no heating coil or supply fan. I then manually add a heating coil and variable speed supply fan to the air loop, after the unitary system, and throw in a Setpoint ManagerOutdoorAirReset for good measure, before connecting zones to this via AirTerminalSingleDuctVAVReheat terminals. So, in this sense, I am using the unitary system solely as a "wrapper" (as someone else on Unmet Hours had referred to this approach several years back) for the CoilCoolingDXMultiSpeed, which otherwise would not be allowed in the air loop.

When I do this, I get the following error upon running the .OSM file.

Program Version,EnergyPlus, Version 9.2.0-921312fa1d, YMD=2020.11.05 08:51,
** Severe  ** <root>[UnitarySystemPerformance:Multispeed][Air Loop HVAC Unitary System 1 Unitary System Performance][flow_ratios][2] - Missing required property 'heating_speed_supply_air_flow_ratio'.
**  Fatal  ** Errors occurred on processing input file. Preceding condition(s) cause termination.
...Summary of Errors that led to program termination:
..... Reference severe error count=1
..... Last severe error=<root>[UnitarySystemPerformance:Multispeed][Air Loop HVAC Unitary System 1 Unitary System Performance][flow_ratios][2] - Missing required property 'heating_speed_supply_air_flow_ratio'.
************* Warning:  Node connection errors not checked - most system input has not been read (see previous warning).
************* Fatal error -- final processing.  Program exited before simulations began.  See previous error messages.
************* EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors.
************* EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors.
************* EnergyPlus Terminated--Fatal Error Detected. 0 Warning; 1 Severe Errors; Elapsed Time=00hr 00min  0.26sec


So, then I examine the .OSM file, and there is no UnitarySystemPerformance:Multispeed object. However, the .IDF file does have a UnitarySystemPerformance:Multispeed object, and it shows that the cooling speeds are autosized, while the heating speeds are sized at 1, but only the first two of three that show up. The third is blank, and I am assuming this may be the cause of the error. The OpenStudio Application has no interface to set this, so after searching the OpenStudio 2.9.1 SDK, I find that the ...

edit retag close merge delete

I am beginning to think that perhaps the .IDF adds the UnitarySystemPerformance:Multispeed object because there was none in the .OSM? If instead I forced one into the .OSM, then the .IDF would pick that up?

( 2020-11-11 10:28:35 -0500 )edit

Sort by » oldest newest most voted

So, adding the following lines before the addToNode() line at least allows this to run without terminating.

  performance_multispeed = OpenStudio::Model::UnitarySystemPerformanceMultispeed.new(model)
performance_multispeed.setSingleModeOperation(false)
unitary_system.setDesignSpecificationMultispeedObject(performance_multispeed)


Unfortunately, there is no cooling, so there is another hurdle to cross.

more