-
Notifications
You must be signed in to change notification settings - Fork 396
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
Zone Air Terminal VAV Damper Position variable is always zero for VAV Rheat with VS Fan air terminal #7696
Conversation
Diffs are expected in report variable Zone Air Terminal VAV Damper Position for AirTerminal:SingleDuct:VAV:Reheat:VariableSpeedFan object only. The only input files expected to be impacted by this change are 5ZoneSupRetPlenRAB and 5ZoneSupRetPlenVSATU. |
@@ -4463,6 +4463,7 @@ namespace SingleDuct { | |||
Par(7) = double(FanOp); | |||
Par(8) = QTotLoad; | |||
SolveRoot(UnitFlowToler, 50, SolFlag, FracDelivered, VAVVSHCFanOnResidual, 0.0, 1.0, Par); | |||
MassFlow = Node(SysInletNode).MassFlowRate; |
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.
Set MassFlow variable to current inlet node mass flow rate to avoid uninitialized variable warning. MassFlow local variable is now used to calculate damper position further down in this function.
Sys(SysNum).DamperPosition = 0.0; | ||
} else { | ||
Sys(SysNum).DamperPosition = MassFlow / Sys(SysNum).AirMassFlowRateMax; | ||
} |
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.
calculate the vav damper position for reporting purpose
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 the unit test below exercises this calculation.
src/EnergyPlus/SingleDuct.cc
Outdated
SysOutlet(SysNum).AirMassFlowRate = MassFlow; | ||
SysOutlet(SysNum).AirMassFlowRateMaxAvail = SysInlet(SysNum).AirMassFlowRateMaxAvail; | ||
SysOutlet(SysNum).AirMassFlowRateMinAvail = SysInlet(SysNum).AirMassFlowRateMinAvail; | ||
SysOutlet(SysNum).AirEnthalpy = SysInlet(SysNum).AirEnthalpy; |
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.
Set the SysOutlet variable for use in the UpdateSys() function. This fix will be revised in the next push to include the flow variables only.
EXPECT_EQ(SysMinMassFlowRes, thisAirTerminal.AirMassFlowRateMax * thisAirTerminal.ZoneMinAirFrac); | ||
EXPECT_EQ(SysMinMassFlowRes, thisAirTerminalOutlet.AirMassFlowRate); | ||
} | ||
|
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.
The unit test checks user inputs and the damper position at the min flow rate. prior to the fix, the thisAirTerminal.DamperPosition variable was always zero.
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.
👍 Great unit test.
Sys(SysNum).DamperPosition = MassFlow / Sys(SysNum).AirMassFlowRateMax; | ||
} | ||
// update the air terminal outlet node data | ||
UpdateSys(SysNum); |
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.
Allows to propagate the node information such as CO2 and contaminant.
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.
Surprising this doesn't throw any more diffs, but no worries.
Is there a reason that these diffs are not showing up in the final CI results. CI is looking fully clean 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.
No problems with these changes. I'm building locally and this can go in assuming all is well.
Sys(SysNum).DamperPosition = 0.0; | ||
} else { | ||
Sys(SysNum).DamperPosition = MassFlow / Sys(SysNum).AirMassFlowRateMax; | ||
} |
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 the unit test below exercises this calculation.
Sys(SysNum).DamperPosition = MassFlow / Sys(SysNum).AirMassFlowRateMax; | ||
} | ||
// update the air terminal outlet node data | ||
UpdateSys(SysNum); |
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.
Surprising this doesn't throw any more diffs, but no worries.
EXPECT_EQ(SysMinMassFlowRes, thisAirTerminal.AirMassFlowRateMax * thisAirTerminal.ZoneMinAirFrac); | ||
EXPECT_EQ(SysMinMassFlowRes, thisAirTerminalOutlet.AirMassFlowRate); | ||
} | ||
|
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.
👍 Great unit test.
I do see from the unit test coverage results that the unit tests do not cover the cases when |
OK, built this locally with no issues. Ran 5ZoneSupRetPlenRAB and compared against develop. I see in develop that |
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.