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

How to make CoilCoolingDXTwoStageWithHumidityControlMode work?

asked 2026-06-30 21:02:49 -0500

mattkoch's avatar

updated 2026-07-15 20:38:33 -0500

I am working on a relatively simple model for a natatorium, based on an AirLoopHVAC and a PlantLoop. The air temperature setpoint is around 82 F with nighttime setback +/- 3 F for cooling/heating, and the pool temperature setpoint is around 80 F. The air humidity setpoint is around 50%, with nighttime setback +/- 10% for cooling/heating. I don't know if I will need the setbacks in the end, but for now, they conveniently mark the days in DVIEW. I have dehumidifying and humidifying setpoints, but am only doing dehumdification in the AirLoopHVAC. The PlantLoop seems to work just fine, but the AirLoopHVAC is giving me trouble once I enable dehumidification.

The AirLoopHVAC includes an AirLoopHVACOutdoorAirSystem (with HeatExchangerAirToAirSensibleAndLatent and FanConstantVolume), a CoilCoolingDXTwoStageWithHumidityControlMode, a CoilHeatingDesuperheater (inserted by simple Python script), a CoilHeatingElectric, a FanConstantVolume and a SetpointManagerSingleZoneReheat. The latter references the ThermalZone with the SwimmingPoolIndoor, which in turn is part of the PlantLoop. This works well as such, and while the ThermalZone humidity is not controlled (actively), the cooling coil brings humidity down to about 65% or so whenever it runs.

Now, when I add a SetpointManagerSingleZoneHumidityMaximum right behind the cooling coil, referencing that same ThermalZone, and I also add the EnergyPlus measure that adds "CoolReheat,Yes,Yes" to the CoilSystemCoolingDX which the translator generates, the trouble starts.

I have included below images of the AirLoopHVAC and the PlantLoop for clarification, and then images of the temperatures and cooling and heating rates (blue = cooling, brown = desuperheater, orange = electric) for a week in January and a week in July. As you can see, the ThermalZone temperature exceeds setpoint at almost all times where one expect it to follow setpoint. Somewhere I read that the cooling coil stops as soon as the humidity setpoint is set, but not even that seems to be true here because the humidity rarely touches 60%, let alone 50% at daytime.

image description

image description

image description

image description

So, I am just looking for any advice on humidity control with this type of cooling coil, without loosing temperature control. There is a good YouTube out there, but it is for a CoilCoolingWater, which by comparison is easy and really works as advertised. Is there a magic trick, another measure to run, another setting to be checked? It seems to me this is such a common requirement, it ought to be easy.

By the way, the fact that I could get the CoilHeatingDesuperheater to kick in at all is pure accident. I had done that successfully once before in an experimental model, but it never worked again thereafter in my actual model, until I deleted all HVAC components and reinserted them, including setpoint managers. It was an all-day affair to debug that.

.>>> Update <<<.

I spent many hours looking into this further. The following are some additional thoughts I developed.

1) I moved CoilCoolingDXTwoStageWithHumidityControlMode into an AirLoopHVACUnitarySystem and it seems to work well without adding any SetpointManagers, leaving control on Load, rather than Setpoint. So, AirLoopHVACOutdoorAirSystem and AirLoopHVACUnitarySystem are the only components in AirLoopHVAC ... (more)

edit retag flag offensive close merge delete

Comments

... see the update to my original post ...

mattkoch's avatar mattkoch  ( 2026-07-03 22:59:31 -0500 )edit

The multimode DX coil can be used only as a component of AirLoopHVAC:UnitarySystem, CoilSystem:Cooling:DX or AirLoopHVAC:UnitaryHeatCool:VAVChangeoverBypass (parent object). These parent objects pass a load and dehumidification mode to this coil. If the coil has 2 capacity stages, the multimode coil model determines the stage sequencing.

Ski90Moo's avatar Ski90Moo  ( 2026-07-12 10:01:15 -0500 )edit

Thank you for confirming this. It still does not address the issue of wanting to use DX reheat upon subcool for dehumidification. I tried to do that by adding a Coil:Heating:Desuperheater right behind the Coil:Cooling:DX:TwoStageWthHumidityControlMode, but that is an uncontrolled coil and leads nowhere. Instead, it seems Coil:Cooling:DX with one Coil:Cooling:DX:CurveFit:Performance and three Coil:Cooling:DX:CurveFit:OperatingMode, each with one Coil:Cooling:DX:CurveFit:Speed, might be more promising. I can't believe it is this hard to get DX dehumidification with DX (hot gas) reheat going.

mattkoch's avatar mattkoch  ( 2026-07-13 20:56:48 -0500 )edit

Unfortunately Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit appears to be the only object that can simulate hot gas reheat.

Ski90Moo's avatar Ski90Moo  ( 2026-07-14 13:46:23 -0500 )edit

If you look in the idd you will see the coil/refrig types that can serve the desuperheater:

Coil:Heating:Desuperheater,
A5 , \field Heating Source Object Type
  \required-field
  \type choice
  \key Coil:Cooling:DX
  \key Coil:Cooling:DX:SingleSpeed
  \key Coil:Cooling:DX:VariableSpeed
  \key Coil:Cooling:DX:TwoSpeed
  \key Coil:Cooling:DX:TwoStageWithHumidityControlMode
  \key Refrigeration:CompressorRack
  \key Refrigeration:Condenser:AirCooled
  \key Refrigeration:Condenser:EvaporativeCooled
  \key Refrigeration:Condenser:WaterCooled
rraustad's avatar rraustad  ( 2026-07-15 14:22:48 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2026-07-14 02:27:00 -0500

updated 2026-07-17 05:49:10 -0500

The best way, I think, would be to assemble a Unitary System with Desuperheater coil as supplementary heat. Try adding this your your library files and dragging into your airloop Unitary-DX-Electric_w_Hotgas-Reheat

The OpenStudio App does not recognize the desuperheater as a child of the cooling coil, so adding from the library breaks the link between cooling coil and desuperheater. To fix, once you have inserted into your model's Airloop, you will have to edit the osm file at the object OS:Coil:Heating:Desuperheater field !- Heating Source Name; add the UUID for the cooling coil of the new AirLoopHVAC:UnitarySystem (field !- Cooling Coil Name).

Edit: On second thought, this does not appear to function as a true hot gas reheat. Per the Desuperheater documentation it "does not impact the performance of the compressor." This seems to indicate that it strictly only takes advantage of the superheat of the refrigerant.

edit flag offensive delete link more

Comments

See my udpate to the original post. My summary upshot is that Coil:Cooling:DX:TwoStage:WithHumidityControlMode works well, but it cannot do hot gas reheat. Adding a Coil:Heating:Desuperheater may seem like the answer, but I believe it always runs at 25% or 30% of the cooling capacity, i.e. is essentially uncontrolled, and as a result does not lead to success. The Coil:Cooilng:DX does seem to do hot gas reheat, at least it has a "recovered heat" output. It doesn't recover a whole lot (pink lines in plots above), but I believe it tries, and also leads to controlled temperature and humidity.

mattkoch's avatar mattkoch  ( 2026-07-15 20:46:35 -0500 )edit

In general, thank you Ski90Moo and rraustad for engaging on this question! I very much appreciate it. It is always priceless to have a sounding board.

mattkoch's avatar mattkoch  ( 2026-07-15 20:48:30 -0500 )edit

All good feedback @mattkoch. Thanks for sharing.

Ski90Moo's avatar Ski90Moo  ( 2026-07-18 01:49:06 -0500 )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

1 follower

Stats

Asked: 2026-06-30 21:02:49 -0500

Seen: 743 times

Last updated: Jul 17