-
Notifications
You must be signed in to change notification settings - Fork 425
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
Variable speed coils can have higher flow rate than Packaged Terminal unit and fan #5723
Conversation
…e variables are set correctly. Make assertions into real, informative errors.
@rraustad @mjwitte @EnergyArchmage Here is the PR for the mass balance checks and the corresponding fixes. So far I've only taken care of the PTHP issue discussed in #5632, but I anticipate others may fall out after iterating with the CI. I changed the assertions to fatal errors and added the tolerance as @mjwitte suggested. This should clear out some (hopefully most?) of the failed integration tests. I'll keep you posted if I discover anything new. |
PTUnit( PTUnitNum ).MSCoolingSpeedRatio( Iter ) = VarSpeedCoil( PTUnit( PTUnitNum ).DXCoolCoilIndexNum ).MSRatedAirVolFlowRate( Iter ) / VarSpeedCoil( PTUnit( PTUnitNum ).DXCoolCoilIndexNum ).MSRatedAirVolFlowRate( PTUnit( PTUnitNum ).NumOfSpeedCooling ); | ||
PTUnit( PTUnitNum ).CoolVolumeFlowRate( Iter ) = PTUnit( PTUnitNum ).MaxCoolAirVolFlow * PTUnit( PTUnitNum ).MSCoolingSpeedRatio( Iter ); |
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.
@rraustad this is the change I ended up making. I believe this is in line with the changes you had in mind, but you might want to look them over to be sure.
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 is what I was thinking, but it does scare me a bit. Off design flow rates only work up to a point.
src/EnergyPlus/HVACManager.cc
Outdated
@@ -515,6 +518,8 @@ namespace HVACManager { | |||
|
|||
ManageEMS( emsCallFromEndSystemTimestepBeforeHVACReporting, anyEMSRan ); // EMS calling point | |||
|
|||
CheckMassBalances(); |
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.
So this is staying?
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.
It shouldn't add any significant time to the simulation, and we should always be checking for mass conservation problems. There bay be a better time to check these. Ideas?
I've tried several times and can't pull this branch:
|
@rraustad I got the same problem when I switched branch. The branch with the problem was created by me. It may contain not-allowed characters. If possible, you may close the branch. I don't know how to close it. I can create it late. |
Deleted that branch, now it's OK |
…servation-tests
src/EnergyPlus/HVACManager.cc
Outdated
|
||
if (abs(Node( Fan( FanNum ).OutletNodeNum ).MassFlowRate - Fan( FanNum ).OutletAirMassFlowRate) > SmallMassFlow) { | ||
ShowFatalError(Fan(FanNum).FanType + ", Name: " + Fan(FanNum).FanName + ": Fan outlet mass flow rate (" + RoundSigDigits(Fan( FanNum ).OutletAirMassFlowRate, 4) + ") does not match outlet node mass flow rate (" + RoundSigDigits(Node( Fan( FanNum ).OutletNodeNum ).MassFlowRate, 4) + ")."); | ||
} |
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 see no need for these. Either outlet = inlet or it doesn't.
… into conservation-tests
These changes are fundamentally what I expected. The parent design flow can be different than the child rated flow. And if so, the child coil rides the capacity and EIR as a function of flow fraction curve. This is how it's supposed to work, but what worries me is the capacity/flow relationship. I guess we allow that for other coil types so let's see what happens here. |
So where's the CI, on vacation? I'm pushin up a change and we can argue what the end result should look like. |
PTUnit( PTUnitNum ).MaxCoolAirMassFlow = RhoAir * PTUnit( PTUnitNum ).MaxCoolAirVolFlow; | ||
PTUnit( PTUnitNum ).MaxHeatAirMassFlow = RhoAir * PTUnit( PTUnitNum ).MaxHeatAirVolFlow; | ||
|
||
if ( PTUnit( PTUnitNum ).useVSCoilModel && PTUnit( PTUnitNum ).NumOfSpeedCooling == 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.
So what is "PTUnit( PTUnitNum ).NumOfSpeedCooling == 0" supposed to mean here?
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.
It must be NumOfSpeedCooling > 0 for multispeed, and = 0 for VS? Or that the speed variables have not be calculated yet?
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.
Good question. This was already here when I found it. @EnergyArchmage?
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.
yes, it is NumOfSpeedCooling > 0 for multispeed, and = 0 for VS. I think these have been moving to use the bool over time, moving away from == 0 for VS, but it still lingers.
I've looked at this back and forth and don't see any issue with Neal's logic. Can't wait to see some results. |
@rraustad Regarding CI, it's been messed up since sometime late Thursday. @Myoldmopar is working on it. |
Results are coming back. There are 8 testfiles with mass balance problems (with links to the problem parent objects):
|
@nealkruis @rraustad What is the status on this PR? Is it ready for final review and merge? Since the mass balance checks were moved out of here, the overview at the top needs to be revised. |
Not sure what to do with this one. I believe the change made to the VS DX coil altered the model where the Field: Nominal Speed Level is no longer used as intended (see Jul 18 comment above). |
@rraustad The Nominal Speed Level is still used to determine the actual capacities and air flow rates of the various speeds from the catalogue data (see the VS coil docs). This happens in VariableSpeedCoils.cc when the input is processed. In my understanding, the nominal rating values shouldn't be used elsewhere in the simulation (e.g., PackagedTerminalHeatPump.cc, or HVACUnitarySystem.cc). @mjwitte I think the same change needs to happen in any parent object that uses variable speed coils (both heating and cooling). I don't have time immediately to look into this, but perhaps someone else can? |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
4 similar comments
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 42 days since this pull request was last updated. |
@nealkruis @lgentile it has been 15 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
4 similar comments
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
@nealkruis @lgentile it has been 14 days since this pull request was last updated. |
Now running into this same thing with UnitarySystem. The VS coil "Rated" volume flow rate, if autosized, is the same as MSRatedAirVolFlowRate(MaxSpeed). If it's not autosized, then these are different. Then in the parent object the ratio of Rated to MSRated is used. This change uses the ratio as MSRated(x) to MSRated(max) and fixes the problem. Still very wary but this change looks good at this point. |
…servation-tests
This change is consistent with what I saw with UnitarySystem. I am also keeping a close eye on VS coil performance and sizing. |
Pull request overview
Add exceptions for mass imbalances. Correct problems as found in CI, such as:
Work Checklist
Review Checklist