Correct AirloopHVAC:OutdoorAirSystem water heating coil control for second HW coil - #11759
Conversation
| RatedVolFlowPerRatedTotCap = DesVolFlow / this->autoSizedValue; | ||
| } | ||
| if (RatedVolFlowPerRatedTotCap < HVAC::MinRatedVolFlowPerRatedTotCap[(int)state.dataHVACGlobal->DXCT]) { | ||
| if (RatedVolFlowPerRatedTotCap > 0.0 && RatedVolFlowPerRatedTotCap < HVAC::MinRatedVolFlowPerRatedTotCap[(int)state.dataHVACGlobal->DXCT]) { |
There was a problem hiding this comment.
Fixes a divide by 0 error where this->autoSizedValue = 0 = coil capacity. When air flow sizes to 0, capacity will also be 0. There is no reason to show a flow limiting warning if air flow = 0.
| ", DataFlowUsedForSizing and DataCapacityUsedForSizing " + this->sizingString + | ||
| " must both be greater than 0."; | ||
| this->errorType = AutoSizingResultType::ErrorType1; | ||
| // this->errorType = AutoSizingResultType::ErrorType1; |
There was a problem hiding this comment.
A fatal when SHR can't be calculated because capacity = 0. Go ahead and show the message, but don't fatal out the simulation. For large models it is likely that some coils would size to 0, this defect file included.
| state, | ||
| std::format("Sizing: {} {} has zero rated total capacity", HVAC::coilTypeNames[(int)thisDXCoil.coilType], thisDXCoil.Name)); | ||
| ErrorsFound = true; | ||
| //ErrorsFound = true; |
There was a problem hiding this comment.
A few more warnings for 0 air flow stopped the program. I could revert these out but there is no good reason not to allow a coil to size to 0. A user should see this result in err, eio and table files.
|
|
Defect file transitioned and modified (not all errors were corrected) as 6934-NTC PROP AEM 100 nopreheat test.zip The defect file works correctly now. The air loops have complex OA system equipment lists with more than 1 HW coil in some of these lists. The second HW coil never turns on. This boils down to the logic used to check the controllers attached to each water coil. Those in the air loop and those in the OA system equipment list. In develop, the second HW coil does not turn on. Since these water coils are in the OA system, the coils should still turn on when economizer is active (existing assumption). The logic only looked for the first HW coil. This was changed to check each coil in the list. The right figure at the bottom shows the economizer is active.
This branch shows both HW coils turning on. And the 2nd HW coil tracking it's outlet node set point temperature.
|
|
|
|
|
| nonLockoutCoilFound = true; | ||
| break; | ||
| } | ||
| break; |
There was a problem hiding this comment.
Existing logic skipped any HW coils after the first was found, regardless if nodes matched.
|
|
|
|
|
@mitchute this is ready unless there is desire to stop the simulation if coil flow rate or capacity = 0. I don't think the simulation should care if a coil sizes to 0. There is no energy penalty whether this system is present or not. And it would be a lot of unnecessary work to remove those 0-sized systems from an input file of this size, just to see results. |
I agree |
| RatedVolFlowPerRatedTotCap = | ||
| (thisDXCoil.RatedTotCap(Mode) > 0.0) ? (thisDXCoil.RatedAirVolFlowRate(Mode) / thisDXCoil.RatedTotCap(Mode)) : 0.0; |
There was a problem hiding this comment.
I added this guard in a couple other similar places.
| } else if (thisDXCoil.coilType == HVAC::CoilType::CoolingVRFFluidTCtrl) { | ||
| CalcVRFCoolingCoil_FluidTCtrl( | ||
| state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, Constant::MaxCap); | ||
| if (thisDXCoil.RatedTotCap(Mode) > 0.0) { |
There was a problem hiding this comment.
Another similar guard since we're not fataling out early now.
| break; | ||
| } |
|
|
|
This one is ready. Merging. |






Pull request overview
Description of the purpose of this PR
Corrected logic to allow more than 1 water heating coil in outdoor air system to operate
Pull Request Author
Reviewer