-
Notifications
You must be signed in to change notification settings - Fork 425
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Addressed idle/noload air flow rate for variable and multi speed coils of unitary system #7919
Conversation
Created and uploaded defect files. |
src/EnergyPlus/UnitarySystem.cc
Outdated
if (MSHPIndex > -1) { | ||
// set no load air flow ratio local var | ||
Real64 NoLoadCoolingAirFlowRateRatio = 1.0; | ||
Real64 NoLoadHeatingAirFlowRateRatio = 1.0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Move these up outside the if (MSHPIndex > -1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
src/EnergyPlus/UnitarySystem.cc
Outdated
NoLoadHeatingAirFlowRateRatio = min(this->m_NoLoadAirFlowRateRatio, designSpecMSHP[MSHPIndex].heatingVolFlowRatio[0]); | ||
} | ||
this->m_NoLoadAirFlowRateRatio = min(NoLoadCoolingAirFlowRateRatio, NoLoadHeatingAirFlowRateRatio); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then add an else here and use those same 2 variables.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
src/EnergyPlus/UnitarySystem.cc
Outdated
NoLoadHeatingAirFlowRateRatio = VariableSpeedCoils::VarSpeedCoil(this->m_HeatingCoilIndex).MSRatedAirVolFlowRate(1) / MaxSpeedFlowRate; | ||
} | ||
} | ||
NoLoadFractionForVarSpeedCoils = min(NoLoadCoolingAirFlowRateRatio, NoLoadHeatingAirFlowRateRatio); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and store this fraction in this->m_NoLoadAirFlowRateRatio instead of NoLoadFractionForVarSpeedCoils
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. I was thinking that some of the other sizing method for no-load flow might need this variable but may be not.
src/EnergyPlus/UnitarySystem.cc
Outdated
DataSizing::DataFractionUsedForSizing = NoLoadFractionForVarSpeedCoils; | ||
} else { | ||
DataSizing::DataFractionUsedForSizing = this->m_NoLoadAirFlowRateRatio; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then you don't need this if block
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not need this block if I am not using this variable for the other sizing methods. Removed.
Sample results before and after the fix:
|
this->m_NoLoadAirFlowRateRatio = min(NoLoadCoolingAirFlowRateRatio, NoLoadHeatingAirFlowRateRatio); | ||
} else { | ||
if (this->m_CoolingCoilType_Num == DataHVACGlobals::Coil_CoolingAirToAirVariableSpeed || | ||
this->m_HeatingCoilType_Num == DataHVACGlobals::Coil_HeatingAirToAirVariableSpeed) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, so now what happens with multispeed and multistage coils and the new cooling coil model (Coil:Cooling:DX)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In all multi/variable speed coil test cases that I run the no-load mass flow rate is minimum flow rate, not the full flow rate. This change allows to determine the minimum flow rate either based on the minimum flow fraction autosized (or hard value user-input) when it is uses multi-speed coils, or based on the flow fraction (ratio of lowest speed flow to maximum speed flow) for variable speed DX coils. This change works fine with the new DX cooling coil as well. One of the unit tests uses the new DX cooling coil. Three of the defect files use the new dx cooling coil model.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then this seems to cover all cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Below is expected diffs from one of the regression tests file (UnitarySystem_MultiSpeedDX.idf) which has a single speed gas heating coil and two speed new DX cooling coil. The no load flow rate is autosized to half of the full flow rate as shown below.
@@ -207,7 +207,7 @@
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Supply Air Flow Rate [m3/s], 0.24830
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Heating Supply Air Flow Rate [m3/s], 0.24830
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Cooling Supply Air Flow Rate [m3/s], 0.24830
- Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.24830
+ Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.12415
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Evaporator Air Flow Rate, 0.24830
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Gross Total Cooling Capacity, 6165.88337
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, User-Specified Rated Condenser Air Flow Rate, 0.00000
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For three speed new dx cooling coil and a single speed electric heating coil, the no-load flow rate sized to 1/3 of the full flow rate as expected and is shown below:
@@ -230,7 +230,7 @@
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Supply Air Flow Rate [m3/s], 0.19125
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Heating Supply Air Flow Rate [m3/s], 0.19125
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Cooling Supply Air Flow Rate [m3/s], 0.19125
- Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.19125
+ Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 6.37490E-002
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Evaporator Air Flow Rate, 0.19125
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Gross Total Cooling Capacity, 3958.37344
Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, User-Specified Rated Condenser Air Flow Rate, 0.00000
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think so based on the tests I have run. I have tested UnitarySystem with UnitarySystemPerformance:Multispeed objects specified for various number of the new DX cooling coil speeds and the old multispeedDXcoils and single speed coils. Also tested the variable speed DX coils without UnitarySystemPerformance:Multispeed objects. All behaved as expected.
Okay, will be fixed along with other documentaion changes. |
This pull request is ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Nigusse Some of new no-load results look correct - they match the DX coil low speed flow rate. But a few cases are close, but not exactly the same.
7862_UnitarySystem_MultiSpeedCoils_SingleMode
Component Sizing Information, AirLoopHVAC:UnitarySystem, DXAC HEAT PUMP 1, User-Specified Cooling Supply Air Flow Rate [m3/s], 1.70000
Component Sizing Information, AirLoopHVAC:UnitarySystem, DXAC HEAT PUMP 1, Design Size No Load Supply Air Flow Rate [m3/s], 0.40800
Component Sizing Information, Coil:Cooling:DX:CurveFit:Speed, HEAT PUMP ACDXCOIL 2 SPEED 1 PERFORMANCE, User-Specified Rated Air Flow Rate [m3/s], 0.40005
7862_UnitarySystem_MultiSpeedDX, Sys1, 3, 4, and 5 match exactly, but Sys2 is off a bit
Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 6.37490E-002
Component Sizing Information, Coil:Cooling:DX:CurveFit:Speed, SYS 2 FURNACE DX COOL COOLING COIL SPEED 1 PERFORMANCE, User-Specified Rated Air Flow Rate [m3/s], 6.37426E-002
Oh, I see now, the UnitarySystem uses the values from the UnitarySystemPerformance:Multispeed object, which simply autosizes the lowest speed ratio to 1/number of speeds. And that doesn't necessarily align with the coil inputs. Maybe it should? But that's not for this PR.
But there is a problem with 7862_UnitarySystem_MultiSpeedDX on the winter design day. There are many new max iteration warnings (see err file diffs).
@@ -271,7 +271,7 @@ \subsubsection{Inputs}\label{inputs-049} | |||
|
|||
\paragraph{Field: No Load Supply Air Flow Rate}\label{field-no-load-supply-air-flow-rate-000} | |||
|
|||
This numeric field defines the supply air flow rate leaving the unitary system in cubic meters per second when neither cooling or heating is required (i.e., main cooling/heating coils and supplemental heater are off but the supply air fan operates). This field is only used when the unitary system operating mode is specified as continuous fan operation. Values must be greater than or equal to 0, or this field is autosizable. If the unitary system operating mode is specified as continuous fan operation and this value is set to zero or this field is left blank, then the model assumes that the supply air flow rate when no cooling/heating is needed is equal to the supply air flow rate when the compressor was last operating (for cooling operation or heating operation). | |||
This numeric field defines the supply air flow rate leaving the unitary system in cubic meters per second when neither cooling or heating is required (i.e., main cooling/heating coils and supplemental heater are off but the supply air fan operates). This field is only used when the unitary system operating mode is specified as continuous fan operation. Values must be greater than or equal to 0, or this field is autosizable. If this field is autosized, then it is sized to the minimum of the heating and cooling lowest speed suppy air flow rate. If the unitary system operating mode is specified as continuous fan operation and this value is set to zero or this field is left blank, then the model assumes that the supply air flow rate when no cooling/heating is needed is equal to the supply air flow rate when the compressor was last operating (for cooling operation or heating operation). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tiny typo: lowest speed suppy air . . .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. @mjwitte Thanks.
@@ -726,7 +726,7 @@ \subsubsection{Inputs}\label{inputs-1-046} | |||
|
|||
\paragraph{Field: No Load Supply Air Flow Rate Ratio}\label{field-no-load-supply-air-flow-rate-ratio} | |||
|
|||
This field defines the no load operating air flow rate when the system fan is specified to operate continuously. The allowed fractions are between 0 and 1 with a default value of 1. The no load air flow rate will be calculated as this fraction multiplied by the minimum of the cooling and heating supply air flow rate. If the cooling or heating coil is not present, this fraction is multiplied by the operating supply air flow rate. | |||
This field defines the no load operating air flow rate when the system fan is specified to operate continuously. The allowed fractions are between 0 and 1 with a default value of 1. This fraction is set to the mimumum of heating and cooling operation lowest speed supply air flow fraction. The no load air flow rate will be calculated as this fraction multiplied by the minimum of the cooling and heating high speed supply air flow rate. If the cooling or heating coil is not present, this fraction is multiplied by the operating supply air flow rate. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"This fraction is set to the minimum . . . " implies that it defaults or autosized to that. But if I understand correctly, the way things are now, the user has to remember to set this to the appropriate fraction, correct?
If I'm following correctly, then perhaps say "This fraction is usually set to the minimum . . . " ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If user has specified the no-load fraction, then user-specified value is used; otherwise, the idle flow fraction is defaulted to lowest speed fraction, which is the speed ratio for multi-speed DX coils. For variable speed DX coils, the no-load flow fraction is set to the lowest speed air flow ratio since we do not have UnitarySystemPerformance:Multispeed object. I will fix the text as suggested.
Merging issues in unit tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doc changes are good. This currently shows a -1.7% speedup, but it looks like develop just got a little faster, so merged in develop for one more round of CI results here.
7862_UnitarySystem_MultiSpeedDX still has max iteration errors, but it also does in Develop. This just seems to exacerbate the problem on the winter design day. Shutting off all OA gets ride of the iteration errors. This just emphasizes the need to fix #6727.
Also, unit test EnergyPlusFixture.FanCoil_FanSystemModelCyclingFanMode
fails locally on Windows (formatting complains because it's being sent an infinite value). Develop fails on this test, also, so nothing due to this branch.
Pull request overview
Pull Request Author
Add to this list or remove from it as applicable. This is a simple templated set of guidelines.
Reviewer
This will not be exhaustively relevant to every PR.
If feature, test running new feature, try creative ways to break itVerify IDF naming conventions and styles, memos and notes and defaultsIf new idf included, locally check the err file and other outputs