IronBug VRF + DOAS template exports OA flow as Autosize instead of fixed room values

Hi @MingboPeng

I’m modeling a school building using Honeybee + IronBug. The full model has around 88 thermal zones, and I am using a VRF + DOAS setup created with IronBug.

The intended system is:

VRF terminal units → zone cooling/heating

DOAS / ventilation loop:
Outdoor air → constant volume fan → single duct constant volume no reheat air terminals → zones

The DOAS is meant to be a simple outdoor air ventilation system, without heat recovery and without cooling/heating coils. The VRF handles the zone loads.

I calculated a fixed outdoor air flow rate for each room, for example:

SESI-3LEV-CLASSROOM_1 = 0.305385 m³/s
SESI-3LEV-COMPUTERS_1 = 0.314520 m³/s
SESI-2LEV-OFFICE_2 = 0.031789 m³/s

In Grasshopper/IronBug, I assigned these values to the room air terminals. The fan and air loop received the total system flow rate.

In a simplified test with only one group of 12 rooms, the result seemed correct. However, when I applied the same logic to the complete model with several VRF + DOAS systems, the outdoor air flow started behaving as if it was being autosized.

After checking the exported IDF, I found that the room air terminals were still exported with Autosize:

AirTerminal:SingleDuct:ConstantVolume:NoReheat,
  Air Terminal Single Duct Constant Volume No Reheat 29,
  Always On Discrete,
  Node 147,
  Node 145,
  AutoSize;  !- Maximum Air Flow Rate {m3/s}

The fans were also exported with Autosize:


Fan:ConstantVolume,
  Fan Constant Volume 1,
  Always On Discrete,
  0.7,
  500,
  AutoSize,  !- Maximum Flow Rate {m3/s}
  0.9,
  1,
  Node 1,
  Node 2;

And the ZoneHVAC:TerminalUnit:VariableRefrigerantFlow objects also had the outdoor air fields as Autosize:

Autosize,  !- Cooling Outdoor Air Flow Rate {m3/s}
Autosize,  !- Heating Outdoor Air Flow Rate {m3/s}
Autosize,  !- No Load Outdoor Air Flow Rate {m3/s}

This caused the HTML sizing report, especially:

Outdoor Air Volume Flow Rate at Ideal Loads Peak

to use the autosized/calculated values instead of my fixed room outdoor air values.

I eventually solved the issue by post-processing the exported IDF with a Python script. The script:

1. Sets each AirTerminal:SingleDuct:ConstantVolume:NoReheat
   Maximum Air Flow Rate to the room outdoor air flow.

2. Sets each Fan:ConstantVolume
   Maximum Flow Rate to the total flow of its system.

3. Sets each AirLoopHVAC
   Design Supply Air Flow Rate to the same system total.

4. Sets each ZoneHVAC:TerminalUnit:VariableRefrigerantFlow:
   Cooling Outdoor Air Flow Rate
   Heating Outdoor Air Flow Rate
   No Load Outdoor Air Flow Rate
   to the same room outdoor air flow.

After this correction, the outdoor air results matched the expected values.

My question is:

Is this expected behavior when using IronBug VRF + DOAS, or should IronBug preserve the fixed outdoor air flow values from Grasshopper in the exported IDF?

More specifically:


My main question is:

For a VRF + DOAS system in IronBug, what is the correct way to model a simple fan-only outdoor air system with fixed room-by-room outdoor air flow rates?

Should these fixed OA values be written only to the DOAS air terminals, or also to the VRF terminal outdoor air flow fields?

And if the air terminal, fan, and air loop flow rates are explicitly set in Grasshopper, should they be exported as fixed values in the IDF instead of Autosize?

One thing I noticed in the full model is that the IDF had many OutdoorAir:Mixer objects related to the VRF terminals, but no AirLoopHVAC:OutdoorAirSystem or Controller:OutdoorAir:

OutdoorAir:Mixer = 88
AirLoopHVAC:OutdoorAirSystem = 0
Controller:OutdoorAir = 0
Controller:MechanicalVentilation = 0

So I am not sure whether the DOAS part of the system is being represented as a true outdoor air system at the air loop level, or whether EnergyPlus is still mainly relying on the VRF terminal outdoor air fields.

Thanks for any guidance. I would like to know whether my Python post-processing workaround is the correct approach for now, or if there is a better way to set this up directly in IronBug/Honeybee.

Hi @LuizHVAC ,

Thanks for your detailed summary.

Is this expected behavior when using IronBug VRF + DOAS, or should IronBug preserve the fixed outdoor air flow values from Grasshopper in the exported IDF?

Ironbug should be using the fixed outdoor airflow value if you have it set correctly, and carried to the IDF, unless there is a conflict somewhere that OpenStudio detected and resets it to autoside.

Have you tried using the same fixed value for both the air terminal and fan at the same time in DOAS?

For a VRF + DOAS system in IronBug, what is the correct way to model a simple fan-only outdoor air system with fixed room-by-room outdoor air flow rates?

Ensure the DOAS system’s sizing system only sized for ventilationRequirement.

For the VRF, remove or hard size any outdoor ventilation-related value to 0, so that it is only used for heating and cooling.

Should these fixed OA values be written only to the DOAS air terminals,

Yes

or also to the VRF terminal outdoor air flow fields?

No, set them all to 0.

And if the air terminal, fan, and air loop flow rates are explicitly set in Grasshopper, should they be exported as fixed values in the IDF instead of Autosize?

Yes.

If you still find the exported OSM/IDF ignores the fixed value, please provide me a minimal GH sample file that creates this error, so that I can have a deeper dig to figure out what’s going on.