Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion src/EnergyPlus/HVACVariableRefrigerantFlow.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13965,10 +13965,27 @@ void VRFCondenserEquipment::VRFOU_CalcCompC(EnergyPlusData &state,
ShowContinueErrorTimeStamp(state, "");
ShowContinueError(state, format(" Iteration limit [{}] exceeded in calculating OU evaporating temperature", MaxIter));
} else if (SolFla == -2) {
this->LowLoadTeError++;
if (LowLoadTeError < 5) {
ShowWarningMessage(state,
format("{}: no Te solution was found for {} f({})={} and f({})={} are the same sign",
RoutineName,
this->Name,
MinOutdoorUnitTe,
f(MinOutdoorUnitTe),
T_suction,
f(T_suction)));
ShowContinueErrorTimeStamp(state, "");
}
ShowRecurringWarningErrorAtEnd(state,
"Low load calculation Te solution not found as end points have the same sign",
this->LowLoadTeErrorIndex,
SolFla,
SolFla);
if (f(T_suction) < 0) {
// demand < capacity at both endpoints of the Te range, assuming f(x) is roughly monotonic than this is the low load case
// TeTol is added to prevent the final updated Te to go out of bounds
SmallLoadTe = 6 + TeTol; // MinOutdoorUnitTe; //SmallLoadTe( Te'_new ) is constant during iterations
SmallLoadTe = MinOutdoorUnitTe + TeTol; // MinOutdoorUnitTe; //SmallLoadTe( Te'_new ) is constant during iterations
} else {
// demand > capacity at both endpoints of the Te range, take the end point x where f(x) is closer to zero
if (f(MinOutdoorUnitTe) > f(T_suction)) { // f(T_suction > 0, not equal as SolFla will not be -2
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/HVACVariableRefrigerantFlow.hh
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,8 @@ namespace HVACVariableRefrigerantFlow {
int CoolCapFTErrorIndex = 0; // warning message index
int HeatEIRFPLRErrorIndex = 0; // warning message index
int CoolEIRFPLRErrorIndex = 0; // warning message index
int LowLoadTeError = 0;
int LowLoadTeErrorIndex = 0; // warning message index
// The following are for the Algorithm Type: VRF model based on physics, applicable for Fluid Temperature Control
int AlgorithmIUCtrl; // VRF indoor unit contrl algorithm, 1-High sensible, 2-Te/Tc constant
Array1D<Real64> CompressorSpeed; // compressor speed array [rps]
Expand Down
2 changes: 1 addition & 1 deletion tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13363,7 +13363,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest)
EXPECT_NEAR(5645.5696, thisVRFTU.TotalCoolingRate, 0.0001);
EXPECT_NEAR(84.8359, thisFan->totalPower, 0.0001);
EXPECT_NEAR(thisDXCoolingCoil.TotalCoolingEnergyRate, (thisVRFTU.TotalCoolingRate + thisFan->totalPower), 0.0001);
EXPECT_NEAR(0.4619, state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio, 0.0001);
EXPECT_NEAR(0.4772, state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio, 0.0001);
EXPECT_NEAR(state->dataHVACVarRefFlow->VRF(1).OUFanPower,
state->dataHVACVarRefFlow->VRF(1).RatedOUFanPower * state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio,
0.0001);
Expand Down
Loading