-
Notifications
You must be signed in to change notification settings - Fork 208
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HeatExchangerAirToAirSensibleAndLatent normalization divisor error #5145
Comments
I'm guessing the issue might be VT, or maybe a backward-compatible setter. I can't reproduce with model include OpenStudio::Model
m = Model.new
# Hx does not have curves assigned yet
hx = HeatExchangerAirToAirSensibleAndLatent.new(m)
puts hx
OS:HeatExchanger:AirToAir:SensibleAndLatent,
{8c6f9457-55f0-4773-9e9a-7a90368cdbd9}, !- Handle
Heat Exchanger Air To Air Sensible And Latent 2, !- Name
{ace21dbd-41a6-4465-b0d2-1e263620a860}, !- Availability Schedule
autosize, !- Nominal Supply Air Flow Rate {m3/s}
0.76, !- Sensible Effectiveness at 100% Heating Air Flow {dimensionless}
0.68, !- Latent Effectiveness at 100% Heating Air Flow {dimensionless}
0.76, !- Sensible Effectiveness at 100% Cooling Air Flow {dimensionless}
0.68, !- Latent Effectiveness at 100% Cooling Air Flow {dimensionless}
, !- Supply Air Inlet Node
, !- Supply Air Outlet Node
, !- Exhaust Air Inlet Node
, !- Exhaust Air Outlet Node
0, !- Nominal Electric Power {W}
Yes, !- Supply Air Outlet Temperature Control
Plate, !- Heat Exchanger Type
None, !- Frost Control Type
1.7, !- Threshold Temperature {C}
, !- Initial Defrost Time Fraction {dimensionless}
, !- Rate of Defrost Time Fraction Increase {1/K}
Yes, !- Economizer Lockout
, !- Sensible Effectiveness of Heating Air Flow Curve Name
, !- Latent Effectiveness of Heating Air Flow Curve Name
, !- Sensible Effectiveness of Cooling Air Flow Curve Name
; !- Latent Effectiveness of Cooling Air Flow Curve Name
hx.assignHistoricalEffectivenessCurves
m.getTableLookups.map{|t| [t.nameString, t.normalizationDivisor]}.to_h
=> {"Heat Exchanger Air To Air Sensible And Latent 1_LatCoolEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_SensCoolEff"=>0.76,
"Heat Exchanger Air To Air Sensible And Latent 1_LatHeatEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_SensHeatEff"=>0.76} Can't do it either with the backward-compatible setters... m = Model.new
hx = HeatExchangerAirToAirSensibleAndLatent.new(m)
hx.setSensibleEffectivenessat75HeatingAirFlow(0.68)
hx.setLatentEffectivenessat75HeatingAirFlow(0.68)
hx.setSensibleEffectivenessat75CoolingAirFlow(0.68)
hx.setLatentEffectivenessat75CoolingAirFlow(0.68)
m.getTableLookups.map{|t| [t.nameString, t.normalizationDivisor]}.to_h
=> {"Heat Exchanger Air To Air Sensible And Latent 1_LatCoolEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_SensCoolEff"=>0.76,
"Heat Exchanger Air To Air Sensible And Latent 1_LatHeatEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_SensHeatEff"=>0.76} |
Can't reproduce either via VT. /usr/local/openstudio-3.7.0/bin/openstudio -e "m = OpenStudio::Model::Model.new; hx = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(m); m.save('test.osm')" [1] test(main)> OpenStudio.openStudioLongVersion
=> "3.8.0-beta+d2f0bdd21a"
[2] test(main)> m = osload('test.osm')
=> #<OpenStudio::Model::Model:0x00007f15f8477b00 @__swigtype__="_p_openstudio__model__Model">
[3] test(main)> m.getTableLookups.map{|t| [t.nameString, t.normalizationDivisor]}.to_h
=> {"Heat Exchanger Air To Air Sensible And Latent 1_LatCoolEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_LatHeatEff"=>0.68,
"Heat Exchanger Air To Air Sensible And Latent 1_SensCoolEff"=>0.76,
"Heat Exchanger Air To Air Sensible And Latent 1_SensHeatEff"=>0.76} |
Apparently it's going to be fixed on openstudio-standards. |
Reopening this issue, because it is still possible to cause a divide by zero error in a common use case of the air to air HX:
creates a model with a Table with a 0 normalization divisor:
A proposed solution is to check if the effectiveness is zero, and don't create the air flow curve if so. |
The problem is what we copied the E+ idd blindly, and it does not have any constraints on the value it accepts at all. I will reject 0. |
#5145 - HeatExchangerAirToAirSensibleAndLatent normalization divisor error
Issue overview
@mdahlhausen reported an issue where the Normalization Divisor is zero at #5099 (comment)
Need to determine what's causing this and ensure it doesn't happen.
Current Behavior
Expected Behavior
Steps to Reproduce
@mdahlhausen can you please help here?
Possible Solution
Details
Environment
Some additional details about your environment for this issue (if relevant):
Context
The text was updated successfully, but these errors were encountered: