-
Notifications
You must be signed in to change notification settings - Fork 393
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
Address VS DX cooling coil outlet air condition calculation problem when PLR is zero #8607
Conversation
if ((PartLoadRatio > 0.0 && CyclingScheme == ContFanCycCoil) || (CyclingScheme == CycFanCycCoil)) { | ||
// calculate coil outlet state variables | ||
state.dataVariableSpeedCoils->LoadSideOutletEnth = state.dataVariableSpeedCoils->LoadSideInletEnth - state.dataVariableSpeedCoils->QLoadTotal / state.dataVariableSpeedCoils->LoadSideMassFlowRate; | ||
state.dataVariableSpeedCoils->LoadSideOutletDBTemp = state.dataVariableSpeedCoils->LoadSideInletDBTemp - state.dataVariableSpeedCoils->QSensible / (state.dataVariableSpeedCoils->LoadSideMassFlowRate * CpAir); |
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.
Avoids calculating the VS DX cooling coil when the compressor PLR is zero and the fan operating mode is ContFanCycCoil. Otherwise, allowing it sometimes may result in very cold coil outlet air condition that leads to psychometric error message.
@@ -2702,6 +2702,9 @@ TEST_F(ZoneUnitarySysTest, UnitarySystemModel_MultispeedPerformance) | |||
bool const ZoneEquipment = true; | |||
Real64 sensOut = 0.0; | |||
Real64 latOut = 0.0; | |||
|
|||
// this setup is a continuous fan cycling coil op mode | |||
thisSys->m_FanOpMode = DataHVACGlobals::ContFanCycCoil; |
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.
Added this to correct a failing unit test.
state.dataVariableSpeedCoils->LoadSideOutletHumRat = PsyWFnTdbH(state, state.dataVariableSpeedCoils->LoadSideOutletDBTemp, state.dataVariableSpeedCoils->LoadSideOutletEnth, RoutineName); | ||
if (state.dataVariableSpeedCoils->LoadSideOutletHumRat > MaxHumRat) { | ||
state.dataVariableSpeedCoils->LoadSideOutletHumRat = MaxHumRat; | ||
} |
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 part of the same change.
EXPECT_NEAR(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirDBTemp, 5.79484, 0.00001); | ||
EXPECT_NEAR(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirHumRat, 0.00810, 0.00001); | ||
EXPECT_NEAR(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirEnthalpy, 26170.26, 0.01); | ||
} |
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.
New unit test.
// check coil outlet and inlet air conditions match | ||
EXPECT_EQ(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirDBTemp, state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).InletAirDBTemp); | ||
EXPECT_EQ(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirHumRat, state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).InletAirHumRat); | ||
EXPECT_EQ(state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletAirEnthalpy, state->dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).InletAirEnthalpy); |
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 shows the coil outlet node air condition matches that of the inlet air condition when the PLR is zero.
This is branch is ready for review. |
@Nigusse Is there a defect file for this? Any before/after results to look at? |
@mjwitte defect file is attached. This is the same defect file we used for issue #8497. I just run the defect file before and after the fix. The fix has eliminated the error message from CalcVarSpeedCoilCooling() function, where this fix was done but there is also the same error message coming from calls made in other unknowm function. But the recurring error message has reduced. Before the fix:
After the fix:
|
@Nigusse Thanks. Is there a significant impact on energy use or leaving node conditions? |
@mjwitte Let me run annual simulation and get back to you. |
@mjwitte Annual energy consumption are identical. Based on the code changes energy use and DX coil outlet condition difference is not expected. |
@mjwitte I will merge in develop and push the branch. |
@Nigusse Oh, ok, that's good. But I'm confused, why is there no change in coil outlet condition? Was this calculation being overwritten later when the coil figures out it was off? I guess it would help if I open the full source file. |
@mjwitte Yes, that is correct. |
The benefit of this fix are avoid execcuting a code section that is not necessary when the PLR is zero and a continuous fan with VS cooling coil, thereby reduces the burden of computation and eliminates the PSych warning messages. |
Building failed due to new unit test that needs updating to match some new dataLoopNodes globals. This is corrected now, built and ran the unit test suite locally, and all passed. I will push updated branch shortly. |
@Nigusse This looks good except the "unknown" psych errors are bothersome. These are happening here in |
@mjwitte For now I will add the RoutineName only. |
That works for me. |
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.
@mjwitte I was suspicious because the line# where you commented was different but ended convincing myself that it was the correct one. I was switching between between branches working on the two issues. |
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 itCheck any new function arguments for performance impactsVerify IDF naming conventions and styles, memos and notes and defaultsIf new idf included, locally check the err file and other outputs