NREL / OpenStudio

OpenStudio is a cross-platform collection of software tools to support whole building energy modeling using EnergyPlus and advanced daylight analysis using Radiance.
https://www.openstudio.net/
Other
494 stars 188 forks source link

Default Cooling Coil should be CounterFlow #4772

Open macumber opened 1 year ago

macumber commented 1 year ago

Issue overview

The default cooling coil OS:Coil:Cooling:Water from the HVAC library has Heat Exchanger Configuration as nil. This is correct and should be translated to EnergyPlus as the default (CounterFlow for cooling coils).

Current Behavior

When translated to EnergyPlus, the default field is translated to EnergyPlus as CrossFlow instead of the IDD default CounterFlow .

Expected Behavior

When translated to EnergyPlus, the default field is translated to EnergyPlus as the IDD default CounterFlow .

Steps to Reproduce

  1. Create air loop with OS:Coil:Cooling:Water, leave Heat Exchanger Configuration blank
  2. Translate to EnergyPlus

Possible Solution

Respect IDD default on translation or remove IDD default

Details

Originally reported at https://github.com/openstudiocoalition/OpenStudioApplication/issues/581 by @Ski90Moo

jmarrec commented 1 year ago

The IDD default in E+ has always been CounterFlow, at least since E+ 7.2.0.

The confusion probably came from the documentation (Input/Output reference), that was changed in E+ 8.9

E+ 8.8 and below:

https://bigladdersoftware.com/epx/docs/8-8/input-output-reference/group-heating-and-cooling-coils.html#field-heat-exchanger-configuration-000

The coil is operable in two modes, Cross Flow for general A/C applications and Counter flow mode. Air-conditioning systems generally use cross flow heat exchangers, hence the default is set to cross flow

E+ 8.9:

https://bigladdersoftware.com/epx/docs/8-9/input-output-reference/group-heating-and-cooling-coils.html#field-heat-exchanger-configuration-000

The coil is operable in two modes, Cross Flow for general A/C applications and Counter Flow mode. Air-conditioning systems generally use cross flow heat exchangers. The default is set to Counter Flow mode

E+ 9.1:

https://bigladdersoftware.com/epx/docs/9-1/input-output-reference/group-heating-and-cooling-coils.html#field-heat-exchanger-configuration-000

The coil is operable in two configurations: CounterFlow or CrossFlow. Chilled water coils are generally built as counter-flow. The default is CounterFlow..

E+ 9.2 till today:

https://bigladdersoftware.com/epx/docs/9-2/input-output-reference/group-heating-and-cooling-coils.html#field-heat-exchanger-configuration-000

The coil is operable in two configurations: CounterFlow or CrossFlow. Chilled water coils are generally built as counter-flow. The default is CounterFlow. The detailed NTU-Effectiveness relationships for each flow setting are described in the Engineering Reference, Section ‘Effectiveness Equations’ in ‘Simulation Models - Encyclopedic Reference: Coil’ chapter.

jmarrec commented 1 year ago

OpenStudio.idd

OS:Coil:Cooling:Water,
  [...]
  A9; \field Heat Exchanger Configuration
       \type choice
-      \default CrossFlow
       \key CrossFlow
       \key CounterFlow

E+ 7.2.0 Energy+.idd until today:

Coil:Cooling:Water,
  [...]
  A8 , \field Heat Exchanger Configuration
       \type choice
       \key CrossFlow
       \key CounterFlow
+      \default CounterFlow

I'm not very inclined to change the default now. This is going to create a few problems:

The key thing is that we are EXPLICITLY setting the HX Configuration in the IDF. I would definitely address the issue if we didn't do that and we had different IDD defaults between OS SDK and E+ IDF as it would be VERY confusing.

m = Model.new
cc = CoilCoolingWater.new(m)
raise if cc.heatExchangerConfiguration != "CrossFlow" 
puts cc

=> OS:Coil:Cooling:Water,
  {93ce03ac-42af-4d89-ba0f-87a29aebcb42}, !- Handle
  Coil Cooling Water 1,                   !- Name
  [...]
  ,                                       !- Type of Analysis
  ;                                       !- Heat Exchanger Configuration

p = PlantLoop.new(m)
p.addDemandBranchForComponent(cc)
ft = OpenStudio::EnergyPlus::ForwardTranslator.new
w = ft.translateModel(m)
puts w.getObjectsByType("Coil:Cooling:Water")

=> Coil:Cooling:Water,
  Coil Cooling Water 1,                   !- Name
  [...]
  SimpleAnalysis,                         !- Type of Analysis
  CrossFlow;                              !- Heat Exchanger Configuration