Air-cooled chiller sizing can cause RH > 100 warnings. - #11768
Conversation
| if (thisChiller.CondenserType == DataPlant::CondenserType::AirCooled || | ||
| thisChiller.CondenserType == DataPlant::CondenserType::EvapCooled) { | ||
| thisChiller.CondVolFlowRate = 0.0011; // set to avoid errors in calc routine | ||
| } |
There was a problem hiding this comment.
Given the issue, not a good choice. HindSight.
| // sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic | ||
| if (this->CondVolFlowRate == DataSizing::AutoSize && state.dataPlnt->PlantFinalSizesOkayToReport) { | ||
| this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton) | ||
| } |
There was a problem hiding this comment.
Size non-water-cooled condenser air flow to a reasonable value. This info is not reported but is used in a calculation and can trip RH > 100 warnings. So just give the engine a decent (rule-of-thumb) value for condenser air flow rate.
this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)
this->CondMassFlowRateMax = rho * this->CondVolFlowRate;
Real64 CpCond = Psychrometrics::PsyCpAirFnW(state.dataLoopNodes->Node(this->CondInletNodeNum).HumRat);
this->CondOutletTemp = condInletTemp + this->QCondenser / this->CondMassFlowRate / CpCond;
|
Example file is clean (of this issue) now: |
|
|
|
|
|
|
|
The 3 example files with new warnings for the air-cooled chiller should be fixed in this branch. |
|
|
|
|
|
|
…d or blank condenser flow for heat recovery, size zero flow using the 850 cfm/ton estimate, update IDD, and add tests
| if (thisChiller.CondVolFlowRate <= 0.0 && thisChiller.CondVolFlowRate != DataSizing::AutoSize && | ||
| !state.dataIPShortCut->lNumericFieldBlanks(10)) { |
There was a problem hiding this comment.
Added a couple of touch-ups here. This is because the IDD labels this field as \minimum 0.0, but it should probably be \minimum> 0.0
|
|
| } else { | ||
| // sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic | ||
| if (state.dataPlnt->PlantFinalSizesOkayToReport) { | ||
| Real64 const desAirVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton) | ||
| if (this->CondVolFlowRate == DataSizing::AutoSize || this->CondVolFlowRate == 0.0) { | ||
| this->CondVolFlowRate = desAirVolFlowRate; | ||
| BaseSizer::reportSizerOutput( | ||
| state, "Chiller:Electric", this->Name, "Design Size Design Condenser Fluid Flow Rate [m3/s]", this->CondVolFlowRate); | ||
| } else if (std::abs((this->CondVolFlowRate - desAirVolFlowRate) / desAirVolFlowRate) > state.dataSize->AutoVsHardSizingThreshold) { | ||
| ShowWarningError(state, std::format("User-specified Design Condenser Fluid Flow Rate = {:.5f} [m3/s]", this->CondVolFlowRate)); | ||
| ShowContinueError(state, | ||
| std::format("differs from design size design condenser fluid flow rate = {:.5f} [m3/s]", desAirVolFlowRate)); | ||
| ShowContinueError(state, "This may, or may not, indicate mismatched component sizes."); | ||
| ShowContinueError(state, "Verify that the value entered is intended and is consistent with other components."); | ||
| ShowContinueError(state, std::format("Occurs in Electric Chiller object={}", this->Name)); | ||
| BaseSizer::reportSizerOutput( | ||
| state, "Chiller:Electric", this->Name, "Design Size Design Condenser Fluid Flow Rate [m3/s]", desAirVolFlowRate); | ||
| BaseSizer::reportSizerOutput( | ||
| state, "Chiller:Electric", this->Name, "User-Specified Design Condenser Fluid Flow Rate [m3/s]", this->CondVolFlowRate); | ||
| } | ||
| } |
| state.dataLoopNodes->Node(this->CondInletNodeNum).MassFlowRate = this->CondMassFlowRate; | ||
| state.dataLoopNodes->Node(this->CondOutletNodeNum).MassFlowRate = this->CondMassFlowRate; | ||
| } |
There was a problem hiding this comment.
Looks good. The water-cooled nodes are set through PlantUtilities::SetComponentFlowRate.
| } else { | ||
| // sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic | ||
| if (this->CondVolFlowRate == DataSizing::AutoSize && state.dataPlnt->PlantFinalSizesOkayToReport) { | ||
| this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton) | ||
| } | ||
| } |
|
Thanks @rraustad. Merging. |

Pull request overview
Description of the purpose of this PR
Plant chillers calculates a condenser fluid outlet temperature. If the condenser fluid (air) flow rate is not accurately represented then the outlet temperature is not correct. The air-cooled condenser water and outlet air temp are not reported but do set a NODE condition and therefore should be calculated in good faith.
Correction changes: this->CondMassFlowRate to a more reasonable value
Pull Request Author
Reviewer