1

airloop from scratch

OK, I am stumped. I am trying to write a measure that creates an air loop for a RTU challenge unit (Carrier WeatherExpert 50LCF...). This is a very high efficiency unit that DOE challenged manufacturers to design and build a few years ago. For this, I need to assign custom performance curves to a variable speed DX cooling coil and use a variable speed supply fan.

I can create the air loop HVAC via

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

and assign a sizing system to it via

sizing_system = OpenStudio::Model::SizingSystem.new(model,air_loop_HVAC)

I can also create a cooling coil via

cooling_coil = OpenStudio::Model::CoilCoolingDXVariableSpeed.new(model)

a heating coil via

heating_coil = OpenStudio::Model::CoilHeatingElectric.new(model)

and a supply air fan via

supply_air_fan = OpenStudio::Model::FanVariableVolume.new(model)

I am not sure I am doing the outdoor air system controller and outdoor air system right via

outdoor_air_system_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)

and

outdoor_air_system = OpenStudio::Model::AirLoopHVACOutdoorAirSystem.new(model,outdoor_air_system_controller)

But where I am stuck is how to assign the cooling coil, heating coil, supply air fan and outdoor air system to the air loop HVAC? For example, an AirLoopHVACUnitarySystem has a setCoolingCoil(), setHeatingCoil() and setSupplyFan() method, but the AirLoopHVAC I am using here does not!? How can I combine it all together in an AirLoopHVAC? And also add a setpoint manager to it in the end? All in a Ruby measure for OpenStudio, of course. Thanks.

mattkoch's avatar
1.1k
mattkoch
asked 2020-10-25 00:13:12 -0500
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

2 Answers

2

OK, looks like I triggered my question too soon.. It turns out, OpenStudio::Model::AirLoopHVAC is inheriting a lot of functionality from OpenStudio::Model::Loop. So after checking out the "manual" on that, I ended up doing the following:

outdoor_air_system.addToNode(air_loop_HVAC.supplyOutletNode()) cooling_coil.addToNode(air_loop_HVAC.supplyOutletNode()) heating_coil.addToNode(air_loop_HVAC.supplyOutletNode()) supply_air_fan.addToNode(air_loop_HVAC.supplyOutletNode())

It just adds these components in the order listed to the current supplyOutletNode. I have not figured out the SetpointManager yet, though.

mattkoch's avatar
1.1k
mattkoch
answered 2020-10-25 00:31:22 -0500
edit flag offensive 0 remove flag delete link

Comments

... OK, same difference for setpoint_manager:

setpoint_schedule = OpenStudio::Model::ScheduleCompact.new(model) setpoint_schedule.setToConstantValue(75.0) setpoint_manager = OpenStudio::Model::SetpointManagerScheduled.new(model, "Temperature",setpoint_schedule)

then:

setpoint_manager.addToNode(air_loop_HVAC.supplyOutletNode())

mattkoch's avatar mattkoch (2020-10-25 00:43:24 -0500) edit
add a comment see more comments
1

You may want to take a look at this PNNL report that characterizes the DX coil performance curves of this unit, including generic regression coefficients. To model it properly, it requires a Coil:Cooling:DX:MultiSpeed object, which can only be referenced by a AirLoopHVAC:UnitarySystem or AirLoopHVAC:UnitaryHeatPump:AirToAir:Multispeed object. I recommend going with an AirloopHVAC:UnitarySystem object, as it is intended to replace all other air loop equipment. The UnitarySystem is unique in that it can accommodate all fan and coil types whereas other system types are specific to the type of fan and coil available for simulation.

ericmartinpe's avatar
2.1k
ericmartinpe
answered 2020-11-09 20:05:30 -0500
edit flag offensive 0 remove flag delete link

Comments

Thank you so much for your help, Eric! What you describe is exactly what I tried to pursue in my other post. Unfortunately, I run into the issue mentioned there (e.g., why are there heating speeds in the .IDF, when all I need is cooling speeds), and also, the PNNL report you mentioned shows the CapFT, EIRFT, CapFFF, EIRFFF and EIRFPLR curve coefficients well enough, and even their applicability ranges. However, it does not speak to rated capacity or COP.

mattkoch's avatar mattkoch (2020-11-11 10:26:05 -0500) edit

Also, I noticed the PNNL report in Section 2.7 mentions a Coil:Cooling:DX:VariableSpeed coil. The reason I am pursuing all of the above and the associated post is that I believe these Carrier WeatherExpert machines do not have variable speed compressors but rather staged compressors, i.e. either compressor 1 or compressor 2 or compressor 1 & 2 - three stages. This then, I believe calls for Coil:Cooling:DX:MultiSpeed, rather then Coil:Cooling:DX:VariableSpeed. If it was the latter, I would not have to take the detour through a UnitarySystem because it works directly in an air loop HVAC.

mattkoch's avatar mattkoch (2020-11-11 16:10:06 -0500) edit

I was similarly confused when trying to replicate these models, and arrived at the same conclusion; Coil:Cooling:DX:MultiSpeed makes more sense, and is especially necessary if you need to autosize. Regarding COPs, section 3.5 of the report says "The average rated COP across all nine product models was calculated as 4.80, 4.59, and 4.09, respectively, for the 1st, the 2nd, and the 3rd DX cooling stage." The advanced product data for these units also has a lot of data that's useful for characterizing performance.

ericmartinpe's avatar ericmartinpe (2020-11-11 18:45:35 -0500) edit

Regarding your other post, you may be running into the limits of what OS is capable of doing, but I'm not sure because I rarely use OS. Here is a piece of an IDF with the AirLoopHVAC:UnitarySystem, UnitarySystemPerformance:Multispeed, and Coil:Cooling:DX:MultiSpeed objects that I used when simulating these units based on the PNNL report, hopefully this helps.

ericmartinpe's avatar ericmartinpe (2020-11-11 18:55:49 -0500) edit

Yes Sir, I have been mining those product data for the past two weeks, trying to find a linkage to the PNNL data. Not easy. Thanks for pointing out Section 3.5, it had completely slipped my attention. Now, taking the product data and trying to extract gross COP from them, I do not come even close to those numbers in Section 3.5. Thanks for linking the .IDF example. I guess I could try to force the UnitarySystemPerformance:Multispeed object through the OpenStudio SDK and see if the result resembles what you have. DOE should really have these units readily canned. They probably do somewhere.

mattkoch's avatar mattkoch (2020-11-11 20:37:41 -0500) edit
add a comment see more comments