From 89671cc497fbe427a0b3396afe01b4dfc03f02e8 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 21 Dec 2023 19:27:19 -0800 Subject: [PATCH 01/45] consider cycling in VRF fan power calculation --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index d0e65502f05..58e120ba353 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12492,6 +12492,15 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) this->ElecHeatingPower = 0; } this->VRFCondRTF = VRFRTF; + // consider cycling in fan calculation + for (int TUListNum = 1; TUListNum <= state.dataHVACVarRefFlow->NumVRFTULists; ++TUListNum) { + auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); + for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { + auto &fan = state.dataFans->Fan(state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex); + fan.FanPower *= state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio; + fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; + } + } // Calculate CrankCaseHeaterPower: VRF Heat Pump Crankcase Heater Electric Power [W] if (this->MaxOATCCHeater > OutdoorDryBulb) { From 5a00a65b7e1b3e66987566f90156d47534b3a1f3 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 3 Jan 2024 09:25:08 -0800 Subject: [PATCH 02/45] multiply by coil runtime fraction not VRF RTF --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 58e120ba353..d2be1586450 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12497,8 +12497,17 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { auto &fan = state.dataFans->Fan(state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex); - fan.FanPower *= state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio; - fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; + int heatingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).HeatCoilIndex; + int coolingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).CoolCoilIndex; + auto &heatingCoil = state.dataDXCoils->DXCoil(heatingCoilNum); + auto &coolingCoil = state.dataDXCoils->DXCoil(coolingCoilNum); + // only deal with cooling for now. heating RTF might have some issue + if (heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode + // here coolingCoil.CoolingCoilRuntimeFraction equals state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio + // this is not the case for heating + fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; + fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; + } } } From 9a0cc0b04d3fce88039a34e863372806ced642e3 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 24 Jan 2024 15:55:06 -0800 Subject: [PATCH 03/45] add fan heat gain adjustment --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index d2be1586450..1ee5604a95c 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12507,6 +12507,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // this is not the case for heating fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; + fan.PowerLossToAir *= coolingCoil.CoolingCoilRuntimeFraction; } } } From 89019063a8782ace88a8aa41dc12bd41d1a7d8f2 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 1 Feb 2024 17:23:15 -0800 Subject: [PATCH 04/45] Consider run time fraction in OU fan power --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index d63c5096f74..5c7a11b0d5f 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -11721,7 +11721,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; // 0.95 is the efficiency of the compressor inverter, can come from IDF //@minor - this->OUFanPower = this->RatedOUFanPower; //@ * pow_3( CondFlowRatio ) + this->OUFanPower = this->RatedOUFanPower * CyclingRatio; //@ * pow_3( CondFlowRatio ) this->VRFCondCyclingRatio = CyclingRatio; // report variable for cycling rate Tdischarge = this->CondensingTemp; // outdoor unit condensing temperature @@ -11934,7 +11934,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; - this->OUFanPower = this->RatedOUFanPower; + this->OUFanPower = this->RatedOUFanPower * CyclingRatio; this->VRFCondCyclingRatio = CyclingRatio; Tsuction = this->EvaporatingTemp; // Outdoor unit evaporating temperature From 7c1a00884f5cce2a1e80c92f0fac1443b0797e20 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 1 Feb 2024 17:24:03 -0800 Subject: [PATCH 05/45] clang-format --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 5c7a11b0d5f..9c19c040ac7 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -11720,9 +11720,9 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); - this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; // 0.95 is the efficiency of the compressor inverter, can come from IDF //@minor - this->OUFanPower = this->RatedOUFanPower * CyclingRatio; //@ * pow_3( CondFlowRatio ) - this->VRFCondCyclingRatio = CyclingRatio; // report variable for cycling rate + this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; // 0.95 is the efficiency of the compressor inverter, can come from IDF //@minor + this->OUFanPower = this->RatedOUFanPower * CyclingRatio; //@ * pow_3( CondFlowRatio ) + this->VRFCondCyclingRatio = CyclingRatio; // report variable for cycling rate Tdischarge = this->CondensingTemp; // outdoor unit condensing temperature this->CoolingCapacity = From 5fcc817265e39220a045e7e251bb32487cbc4dfe Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 2 Feb 2024 16:31:48 -0800 Subject: [PATCH 06/45] Add check of fan index before accessing dataFans->Fan(.) --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 9c19c040ac7..8c17f4c469b 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12485,15 +12485,17 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) for (int TUListNum = 1; TUListNum <= state.dataHVACVarRefFlow->NumVRFTULists; ++TUListNum) { auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { - auto &fan = state.dataFans->Fan(state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex); int heatingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).HeatCoilIndex; int coolingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).CoolCoilIndex; auto &heatingCoil = state.dataDXCoils->DXCoil(heatingCoilNum); auto &coolingCoil = state.dataDXCoils->DXCoil(coolingCoilNum); + int fanIndex = state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex; // only deal with cooling for now. heating RTF might have some issue - if (heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode + // does Fan:SystemModel need adjustment as well? if so consider 0-indexing and it's in state.dataHVACFan->fanObjs vector + if (fanIndex > 0 && heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode // here coolingCoil.CoolingCoilRuntimeFraction equals state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio // this is not the case for heating + auto &fan = state.dataFans->Fan(fanIndex); fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; fan.PowerLossToAir *= coolingCoil.CoolingCoilRuntimeFraction; From 026be04bf4919a0fa0231ad3450806b560d9e3ff Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 2 Feb 2024 16:32:12 -0800 Subject: [PATCH 07/45] fix unit test uninitialized cycling ratio --- tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index 98f3b25a4db..2628b2c847a 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -13192,6 +13192,8 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) Real64 OAUCoilOutTemp = 0.0; bool ZoneEquipment = true; + // add VRF cycling ratio initialization. Since TU's are simulated first, if there's no initialization, the coil runtime fraction will be zero + state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio = 1.0; SimulateVRF(*state, state->dataHVACVarRefFlow->VRFTU(VRFTUNum).Name, FirstHVACIteration, @@ -13219,7 +13221,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) EXPECT_EQ(0.0, thisVRFTU.NoCoolHeatOutAirMassFlow); EXPECT_NEAR(5125.0840, thisDXCoolingCoil.TotalCoolingEnergyRate, 0.0001); EXPECT_NEAR(4999.8265, thisVRFTU.TotalCoolingRate, 0.0001); - EXPECT_NEAR(125.2573, thisFan.FanPower, 0.0001); + EXPECT_NEAR(125.2573 * thisDXCoolingCoil.CoolingCoilRuntimeFraction, thisFan.FanPower, 0.0001); EXPECT_NEAR(thisDXCoolingCoil.TotalCoolingEnergyRate, (thisVRFTU.TotalCoolingRate + thisFan.FanPower), 0.0001); } From b9c6bff967469f657cccd826f8481dcd3e387b8d Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 2 Feb 2024 16:33:16 -0800 Subject: [PATCH 08/45] clang-format --- .../unit/HVACVariableRefrigerantFlow.unit.cc | 468 +++++++++--------- 1 file changed, 235 insertions(+), 233 deletions(-) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index 2628b2c847a..c6f2b82fc46 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -2487,109 +2487,109 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) } // Run and Check: VRFOU_CompSpd - {// Test the method VRFOU_CompSpd, which calculates the compressor speed at given - // operational conditions to meet the evaporator or condenser capacity provided. + { // Test the method VRFOU_CompSpd, which calculates the compressor speed at given + // operational conditions to meet the evaporator or condenser capacity provided. - {// a. Evaporator + { // a. Evaporator - // Inputs_condition - Real64 constexpr Q_req = 6971; // Required capacity [W] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 CompSpdActual; // Actual compressor running speed [rps] + // Inputs_condition + Real64 constexpr Q_req = 6971; // Required capacity [W] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 CompSpdActual; // Actual compressor running speed [rps] - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( - *state, Q_req, HXOpMode::EvapMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( + *state, Q_req, HXOpMode::EvapMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); - // Test - EXPECT_NEAR(1295, CompSpdActual, 5); -} + // Test + EXPECT_NEAR(1295, CompSpdActual, 5); + } -{ - // b. Condenser - - // Inputs_condition - Real64 constexpr Q_req = 6953; // Required capacity [W] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 CompSpdActual; // Actual compressor running speed [rps] - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( - *state, Q_req, HXOpMode::CondMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); - - // Test - EXPECT_NEAR(950, CompSpdActual, 5); -} -} // namespace EnergyPlus + { + // b. Condenser -// Run and Check: VRFOU_CompCap -{ - // Test the method VRFOU_CompCap, which calculates the compressor performance (power and capacity) - // at given compressor speed and operational conditions. - - // Inputs_condition - Real64 constexpr CompSpdActual = 1298; // Actual compressor running speed [rps] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 Q_c_tot; // Compressor evaporative capacity [W] - Real64 Ncomp; // Compressor power [W] - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompCap(*state, CompSpdActual, T_suction, T_discharge, h_IU_evap_in, h_comp_in, Q_c_tot, Ncomp); - - // Test - EXPECT_NEAR(6990, Q_c_tot, 10); - EXPECT_NEAR(1601, Ncomp, 10); -} + // Inputs_condition + Real64 constexpr Q_req = 6953; // Required capacity [W] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 CompSpdActual; // Actual compressor running speed [rps] -// Run and Check: VRFOU_CalcComp -{ - // Test the method VRFOU_CalcCompH, which simulates the compressor performance at given oprtaional conditions. More specifically, it - // sepcifies the compressor speed to provide sufficient evaporative capacity, and calculate the power of the compressor running at the - // specified speed. Note that it may be needed to manipulate the operational conditions to further adjust system capacity at low load - // conditions. The low load modification logics are different for cooling mode and heating mode. - - // Inputs_condition - Real64 TU_load = 6006; // Indoor unit cooling load [W] - Real64 T_suction = 8.86; // Compressor suction temperature Te' [C] - Real64 T_discharge = 40.26; // Compressor discharge temperature Tc' [C] - Real64 Pipe_h_out_ave = 233428; // Average Enthalpy of the refrigerant leaving IUs [kJ/kg] - Real64 IUMaxCondTemp = 36; // VRV IU condensing temperature, max among all indoor units [C] - Real64 MinOutdoorUnitTe = -72; // The minimum temperature that OU Te can be at cooling mode (only used for calculating Min capacity) - Real64 Tfs = 10.90; // Temperature of the air at the OU evaporator coil surface [C]] - Real64 Pipe_Q = 162.67; // Piping Loss Algorithm Parameter: Heat loss [W] - Real64 OUEvapHeatExtract = 5110.40; // Evaporator heat extract [W] - Real64 Ncomp = 1058; // Compressor power [W] - Real64 CompSpdActual; // Actual compressor running speed [rps] - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, - TU_load, - T_suction, - T_discharge, - Pipe_h_out_ave, - IUMaxCondTemp, - MinOutdoorUnitTe, - Tfs, - Pipe_Q, - OUEvapHeatExtract, - CompSpdActual, - Ncomp); - - // Test - EXPECT_NEAR(5110, OUEvapHeatExtract, 1); - EXPECT_NEAR(1500, CompSpdActual, 1); - EXPECT_NEAR(2080, Ncomp, 1); - EXPECT_EQ(state->dataLoopNodes->Node(state->dataHVACVarRefFlow->VRFTU(1).VRFTUInletNodeNum).MassFlowRate, 0.0); -} + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( + *state, Q_req, HXOpMode::CondMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); + + // Test + EXPECT_NEAR(950, CompSpdActual, 5); + } + } // namespace EnergyPlus + + // Run and Check: VRFOU_CompCap + { + // Test the method VRFOU_CompCap, which calculates the compressor performance (power and capacity) + // at given compressor speed and operational conditions. + + // Inputs_condition + Real64 constexpr CompSpdActual = 1298; // Actual compressor running speed [rps] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 Q_c_tot; // Compressor evaporative capacity [W] + Real64 Ncomp; // Compressor power [W] + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompCap(*state, CompSpdActual, T_suction, T_discharge, h_IU_evap_in, h_comp_in, Q_c_tot, Ncomp); + + // Test + EXPECT_NEAR(6990, Q_c_tot, 10); + EXPECT_NEAR(1601, Ncomp, 10); + } + + // Run and Check: VRFOU_CalcComp + { + // Test the method VRFOU_CalcCompH, which simulates the compressor performance at given oprtaional conditions. More specifically, it + // sepcifies the compressor speed to provide sufficient evaporative capacity, and calculate the power of the compressor running at the + // specified speed. Note that it may be needed to manipulate the operational conditions to further adjust system capacity at low load + // conditions. The low load modification logics are different for cooling mode and heating mode. + + // Inputs_condition + Real64 TU_load = 6006; // Indoor unit cooling load [W] + Real64 T_suction = 8.86; // Compressor suction temperature Te' [C] + Real64 T_discharge = 40.26; // Compressor discharge temperature Tc' [C] + Real64 Pipe_h_out_ave = 233428; // Average Enthalpy of the refrigerant leaving IUs [kJ/kg] + Real64 IUMaxCondTemp = 36; // VRV IU condensing temperature, max among all indoor units [C] + Real64 MinOutdoorUnitTe = -72; // The minimum temperature that OU Te can be at cooling mode (only used for calculating Min capacity) + Real64 Tfs = 10.90; // Temperature of the air at the OU evaporator coil surface [C]] + Real64 Pipe_Q = 162.67; // Piping Loss Algorithm Parameter: Heat loss [W] + Real64 OUEvapHeatExtract = 5110.40; // Evaporator heat extract [W] + Real64 Ncomp = 1058; // Compressor power [W] + Real64 CompSpdActual; // Actual compressor running speed [rps] + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, + TU_load, + T_suction, + T_discharge, + Pipe_h_out_ave, + IUMaxCondTemp, + MinOutdoorUnitTe, + Tfs, + Pipe_Q, + OUEvapHeatExtract, + CompSpdActual, + Ncomp); + + // Test + EXPECT_NEAR(5110, OUEvapHeatExtract, 1); + EXPECT_NEAR(1500, CompSpdActual, 1); + EXPECT_NEAR(2080, Ncomp, 1); + EXPECT_EQ(state->dataLoopNodes->Node(state->dataHVACVarRefFlow->VRFTU(1).VRFTUInletNodeNum).MassFlowRate, 0.0); + } } TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Coil) @@ -2632,163 +2632,165 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Coil) InitializePsychRoutines(*state); // Run and Check: VRFOU_Cap - { // Test the method VRFOU_Cap, which determines the VRF OU heat transfer rate, given refrigerant side temperature, - // i.e., condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. - {// a. Condenser - - // Inputs_condition - m_air = 3.6; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - SC = 1; - Tdischarge = 36; - - // Run - Q_h_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::CondMode, Tdischarge, SC, m_air, OutDryBulbTemp, OutHumRat); - - // Test - EXPECT_NEAR(27551, Q_h_OU, 10); -} - -{ - // b. Evaporator - - // Inputs_condition - m_air = 3.6; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; - - // Run - Q_c_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::EvapMode, Tsuction, SH, m_air, OutDryBulbTemp, OutHumRat); - - // Test - EXPECT_NEAR(24456, Q_c_OU, 10); -} -} // namespace EnergyPlus - -// Run and Check: VRFOU_FlowRate -{ // Test the method VRFOU_Cap, which calculates the outdoor unit fan flow rate, given VRF OU load and refrigerant side temperature, i.e., - // condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. - {// a. Condenser + { // Test the method VRFOU_Cap, which determines the VRF OU heat transfer rate, given refrigerant side temperature, + // i.e., condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. + { // a. Condenser + + // Inputs_condition + m_air = 3.6; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + SC = 1; + Tdischarge = 36; + + // Run + Q_h_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::CondMode, Tdischarge, SC, m_air, OutDryBulbTemp, OutHumRat); + + // Test + EXPECT_NEAR(27551, Q_h_OU, 10); + } - // Inputs_condition - Q_h_OU = 27551; -OutDryBulbTemp = 28; -OutHumRat = 0.0146; -SC = 1; -Tdischarge = 36; + { + // b. Evaporator -// Run -m_air = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::CondMode, Tdischarge, SC, Q_h_OU, OutDryBulbTemp, OutHumRat); + // Inputs_condition + m_air = 3.6; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; -// Test -EXPECT_NEAR(3.6, m_air, 0.01); -} + // Run + Q_c_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::EvapMode, Tsuction, SH, m_air, OutDryBulbTemp, OutHumRat); -{ - // b. Evaporator + // Test + EXPECT_NEAR(24456, Q_c_OU, 10); + } + } // namespace EnergyPlus + + // Run and Check: VRFOU_FlowRate + { // Test the method VRFOU_Cap, which calculates the outdoor unit fan flow rate, given VRF OU load and refrigerant side temperature, i.e., + // condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. + { // a. Condenser + + // Inputs_condition + Q_h_OU = 27551; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + SC = 1; + Tdischarge = 36; + + // Run + m_air = + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::CondMode, Tdischarge, SC, Q_h_OU, OutDryBulbTemp, OutHumRat); + + // Test + EXPECT_NEAR(3.6, m_air, 0.01); + } - // Inputs_condition - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; + { + // b. Evaporator - // Run - m_air = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::EvapMode, Tsuction, SH, Q_c_OU, OutDryBulbTemp, OutHumRat); + // Inputs_condition + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; - // Test - EXPECT_NEAR(3.6, m_air, 0.01); -} -} + // Run + m_air = + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::EvapMode, Tsuction, SH, Q_c_OU, OutDryBulbTemp, OutHumRat); -// Run and Check: VRFOU_TeTc -{ // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature - // at cooling mode, or evaporating temperature at heating mode, given the coil heat - // release/extract amount and air side parameters. - {// a. Condenser - - // Inputs_condition - m_air = 3.6; -Q_h_OU = 27551; -OutDryBulbTemp = 28; -OutHumRat = 0.0146; -SC = 1; - -// Run -state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( - *state, HXOpMode::CondMode, Q_h_OU, SC, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tdischarge); - -// Test -EXPECT_NEAR(36, Tdischarge, 0.05); -} + // Test + EXPECT_NEAR(3.6, m_air, 0.01); + } + } -{ - // b. Evaporator - - // Inputs_condition - m_air = 3.6; - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( - *state, HXOpMode::EvapMode, Q_c_OU, SH, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tsuction); - - // Test - EXPECT_NEAR(-3, Tsuction, 0.05); -} -} + // Run and Check: VRFOU_TeTc + { // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature + // at cooling mode, or evaporating temperature at heating mode, given the coil heat + // release/extract amount and air side parameters. + { // a. Condenser + + // Inputs_condition + m_air = 3.6; + Q_h_OU = 27551; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + SC = 1; + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( + *state, HXOpMode::CondMode, Q_h_OU, SC, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tdischarge); + + // Test + EXPECT_NEAR(36, Tdischarge, 0.05); + } -// Run and Check: VRFOU_SCSH -{ - // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature - // at cooling mode, or evaporating temperature at heating mode, given the coil heat - // release/extract amount and air side parameters. - { - // a. Condenser + { + // b. Evaporator - // Inputs_condition - m_air = 3.6; - Q_h_OU = 27551; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - Tdischarge = 36; + // Inputs_condition + m_air = 3.6; + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; - // Run - SC = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( - *state, HXOpMode::CondMode, Q_h_OU, Tdischarge, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( + *state, HXOpMode::EvapMode, Q_c_OU, SH, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tsuction); - // Test - EXPECT_NEAR(1, SC, 0.01); + // Test + EXPECT_NEAR(-3, Tsuction, 0.05); + } } + // Run and Check: VRFOU_SCSH { - // b. Evaporator + // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature + // at cooling mode, or evaporating temperature at heating mode, given the coil heat + // release/extract amount and air side parameters. + { + // a. Condenser + + // Inputs_condition + m_air = 3.6; + Q_h_OU = 27551; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + Tdischarge = 36; + + // Run + SC = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( + *state, HXOpMode::CondMode, Q_h_OU, Tdischarge, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + + // Test + EXPECT_NEAR(1, SC, 0.01); + } - // Inputs_condition - m_air = 3.6; - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - Tsuction = -3; + { + // b. Evaporator - // Run - SH = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( - *state, HXOpMode::EvapMode, Q_c_OU, Tsuction, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + // Inputs_condition + m_air = 3.6; + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + Tsuction = -3; - // Test - EXPECT_NEAR(1, SH, 0.01); + // Run + SH = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( + *state, HXOpMode::EvapMode, Q_c_OU, Tsuction, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + + // Test + EXPECT_NEAR(1, SH, 0.01); + } } -} -// Clean up -state->dataHVACVarRefFlow->VRF.deallocate(); + // Clean up + state->dataHVACVarRefFlow->VRF.deallocate(); } TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_GetCoilInput) From 7d79eaca627af62fbe29b2acd5557fff8c3de7e3 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 26 Feb 2024 11:34:37 -0800 Subject: [PATCH 09/45] Move cycling ratio to inside compressor spd calc for heating after multiplying cycling ratio to the outdoor unit, some super large COP appeared in some timesteps. This is probably due to the cycling ratio calculation, moving it to inside the compressor speed calculation fixed this problem. --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 134 ++++++++---------- src/EnergyPlus/HVACVariableRefrigerantFlow.hh | 3 +- .../unit/HVACVariableRefrigerantFlow.unit.cc | 4 +- 3 files changed, 65 insertions(+), 76 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 8c17f4c469b..b3d786b84c0 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -11856,80 +11856,61 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) CapMinTe + 8, this->IUCondensingTemp - 5); - if ((Q_c_OU * C_cap_operation) <= CompEvaporatingCAPSpdMin) { - // Required heating load is smaller than the min heating capacity - - if (Q_c_OU == 0) { - // Q_h_TU_PL is less than or equal to CompEvaporatingPWRSpdMin - CyclingRatio = Q_h_TU_PL / CompEvaporatingPWRSpdMin; - this->EvaporatingTemp = OutdoorDryBulb; - } else { - // Q_h_TU_PL is greater than CompEvaporatingPWRSpdMin - CyclingRatio = Q_c_OU * C_cap_operation / CompEvaporatingCAPSpdMin; - this->EvaporatingTemp = max(CapMinTe, RefTLow); - } - - double CyclingRatioFrac = 0.85 + 0.15 * CyclingRatio; - double HPRTF = CyclingRatio / CyclingRatioFrac; - Ncomp = CompEvaporatingPWRSpdMin * HPRTF; - CompSpdActual = this->CompressorSpeed(1); - - } else { - // Required heating load is greater than or equal to the min heating capacity - - // Iteration_Ncomp: Perform iterations to calculate Ncomp (Label20) - Counter = 1; - Label20:; - Ncomp_new = Ncomp; - Q_c_OU = max(0.0, Q_h_TU_PL - Ncomp); - - // *VRF OU Te calculations - m_air = this->OUAirFlowRate * RhoAir; - SH_OU = this->SH; - this->VRFOU_TeTc( - state, HXOpMode::EvapMode, Q_c_OU, SH_OU, m_air, OutdoorDryBulb, OutdoorHumRat, OutdoorPressure, Tfs, this->EvaporatingTemp); - this->SH = SH_OU; - - // *VRF OU Compressor Simulation at heating mode: Specify the compressor speed and power consumption - this->VRFOU_CalcCompH(state, - TU_HeatingLoad, - this->EvaporatingTemp, - Tdischarge, - h_IU_cond_out_ave, - this->IUCondensingTemp, - CapMinTe, - Tfs, - Pipe_Q_h, - Q_c_OU, - CompSpdActual, - Ncomp_new); - - if ((std::abs(Ncomp_new - Ncomp) > (Tolerance * Ncomp)) && (Counter < 30)) { - Ncomp = Ncomp_new; - Counter = Counter + 1; - goto Label20; - } + // Required heating load is greater than or equal to the min heating capacity + + // Iteration_Ncomp: Perform iterations to calculate Ncomp (Label20) + Counter = 1; + Label20:; + Ncomp_new = Ncomp; + Q_c_OU = max(0.0, Q_h_TU_PL - Ncomp); + + // *VRF OU Te calculations + m_air = this->OUAirFlowRate * RhoAir; + SH_OU = this->SH; + this->VRFOU_TeTc(state, HXOpMode::EvapMode, Q_c_OU, SH_OU, m_air, OutdoorDryBulb, OutdoorHumRat, OutdoorPressure, Tfs, this->EvaporatingTemp); + this->SH = SH_OU; + + Real64 CyclingRatio = 1.0; + // *VRF OU Compressor Simulation at heating mode: Specify the compressor speed and power consumption + this->VRFOU_CalcCompH(state, + TU_HeatingLoad, + this->EvaporatingTemp, + Tdischarge, + h_IU_cond_out_ave, + this->IUCondensingTemp, + CapMinTe, + Tfs, + Pipe_Q_h, + Q_c_OU, + CompSpdActual, + Ncomp_new, + CyclingRatio); + + if ((std::abs(Ncomp_new - Ncomp) > (Tolerance * Ncomp)) && (Counter < 30)) { + Ncomp = Ncomp_new; + Counter = Counter + 1; + goto Label20; + } - // Update h_comp_out in iteration Label23 - P_comp_in = GetSatPressureRefrig(state, this->RefrigerantName, this->EvaporatingTemp, RefrigerantIndex, RoutineName); - RefTSat = GetSatTemperatureRefrig(state, this->RefrigerantName, max(min(P_comp_in, RefPHigh), RefPLow), RefrigerantIndex, RoutineName); - h_comp_in_new = GetSupHeatEnthalpyRefrig(state, - this->RefrigerantName, - max(RefTSat, this->SH + this->EvaporatingTemp), - max(min(P_comp_in, RefPHigh), RefPLow), - RefrigerantIndex, - RoutineName); - h_comp_out_new = Ncomp_new / m_ref_IU_cond + h_comp_in_new; + // Update h_comp_out in iteration Label23 + P_comp_in = GetSatPressureRefrig(state, this->RefrigerantName, this->EvaporatingTemp, RefrigerantIndex, RoutineName); + RefTSat = GetSatTemperatureRefrig(state, this->RefrigerantName, max(min(P_comp_in, RefPHigh), RefPLow), RefrigerantIndex, RoutineName); + h_comp_in_new = GetSupHeatEnthalpyRefrig(state, + this->RefrigerantName, + max(RefTSat, this->SH + this->EvaporatingTemp), + max(min(P_comp_in, RefPHigh), RefPLow), + RefrigerantIndex, + RoutineName); + h_comp_out_new = Ncomp_new / m_ref_IU_cond + h_comp_in_new; - if ((std::abs(h_comp_out - h_comp_out_new) > Tolerance * h_comp_out) && (h_IU_cond_in < h_IU_cond_in_up)) { - h_IU_cond_in = h_IU_cond_in + 0.1 * (h_IU_cond_in_up - h_IU_cond_in_low); - goto Label23; - } - if (h_IU_cond_in > h_IU_cond_in_up) { - h_IU_cond_in = 0.5 * (h_IU_cond_in_up + h_IU_cond_in_low); - } - Ncomp = Ncomp_new; + if ((std::abs(h_comp_out - h_comp_out_new) > Tolerance * h_comp_out) && (h_IU_cond_in < h_IU_cond_in_up)) { + h_IU_cond_in = h_IU_cond_in + 0.1 * (h_IU_cond_in_up - h_IU_cond_in_low); + goto Label23; } + if (h_IU_cond_in > h_IU_cond_in_up) { + h_IU_cond_in = 0.5 * (h_IU_cond_in_up + h_IU_cond_in_low); + } + Ncomp = Ncomp_new; // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); @@ -14487,7 +14468,8 @@ void VRFCondenserEquipment::VRFOU_CalcCompH( Real64 Pipe_Q, // Piping Loss Algorithm Parameter: Heat loss [W] Real64 &OUEvapHeatExtract, // Condenser heat release (cooling mode) [W] Real64 &CompSpdActual, // Actual compressor running speed [rps] - Real64 &Ncomp // Compressor power [W] + Real64 &Ncomp, // Compressor power [W] + Real64 &CyclingRatio // Compressor cycling ratio ) { @@ -14651,9 +14633,13 @@ void VRFCondenserEquipment::VRFOU_CalcCompH( NumIteCcap = NumIteCcap + 1; goto Label19; } - if (CapDiff > (Tolerance * Cap_Eva0)) NumIteCcap = 999; + if (CapDiff > (Tolerance * Cap_Eva0)) { + NumIteCcap = 999; + CyclingRatio = (TU_load + Pipe_Q) * C_cap_operation / Cap_Eva1; + } - Ncomp = this->RatedCompPower * CurveValue(state, this->OUCoolingPWRFT(CounterCompSpdTemp), T_discharge, T_suction); + Ncomp = this->RatedCompPower * CurveValue(state, this->OUCoolingPWRFT(CounterCompSpdTemp), T_discharge, T_suction) * CyclingRatio; + OUEvapHeatExtract = CompEvaporatingCAPSpd(1) * CyclingRatio; break; // EXIT DoName2 diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh index 4cd628289b2..4a0f0478ff0 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh @@ -530,7 +530,8 @@ namespace HVACVariableRefrigerantFlow { Real64 Pipe_Q, // Piping Loss Algorithm Parameter: Heat loss [W] Real64 &OUEvapHeatExtract, // Condenser heat release (cooling mode) [W] Real64 &CompSpdActual, // Actual compressor running speed [rps] - Real64 &Ncomp // Compressor power [W] + Real64 &Ncomp, // Compressor power [W] + Real64 &CyclingRatio // Compressor cycling ratio ); void VRFHR_OU_HR_Mode(EnergyPlusData &state, diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index c6f2b82fc46..dfd5bcf9a05 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -2570,6 +2570,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) Real64 Ncomp = 1058; // Compressor power [W] Real64 CompSpdActual; // Actual compressor running speed [rps] + Real64 CyclingRatio = 1.0; // Run state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, TU_load, @@ -2582,7 +2583,8 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) Pipe_Q, OUEvapHeatExtract, CompSpdActual, - Ncomp); + Ncomp, + CyclingRatio); // Test EXPECT_NEAR(5110, OUEvapHeatExtract, 1); From aee8c4a2512524aabc95bd119a98f7a9db1667e3 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Tue, 27 Feb 2024 16:14:28 -0800 Subject: [PATCH 10/45] Revert "Move cycling ratio to inside compressor spd calc for heating" This reverts commit 7d79eaca627af62fbe29b2acd5557fff8c3de7e3. --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 134 ++++++++++-------- src/EnergyPlus/HVACVariableRefrigerantFlow.hh | 3 +- .../unit/HVACVariableRefrigerantFlow.unit.cc | 4 +- 3 files changed, 76 insertions(+), 65 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index b3d786b84c0..8c17f4c469b 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -11856,61 +11856,80 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) CapMinTe + 8, this->IUCondensingTemp - 5); - // Required heating load is greater than or equal to the min heating capacity - - // Iteration_Ncomp: Perform iterations to calculate Ncomp (Label20) - Counter = 1; - Label20:; - Ncomp_new = Ncomp; - Q_c_OU = max(0.0, Q_h_TU_PL - Ncomp); - - // *VRF OU Te calculations - m_air = this->OUAirFlowRate * RhoAir; - SH_OU = this->SH; - this->VRFOU_TeTc(state, HXOpMode::EvapMode, Q_c_OU, SH_OU, m_air, OutdoorDryBulb, OutdoorHumRat, OutdoorPressure, Tfs, this->EvaporatingTemp); - this->SH = SH_OU; - - Real64 CyclingRatio = 1.0; - // *VRF OU Compressor Simulation at heating mode: Specify the compressor speed and power consumption - this->VRFOU_CalcCompH(state, - TU_HeatingLoad, - this->EvaporatingTemp, - Tdischarge, - h_IU_cond_out_ave, - this->IUCondensingTemp, - CapMinTe, - Tfs, - Pipe_Q_h, - Q_c_OU, - CompSpdActual, - Ncomp_new, - CyclingRatio); - - if ((std::abs(Ncomp_new - Ncomp) > (Tolerance * Ncomp)) && (Counter < 30)) { - Ncomp = Ncomp_new; - Counter = Counter + 1; - goto Label20; - } + if ((Q_c_OU * C_cap_operation) <= CompEvaporatingCAPSpdMin) { + // Required heating load is smaller than the min heating capacity - // Update h_comp_out in iteration Label23 - P_comp_in = GetSatPressureRefrig(state, this->RefrigerantName, this->EvaporatingTemp, RefrigerantIndex, RoutineName); - RefTSat = GetSatTemperatureRefrig(state, this->RefrigerantName, max(min(P_comp_in, RefPHigh), RefPLow), RefrigerantIndex, RoutineName); - h_comp_in_new = GetSupHeatEnthalpyRefrig(state, - this->RefrigerantName, - max(RefTSat, this->SH + this->EvaporatingTemp), - max(min(P_comp_in, RefPHigh), RefPLow), - RefrigerantIndex, - RoutineName); - h_comp_out_new = Ncomp_new / m_ref_IU_cond + h_comp_in_new; + if (Q_c_OU == 0) { + // Q_h_TU_PL is less than or equal to CompEvaporatingPWRSpdMin + CyclingRatio = Q_h_TU_PL / CompEvaporatingPWRSpdMin; + this->EvaporatingTemp = OutdoorDryBulb; + } else { + // Q_h_TU_PL is greater than CompEvaporatingPWRSpdMin + CyclingRatio = Q_c_OU * C_cap_operation / CompEvaporatingCAPSpdMin; + this->EvaporatingTemp = max(CapMinTe, RefTLow); + } - if ((std::abs(h_comp_out - h_comp_out_new) > Tolerance * h_comp_out) && (h_IU_cond_in < h_IU_cond_in_up)) { - h_IU_cond_in = h_IU_cond_in + 0.1 * (h_IU_cond_in_up - h_IU_cond_in_low); - goto Label23; - } - if (h_IU_cond_in > h_IU_cond_in_up) { - h_IU_cond_in = 0.5 * (h_IU_cond_in_up + h_IU_cond_in_low); + double CyclingRatioFrac = 0.85 + 0.15 * CyclingRatio; + double HPRTF = CyclingRatio / CyclingRatioFrac; + Ncomp = CompEvaporatingPWRSpdMin * HPRTF; + CompSpdActual = this->CompressorSpeed(1); + + } else { + // Required heating load is greater than or equal to the min heating capacity + + // Iteration_Ncomp: Perform iterations to calculate Ncomp (Label20) + Counter = 1; + Label20:; + Ncomp_new = Ncomp; + Q_c_OU = max(0.0, Q_h_TU_PL - Ncomp); + + // *VRF OU Te calculations + m_air = this->OUAirFlowRate * RhoAir; + SH_OU = this->SH; + this->VRFOU_TeTc( + state, HXOpMode::EvapMode, Q_c_OU, SH_OU, m_air, OutdoorDryBulb, OutdoorHumRat, OutdoorPressure, Tfs, this->EvaporatingTemp); + this->SH = SH_OU; + + // *VRF OU Compressor Simulation at heating mode: Specify the compressor speed and power consumption + this->VRFOU_CalcCompH(state, + TU_HeatingLoad, + this->EvaporatingTemp, + Tdischarge, + h_IU_cond_out_ave, + this->IUCondensingTemp, + CapMinTe, + Tfs, + Pipe_Q_h, + Q_c_OU, + CompSpdActual, + Ncomp_new); + + if ((std::abs(Ncomp_new - Ncomp) > (Tolerance * Ncomp)) && (Counter < 30)) { + Ncomp = Ncomp_new; + Counter = Counter + 1; + goto Label20; + } + + // Update h_comp_out in iteration Label23 + P_comp_in = GetSatPressureRefrig(state, this->RefrigerantName, this->EvaporatingTemp, RefrigerantIndex, RoutineName); + RefTSat = GetSatTemperatureRefrig(state, this->RefrigerantName, max(min(P_comp_in, RefPHigh), RefPLow), RefrigerantIndex, RoutineName); + h_comp_in_new = GetSupHeatEnthalpyRefrig(state, + this->RefrigerantName, + max(RefTSat, this->SH + this->EvaporatingTemp), + max(min(P_comp_in, RefPHigh), RefPLow), + RefrigerantIndex, + RoutineName); + h_comp_out_new = Ncomp_new / m_ref_IU_cond + h_comp_in_new; + + if ((std::abs(h_comp_out - h_comp_out_new) > Tolerance * h_comp_out) && (h_IU_cond_in < h_IU_cond_in_up)) { + h_IU_cond_in = h_IU_cond_in + 0.1 * (h_IU_cond_in_up - h_IU_cond_in_low); + goto Label23; + } + if (h_IU_cond_in > h_IU_cond_in_up) { + h_IU_cond_in = 0.5 * (h_IU_cond_in_up + h_IU_cond_in_low); + } + Ncomp = Ncomp_new; } - Ncomp = Ncomp_new; // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); @@ -14468,8 +14487,7 @@ void VRFCondenserEquipment::VRFOU_CalcCompH( Real64 Pipe_Q, // Piping Loss Algorithm Parameter: Heat loss [W] Real64 &OUEvapHeatExtract, // Condenser heat release (cooling mode) [W] Real64 &CompSpdActual, // Actual compressor running speed [rps] - Real64 &Ncomp, // Compressor power [W] - Real64 &CyclingRatio // Compressor cycling ratio + Real64 &Ncomp // Compressor power [W] ) { @@ -14633,13 +14651,9 @@ void VRFCondenserEquipment::VRFOU_CalcCompH( NumIteCcap = NumIteCcap + 1; goto Label19; } - if (CapDiff > (Tolerance * Cap_Eva0)) { - NumIteCcap = 999; - CyclingRatio = (TU_load + Pipe_Q) * C_cap_operation / Cap_Eva1; - } + if (CapDiff > (Tolerance * Cap_Eva0)) NumIteCcap = 999; - Ncomp = this->RatedCompPower * CurveValue(state, this->OUCoolingPWRFT(CounterCompSpdTemp), T_discharge, T_suction) * CyclingRatio; - OUEvapHeatExtract = CompEvaporatingCAPSpd(1) * CyclingRatio; + Ncomp = this->RatedCompPower * CurveValue(state, this->OUCoolingPWRFT(CounterCompSpdTemp), T_discharge, T_suction); break; // EXIT DoName2 diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh index 4a0f0478ff0..4cd628289b2 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh @@ -530,8 +530,7 @@ namespace HVACVariableRefrigerantFlow { Real64 Pipe_Q, // Piping Loss Algorithm Parameter: Heat loss [W] Real64 &OUEvapHeatExtract, // Condenser heat release (cooling mode) [W] Real64 &CompSpdActual, // Actual compressor running speed [rps] - Real64 &Ncomp, // Compressor power [W] - Real64 &CyclingRatio // Compressor cycling ratio + Real64 &Ncomp // Compressor power [W] ); void VRFHR_OU_HR_Mode(EnergyPlusData &state, diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index dfd5bcf9a05..c6f2b82fc46 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -2570,7 +2570,6 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) Real64 Ncomp = 1058; // Compressor power [W] Real64 CompSpdActual; // Actual compressor running speed [rps] - Real64 CyclingRatio = 1.0; // Run state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, TU_load, @@ -2583,8 +2582,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) Pipe_Q, OUEvapHeatExtract, CompSpdActual, - Ncomp, - CyclingRatio); + Ncomp); // Test EXPECT_NEAR(5110, OUEvapHeatExtract, 1); From 97349228502d8300d10345c019d2dbd9356db2b5 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 28 Feb 2024 16:13:09 -0800 Subject: [PATCH 11/45] move fan mult RTF to after OU update, as other branch updates RTF --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 8c17f4c469b..b1cad9c5de0 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -283,6 +283,29 @@ void SimulateVRF(EnergyPlusData &state, if (state.dataHVACVarRefFlow->VRF(VRFCondenser).CondenserType == DataHeatBalance::RefrigCondenserType::Water) UpdateVRFCondenser(state, VRFCondenser); } + if (state.dataHVACVarRefFlow->VRF(VRFCondenser).VRFAlgorithmType == AlgorithmType::FluidTCtrl) { + // consider cycling in fan calculation + for (int TUListNum = 1; TUListNum <= state.dataHVACVarRefFlow->NumVRFTULists; ++TUListNum) { + auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); + for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { + int heatingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).HeatCoilIndex; + int coolingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).CoolCoilIndex; + auto &heatingCoil = state.dataDXCoils->DXCoil(heatingCoilNum); + auto &coolingCoil = state.dataDXCoils->DXCoil(coolingCoilNum); + int fanIndex = state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex; + // only deal with cooling for now. heating RTF might have some issue + // does Fan:SystemModel need adjustment as well? if so consider 0-indexing and it's in state.dataHVACFan->fanObjs vector + if (fanIndex > 0 && heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode + // here coolingCoil.CoolingCoilRuntimeFraction equals state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio + // this is not the case for heating + auto &fan = state.dataFans->Fan(fanIndex); + fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; + fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; + fan.PowerLossToAir *= coolingCoil.CoolingCoilRuntimeFraction; + } + } + } + } } PlantComponent *VRFCondenserEquipment::factory(EnergyPlusData &state, std::string const &objectName) @@ -12481,27 +12504,6 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) this->ElecHeatingPower = 0; } this->VRFCondRTF = VRFRTF; - // consider cycling in fan calculation - for (int TUListNum = 1; TUListNum <= state.dataHVACVarRefFlow->NumVRFTULists; ++TUListNum) { - auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); - for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { - int heatingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).HeatCoilIndex; - int coolingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).CoolCoilIndex; - auto &heatingCoil = state.dataDXCoils->DXCoil(heatingCoilNum); - auto &coolingCoil = state.dataDXCoils->DXCoil(coolingCoilNum); - int fanIndex = state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex; - // only deal with cooling for now. heating RTF might have some issue - // does Fan:SystemModel need adjustment as well? if so consider 0-indexing and it's in state.dataHVACFan->fanObjs vector - if (fanIndex > 0 && heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode - // here coolingCoil.CoolingCoilRuntimeFraction equals state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio - // this is not the case for heating - auto &fan = state.dataFans->Fan(fanIndex); - fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; - fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; - fan.PowerLossToAir *= coolingCoil.CoolingCoilRuntimeFraction; - } - } - } // Calculate CrankCaseHeaterPower: VRF Heat Pump Crankcase Heater Electric Power [W] if (this->MaxOATCCHeater > OutdoorDryBulb) { From 740bd9274ed6e9d96de530ff8229b8a7069c77f6 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 6 Mar 2024 15:28:55 -0800 Subject: [PATCH 12/45] add test for OU fan power change --- tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index c6f2b82fc46..ab63d1169a7 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -13225,6 +13225,10 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) EXPECT_NEAR(4999.8265, thisVRFTU.TotalCoolingRate, 0.0001); EXPECT_NEAR(125.2573 * thisDXCoolingCoil.CoolingCoilRuntimeFraction, thisFan.FanPower, 0.0001); EXPECT_NEAR(thisDXCoolingCoil.TotalCoolingEnergyRate, (thisVRFTU.TotalCoolingRate + thisFan.FanPower), 0.0001); + EXPECT_NEAR(0.8930, 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); } // Test for #7648: HREIRFTHeat wrongly used HRCAPFTHeatConst. Occurs only if you have Heat Recovery From 902baeac0014b622ffe8d7b26c1c93378ad9d12c Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 8 Mar 2024 11:45:18 -0800 Subject: [PATCH 13/45] clang-format --- .../unit/HVACVariableRefrigerantFlow.unit.cc | 468 +++++++++--------- 1 file changed, 233 insertions(+), 235 deletions(-) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index ab63d1169a7..a8498472a93 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -2487,109 +2487,109 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Compressor) } // Run and Check: VRFOU_CompSpd - { // Test the method VRFOU_CompSpd, which calculates the compressor speed at given - // operational conditions to meet the evaporator or condenser capacity provided. + {// Test the method VRFOU_CompSpd, which calculates the compressor speed at given + // operational conditions to meet the evaporator or condenser capacity provided. - { // a. Evaporator + {// a. Evaporator - // Inputs_condition - Real64 constexpr Q_req = 6971; // Required capacity [W] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 CompSpdActual; // Actual compressor running speed [rps] + // Inputs_condition + Real64 constexpr Q_req = 6971; // Required capacity [W] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 CompSpdActual; // Actual compressor running speed [rps] - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( - *state, Q_req, HXOpMode::EvapMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( + *state, Q_req, HXOpMode::EvapMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); - // Test - EXPECT_NEAR(1295, CompSpdActual, 5); - } - - { - // b. Condenser - - // Inputs_condition - Real64 constexpr Q_req = 6953; // Required capacity [W] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 CompSpdActual; // Actual compressor running speed [rps] - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( - *state, Q_req, HXOpMode::CondMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); - - // Test - EXPECT_NEAR(950, CompSpdActual, 5); - } - } // namespace EnergyPlus - - // Run and Check: VRFOU_CompCap - { - // Test the method VRFOU_CompCap, which calculates the compressor performance (power and capacity) - // at given compressor speed and operational conditions. - - // Inputs_condition - Real64 constexpr CompSpdActual = 1298; // Actual compressor running speed [rps] - Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] - Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] - Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] - Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] - Real64 Q_c_tot; // Compressor evaporative capacity [W] - Real64 Ncomp; // Compressor power [W] - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompCap(*state, CompSpdActual, T_suction, T_discharge, h_IU_evap_in, h_comp_in, Q_c_tot, Ncomp); - - // Test - EXPECT_NEAR(6990, Q_c_tot, 10); - EXPECT_NEAR(1601, Ncomp, 10); - } - - // Run and Check: VRFOU_CalcComp - { - // Test the method VRFOU_CalcCompH, which simulates the compressor performance at given oprtaional conditions. More specifically, it - // sepcifies the compressor speed to provide sufficient evaporative capacity, and calculate the power of the compressor running at the - // specified speed. Note that it may be needed to manipulate the operational conditions to further adjust system capacity at low load - // conditions. The low load modification logics are different for cooling mode and heating mode. + // Test + EXPECT_NEAR(1295, CompSpdActual, 5); +} - // Inputs_condition - Real64 TU_load = 6006; // Indoor unit cooling load [W] - Real64 T_suction = 8.86; // Compressor suction temperature Te' [C] - Real64 T_discharge = 40.26; // Compressor discharge temperature Tc' [C] - Real64 Pipe_h_out_ave = 233428; // Average Enthalpy of the refrigerant leaving IUs [kJ/kg] - Real64 IUMaxCondTemp = 36; // VRV IU condensing temperature, max among all indoor units [C] - Real64 MinOutdoorUnitTe = -72; // The minimum temperature that OU Te can be at cooling mode (only used for calculating Min capacity) - Real64 Tfs = 10.90; // Temperature of the air at the OU evaporator coil surface [C]] - Real64 Pipe_Q = 162.67; // Piping Loss Algorithm Parameter: Heat loss [W] - Real64 OUEvapHeatExtract = 5110.40; // Evaporator heat extract [W] - Real64 Ncomp = 1058; // Compressor power [W] - Real64 CompSpdActual; // Actual compressor running speed [rps] +{ + // b. Condenser + + // Inputs_condition + Real64 constexpr Q_req = 6953; // Required capacity [W] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 CompSpdActual; // Actual compressor running speed [rps] + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompSpd( + *state, Q_req, HXOpMode::CondMode, T_suction, T_discharge, h_IU_evap_in, h_comp_in, CompSpdActual); + + // Test + EXPECT_NEAR(950, CompSpdActual, 5); +} +} // namespace EnergyPlus - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, - TU_load, - T_suction, - T_discharge, - Pipe_h_out_ave, - IUMaxCondTemp, - MinOutdoorUnitTe, - Tfs, - Pipe_Q, - OUEvapHeatExtract, - CompSpdActual, - Ncomp); +// Run and Check: VRFOU_CompCap +{ + // Test the method VRFOU_CompCap, which calculates the compressor performance (power and capacity) + // at given compressor speed and operational conditions. + + // Inputs_condition + Real64 constexpr CompSpdActual = 1298; // Actual compressor running speed [rps] + Real64 constexpr T_suction = -13.35; // Compressor suction temperature Te' [C] + Real64 constexpr T_discharge = 36.37; // Compressor discharge temperature Tc' [C] + Real64 constexpr h_IU_evap_in = 225016; // Enthalpy of IU at inlet, for C_cap_operation calculation [kJ/kg] + Real64 constexpr h_comp_in = 429529; // Enthalpy after piping loss (compressor inlet), for C_cap_operation calculation [kJ/kg] + Real64 Q_c_tot; // Compressor evaporative capacity [W] + Real64 Ncomp; // Compressor power [W] + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CompCap(*state, CompSpdActual, T_suction, T_discharge, h_IU_evap_in, h_comp_in, Q_c_tot, Ncomp); + + // Test + EXPECT_NEAR(6990, Q_c_tot, 10); + EXPECT_NEAR(1601, Ncomp, 10); +} - // Test - EXPECT_NEAR(5110, OUEvapHeatExtract, 1); - EXPECT_NEAR(1500, CompSpdActual, 1); - EXPECT_NEAR(2080, Ncomp, 1); - EXPECT_EQ(state->dataLoopNodes->Node(state->dataHVACVarRefFlow->VRFTU(1).VRFTUInletNodeNum).MassFlowRate, 0.0); - } +// Run and Check: VRFOU_CalcComp +{ + // Test the method VRFOU_CalcCompH, which simulates the compressor performance at given oprtaional conditions. More specifically, it + // sepcifies the compressor speed to provide sufficient evaporative capacity, and calculate the power of the compressor running at the + // specified speed. Note that it may be needed to manipulate the operational conditions to further adjust system capacity at low load + // conditions. The low load modification logics are different for cooling mode and heating mode. + + // Inputs_condition + Real64 TU_load = 6006; // Indoor unit cooling load [W] + Real64 T_suction = 8.86; // Compressor suction temperature Te' [C] + Real64 T_discharge = 40.26; // Compressor discharge temperature Tc' [C] + Real64 Pipe_h_out_ave = 233428; // Average Enthalpy of the refrigerant leaving IUs [kJ/kg] + Real64 IUMaxCondTemp = 36; // VRV IU condensing temperature, max among all indoor units [C] + Real64 MinOutdoorUnitTe = -72; // The minimum temperature that OU Te can be at cooling mode (only used for calculating Min capacity) + Real64 Tfs = 10.90; // Temperature of the air at the OU evaporator coil surface [C]] + Real64 Pipe_Q = 162.67; // Piping Loss Algorithm Parameter: Heat loss [W] + Real64 OUEvapHeatExtract = 5110.40; // Evaporator heat extract [W] + Real64 Ncomp = 1058; // Compressor power [W] + Real64 CompSpdActual; // Actual compressor running speed [rps] + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_CalcCompH(*state, + TU_load, + T_suction, + T_discharge, + Pipe_h_out_ave, + IUMaxCondTemp, + MinOutdoorUnitTe, + Tfs, + Pipe_Q, + OUEvapHeatExtract, + CompSpdActual, + Ncomp); + + // Test + EXPECT_NEAR(5110, OUEvapHeatExtract, 1); + EXPECT_NEAR(1500, CompSpdActual, 1); + EXPECT_NEAR(2080, Ncomp, 1); + EXPECT_EQ(state->dataLoopNodes->Node(state->dataHVACVarRefFlow->VRFTU(1).VRFTUInletNodeNum).MassFlowRate, 0.0); +} } TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Coil) @@ -2632,165 +2632,163 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_VRFOU_Coil) InitializePsychRoutines(*state); // Run and Check: VRFOU_Cap - { // Test the method VRFOU_Cap, which determines the VRF OU heat transfer rate, given refrigerant side temperature, - // i.e., condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. - { // a. Condenser - - // Inputs_condition - m_air = 3.6; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - SC = 1; - Tdischarge = 36; - - // Run - Q_h_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::CondMode, Tdischarge, SC, m_air, OutDryBulbTemp, OutHumRat); - - // Test - EXPECT_NEAR(27551, Q_h_OU, 10); - } + { // Test the method VRFOU_Cap, which determines the VRF OU heat transfer rate, given refrigerant side temperature, + // i.e., condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. + {// a. Condenser + + // Inputs_condition + m_air = 3.6; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + SC = 1; + Tdischarge = 36; + + // Run + Q_h_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::CondMode, Tdischarge, SC, m_air, OutDryBulbTemp, OutHumRat); + + // Test + EXPECT_NEAR(27551, Q_h_OU, 10); +} - { - // b. Evaporator +{ + // b. Evaporator - // Inputs_condition - m_air = 3.6; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; + // Inputs_condition + m_air = 3.6; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; - // Run - Q_c_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::EvapMode, Tsuction, SH, m_air, OutDryBulbTemp, OutHumRat); + // Run + Q_c_OU = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_Cap(*state, HXOpMode::EvapMode, Tsuction, SH, m_air, OutDryBulbTemp, OutHumRat); - // Test - EXPECT_NEAR(24456, Q_c_OU, 10); - } - } // namespace EnergyPlus - - // Run and Check: VRFOU_FlowRate - { // Test the method VRFOU_Cap, which calculates the outdoor unit fan flow rate, given VRF OU load and refrigerant side temperature, i.e., - // condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. - { // a. Condenser - - // Inputs_condition - Q_h_OU = 27551; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - SC = 1; - Tdischarge = 36; - - // Run - m_air = - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::CondMode, Tdischarge, SC, Q_h_OU, OutDryBulbTemp, OutHumRat); - - // Test - EXPECT_NEAR(3.6, m_air, 0.01); - } + // Test + EXPECT_NEAR(24456, Q_c_OU, 10); +} +} // namespace EnergyPlus - { - // b. Evaporator +// Run and Check: VRFOU_FlowRate +{ // Test the method VRFOU_Cap, which calculates the outdoor unit fan flow rate, given VRF OU load and refrigerant side temperature, i.e., + // condensing temperature and SC for condenser, or evaporating temperature and SH for evaporator. + {// a. Condenser - // Inputs_condition - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; + // Inputs_condition + Q_h_OU = 27551; +OutDryBulbTemp = 28; +OutHumRat = 0.0146; +SC = 1; +Tdischarge = 36; - // Run - m_air = - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::EvapMode, Tsuction, SH, Q_c_OU, OutDryBulbTemp, OutHumRat); +// Run +m_air = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::CondMode, Tdischarge, SC, Q_h_OU, OutDryBulbTemp, OutHumRat); - // Test - EXPECT_NEAR(3.6, m_air, 0.01); - } - } +// Test +EXPECT_NEAR(3.6, m_air, 0.01); +} - // Run and Check: VRFOU_TeTc - { // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature - // at cooling mode, or evaporating temperature at heating mode, given the coil heat - // release/extract amount and air side parameters. - { // a. Condenser - - // Inputs_condition - m_air = 3.6; - Q_h_OU = 27551; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - SC = 1; - - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( - *state, HXOpMode::CondMode, Q_h_OU, SC, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tdischarge); - - // Test - EXPECT_NEAR(36, Tdischarge, 0.05); - } +{ + // b. Evaporator - { - // b. Evaporator + // Inputs_condition + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; - // Inputs_condition - m_air = 3.6; - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - SH = 1; - Tsuction = -3; + // Run + m_air = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_FlowRate(*state, HXOpMode::EvapMode, Tsuction, SH, Q_c_OU, OutDryBulbTemp, OutHumRat); + + // Test + EXPECT_NEAR(3.6, m_air, 0.01); +} +} - // Run - state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( - *state, HXOpMode::EvapMode, Q_c_OU, SH, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tsuction); +// Run and Check: VRFOU_TeTc +{ // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature + // at cooling mode, or evaporating temperature at heating mode, given the coil heat + // release/extract amount and air side parameters. + {// a. Condenser + + // Inputs_condition + m_air = 3.6; +Q_h_OU = 27551; +OutDryBulbTemp = 28; +OutHumRat = 0.0146; +SC = 1; + +// Run +state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( + *state, HXOpMode::CondMode, Q_h_OU, SC, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tdischarge); + +// Test +EXPECT_NEAR(36, Tdischarge, 0.05); +} - // Test - EXPECT_NEAR(-3, Tsuction, 0.05); - } - } +{ + // b. Evaporator + + // Inputs_condition + m_air = 3.6; + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + SH = 1; + Tsuction = -3; + + // Run + state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_TeTc( + *state, HXOpMode::EvapMode, Q_c_OU, SH, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress, temp, Tsuction); + + // Test + EXPECT_NEAR(-3, Tsuction, 0.05); +} +} - // Run and Check: VRFOU_SCSH +// Run and Check: VRFOU_SCSH +{ + // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature + // at cooling mode, or evaporating temperature at heating mode, given the coil heat + // release/extract amount and air side parameters. { - // Test the method VRFOU_Cap, which calculates the VRF OU refrigerant side temperature, i.e., condensing temperature - // at cooling mode, or evaporating temperature at heating mode, given the coil heat - // release/extract amount and air side parameters. - { - // a. Condenser - - // Inputs_condition - m_air = 3.6; - Q_h_OU = 27551; - OutDryBulbTemp = 28; - OutHumRat = 0.0146; - Tdischarge = 36; - - // Run - SC = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( - *state, HXOpMode::CondMode, Q_h_OU, Tdischarge, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); - - // Test - EXPECT_NEAR(1, SC, 0.01); - } + // a. Condenser + + // Inputs_condition + m_air = 3.6; + Q_h_OU = 27551; + OutDryBulbTemp = 28; + OutHumRat = 0.0146; + Tdischarge = 36; - { - // b. Evaporator + // Run + SC = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( + *state, HXOpMode::CondMode, Q_h_OU, Tdischarge, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); - // Inputs_condition - m_air = 3.6; - Q_c_OU = 24456; - OutDryBulbTemp = 7; - OutHumRat = 0.0019; - Tsuction = -3; + // Test + EXPECT_NEAR(1, SC, 0.01); + } - // Run - SH = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( - *state, HXOpMode::EvapMode, Q_c_OU, Tsuction, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + { + // b. Evaporator - // Test - EXPECT_NEAR(1, SH, 0.01); - } + // Inputs_condition + m_air = 3.6; + Q_c_OU = 24456; + OutDryBulbTemp = 7; + OutHumRat = 0.0019; + Tsuction = -3; + + // Run + SH = state->dataHVACVarRefFlow->VRF(VRFCond).VRFOU_SCSH( + *state, HXOpMode::EvapMode, Q_c_OU, Tsuction, m_air, OutDryBulbTemp, OutHumRat, OutBaroPress); + + // Test + EXPECT_NEAR(1, SH, 0.01); } - // Clean up - state->dataHVACVarRefFlow->VRF.deallocate(); +} +// Clean up +state->dataHVACVarRefFlow->VRF.deallocate(); } TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_GetCoilInput) From c4c306708224a2f51d142eaf032425cd20cd2474 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 10 May 2024 18:11:43 -0700 Subject: [PATCH 14/45] Use OnOffFanPartLoadFraction to control fan power response to this comment https://github.com/NREL/EnergyPlus/pull/10341#discussion_r1586858043 accumulated coil runtime fraction to the OnOffFanPartLoadFraction variable and accessed in SimVariableVolumeFan Not sure if it's good, might affect other models. --- src/EnergyPlus/DXCoils.cc | 2 +- src/EnergyPlus/Fans.cc | 1 + src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 23 ------------------- 3 files changed, 2 insertions(+), 24 deletions(-) diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc index e8170e723bb..a4cb24464a8 100644 --- a/src/EnergyPlus/DXCoils.cc +++ b/src/EnergyPlus/DXCoils.cc @@ -16932,7 +16932,7 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state, } // If cycling fan, send coil part-load fraction to on/off fan via HVACDataGlobals - if (FanOpMode == CycFanCycCoil) state.dataHVACGlobal->OnOffFanPartLoadFraction = PLF; + if (FanOpMode == CycFanCycCoil) state.dataHVACGlobal->OnOffFanPartLoadFraction = thisDXCoil.CoolingCoilRuntimeFraction; // Check for saturation error and modify temperature at constant enthalpy if (OutletAirTemp < PsyTsatFnHPb(state, OutletAirEnthalpy, OutdoorPressure)) { diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 6c86e82c2af..4b9c22ba014 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -1773,6 +1773,7 @@ void SimVariableVolumeFan(EnergyPlusData &state, int const FanNum, ObjexxFCL::Op fan.MassFlowRateMaxAvail = 0.0; fan.MassFlowRateMinAvail = 0.0; } + fan.FanPower *= state.dataHVACGlobal->OnOffFanPartLoadFraction; } void SimOnOffFan(EnergyPlusData &state, int const FanNum, ObjexxFCL::Optional SpeedRatio) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index b1cad9c5de0..e33e2531001 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -283,29 +283,6 @@ void SimulateVRF(EnergyPlusData &state, if (state.dataHVACVarRefFlow->VRF(VRFCondenser).CondenserType == DataHeatBalance::RefrigCondenserType::Water) UpdateVRFCondenser(state, VRFCondenser); } - if (state.dataHVACVarRefFlow->VRF(VRFCondenser).VRFAlgorithmType == AlgorithmType::FluidTCtrl) { - // consider cycling in fan calculation - for (int TUListNum = 1; TUListNum <= state.dataHVACVarRefFlow->NumVRFTULists; ++TUListNum) { - auto &thisTUList = state.dataHVACVarRefFlow->TerminalUnitList(TUListNum); - for (int TUNum = 1; TUNum <= thisTUList.NumTUInList; ++TUNum) { - int heatingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).HeatCoilIndex; - int coolingCoilNum = state.dataHVACVarRefFlow->VRFTU(TUNum).CoolCoilIndex; - auto &heatingCoil = state.dataDXCoils->DXCoil(heatingCoilNum); - auto &coolingCoil = state.dataDXCoils->DXCoil(coolingCoilNum); - int fanIndex = state.dataHVACVarRefFlow->VRFTU(TUNum).FanIndex; - // only deal with cooling for now. heating RTF might have some issue - // does Fan:SystemModel need adjustment as well? if so consider 0-indexing and it's in state.dataHVACFan->fanObjs vector - if (fanIndex > 0 && heatingCoil.HeatingCoilRuntimeFraction == 0.0) { // in cooling mode - // here coolingCoil.CoolingCoilRuntimeFraction equals state.dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio - // this is not the case for heating - auto &fan = state.dataFans->Fan(fanIndex); - fan.FanPower *= coolingCoil.CoolingCoilRuntimeFraction; - fan.FanEnergy = fan.FanPower * state.dataHVACGlobal->TimeStepSysSec; - fan.PowerLossToAir *= coolingCoil.CoolingCoilRuntimeFraction; - } - } - } - } } PlantComponent *VRFCondenserEquipment::factory(EnergyPlusData &state, std::string const &objectName) From 154343d15f1d23ee6693bdf6b89222c354cb8dec Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 13 May 2024 09:51:32 -0700 Subject: [PATCH 15/45] resolve merge conflict --- src/EnergyPlus/Fans.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 6df784cc36b..2db5a325677 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -1866,7 +1866,6 @@ void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::OptionalOnOffFanPartLoadFraction; -} } // FanComponent::SimVAV() void FanComponent::simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) From cf886aa43523f04d29d21ef7e1dcbaa72f88950b Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 22 May 2024 13:51:53 -0700 Subject: [PATCH 16/45] move fan power mod out of SimulateVAV resolving regression diffs --- src/EnergyPlus/Fans.cc | 1 - src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 2db5a325677..39b2e5a5040 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -1865,7 +1865,6 @@ void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::OptionalOnOffFanPartLoadFraction; } // FanComponent::SimVAV() void FanComponent::simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index ed63ece2202..457b5c767dd 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12841,6 +12841,10 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, } } + if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).OpMode == HVAC::CycFanCycCoil && + state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::VAV) { + state.dataFans->fans(this->FanIndex)->totalPower *= state.dataHVACGlobal->OnOffFanPartLoadFraction; + } // track fan power per terminal unit for calculating COP this->FanPower = state.dataFans->fans(this->FanIndex)->totalPower; From aef9b67a9e13566756946fc590596ae0c627fa03 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 22 May 2024 14:23:22 -0700 Subject: [PATCH 17/45] resolve unit test by init compressor cycling ratio now the compressor cycling ratio is needed in the calculation as it affects the OnOffFanPartLoadFraction value, which affects fan power --- tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index 8961567353e..ad1eaded23a 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -18155,6 +18155,9 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) GetVRFInput(*state); state->dataHVACVarRefFlow->GetVRFInputFlag = false; + state->dataHVACGlobal->OnOffFanPartLoadFraction = 1.0; + state->dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio = 1.0; + state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRF(VRFCond).SchedPtr).CurrentValue = 1.0; VRFTUNum = zone_num_TU1; state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRFTU(VRFTUNum).SchedPtr).CurrentValue = 1.0; @@ -20268,6 +20271,9 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_offSupplementalHtgCoilTest) GetVRFInput(*state); state->dataHVACVarRefFlow->GetVRFInputFlag = false; + state->dataHVACGlobal->OnOffFanPartLoadFraction = 1.0; + state->dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio = 1.0; + state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRF(VRFCond).SchedPtr).CurrentValue = 1.0; VRFTUNum = zone_num_TU1; state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRFTU(VRFTUNum).SchedPtr).CurrentValue = 1.0; From 26414a6f897d99351d7718b3d44a49cadfbfb148 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 29 May 2024 18:06:40 -0700 Subject: [PATCH 18/45] resolve build error from merge --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 577724b440c..fcb718818ef 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12852,7 +12852,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, } } - if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).OpMode == HVAC::CycFanCycCoil && + if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanOp == HVAC::FanOp::Cycling && state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::VAV) { state.dataFans->fans(this->FanIndex)->totalPower *= state.dataHVACGlobal->OnOffFanPartLoadFraction; } From 9de83a18a2dc02f4b9a180a76a45fd3f5dda19bd Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 12 Jun 2024 14:20:42 -0700 Subject: [PATCH 19/45] use optional arg in SimulateVAV to control for cycling --- src/EnergyPlus/Fans.cc | 8 +++++-- src/EnergyPlus/Fans.hh | 22 +++++++++++-------- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 11 +++++----- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 948c3084e3a..c5972d085a8 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -103,6 +103,7 @@ void FanBase::simulate(EnergyPlusData &state, // the legacy speed ratio that was used with SimulateFanComponents. ObjexxFCL::Optional _pressureRise, // Pressure difference to use for DeltaPress, for rating DX coils at a ObjexxFCL::Optional _flowFraction, // when used, this directs the fan to set the flow at this flow fraction + ObjexxFCL::Optional _onOffFanPartLoadFraction, // to control for cycling in VAV fan in VRFFluidTCtrl // different pressure without entire duct system ObjexxFCL::Optional _massFlowRate1, // Mass flow rate in operating mode 1 [kg/s] ObjexxFCL::Optional _runTimeFraction1, // Run time fraction in operating mode 1 @@ -138,7 +139,7 @@ void FanBase::simulate(EnergyPlusData &state, _thisFan->simulateConstant(state); } break; case HVAC::FanType::VAV: { - _thisFan->simulateVAV(state, _pressureRise); + _thisFan->simulateVAV(state, _pressureRise, _onOffFanPartLoadFraction); } break; case HVAC::FanType::OnOff: { _thisFan->simulateOnOff(state, _speedRatio); @@ -1700,7 +1701,9 @@ void FanComponent::simulateConstant(EnergyPlusData &state) } } // FanComponent::simulateConstant -void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional _pressureRise) +void FanComponent::simulateVAV(EnergyPlusData &state, + ObjexxFCL::Optional _pressureRise, + ObjexxFCL::Optional _onOffFanPartLoadFraction) { // SUBROUTINE INFORMATION: @@ -1866,6 +1869,7 @@ void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) diff --git a/src/EnergyPlus/Fans.hh b/src/EnergyPlus/Fans.hh index 9c47a241c84..fb4de15706a 100644 --- a/src/EnergyPlus/Fans.hh +++ b/src/EnergyPlus/Fans.hh @@ -97,14 +97,15 @@ namespace Fans { virtual void init(EnergyPlusData &state) = 0; virtual void simulate(EnergyPlusData &state, bool const FirstHVACIteration, - ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress - ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] - ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 - ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] - ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 - ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 + ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress + ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional onOffFanPartLoadFraction = 1.0, // to control for cycling in VAV fan in VRFFluidTCtrl + ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] + ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 + ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] + ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 + ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 ); virtual void update(EnergyPlusData &state) = 0; @@ -226,7 +227,10 @@ namespace Fans { void simulateConstant(EnergyPlusData &state); - void simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional PressureRise = _); + void simulateVAV(EnergyPlusData &state, + ObjexxFCL::Optional PressureRise = _, + // to control for cycling in VAV fan in VRFFluidTCtrl + ObjexxFCL::Optional OnOffFanPartLoadFraction = 1.0); void simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional SpeedRatio = _); diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index fcb718818ef..47d251dd90f 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12838,6 +12838,11 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, state.dataHVACVarRefFlow->LoopDXHeatCoilRTF = 0.0; } + Real64 OnOffFanPartLoadFraction = 1.0; + if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanOp == HVAC::FanOp::Cycling && + state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::VAV) { + OnOffFanPartLoadFraction = state.dataHVACGlobal->OnOffFanPartLoadFraction; + } // if draw through, simulate coils then fan if (this->fanPlace == HVAC::FanPlace::DrawThru) { auto *fan = state.dataFans->fans(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).FanIndex); @@ -12848,14 +12853,10 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, fan->simulate(state, FirstHVACIteration, _, _, PartLoadRatio); } } else { - fan->simulate(state, FirstHVACIteration, state.dataHVACVarRefFlow->FanSpeedRatio); + fan->simulate(state, FirstHVACIteration, state.dataHVACVarRefFlow->FanSpeedRatio, _, _, OnOffFanPartLoadFraction); } } - if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanOp == HVAC::FanOp::Cycling && - state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::VAV) { - state.dataFans->fans(this->FanIndex)->totalPower *= state.dataHVACGlobal->OnOffFanPartLoadFraction; - } // track fan power per terminal unit for calculating COP this->FanPower = state.dataFans->fans(this->FanIndex)->totalPower; From 5bb21f0b853489ac315df1d16d35666107a9ea6d Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 13 Jun 2024 10:16:15 -0700 Subject: [PATCH 20/45] fix unit and integration tests from optional arg addition --- src/EnergyPlus/Fans.cc | 4 +++- tst/EnergyPlus/unit/HVACFan.unit.cc | 30 ++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index c5972d085a8..bc337c1cb8e 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -1869,7 +1869,9 @@ void FanComponent::simulateVAV(EnergyPlusData &state, massFlowRateMaxAvail = 0.0; massFlowRateMinAvail = 0.0; } - totalPower *= _onOffFanPartLoadFraction; + if (present(_onOffFanPartLoadFraction)) { + totalPower *= _onOffFanPartLoadFraction; + } } // FanComponent::SimVAV() void FanComponent::simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) diff --git a/tst/EnergyPlus/unit/HVACFan.unit.cc b/tst/EnergyPlus/unit/HVACFan.unit.cc index 2e485829db9..8f4fa6c1fb3 100644 --- a/tst/EnergyPlus/unit/HVACFan.unit.cc +++ b/tst/EnergyPlus/unit/HVACFan.unit.cc @@ -345,7 +345,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; Real64 locExpectPower = (runTimeFrac1 * 0.125 * 100.0) + (runTimeFrac2 * 1.0 * 100.0); EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -355,7 +355,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // locExpectPower expect the same power as the previous case EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -365,7 +365,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = fanSystem->designElecPower; // expect full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -375,13 +375,13 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = 0.85 * fanSystem->designElecPower; // expect 85% of full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); // reverse the 1 and 2 arguments, expect the same result - fanSystem->simulate(*state, false, _, _, _, massFlow2, runTimeFrac2, massFlow1, runTimeFrac1); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow2, runTimeFrac2, massFlow1, runTimeFrac1); locFanElecPower = fanSystem->totalPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); } @@ -445,7 +445,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; Real64 locExpectPower = (0.5 * pow(0.5, 3) + 0.5 * 1.0) * fanSystem->designElecPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -455,7 +455,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = pow(0.75, 3) * fanSystem->designElecPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -465,7 +465,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = fanSystem->designElecPower; // expect full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -475,7 +475,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = 0.85 * fanSystem->designElecPower; // expect 85% of full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -536,7 +536,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 50% of time at 50% flow and 50% of time at 100% flow Real64 locExpectPower = (0.5 * 0.5 + 0.5 * 1.0) * fanSystem->designElecPower; // expect 75% of power @@ -547,7 +547,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 100% of time at 75% flow locExpectPower = (0.0 * 0.0 + 1.0 * 0.75) * fanSystem->designElecPower; // expect 75% of power @@ -558,7 +558,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 100% of time at 100% flow locExpectPower = (0.0 * 0.0 + 1.0 * 1.0) * fanSystem->designElecPower; // expect full power @@ -569,7 +569,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 85% of time at 100% flow locExpectPower = (0.0 * 0.25 + 0.85 * 1.0) * fanSystem->designElecPower; // expect 85% of full power @@ -642,7 +642,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_EMSPressureRiseResetTest) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 50% of time at 50% flow and 50% of time at 100% flow Real64 locExpectPower = (0.5 * 0.5 + 0.5 * 1.0) * fanSystem->designElecPower; // expect 75% of power @@ -654,7 +654,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_EMSPressureRiseResetTest) EMSManager::ManageEMS(*state, EMSManager::EMSCallFrom::BeginTimestepBeforePredictor, anyRan, ObjexxFCL::Optional_int_const()); EXPECT_TRUE(anyRan); // simulate the fan with -100.0 Pa fan pressure rise - fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // negative fan pressure rise results in zero fan power locExpectPower = 0.0; From 1a07c51671bdd3b9b668a114e40efab4714f6016 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 8 Jul 2024 11:24:25 -0700 Subject: [PATCH 21/45] change varname to fanRunTimeFraction, add comments to this arg this argument is only used in VRFFluidTCtrl model, not regular VAV --- src/EnergyPlus/Fans.cc | 14 +++++++++----- src/EnergyPlus/Fans.hh | 24 +++++++++++++----------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index bc337c1cb8e..3f5cca1da63 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -103,7 +103,9 @@ void FanBase::simulate(EnergyPlusData &state, // the legacy speed ratio that was used with SimulateFanComponents. ObjexxFCL::Optional _pressureRise, // Pressure difference to use for DeltaPress, for rating DX coils at a ObjexxFCL::Optional _flowFraction, // when used, this directs the fan to set the flow at this flow fraction - ObjexxFCL::Optional _onOffFanPartLoadFraction, // to control for cycling in VAV fan in VRFFluidTCtrl + ObjexxFCL::Optional + _fanRunTimeFraction, // This argument is only used in the variable volume fan in + // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. // different pressure without entire duct system ObjexxFCL::Optional _massFlowRate1, // Mass flow rate in operating mode 1 [kg/s] ObjexxFCL::Optional _runTimeFraction1, // Run time fraction in operating mode 1 @@ -139,7 +141,7 @@ void FanBase::simulate(EnergyPlusData &state, _thisFan->simulateConstant(state); } break; case HVAC::FanType::VAV: { - _thisFan->simulateVAV(state, _pressureRise, _onOffFanPartLoadFraction); + _thisFan->simulateVAV(state, _pressureRise, _fanRunTimeFraction); } break; case HVAC::FanType::OnOff: { _thisFan->simulateOnOff(state, _speedRatio); @@ -1703,7 +1705,9 @@ void FanComponent::simulateConstant(EnergyPlusData &state) void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional _pressureRise, - ObjexxFCL::Optional _onOffFanPartLoadFraction) + // This argument is only used in the variable volume fan in + // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. + ObjexxFCL::Optional _fanRunTimeFraction) { // SUBROUTINE INFORMATION: @@ -1869,8 +1873,8 @@ void FanComponent::simulateVAV(EnergyPlusData &state, massFlowRateMaxAvail = 0.0; massFlowRateMinAvail = 0.0; } - if (present(_onOffFanPartLoadFraction)) { - totalPower *= _onOffFanPartLoadFraction; + if (present(_fanRunTimeFraction)) { + totalPower *= _fanRunTimeFraction; } } // FanComponent::SimVAV() diff --git a/src/EnergyPlus/Fans.hh b/src/EnergyPlus/Fans.hh index a84ec8d1af5..9086cadde83 100644 --- a/src/EnergyPlus/Fans.hh +++ b/src/EnergyPlus/Fans.hh @@ -97,15 +97,16 @@ namespace Fans { virtual void init(EnergyPlusData &state) = 0; virtual void simulate(EnergyPlusData &state, bool const FirstHVACIteration, - ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress - ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional onOffFanPartLoadFraction = 1.0, // to control for cycling in VAV fan in VRFFluidTCtrl - ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] - ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 - ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] - ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 - ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 + ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress + ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional fanRuntimeFraction = 1.0, // This argument is only used in the variable volume fan in + // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. + ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] + ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 + ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] + ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 + ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 ); virtual void update(EnergyPlusData &state) = 0; @@ -229,8 +230,9 @@ namespace Fans { void simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional PressureRise = _, - // to control for cycling in VAV fan in VRFFluidTCtrl - ObjexxFCL::Optional OnOffFanPartLoadFraction = 1.0); + // This argument is only used in the variable volume fan in + // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. + ObjexxFCL::Optional fanRuntimeFraction = 1.0); void simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional SpeedRatio = _); From 733ec7ea190a9a1e1a77627869a667f293748fad Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 15 Jul 2024 17:44:28 -0700 Subject: [PATCH 22/45] use SystemModel for fan object in VRFFluidTCtrl TU --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 5 +- ...US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf | 64 ++++++++++++++----- 2 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 79e475f5dfb..c2fd71961dd 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12865,8 +12865,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, } Real64 OnOffFanPartLoadFraction = 1.0; - if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanOp == HVAC::FanOp::Cycling && - state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::VAV) { + if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanOp == HVAC::FanOp::Cycling) { OnOffFanPartLoadFraction = state.dataHVACGlobal->OnOffFanPartLoadFraction; } // if draw through, simulate coils then fan @@ -12874,7 +12873,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, auto *fan = state.dataFans->fans(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).FanIndex); if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::SystemModel) { if (OnOffAirFlowRatio > 0.0) { - fan->simulate(state, FirstHVACIteration, _, _); + fan->simulate(state, FirstHVACIteration, _, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); } else { fan->simulate(state, FirstHVACIteration, _, _, PartLoadRatio); } diff --git a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf index 91ddad35a01..3a82696c3c0 100644 --- a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf +++ b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf @@ -482,7 +482,7 @@ 0, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanModeSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU1 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU1 OA Mixer, !- Outside Air Mixer Object Name @@ -530,25 +530,57 @@ OutdoorAir:NodeList, Outside Air Inlet Node 1;!- Node or NodeList Name 1 - Fan:VariableVolume, + !- Fan:VariableVolume, + !- TU1 VRF Supply Fan, !- Name + !- VRFAvailSched, !- Availability Schedule Name + !- 0.5, !- Fan Total Efficiency + !- 400, !- Pressure Rise {Pa} + !- 0.595, !- Maximum Flow Rate {m3/s} + !- FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method + !- 0, !- Fan Power Minimum Flow Fraction + !- 0.415, !- Fan Power Minimum Air Flow Rate {m3/s} + !- 0.9, !- Motor Efficiency + !- 1, !- Motor In Airstream Fraction + !- 0.09, !- Fan Power Coefficient 1 + !- 0, !- Fan Power Coefficient 2 + !- 0, !- Fan Power Coefficient 3 + !- 0.91, !- Fan Power Coefficient 4 + !- 0, !- Fan Power Coefficient 5 + !- TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + !- TU1 VRF Fan Outlet Node, !- Air Outlet Node Name + !- General; !- End-Use Subcategory + + Fan:SystemModel, TU1 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.5, !- Fan Total Efficiency - 400, !- Pressure Rise {Pa} - 0.595, !- Maximum Flow Rate {m3/s} - FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0.415, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.09, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.91, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU1 VRF Fan Outlet Node, !- Air Outlet Node Name - General; !- End-Use Subcategory + 0.595, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.415, !- Electric Power Minimum Flow Rate Fraction + 400, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1.0, !- Motor In Air Stream Fraction + 476, !- Design Electric Power Consumption {W} + , !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.5, !- Fan Total Efficiency + Fan Power Curve; !- Electric Power Function of Flow Fraction Curve Name + + Curve:Quartic, + Fan Power Curve , !- Name + 0.09, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.91, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 1.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== From 63196565209945f5565c6e5f2fc8629df2875d1f Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 15 Jul 2024 18:01:20 -0700 Subject: [PATCH 23/45] relax curve output range and fix min x Fan:SystemModel --- testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf index 3a82696c3c0..09900d222ef 100644 --- a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf +++ b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf @@ -575,10 +575,10 @@ 0, !- Coefficient3 x**2 0.91, !- Coefficient4 x**3 0, !- Coefficient5 x**4 - 0.0, !- Minimum Value of x + 0.6975, !- Minimum Value of x 1.0, !- Maximum Value of x 0.0, !- Minimum Curve Output - 1.0, !- Maximum Curve Output + 5.0, !- Maximum Curve Output Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type From 79a0810cd1bdbac5be8e46045d98910f7dbb1cbe Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 17 Jul 2024 10:24:50 -0700 Subject: [PATCH 24/45] transition code Fan:VariableVolume to Fan:SystemModel --- .../CreateNewIDFUsingRulesV24_2_0.f90 | 156 ++++++++++++++++++ .../InputRulesFiles/Rules24-1-0-to-24-2-0.md | 8 + 2 files changed, 164 insertions(+) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 78900861161..9fc4ceeb14a 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -124,6 +124,40 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! I N S E R T L O C A L V A R I A B L E S H E R E ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! used in transition code for changing fan in ZoneHVAC:TerminalUnit:VariableRefrigerantFlow from VariableVolume to SystemModel + LOGICAL :: isVariableVolume + REAL :: fanTotalEff + REAL :: pressureRise + REAL :: maxAirFlow + REAL :: minAirFlowFrac + REAL :: fanPowerMinAirFlow + INTEGER :: NumFanVariableVolume = 0 + INTEGER :: NumOldFanVO = 0 + INTEGER :: Num3 + CHARACTER(len=MaxNameLength) :: sysFanName + CHARACTER(len=MaxNameLength) :: vavFanName + + TYPE FanVOTransitionInfo + CHARACTER(len=MaxNameLength) :: oldFanName + CHARACTER(len=MaxNameLength) :: availSchedule + CHARACTER(len=MaxNameLength) :: fanTotalEff_str + CHARACTER(len=MaxNameLength) :: pressureRise_str + CHARACTER(len=MaxNameLength) :: maxAirFlow_str + CHARACTER(len=MaxNameLength) :: minFlowInputMethod + CHARACTER(len=MaxNameLength) :: minAirFlowFrac_str + CHARACTER(len=MaxNameLength) :: fanPowerMinAirFlow_str + CHARACTER(len=MaxNameLength) :: motorEfficiency + CHARACTER(len=MaxNameLength) :: motorInAirStreamFrac + CHARACTER(len=MaxNameLength) :: coeff1 !- Coefficient1 Constant + CHARACTER(len=MaxNameLength) :: coeff2 !- Coefficient2 x + CHARACTER(len=MaxNameLength) :: coeff3 !- Coefficient3 x**2 + CHARACTER(len=MaxNameLength) :: coeff4 !- Coefficient4 x**3 + CHARACTER(len=MaxNameLength) :: coeff5 !- Coefficient5 x**4 + CHARACTER(len=MaxNameLength) :: inletAirNodeName + CHARACTER(len=MaxNameLength) :: outletAirNodeName + CHARACTER(len=MaxNameLength) :: endUseSubCat + END TYPE FanVOTransitionInfo + TYPE(FanVOTransitionInfo), ALLOCATABLE, DIMENSION(:) :: OldFanVO INTEGER :: TotSPMs = 0 INTEGER :: spmNum = 0 @@ -317,6 +351,37 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ENDDO ENDDO + ! accumulate info on VAV fans + NumFanVariableVolume = GetNumObjectsFound('FAN:VARIABLEVOLUME') + IF (ALLOCATED(OldFanVO)) DEALLOCATE(OldFanVO) + ALLOCATE(OldFanVO(NumFanVariableVolume)) + NumOldFanVO = 0 + DO Num = 1, NumIDFRecords + SELECT CASE (MakeUPPERCase(IDFRecords(Num)%Name)) + CASE ('FAN:VARIABLEVOLUME') + NumOldFanVO = NumOldFanVO + 1 + ! debug print + PRINT *, "Alphas", TRIM(IDFRecords(Num)%Alphas(1)), TRIM(IDFRecords(Num)%Alphas(6)) + OldFanVO(NumOldFanVO)%oldFanName = TRIM(IDFRecords(Num)%Alphas(1)) + OldFanVO(NumOldFanVO)%availSchedule = TRIM(IDFRecords(Num)%Alphas(2)) + OldFanVO(NumOldFanVO)%fanTotalEff_str = TRIM(IDFRecords(Num)%Numbers(1)) + OldFanVO(NumOldFanVO)%pressureRise_str = TRIM(IDFRecords(Num)%Numbers(2)) + OldFanVO(NumOldFanVO)%maxAirFlow_str = TRIM(IDFRecords(Num)%Numbers(3)) + OldFanVO(NumOldFanVO)%minFlowInputMethod = TRIM(IDFRecords(Num)%Alphas(3)) + OldFanVO(NumOldFanVO)%minAirFlowFrac_str = TRIM(IDFRecords(Num)%Numbers(4)) + OldFanVO(NumOldFanVO)%fanPowerMinAirFlow_str = TRIM(IDFRecords(Num)%Numbers(5)) + OldFanVO(NumOldFanVO)%motorEfficiency = TRIM(IDFRecords(Num)%Numbers(6)) + OldFanVO(NumOldFanVO)%motorInAirStreamFrac = TRIM(IDFRecords(Num)%Numbers(7)) + OldFanVO(NumOldFanVO)%coeff1 = TRIM(IDFRecords(Num)%Numbers(8)) !- Coefficient1 Constant + OldFanVO(NumOldFanVO)%coeff2 = TRIM(IDFRecords(Num)%Numbers(9)) !- Coefficient2 x + OldFanVO(NumOldFanVO)%coeff3 = TRIM(IDFRecords(Num)%Numbers(10)) !- Coefficient3 x**2 + OldFanVO(NumOldFanVO)%coeff4 = TRIM(IDFRecords(Num)%Numbers(11)) !- Coefficient4 x**3 + OldFanVO(NumOldFanVO)%coeff5 = TRIM(IDFRecords(Num)%Numbers(12)) !- Coefficient5 x**4 + OldFanVO(NumOldFanVO)%inletAirNodeName = TRIM(IDFRecords(Num)%Alphas(4)) + OldFanVO(NumOldFanVO)%outletAirNodeName = TRIM(IDFRecords(Num)%Alphas(5)) + OldFanVO(NumOldFanVO)%endUseSubCat = TRIM(IDFRecords(Num)%Alphas(6)) + END SELECT + END DO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! P R O C E S S I N G ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -485,6 +550,97 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! If your original object starts with Z, insert the rules here +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + CASE('ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW') + isVariableVolume = .FALSE. + CALL GetNewObjectDefInIDD(ObjectName, NwNumArgs, NwAorN, NwReqFld, NwObjMinFlds, NwFldNames, NwFldDefaults, NwFldUnits) + nodiff = .false. + OutArgs(1:13) = InArgs(1:13) + IF (SameString(InArgs(14), 'FAN:VARIABLEVOLUME')) THEN + isVariableVolume = .TRUE. + OutArgs(14) = 'FAN:SYSTEMMODEL' + ! create a new fan object with a new name + OutArgs(15) = TRIM(InArgs(15)) // '_sysModel' + sysFanName = TRIM(InArgs(15)) // '_sysModel' + vavFanName = TRIM(InArgs(15)) + ELSE + OutArgs(14:15) = InArgs(14:15) + ENDIF + OutArgs(16:CurArgs) = InArgs(16:CurArgs) + CALL WriteOutIDFLines(DifLfn, 'ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW', CurArgs, OutArgs, NwFldNames, NwFldUnits) + + IF (isVariableVolume) THEN + ! create fan system model object + ObjectName = 'Fan:SystemModel' + DO Num3 = 1, NumFanVariableVolume + IF (SameString(OldFanVO(Num3)%oldFanName, vavFanName)) THEN + CALL GetNewObjectDefInIDD(ObjectName, NwNumArgs, NwAorN, NwReqFld, NwObjMinFlds, NwFldNames, NwFldDefaults, NwFldUnits) + OutArgs(1) = TRIM(sysFanName) + OutArgs(2) = OldFanVO(Num3)%availSchedule + OutArgs(3) = OldFanVO(Num3)%inletAirNodeName + OutArgs(4) = OldFanVO(Num3)%outletAirNodeName + OutArgs(5) = OldFanVO(Num3)%maxAirFlow_str + OutArgs(6) = 'Continuous' !- Speed Control Method + IF (SameString(OldFanVO(Num3)%minFlowInputMethod, "FixedFlowRate")) THEN + OutArgs(7) = OldFanVO(Num3)%maxAirFlow_str + ELSE ! input method is "Fraction" + READ(OldFanVO(Num3)%minAirFlowFrac_str, '(F15.5)') minAirFlowFrac + IF (minAirFlowFrac == 0.0) THEN + OutArgs(7) = '0.0' + ELSE + IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN + READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow + WRITE(OutArgs(7), '(F15.5)') (maxAirFlow * minAirFlowFrac) + ELSE ! don't know how to multiply fraction with autosize + OutArgs(7) = '' + ENDIF + ENDIF + ENDIF + OutArgs(8) = OldFanVO(Num3)%pressureRise_str !- Design Pressure Rise {Pa} + OutArgs(9) = OldFanVO(Num3)%motorEfficiency !- Motor Efficiency + OutArgs(10) = OldFanVO(Num3)%motorInAirStreamFrac !- Motor In Air Stream Fraction + IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN + READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow + READ(OldFanVO(Num3)%pressureRise_str, '(F15.5)') pressureRise + READ(OldFanVO(Num3)%fanTotalEff_str, '(F15.5)') fanTotalEff + WRITE(OutArgs(11), '(F15.5)') (maxAirFlow * pressureRise / fanTotalEff) !- Design Electric Power Consumption {W} + ELSE + OutArgs(11) = 'autosize' + OutArgs(12) = 'TotalEfficiencyAndPressure' ! chose this becuase power per flow or per pressure are unknown + ENDIF + OutArgs(13) = '' !- Electric Power Per Unit Flow Rate {W/(m3/s)} + OutArgs(14) = '' !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + OutArgs(15) = OldFanVO(Num3)%fanTotalEff_str !- Fan Total Efficiency + OutArgs(16) = TRIM(sysFanName) // '_curve' !- Electric Power Function of Flow Fraction Curve Name + OutArgs(17) = '' + OutArgs(18) = '' + OutArgs(19) = '' + OutArgs(20) = '' + OutArgs(21) = OldFanVO(Num3)%endUseSubCat !- End-Use Subcategory + CurArgs = 21 !- Design Electric Power Consumption {W} + CALL WriteOutIDFLines(DifLfn, ObjectName, CurArgs, OutArgs, NwFldNames, NwFldUnits) + + ! create curve object + ObjectName = 'Curve:Quartic' + CALL GetNewObjectDefInIDD(ObjectName, NwNumArgs, NwAorN, NwReqFld, NwObjMinFlds, NwFldNames, NwFldDefaults, NwFldUnits) + OutArgs(1) = TRIM(sysFanName) // '_curve' + OutArgs(2) = OldFanVO(Num3)%coeff1 !- Coefficient1 Constant + OutArgs(3) = OldFanVO(Num3)%coeff2 !- Coefficient2 x + OutArgs(4) = OldFanVO(Num3)%coeff3 !- Coefficient3 x**2 + OutArgs(5) = OldFanVO(Num3)%coeff4 !- Coefficient4 x**3 + OutArgs(6) = OldFanVO(Num3)%coeff5 !- Coefficient5 x**4 + READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow + WRITE(OutArgs(7), '(F10.7)') (fanPowerMinAirFlow / maxAirFlow) !- Minimum Value of x + OutArgs(8) = '1.0' !- Maximum Value of x + OutArgs(9) = '0.0' !- Minimum Curve Output + OutArgs(10) = '5.0' !- Maximum Curve Output + OutArgs(11) = 'Dimensionless' !- Input Unit Type for X + OutArgs(12) = 'Dimensionless' !- Output Unit Type + CurArgs = 12 + ENDIF + ENDDO + ENDIF + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Changes for report variables, meters, tables -- update names ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/src/Transition/InputRulesFiles/Rules24-1-0-to-24-2-0.md b/src/Transition/InputRulesFiles/Rules24-1-0-to-24-2-0.md index dd4cf24cda0..073f46274a4 100644 --- a/src/Transition/InputRulesFiles/Rules24-1-0-to-24-2-0.md +++ b/src/Transition/InputRulesFiles/Rules24-1-0-to-24-2-0.md @@ -73,3 +73,11 @@ There are three new optional heat recovery fields at the end which transition wi # Object Change: ObjectStartsWithY # Object Change: ObjectStartsWithZ +## "ZoneHVAC:TerminalUnit:VariableRefrigerantFlow" +If field "Supply Air Fan Object Type" (A7, the 14th field) in +"ZoneHVAC:TerminalUnit:VariableRefrigerantFlow" is "Fan:VariableVolume", it +needs to be changed to "Fan:SystemModel". A "Fan:SystemModel" object need to be +created based on the former "Fan:VariableVolume" object. A fan power curve will +be created as well that holds the "Fan Power Coefficient i" in Fan:VariableVolume. + +See PR https://github.com/NREL/EnergyPlus/pull/10341 From 289d5cc4642f0d7c04c52ea817423bc86e9b58d6 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 17 Jul 2024 14:44:32 -0700 Subject: [PATCH 25/45] update idd and doc to remove vav fan Fan:VariableVolume is not allowed in the ZoneHVAC:TerminalUnit:VariableRefrigerantFlow any more. The previous VariableVolume one used in the FluidTCtrl model is converted to Fan:SystemModel --- .../src/overview/group-zone-forced-air-units.tex | 2 +- idd/Energy+.idd.in | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/input-output-reference/src/overview/group-zone-forced-air-units.tex b/doc/input-output-reference/src/overview/group-zone-forced-air-units.tex index 2daad751ecc..43f2e9f2f5e 100644 --- a/doc/input-output-reference/src/overview/group-zone-forced-air-units.tex +++ b/doc/input-output-reference/src/overview/group-zone-forced-air-units.tex @@ -4060,7 +4060,7 @@ \subsubsection{Inputs}\label{inputs-14-018} \paragraph{Field: Supply Air Fan Object Type}\label{field-supply-air-fan-object-type-8} -This choice field contains the identifying type of supply air fan specified for the furnace. Fan type must be \textit{\hyperref[fanonoff]{Fan:OnOff}}, \textit{\hyperref[fanconstantvolume]{Fan:ConstantVolume}}, \textit{\hyperref[fansystemmodel]{Fan:SystemModel}} or \textit{\hyperref[fanvariablevolume]{Fan:VariableVolume}}. The Supply Air Fan Object Type must be \hyperref[fansystemmodel]{Fan:SystemModel}, \hyperref[fanonoff]{Fan:OnOff}, or \hyperref[fanconstantvolume]{Fan:ConstantVolume} if \hyperref[airconditionervariablerefrigerantflow]{AirConditioner:VariableRefrigerantFlow} is used to model the VRF outdoor unit. The Supply Air Fan Object Type must be \hyperref[fansystemmodel]{Fan:SystemModel} or \hyperref[fanvariablevolume]{Fan:VariableVolume} if AirConditioner:VariableRefrigerantFlow:\-FluidTemperatureControl or AirConditioner:VariableRefrigerantFlow:\-FluidTemperatureControl:HR is used to model the VRF outdoor unit. +This choice field contains the identifying type of supply air fan specified for the furnace. Fan type must be \textit{\hyperref[fanonoff]{Fan:OnOff}}, \textit{\hyperref[fanconstantvolume]{Fan:ConstantVolume}}, \textit{\hyperref[fansystemmodel]{Fan:SystemModel}}. The Supply Air Fan Object Type must be \hyperref[fansystemmodel]{Fan:SystemModel}, \hyperref[fanonoff]{Fan:OnOff}, or \hyperref[fanconstantvolume]{Fan:ConstantVolume} if \hyperref[airconditionervariablerefrigerantflow]{AirConditioner:VariableRefrigerantFlow} is used to model the VRF outdoor unit. The Supply Air Fan Object Type must be \hyperref[fansystemmodel]{Fan:SystemModel} if AirConditioner:VariableRefrigerantFlow:\-FluidTemperatureControl or AirConditioner:VariableRefrigerantFlow:\-FluidTemperatureControl:HR is used to model the VRF outdoor unit. \hyperref[fanconstantvolume]{Fan:ConstantVolume} is used when the Supply Air Fan Operating Mode Schedule values are never 0 and the fan operates continuously. \hyperref[fanonoff]{Fan:OnOff} is used when the fan cycles on and off with the cooling or heating coil (i.e.~Supply Air Fan Operating Mode Schedule values are at times 0). The \hyperref[fansystemmodel]{Fan:SystemModel} may be used to model either of these fan operating characteristics. diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index 0193d450215..8ecca331289 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -42464,11 +42464,10 @@ ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, \key Fan:SystemModel \key Fan:OnOff \key Fan:ConstantVolume - \key Fan:VariableVolume \default Fan:ConstantVolume \note Supply Air Fan Object Type must be Fan:SystemModel, Fan:OnOff, or Fan:ConstantVolume \note if AirConditioner:VariableRefrigerantFlow is used to model VRF outdoor unit - \note Supply Air Fan Object Type must be Fan:SystemModel or Fan:VariableVolume if + \note Supply Air Fan Object Type must be Fan:SystemModel if \note AirConditioner:VariableRefrigerantFlow:FluidTemperatureControl or \note AirConditioner:VariableRefrigerantFlow:FluidTemperatureControl:HR \note is used to model VRF outdoor unit From 6e791434c07e09590fbf3b7a7084ca7f16320b52 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 17 Jul 2024 18:02:51 -0700 Subject: [PATCH 26/45] add transition to delete old VAV fan objects --- .../CreateNewIDFUsingRulesV24_2_0.f90 | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 9fc4ceeb14a..e158c7eac6b 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -131,11 +131,14 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile REAL :: maxAirFlow REAL :: minAirFlowFrac REAL :: fanPowerMinAirFlow - INTEGER :: NumFanVariableVolume = 0 - INTEGER :: NumOldFanVO = 0 - INTEGER :: Num3 + INTEGER :: NumFanVariableVolume + INTEGER :: NumOldFanVO = 1 + INTEGER :: NumVRFTU = 1 + INTEGER :: Num3 = 1 + INTEGER :: VRFTU_i = 1 CHARACTER(len=MaxNameLength) :: sysFanName CHARACTER(len=MaxNameLength) :: vavFanName + CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: vavFanNameToDelete TYPE FanVOTransitionInfo CHARACTER(len=MaxNameLength) :: oldFanName @@ -351,17 +354,30 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ENDDO ENDDO + ! collect old VAV fans to be deleted + NumVRFTU = GetNumObjectsFound('ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW') + IF(ALLOCATED(vavFanNameToDelete)) DEALLOCATE(vavFanNameToDelete) + ALLOCATE(vavFanNameToDelete(NumVRFTU)) + DO Num = 1, NumIDFRecords + SELECT CASE (MakeUPPERCase(IDFRecords(Num)%Name)) + CASE('ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW') + IF (SameString(TRIM(IDFRecords(Num)%Alphas(7)), 'FAN:VARIABLEVOLUME')) THEN + vavFanNameToDelete(VRFTU_i) =TRIM(IDFRecords(Num)%Alphas(8)) + ELSE + vavFanNameToDelete(VRFTU_i) = '' + ENDIF + VRFTU_i = VRFTU_i + 1 + END SELECT + END DO + ! accumulate info on VAV fans NumFanVariableVolume = GetNumObjectsFound('FAN:VARIABLEVOLUME') IF (ALLOCATED(OldFanVO)) DEALLOCATE(OldFanVO) ALLOCATE(OldFanVO(NumFanVariableVolume)) - NumOldFanVO = 0 + NumOldFanVO = 1 DO Num = 1, NumIDFRecords SELECT CASE (MakeUPPERCase(IDFRecords(Num)%Name)) CASE ('FAN:VARIABLEVOLUME') - NumOldFanVO = NumOldFanVO + 1 - ! debug print - PRINT *, "Alphas", TRIM(IDFRecords(Num)%Alphas(1)), TRIM(IDFRecords(Num)%Alphas(6)) OldFanVO(NumOldFanVO)%oldFanName = TRIM(IDFRecords(Num)%Alphas(1)) OldFanVO(NumOldFanVO)%availSchedule = TRIM(IDFRecords(Num)%Alphas(2)) OldFanVO(NumOldFanVO)%fanTotalEff_str = TRIM(IDFRecords(Num)%Numbers(1)) @@ -380,8 +396,13 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OldFanVO(NumOldFanVO)%inletAirNodeName = TRIM(IDFRecords(Num)%Alphas(4)) OldFanVO(NumOldFanVO)%outletAirNodeName = TRIM(IDFRecords(Num)%Alphas(5)) OldFanVO(NumOldFanVO)%endUseSubCat = TRIM(IDFRecords(Num)%Alphas(6)) + IF (FindItemInList(TRIM(IDFRecords(Num)%Alphas(1)), vavFanNameToDelete, NumVRFTU) /= 0) THEN + DeleteThisRecord(Num) = .TRUE. + ENDIF + NumOldFanVO = NumOldFanVO + 1 END SELECT END DO + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! P R O C E S S I N G ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! From f0a18f4051758dd1b71a9aafd2d5133ba2740c46 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 17 Jul 2024 18:08:40 -0700 Subject: [PATCH 27/45] Revert "change varname to fanRunTimeFraction, add comments to this arg" This reverts commit 1a07c51671bdd3b9b668a114e40efab4714f6016. --- src/EnergyPlus/Fans.cc | 14 +++++--------- src/EnergyPlus/Fans.hh | 24 +++++++++++------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index e1a0ff5fae0..1e4a4c2f15c 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -104,9 +104,7 @@ void FanBase::simulate(EnergyPlusData &state, // the legacy speed ratio that was used with SimulateFanComponents. ObjexxFCL::Optional _pressureRise, // Pressure difference to use for DeltaPress, for rating DX coils at a ObjexxFCL::Optional _flowFraction, // when used, this directs the fan to set the flow at this flow fraction - ObjexxFCL::Optional - _fanRunTimeFraction, // This argument is only used in the variable volume fan in - // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. + ObjexxFCL::Optional _onOffFanPartLoadFraction, // to control for cycling in VAV fan in VRFFluidTCtrl // different pressure without entire duct system ObjexxFCL::Optional _massFlowRate1, // Mass flow rate in operating mode 1 [kg/s] ObjexxFCL::Optional _runTimeFraction1, // Run time fraction in operating mode 1 @@ -142,7 +140,7 @@ void FanBase::simulate(EnergyPlusData &state, _thisFan->simulateConstant(state); } break; case HVAC::FanType::VAV: { - _thisFan->simulateVAV(state, _pressureRise, _fanRunTimeFraction); + _thisFan->simulateVAV(state, _pressureRise, _onOffFanPartLoadFraction); } break; case HVAC::FanType::OnOff: { _thisFan->simulateOnOff(state, _speedRatio); @@ -1716,9 +1714,7 @@ void FanComponent::simulateConstant(EnergyPlusData &state) void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional _pressureRise, - // This argument is only used in the variable volume fan in - // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. - ObjexxFCL::Optional _fanRunTimeFraction) + ObjexxFCL::Optional _onOffFanPartLoadFraction) { // SUBROUTINE INFORMATION: @@ -1884,8 +1880,8 @@ void FanComponent::simulateVAV(EnergyPlusData &state, massFlowRateMaxAvail = 0.0; massFlowRateMinAvail = 0.0; } - if (present(_fanRunTimeFraction)) { - totalPower *= _fanRunTimeFraction; + if (present(_onOffFanPartLoadFraction)) { + totalPower *= _onOffFanPartLoadFraction; } } // FanComponent::SimVAV() diff --git a/src/EnergyPlus/Fans.hh b/src/EnergyPlus/Fans.hh index 411dd9093eb..fce7296764e 100644 --- a/src/EnergyPlus/Fans.hh +++ b/src/EnergyPlus/Fans.hh @@ -97,16 +97,15 @@ namespace Fans { virtual void init(EnergyPlusData &state) = 0; virtual void simulate(EnergyPlusData &state, bool const FirstHVACIteration, - ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress - ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional fanRuntimeFraction = 1.0, // This argument is only used in the variable volume fan in - // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. - ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] - ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 - ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] - ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 - ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 + ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress + ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional onOffFanPartLoadFraction = 1.0, // to control for cycling in VAV fan in VRFFluidTCtrl + ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] + ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 + ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] + ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 + ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 ); virtual void update(EnergyPlusData &state) = 0; @@ -231,9 +230,8 @@ namespace Fans { void simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional PressureRise = _, - // This argument is only used in the variable volume fan in - // VRFFluidTCtrl model to control for fan cycling. Please do not use it in normal VAV model. - ObjexxFCL::Optional fanRuntimeFraction = 1.0); + // to control for cycling in VAV fan in VRFFluidTCtrl + ObjexxFCL::Optional OnOffFanPartLoadFraction = 1.0); void simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional SpeedRatio = _); From b5fa9ea8ed4e826f36a363feef24a83f303689cd Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 17 Jul 2024 18:09:41 -0700 Subject: [PATCH 28/45] Revert "fix unit and integration tests from optional arg addition" This reverts commit 5bb21f0b853489ac315df1d16d35666107a9ea6d. --- src/EnergyPlus/Fans.cc | 4 +--- tst/EnergyPlus/unit/HVACFan.unit.cc | 30 ++++++++++++++--------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 1e4a4c2f15c..45da3b366f7 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -1880,9 +1880,7 @@ void FanComponent::simulateVAV(EnergyPlusData &state, massFlowRateMaxAvail = 0.0; massFlowRateMinAvail = 0.0; } - if (present(_onOffFanPartLoadFraction)) { - totalPower *= _onOffFanPartLoadFraction; - } + totalPower *= _onOffFanPartLoadFraction; } // FanComponent::SimVAV() void FanComponent::simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) diff --git a/tst/EnergyPlus/unit/HVACFan.unit.cc b/tst/EnergyPlus/unit/HVACFan.unit.cc index 19d6712f71c..5303e1b3be6 100644 --- a/tst/EnergyPlus/unit/HVACFan.unit.cc +++ b/tst/EnergyPlus/unit/HVACFan.unit.cc @@ -345,7 +345,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; Real64 locExpectPower = (runTimeFrac1 * 0.125 * 100.0) + (runTimeFrac2 * 1.0 * 100.0); EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -355,7 +355,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // locExpectPower expect the same power as the previous case EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -365,7 +365,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = fanSystem->designElecPower; // expect full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -375,13 +375,13 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc3) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = 0.85 * fanSystem->designElecPower; // expect 85% of full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); // reverse the 1 and 2 arguments, expect the same result - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow2, runTimeFrac2, massFlow1, runTimeFrac1); + fanSystem->simulate(*state, false, _, _, _, massFlow2, runTimeFrac2, massFlow1, runTimeFrac1); locFanElecPower = fanSystem->totalPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); } @@ -445,7 +445,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; Real64 locExpectPower = (0.5 * pow(0.5, 3) + 0.5 * 1.0) * fanSystem->designElecPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -455,7 +455,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = pow(0.75, 3) * fanSystem->designElecPower; EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -465,7 +465,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = fanSystem->designElecPower; // expect full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -475,7 +475,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_TwoSpeedFanPowerCalc4) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; locExpectPower = 0.85 * fanSystem->designElecPower; // expect 85% of full power EXPECT_NEAR(locFanElecPower, locExpectPower, 0.01); @@ -606,7 +606,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 50% of time at 50% flow and 50% of time at 100% flow Real64 locExpectPower = (0.5 * 0.5 + 0.5 * 1.0) * fanSystem->designElecPower; // expect 75% of power @@ -617,7 +617,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 0.75 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 100% of time at 75% flow locExpectPower = (0.0 * 0.0 + 1.0 * 0.75) * fanSystem->designElecPower; // expect 75% of power @@ -628,7 +628,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 1.0; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 100% of time at 100% flow locExpectPower = (0.0 * 0.0 + 1.0 * 1.0) * fanSystem->designElecPower; // expect full power @@ -639,7 +639,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_noPowerFFlowCurve) massFlow2 = 1.0 * designMassFlowRate; runTimeFrac1 = 0.0; runTimeFrac2 = 0.85; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 0% of time at 0% flow and 85% of time at 100% flow locExpectPower = (0.0 * 0.25 + 0.85 * 1.0) * fanSystem->designElecPower; // expect 85% of full power @@ -712,7 +712,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_EMSPressureRiseResetTest) Real64 massFlow2 = designMassFlowRate; Real64 runTimeFrac1 = 0.5; Real64 runTimeFrac2 = 0.5; - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); Real64 locFanElecPower = fanSystem->totalPower; // uses flow weighted power calculation. 50% of time at 50% flow and 50% of time at 100% flow Real64 locExpectPower = (0.5 * 0.5 + 0.5 * 1.0) * fanSystem->designElecPower; // expect 75% of power @@ -724,7 +724,7 @@ TEST_F(EnergyPlusFixture, SystemFanObj_DiscreteMode_EMSPressureRiseResetTest) EMSManager::ManageEMS(*state, EMSManager::EMSCallFrom::BeginTimestepBeforePredictor, anyRan, ObjexxFCL::Optional_int_const()); EXPECT_TRUE(anyRan); // simulate the fan with -100.0 Pa fan pressure rise - fanSystem->simulate(*state, false, _, _, _, 1.0, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); + fanSystem->simulate(*state, false, _, _, _, massFlow1, runTimeFrac1, massFlow2, runTimeFrac2); locFanElecPower = fanSystem->totalPower; // negative fan pressure rise results in zero fan power locExpectPower = 0.0; From 4c834c7d0e172287608dd9e022071dab4dc38ba6 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 18 Jul 2024 10:16:29 -0700 Subject: [PATCH 29/45] Revert "use optional arg in SimulateVAV to control for cycling" This reverts commit 9de83a18a2dc02f4b9a180a76a45fd3f5dda19bd. also resolves conflicts fan->simulate(state, FirstHVACIteration, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); --- src/EnergyPlus/Fans.cc | 8 ++----- src/EnergyPlus/Fans.hh | 22 ++++++++----------- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 4 ++-- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/EnergyPlus/Fans.cc b/src/EnergyPlus/Fans.cc index 45da3b366f7..7b2e137eea4 100644 --- a/src/EnergyPlus/Fans.cc +++ b/src/EnergyPlus/Fans.cc @@ -104,7 +104,6 @@ void FanBase::simulate(EnergyPlusData &state, // the legacy speed ratio that was used with SimulateFanComponents. ObjexxFCL::Optional _pressureRise, // Pressure difference to use for DeltaPress, for rating DX coils at a ObjexxFCL::Optional _flowFraction, // when used, this directs the fan to set the flow at this flow fraction - ObjexxFCL::Optional _onOffFanPartLoadFraction, // to control for cycling in VAV fan in VRFFluidTCtrl // different pressure without entire duct system ObjexxFCL::Optional _massFlowRate1, // Mass flow rate in operating mode 1 [kg/s] ObjexxFCL::Optional _runTimeFraction1, // Run time fraction in operating mode 1 @@ -140,7 +139,7 @@ void FanBase::simulate(EnergyPlusData &state, _thisFan->simulateConstant(state); } break; case HVAC::FanType::VAV: { - _thisFan->simulateVAV(state, _pressureRise, _onOffFanPartLoadFraction); + _thisFan->simulateVAV(state, _pressureRise); } break; case HVAC::FanType::OnOff: { _thisFan->simulateOnOff(state, _speedRatio); @@ -1712,9 +1711,7 @@ void FanComponent::simulateConstant(EnergyPlusData &state) } } // FanComponent::simulateConstant -void FanComponent::simulateVAV(EnergyPlusData &state, - ObjexxFCL::Optional _pressureRise, - ObjexxFCL::Optional _onOffFanPartLoadFraction) +void FanComponent::simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional _pressureRise) { // SUBROUTINE INFORMATION: @@ -1880,7 +1877,6 @@ void FanComponent::simulateVAV(EnergyPlusData &state, massFlowRateMaxAvail = 0.0; massFlowRateMinAvail = 0.0; } - totalPower *= _onOffFanPartLoadFraction; } // FanComponent::SimVAV() void FanComponent::simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional _speedRatio) diff --git a/src/EnergyPlus/Fans.hh b/src/EnergyPlus/Fans.hh index fce7296764e..e78811ef0b3 100644 --- a/src/EnergyPlus/Fans.hh +++ b/src/EnergyPlus/Fans.hh @@ -97,15 +97,14 @@ namespace Fans { virtual void init(EnergyPlusData &state) = 0; virtual void simulate(EnergyPlusData &state, bool const FirstHVACIteration, - ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress - ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 - ObjexxFCL::Optional onOffFanPartLoadFraction = 1.0, // to control for cycling in VAV fan in VRFFluidTCtrl - ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] - ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 - ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] - ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 - ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 + ObjexxFCL::Optional speedRatio = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional pressureRise = _, // Pressure difference to use for DeltaPress + ObjexxFCL::Optional flowFraction = _, // Flow fraction in operating mode 1 + ObjexxFCL::Optional massFlowRate1 = _, // Mass flow rate in operating mode 1 [kg/s] + ObjexxFCL::Optional runTimeFraction1 = _, // Run time fraction in operating mode 1 + ObjexxFCL::Optional massFlowRate2 = _, // Mass flow rate in operating mode 2 [kg/s] + ObjexxFCL::Optional runTimeFraction2 = _, // Run time fraction in operating mode 2 + ObjexxFCL::Optional pressureRise2 = _ // Pressure difference to use for operating mode 2 ); virtual void update(EnergyPlusData &state) = 0; @@ -228,10 +227,7 @@ namespace Fans { void simulateConstant(EnergyPlusData &state); - void simulateVAV(EnergyPlusData &state, - ObjexxFCL::Optional PressureRise = _, - // to control for cycling in VAV fan in VRFFluidTCtrl - ObjexxFCL::Optional OnOffFanPartLoadFraction = 1.0); + void simulateVAV(EnergyPlusData &state, ObjexxFCL::Optional PressureRise = _); void simulateOnOff(EnergyPlusData &state, ObjexxFCL::Optional SpeedRatio = _); diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index d68031510f1..e63773481b7 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12865,12 +12865,12 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, auto *fan = state.dataFans->fans(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).FanIndex); if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::SystemModel) { if (OnOffAirFlowRatio > 0.0) { - fan->simulate(state, FirstHVACIteration, _, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); + fan->simulate(state, FirstHVACIteration, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); } else { fan->simulate(state, FirstHVACIteration, _, _, PartLoadRatio); } } else { - fan->simulate(state, FirstHVACIteration, state.dataHVACVarRefFlow->FanSpeedRatio, _, _, OnOffFanPartLoadFraction); + fan->simulate(state, FirstHVACIteration, state.dataHVACVarRefFlow->FanSpeedRatio); } } From 49e82a05736544a82477aa013286b0d5e1f924b4 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 18 Jul 2024 10:41:54 -0700 Subject: [PATCH 30/45] use old fan name in transition after VAV fans are deleted --- src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index e158c7eac6b..9a8a0a90218 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -137,7 +137,6 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile INTEGER :: Num3 = 1 INTEGER :: VRFTU_i = 1 CHARACTER(len=MaxNameLength) :: sysFanName - CHARACTER(len=MaxNameLength) :: vavFanName CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: vavFanNameToDelete TYPE FanVOTransitionInfo @@ -580,10 +579,8 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile IF (SameString(InArgs(14), 'FAN:VARIABLEVOLUME')) THEN isVariableVolume = .TRUE. OutArgs(14) = 'FAN:SYSTEMMODEL' - ! create a new fan object with a new name - OutArgs(15) = TRIM(InArgs(15)) // '_sysModel' - sysFanName = TRIM(InArgs(15)) // '_sysModel' - vavFanName = TRIM(InArgs(15)) + OutArgs(15) = TRIM(InArgs(15)) + sysFanName = TRIM(InArgs(15)) ELSE OutArgs(14:15) = InArgs(14:15) ENDIF @@ -594,7 +591,7 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! create fan system model object ObjectName = 'Fan:SystemModel' DO Num3 = 1, NumFanVariableVolume - IF (SameString(OldFanVO(Num3)%oldFanName, vavFanName)) THEN + IF (SameString(OldFanVO(Num3)%oldFanName, sysFanName)) THEN CALL GetNewObjectDefInIDD(ObjectName, NwNumArgs, NwAorN, NwReqFld, NwObjMinFlds, NwFldNames, NwFldDefaults, NwFldUnits) OutArgs(1) = TRIM(sysFanName) OutArgs(2) = OldFanVO(Num3)%availSchedule From 6e5166afb792aec3d65ffb9c3abffcfee75dd191 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 18 Jul 2024 11:22:35 -0700 Subject: [PATCH 31/45] remove unused inititialization --- tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index 6e719d90e3e..b392f7abf46 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -18163,9 +18163,6 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) GetVRFInput(*state); state->dataHVACVarRefFlow->GetVRFInputFlag = false; - state->dataHVACGlobal->OnOffFanPartLoadFraction = 1.0; - state->dataHVACVarRefFlow->VRF(VRFCond).VRFCondCyclingRatio = 1.0; - state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRF(VRFCond).SchedPtr).CurrentValue = 1.0; VRFTUNum = zone_num_TU1; state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRFTU(VRFTUNum).SchedPtr).CurrentValue = 1.0; From cf3b3c52b2b7bd228a0dd41a52ed8a27d29056ca Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 22 Jul 2024 16:30:35 -0700 Subject: [PATCH 32/45] transition testfiles to use Fan:SystemModel --- ...riableRefrigerantFlow_FluidTCtrl_5Zone.idf | 235 ++++++++++++------ ...bleRefrigerantFlow_FluidTCtrl_HR_5Zone.idf | 235 ++++++++++++------ ...erantFlow_FluidTCtrl_wSuppHeater_5Zone.idf | 235 ++++++++++++------ 3 files changed, 480 insertions(+), 225 deletions(-) diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf index d766ef40844..877b1e884fa 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf @@ -320,7 +320,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU1 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU1 OA Mixer, !- Outside Air Mixer Object Name @@ -351,7 +351,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU2 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU2 OA Mixer, !- Outside Air Mixer Object Name @@ -382,7 +382,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU3 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU3 OA Mixer, !- Outside Air Mixer Object Name @@ -413,7 +413,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU4 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU4 OA Mixer, !- Outside Air Mixer Object Name @@ -444,7 +444,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU5 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU5 OA Mixer, !- Outside Air Mixer Object Name @@ -505,106 +505,191 @@ Relief Air Outlet Node 5,!- Relief Air Stream Node Name TU5 Inlet Node; !- Return Air Stream Node Name - Fan:VariableVolume, + Fan:SystemModel, TU1 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU1 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU1 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU2 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU2 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU2 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU2 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU3 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU3 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU3 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU3 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU3 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU4 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU4 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU4 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU4 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU4 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU5 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU5 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU5 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU5 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory + Curve:Quartic, + TU5 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf index 31458c8e19f..423639c97d9 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf @@ -339,7 +339,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU1 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU1 OA Mixer, !- Outside Air Mixer Object Name @@ -370,7 +370,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU2 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU2 OA Mixer, !- Outside Air Mixer Object Name @@ -401,7 +401,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU3 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU3 OA Mixer, !- Outside Air Mixer Object Name @@ -432,7 +432,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU4 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU4 OA Mixer, !- Outside Air Mixer Object Name @@ -463,7 +463,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU5 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU5 OA Mixer, !- Outside Air Mixer Object Name @@ -524,106 +524,191 @@ Relief Air Outlet Node 5,!- Relief Air Stream Node Name TU5 Inlet Node; !- Return Air Stream Node Name - Fan:VariableVolume, + Fan:SystemModel, TU1 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU1 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU1 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU2 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU2 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU2 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU2 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU3 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU3 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU3 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU3 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU3 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU4 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU4 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU4 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU4 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU4 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU5 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU5 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU5 Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU5 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory + Curve:Quartic, + TU5 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf index d5a19ad2e8d..611e87422c2 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf @@ -2207,7 +2207,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU1 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU1 OA Mixer, !- Outside Air Mixer Object Name @@ -2238,7 +2238,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU2 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU2 OA Mixer, !- Outside Air Mixer Object Name @@ -2269,7 +2269,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU3 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU3 OA Mixer, !- Outside Air Mixer Object Name @@ -2300,7 +2300,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU4 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU4 OA Mixer, !- Outside Air Mixer Object Name @@ -2331,7 +2331,7 @@ autosize, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:VariableVolume, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU5 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU5 OA Mixer, !- Outside Air Mixer Object Name @@ -2444,106 +2444,191 @@ !- =========== ALL OBJECTS IN CLASS: FAN:VARIABLEVOLUME =========== - Fan:VariableVolume, + Fan:SystemModel, TU1 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU1 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU1 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU2 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU2 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU2 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU2 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU3 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU3 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU3 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU3 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU3 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU4 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU4 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU4 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU4 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory - Fan:VariableVolume, + Curve:Quartic, + TU4 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + + Fan:SystemModel, TU5 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name - 0.7, !- Fan Total Efficiency - 600, !- Pressure Rise {Pa} - autosize, !- Maximum Flow Rate {m3/s} - Fraction, !- Fan Power Minimum Flow Rate Input Method - 0, !- Fan Power Minimum Flow Fraction - 0, !- Fan Power Minimum Air Flow Rate {m3/s} - 0.9, !- Motor Efficiency - 1, !- Motor In Airstream Fraction - 0.059, !- Fan Power Coefficient 1 - 0, !- Fan Power Coefficient 2 - 0, !- Fan Power Coefficient 3 - 0.928, !- Fan Power Coefficient 4 - 0, !- Fan Power Coefficient 5 TU5 VRF DX HCoil Outlet Node, !- Air Inlet Node Name TU5 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU5 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction General; !- End-Use Subcategory + Curve:Quartic, + TU5 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type + !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, From 7dd6720cd02f6a8dd88c27f5f9113a74f84eb3df Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Tue, 23 Jul 2024 08:27:51 -0700 Subject: [PATCH 33/45] change all-upper case to pascal-case --- src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 9a8a0a90218..59fbe7b5d11 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -578,14 +578,14 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(1:13) = InArgs(1:13) IF (SameString(InArgs(14), 'FAN:VARIABLEVOLUME')) THEN isVariableVolume = .TRUE. - OutArgs(14) = 'FAN:SYSTEMMODEL' + OutArgs(14) = 'Fan:SystemModel' OutArgs(15) = TRIM(InArgs(15)) sysFanName = TRIM(InArgs(15)) ELSE OutArgs(14:15) = InArgs(14:15) ENDIF OutArgs(16:CurArgs) = InArgs(16:CurArgs) - CALL WriteOutIDFLines(DifLfn, 'ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW', CurArgs, OutArgs, NwFldNames, NwFldUnits) + CALL WriteOutIDFLines(DifLfn, 'ZoneHVAC:TerminalUnit:VariableRefrigerantFlow', CurArgs, OutArgs, NwFldNames, NwFldUnits) IF (isVariableVolume) THEN ! create fan system model object From 19c4aae751f39f0c8428d9fc0b62ad20edce5de3 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 24 Jul 2024 14:29:45 -0700 Subject: [PATCH 34/45] fix unit test Fan:VariableVolume to Fan:SystemModel transition --- .../unit/AirTerminalSingleDuctMixer.unit.cc | 102 ++++-- .../unit/HVACVariableRefrigerantFlow.unit.cc | 317 +++++++++++------- 2 files changed, 268 insertions(+), 151 deletions(-) diff --git a/tst/EnergyPlus/unit/AirTerminalSingleDuctMixer.unit.cc b/tst/EnergyPlus/unit/AirTerminalSingleDuctMixer.unit.cc index 6fb85c4a598..752ccc73f3b 100644 --- a/tst/EnergyPlus/unit/AirTerminalSingleDuctMixer.unit.cc +++ b/tst/EnergyPlus/unit/AirTerminalSingleDuctMixer.unit.cc @@ -3405,7 +3405,7 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMInletSi " 0, !- Outdoor Air Flow Rate When No Cooling or Heating is Needed {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " , !- Outside Air Mixer Object Type", " , !- Outside Air Mixer Object Name", @@ -3416,26 +3416,43 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMInletSi " 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W}", " 20; !- Zone Terminal Unit Off Parasitic Electric Energy Use {W}", - " Fan:VariableVolume,", + " Fan:SystemModel,", " TU1 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " 0.500, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", " TU1 Outlet Node, !- Air Outlet Node Name", + " 0.500, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU1 Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", + " Curve:Quartic,", + " TU1 Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + " Coil:Heating:DX:VariableRefrigerantFlow:FluidTemperatureControl,", " TU1 VRF DX Heating Coil, !- Name", " VRFAvailSched, !- Availability Schedule", @@ -5063,6 +5080,8 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMInletSi // set secondary air mass flow rate to zero state->dataLoopNodes->Node(state->dataSingleDuct->SysATMixer(1).SecInNode).MassFlowRate = 0.0; + state->dataFans->fans(1)->set_size(*state); // add sizing + state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio = 1.0; // Simulate zoneHVAC equipment (VRF terminal unit) SimVRF(*state, VRFTUNum, FirstHVACIteration, OnOffAirFlowRatio, QUnitOutVRFTU, LatOutputProvided, QZnReq); @@ -5164,7 +5183,7 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMSupplyS " 0, !- Outdoor Air Flow Rate When No Cooling or Heating is Needed {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " , !- Outside Air Mixer Object Type", " , !- Outside Air Mixer Object Name", @@ -5175,26 +5194,43 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMSupplyS " 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W}", " 20; !- Zone Terminal Unit Off Parasitic Electric Energy Use {W}", - " Fan:VariableVolume,", + " Fan:SystemModel,", " TU1 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " 0.500, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", " SPACE1-1 AIR TERMINAL MIXER SECONDARY INLET, !- Air Outlet Node Name", + " 0.500, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU1 Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", + " Curve:Quartic,", + " TU1 Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + " Coil:Heating:DX:VariableRefrigerantFlow:FluidTemperatureControl,", " TU1 VRF DX Heating Coil, !- Name", " VRFAvailSched, !- Availability Schedule", @@ -6817,6 +6853,8 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMSupplyS state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRFTU(VRFTUNum).SchedPtr).CurrentValue = 1.0; // unit is always available state->dataScheduleMgr->Schedule(state->dataHVACVarRefFlow->VRFTU(VRFTUNum).FanAvailSchedPtr).CurrentValue = 1.0; // fan is always available + state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio = 1.0; + state->dataFans->fans(1)->set_size(*state); // add fan sizing // set secondary air mass flow rate to zero state->dataLoopNodes->Node(state->dataSingleDuct->SysATMixer(1).SecInNode).MassFlowRate = 0.0; @@ -6829,8 +6867,8 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimVRFfluidCntrl_ATMSupplyS // check the terminal air mixer outlet flow rate must be equal to the mass flow rate of VRFTU + the primary air ATMixerOutletMassFlowRate = SecondaryAirMassFlowRate + PrimaryAirMassFlowRate; ASSERT_EQ(ATMixerOutletMassFlowRate, state->dataSingleDuct->SysATMixer(1).MixedAirMassFlowRate); - // check the cooling output delivered is within 2.0 Watt of zone cooling load - ASSERT_NEAR(QZnReq, QUnitOutVRFTU, 2.0); + // changed the threshold from 2 to 3 as the fan was changed from hard-sized to autosize, a little more error is expected + ASSERT_NEAR(QZnReq, QUnitOutVRFTU, 3.0); } TEST_F(EnergyPlusFixture, AirTerminalSingleDuctMixer_SimUnitVent_ATMInletSide) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index b392f7abf46..5e04826e9a2 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -11785,7 +11785,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) " 0, !- Outdoor Air Flow Rate When No Cooling or Heating is Needed {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " , !- Outside Air Mixer Object Type", " , !- Outside Air Mixer Object Name", @@ -11857,26 +11857,43 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) " Temperature, !- Input Unit Type for X", " Temperature; !- Output Unit Type", - " Fan:VariableVolume,", + " Fan:SystemModel,", " TU1 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", " TU1 Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU1 Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", + " Curve:Quartic,", + " TU1 Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + " !- =========== ALL OBJECTS IN CLASS: FLUIDPROPERTIES:NAME =========== ", " ", " FluidProperties:Name, ", @@ -16302,7 +16319,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) " 0, !- No Load Outdoor Air Flow Rate {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " OutdoorAir:Mixer, !- Outside Air Mixer Object Type", " TU1 OA Mixer, !- Outside Air Mixer Object Name", @@ -16333,7 +16350,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) " 0, !- No Load Outdoor Air Flow Rate {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU2 VRF Supply Fan, !- Supply Air Fan Object Name", " OutdoorAir:Mixer, !- Outside Air Mixer Object Type", " TU2 OA Mixer, !- Outside Air Mixer Object Name", @@ -16386,44 +16403,64 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) " SPACE2-1 Node, !- Zone Air Node Name", " SPACE2-1 Out Node; !- Zone Return Air Node or NodeList Name", - "Fan:VariableVolume,", + " Fan:SystemModel,", " TU1 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU1 VRF Fan Outlet Node, !- Air Outlet Node Name", + " TU1 VRF Fan Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", - "Fan:VariableVolume,", + " Curve:Quartic,", + " TU Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Fan:SystemModel,", " TU2 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU2 VRF Fan Outlet Node, !- Air Outlet Node Name", + " TU2 VRF Fan Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", "Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl,", @@ -18263,6 +18300,8 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_SupplementalHtgCoilTest) state->dataHVACVarRefFlow->HeatingLoad(VRFCond) = false; state->dataHVACVarRefFlow->TerminalUnitList(1).IsSimulated = true; + state->dataHVACVarRefFlow->VRF(1).VRFCondCyclingRatio = 1.0; + QZnReq = state->dataZoneEnergyDemand->ZoneSysEnergyDemand(zone_num_TU1).RemainingOutputRequired; SimVRF(*state, VRFTUNum, FirstHVACIteration, OnOffAirFlowRatio, SysOutputProvided, LatOutputProvided, QZnReq); ReportVRFTerminalUnit(*state, VRFTUNum); @@ -18415,7 +18454,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_offSupplementalHtgCoilTest) " 0, !- No Load Outdoor Air Flow Rate {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " OutdoorAir:Mixer, !- Outside Air Mixer Object Type", " TU1 OA Mixer, !- Outside Air Mixer Object Name", @@ -18446,7 +18485,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_offSupplementalHtgCoilTest) " 0, !- No Load Outdoor Air Flow Rate {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU2 VRF Supply Fan, !- Supply Air Fan Object Name", " OutdoorAir:Mixer, !- Outside Air Mixer Object Type", " TU2 OA Mixer, !- Outside Air Mixer Object Name", @@ -18499,44 +18538,64 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_offSupplementalHtgCoilTest) " SPACE2-1 Node, !- Zone Air Node Name", " SPACE2-1 Out Node; !- Zone Return Air Node or NodeList Name", - "Fan:VariableVolume,", + " Fan:SystemModel,", " TU1 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU1 VRF Fan Outlet Node, !- Air Outlet Node Name", + " TU1 VRF Fan Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", - "Fan:VariableVolume,", + " Curve:Quartic,", + " TU Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Fan:SystemModel,", " TU2 VRF Supply Fan, !- Name", " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", " TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU2 VRF Fan Outlet Node, !- Air Outlet Node Name", + " TU2 VRF Fan Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " TotalEfficiencyAndPressure, !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", " General; !- End-Use Subcategory", "Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl,", @@ -20524,7 +20583,7 @@ TEST_F(EnergyPlusFixture, VRF_MixedTypes) " 0, !- Outdoor Air Flow Rate When No Cooling or Heating is Needed {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU1 VRF Supply Fan, !- Supply Air Fan Object Name", " , !- Outside Air Mixer Object Type", " , !- Outside Air Mixer Object Name", @@ -20556,25 +20615,28 @@ TEST_F(EnergyPlusFixture, VRF_MixedTypes) " IUCondTempCurve; !- Indoor Unit Condensing Temperature Function of Subcooling Curve Name", "", "", - "Fan:VariableVolume,", - " TU1 VRF Supply Fan, !- Name", - " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", - " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU1 Outlet Node, !- Air Outlet Node Name", - " General; !- End-Use Subcategory", + " Fan:SystemModel,", + " TU1 VRF Supply Fan, !- Name", + " VRFAvailSched, !- Availability Schedule Name", + " TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", + " TU1 Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " , !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", + " General; !- End-Use Subcategory", }); std::string const vrfFluidCtrl_HR = delimited_string({ @@ -20692,7 +20754,7 @@ TEST_F(EnergyPlusFixture, VRF_MixedTypes) " 0, !- Outdoor Air Flow Rate When No Cooling or Heating is Needed {m3/s}", " VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name", " drawthrough, !- Supply Air Fan Placement", - " Fan:VariableVolume, !- Supply Air Fan Object Type", + " Fan:SystemModel, !- Supply Air Fan Object Type", " TU2 VRF Supply Fan, !- Supply Air Fan Object Name", " , !- Outside Air Mixer Object Type", " , !- Outside Air Mixer Object Name", @@ -20724,28 +20786,45 @@ TEST_F(EnergyPlusFixture, VRF_MixedTypes) " IUCondTempCurve; !- Indoor Unit Condensing Temperature Function of Subcooling Curve Name", "", "", - "Fan:VariableVolume,", - " TU2 VRF Supply Fan, !- Name", - " VRFAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0, !- Fan Power Minimum Flow Fraction", - " 0, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.059, !- Fan Power Coefficient 1", - " 0, !- Fan Power Coefficient 2", - " 0, !- Fan Power Coefficient 3", - " 0.928, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", - " TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", - " TU2 Outlet Node, !- Air Outlet Node Name", - " General; !- End-Use Subcategory", + " Fan:SystemModel,", + " TU2 VRF Supply Fan, !- Name", + " VRFAvailSched, !- Availability Schedule Name", + " TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name", + " TU2 Outlet Node, !- Air Outlet Node Name", + " autosize, !- Design Maximum Air Flow Rate {m3/s}", + " Continuous, !- Speed Control Method", + " 0.0, !- Electric Power Minimum Flow Rate Fraction", + " 600, !- Design Pressure Rise {Pa}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Air Stream Fraction", + " autosize, !- Design Electric Power Consumption {W}", + " , !- Design Power Sizing Method", + " , !- Electric Power Per Unit Flow Rate {W/(m3/s)}", + " , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)}", + " 0.7, !- Fan Total Efficiency", + " TU Fan Power Curve, !- Electric Power Function of Flow Fraction Curve Name", + " ,", + " ,", + " ,", + " ,", + " General; !- End-Use Subcategory", }); std::string const commonCurvesAndFansForFluidCtrlAndHR = delimited_string({ + " Curve:Quartic,", + " TU Fan Power Curve , !- Name", + " 0.059, !- Coefficient1 Constant", + " 0, !- Coefficient2 x ", + " 0, !- Coefficient3 x**2 ", + " 0.928, !- Coefficient4 x**3 ", + " 0, !- Coefficient5 x**4 ", + " 0.0, !- Minimum Value of x", + " 1.0, !- Maximum Value of x", + " 0.0, !- Minimum Curve Output", + " 1.0, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + "Curve:Quadratic,", " OUEvapTempCurve, !- Name", " 0, !- Coefficient1 Constant", From a19c99063cb59032f6903e71ad3af0971c5b951d Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 31 Jul 2024 10:35:36 -0700 Subject: [PATCH 35/45] change ElecPowerMinFlowRateFrac calc, autosize DesignElecPower to compute "Electric Power Minimum Flow Rate Fraction", use the following logic This field in Fan:SystemModel is "Electric Power Minimum Flow Rate Fraction", so if the old fan is FixedFlowRate then the new field should be old fanPowerMinAirFlow_str / maxAirFlow_str If maxAirFlow_str is autosize, and fanPowerMinAirFlow_str` is > 0, then throw a warning and set this field to 0 if the old fan is Fraction, then this field = old fan minAirFlowFrac_str. For "Design Electric Power Consumption", directly make it autosize and use TotalEfficiencyAndPressure in the sizing method. This way also ensures the "_localTotalEff" variable in the code to use inputs from "Fan Total Efficiency" in Fan:SystemModel --- .../CreateNewIDFUsingRulesV24_2_0.f90 | 35 +- ...US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf | 114 ++--- ...riableRefrigerantFlow_FluidTCtrl_5Zone.idf | 443 ++++++++-------- ...bleRefrigerantFlow_FluidTCtrl_HR_5Zone.idf | 441 ++++++++-------- ...erantFlow_FluidTCtrl_wSuppHeater_5Zone.idf | 479 ++++++++++-------- 5 files changed, 807 insertions(+), 705 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 59fbe7b5d11..67a848f7a97 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -600,32 +600,27 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(5) = OldFanVO(Num3)%maxAirFlow_str OutArgs(6) = 'Continuous' !- Speed Control Method IF (SameString(OldFanVO(Num3)%minFlowInputMethod, "FixedFlowRate")) THEN - OutArgs(7) = OldFanVO(Num3)%maxAirFlow_str - ELSE ! input method is "Fraction" - READ(OldFanVO(Num3)%minAirFlowFrac_str, '(F15.5)') minAirFlowFrac - IF (minAirFlowFrac == 0.0) THEN + IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN + READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow + READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow + WRITE(OutArgs(7), '(F15.5)') (fanPowerMinAirFlow / maxAirFlow) + ELSE ! maxAirFlow_stris autosize + READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow + IF (.NOT. fanPowerMinAirFlow == 0) THEN ! don't know how to do division with autosize + CALL writePreprocessorObject(DifLfn, PrognameConversion, 'Warning', & + 'Cannot calculate Electric Power Minimum Flow Rate Fraction for' // sysFanName // & + 'when Maximum Flow Rate is autosize and Fan Power Minimum Air Flow Rate is non-zero') + END IF OutArgs(7) = '0.0' - ELSE - IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN - READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow - WRITE(OutArgs(7), '(F15.5)') (maxAirFlow * minAirFlowFrac) - ELSE ! don't know how to multiply fraction with autosize - OutArgs(7) = '' - ENDIF ENDIF + ELSE ! input method is "Fraction" + OutArgs(7) = OldFanVO(Num3)%minAirFlowFrac_str ENDIF OutArgs(8) = OldFanVO(Num3)%pressureRise_str !- Design Pressure Rise {Pa} OutArgs(9) = OldFanVO(Num3)%motorEfficiency !- Motor Efficiency OutArgs(10) = OldFanVO(Num3)%motorInAirStreamFrac !- Motor In Air Stream Fraction - IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN - READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow - READ(OldFanVO(Num3)%pressureRise_str, '(F15.5)') pressureRise - READ(OldFanVO(Num3)%fanTotalEff_str, '(F15.5)') fanTotalEff - WRITE(OutArgs(11), '(F15.5)') (maxAirFlow * pressureRise / fanTotalEff) !- Design Electric Power Consumption {W} - ELSE - OutArgs(11) = 'autosize' - OutArgs(12) = 'TotalEfficiencyAndPressure' ! chose this becuase power per flow or per pressure are unknown - ENDIF + OutArgs(11) = 'autosize' + OutArgs(12) = 'TotalEfficiencyAndPressure' ! chose this becuase power per flow or per pressure are unknown OutArgs(13) = '' !- Electric Power Per Unit Flow Rate {W/(m3/s)} OutArgs(14) = '' !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} OutArgs(15) = OldFanVO(Num3)%fanTotalEff_str !- Fan Total Efficiency diff --git a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf index 09900d222ef..2a21a3cbc47 100644 --- a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf +++ b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf @@ -482,7 +482,7 @@ 0, !- No Load Outdoor Air Flow Rate {m3/s} VRFFanModeSchedule, !- Supply Air Fan Operating Mode Schedule Name drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type + Fan:SystemModel, !- Supply Air Fan Object Type TU1 VRF Supply Fan, !- Supply Air Fan Object Name OutdoorAir:Mixer, !- Outside Air Mixer Object Type TU1 OA Mixer, !- Outside Air Mixer Object Name @@ -497,7 +497,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Electric, !- Supplemental Heating Coil Object Type TU1 Supp Heating Coil, !- Supplemental Heating Coil Name - 50; !- Maximum Supply Air Temperature from Supplemental Heater {C} + 50, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU1 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU1 VRF Fan Outlet Node, !- Air Outlet Node Name + 0.595, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0.69748, !- Electric Power Minimum Flow Rate Fraction + 400, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.5, !- Fan Total Efficiency + TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU1 VRF Supply Fan_curve,!- Name + 0.09, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.91, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.6974790, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type !- =========== ALL OBJECTS IN CLASS: COIL:HEATING:ELECTRIC =========== @@ -530,58 +568,6 @@ OutdoorAir:NodeList, Outside Air Inlet Node 1;!- Node or NodeList Name 1 - !- Fan:VariableVolume, - !- TU1 VRF Supply Fan, !- Name - !- VRFAvailSched, !- Availability Schedule Name - !- 0.5, !- Fan Total Efficiency - !- 400, !- Pressure Rise {Pa} - !- 0.595, !- Maximum Flow Rate {m3/s} - !- FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method - !- 0, !- Fan Power Minimum Flow Fraction - !- 0.415, !- Fan Power Minimum Air Flow Rate {m3/s} - !- 0.9, !- Motor Efficiency - !- 1, !- Motor In Airstream Fraction - !- 0.09, !- Fan Power Coefficient 1 - !- 0, !- Fan Power Coefficient 2 - !- 0, !- Fan Power Coefficient 3 - !- 0.91, !- Fan Power Coefficient 4 - !- 0, !- Fan Power Coefficient 5 - !- TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - !- TU1 VRF Fan Outlet Node, !- Air Outlet Node Name - !- General; !- End-Use Subcategory - - Fan:SystemModel, - TU1 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU1 VRF Fan Outlet Node, !- Air Outlet Node Name - 0.595, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.415, !- Electric Power Minimum Flow Rate Fraction - 400, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1.0, !- Motor In Air Stream Fraction - 476, !- Design Electric Power Consumption {W} - , !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.5, !- Fan Total Efficiency - Fan Power Curve; !- Electric Power Function of Flow Fraction Curve Name - - Curve:Quartic, - Fan Power Curve , !- Name - 0.09, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.91, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.6975, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, @@ -4727,7 +4713,7 @@ DishWasher, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 65.698787492023, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.15, !- Fraction Latent 0.6, !- Fraction Radiant @@ -4740,7 +4726,7 @@ Refrigerator, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 91.0575745202123, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 1, !- Fraction Radiant @@ -4753,7 +4739,7 @@ ClothesWasher, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 28.4784377542718, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.8, !- Fraction Radiant @@ -4766,7 +4752,7 @@ ClothesDryer, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 213.064557285022, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.05, !- Fraction Latent 0.15, !- Fraction Radiant @@ -4779,7 +4765,7 @@ CookingRange, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 248.154224774405, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.3, !- Fraction Latent 0.4, !- Fraction Radiant @@ -4792,7 +4778,7 @@ InteriorLighting, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 0, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 1, !- Fraction Radiant @@ -4805,7 +4791,7 @@ MiscPlugLoad, !- Schedule Name EquipmentLevel, !- Design Level Calculation Method 567.464237516869, !- Design Level {W} - , !- Watts per Zone Floor Area {W/m2} + , !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.06, !- Fraction Latent 0.69, !- Fraction Radiant @@ -4818,7 +4804,7 @@ MiscPlugLoad, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 1.54356736989469, !- Watts per Zone Floor Area {W/m2} + 1.54356736989469, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0624390461422629, !- Fraction Latent 0.41190936353998, !- Fraction Radiant @@ -6387,7 +6373,7 @@ InteriorLightingHE, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 1.91387072900558, !- Watts per Zone Floor Area {W/m2} + 1.91387072900558, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Return Air Fraction 0.6, !- Fraction Radiant @@ -6400,7 +6386,7 @@ InteriorLightingHE, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 0.478467682251396, !- Watts per Zone Floor Area {W/m2} + 0.478467682251396, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Return Air Fraction 0.6, !- Fraction Radiant diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf index 877b1e884fa..e674841ad1f 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf @@ -335,175 +335,8 @@ , !- Design Specification ZoneHVAC Sizing Object Name , !- Supplemental Heating Coil Object Type , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU2, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU2 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU2 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU2 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU2 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU2 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU2 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU3, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU3 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU3 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU3 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU3 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU3 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU3 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU4, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU4 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU4 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU4 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU4 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU4 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU4 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU5, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU5 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU5 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU5 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU5 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU5 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU5 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - Schedule:Compact, - VRFFanSchedule, !- Name - Any Number, !- Schedule Type Limits Name - Through: 12/31, !- Field 1 - For: AllDays, !- Field 2 - Until: 7:00,1.0, !- Field 3 - Until: 18:00,1.0, !- Field 5 - Until: 24:00,1.0; !- Field 7 - - OutdoorAir:Mixer, - TU1 OA Mixer, !- Name - TU1 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 1,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 1,!- Relief Air Stream Node Name - TU1 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU2 OA Mixer, !- Name - TU2 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 2,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 2,!- Relief Air Stream Node Name - TU2 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU3 OA Mixer, !- Name - TU3 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 3,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 3,!- Relief Air Stream Node Name - TU3 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU4 OA Mixer, !- Name - TU4 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 4,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 4,!- Relief Air Stream Node Name - TU4 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU5 OA Mixer, !- Name - TU5 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 5,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 5,!- Relief Air Stream Node Name - TU5 Inlet Node; !- Return Air Stream Node Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} Fan:SystemModel, TU1 VRF Supply Fan, !- Name @@ -512,7 +345,7 @@ TU1 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -542,6 +375,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU2, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU2 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU2 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU2 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU2 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU2 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU2 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU2 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -549,7 +414,7 @@ TU2 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -579,6 +444,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU3, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU3 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU3 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU3 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU3 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU3 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU3 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU3 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -586,7 +483,7 @@ TU3 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -616,6 +513,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU4, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU4 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU4 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU4 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU4 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU4 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU4 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU4 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -623,7 +552,7 @@ TU4 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -653,6 +582,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU5, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU5 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU5 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU5 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU5 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU5 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU5 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU5 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -660,7 +621,7 @@ TU5 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -683,13 +644,57 @@ 0, !- Coefficient3 x**2 0.928, !- Coefficient4 x**3 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x + 0.0000000, !- Minimum Value of x 1.0, !- Maximum Value of x 0.0, !- Minimum Curve Output 5.0, !- Maximum Curve Output Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + Schedule:Compact, + VRFFanSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 7:00,1.0, !- Field 3 + Until: 18:00,1.0, !- Field 5 + Until: 24:00,1.0; !- Field 7 + + OutdoorAir:Mixer, + TU1 OA Mixer, !- Name + TU1 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 1,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 1,!- Relief Air Stream Node Name + TU1 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU2 OA Mixer, !- Name + TU2 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 2,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 2,!- Relief Air Stream Node Name + TU2 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU3 OA Mixer, !- Name + TU3 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 3,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 3,!- Relief Air Stream Node Name + TU3 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU4 OA Mixer, !- Name + TU4 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 4,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 4,!- Relief Air Stream Node Name + TU4 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU5 OA Mixer, !- Name + TU5 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 5,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 5,!- Relief Air Stream Node Name + TU5 Inlet Node; !- Return Air Stream Node Name + !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, @@ -2125,7 +2130,8 @@ HeatBalanceAlgorithm,ConductionTransferFunction; ZoneAirHeatBalanceAlgorithm, - AnalyticalSolution; !- Algorithm + AnalyticalSolution, !- Algorithm + ; !- Do Space Heat Balance for Sizing GlobalGeometryRules, UpperLeftCorner, !- Starting Vertex Position @@ -2827,8 +2833,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -2853,7 +2859,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -2867,7 +2873,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3042,8 +3048,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3068,7 +3074,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3082,7 +3088,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3222,8 +3228,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3248,7 +3254,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3262,7 +3268,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3417,8 +3423,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3443,7 +3449,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3457,7 +3463,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3597,8 +3603,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.031089, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3623,7 +3629,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3637,7 +3643,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3776,7 +3782,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE1-1, !- Name @@ -3812,7 +3825,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE2-1, !- Name @@ -3848,7 +3868,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE3-1, !- Name @@ -3884,7 +3911,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE4-1, !- Name @@ -3920,7 +3954,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE5-1, !- Name diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf index 423639c97d9..c40c8642f64 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf @@ -354,175 +354,8 @@ , !- Design Specification ZoneHVAC Sizing Object Name , !- Supplemental Heating Coil Object Type , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU2, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU2 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU2 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU2 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU2 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU2 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU2 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU3, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU3 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU3 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU3 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU3 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU3 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU3 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU4, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU4 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU4 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU4 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU4 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU4 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU4 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, - TU5, !- Zone Terminal Unit Name - VRFAvailSched, !- Terminal Unit Availability Schedule - TU5 Inlet Node, !- Terminal Unit Air Inlet Node Name - TU5 Outlet Node, !- Terminal Unit Air Outlet Node Name - autosize, !- Cooling Supply Air Flow Rate {m3/s} - autosize, !- No Cooling Supply Air Flow Rate {m3/s} - autosize, !- Heating Supply Air Flow Rate {m3/s} - autosize, !- No Heating Supply Air Flow Rate {m3/s} - autosize, !- Cooling Outdoor Air Flow Rate {m3/s} - autosize, !- Heating Outdoor Air Flow Rate {m3/s} - autosize, !- No Load Outdoor Air Flow Rate {m3/s} - VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name - drawthrough, !- Supply Air Fan Placement - Fan:SystemModel, !- Supply Air Fan Object Type - TU5 VRF Supply Fan, !- Supply Air Fan Object Name - OutdoorAir:Mixer, !- Outside Air Mixer Object Type - TU5 OA Mixer, !- Outside Air Mixer Object Name - Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type - TU5 VRF DX Cooling Coil, !- Cooling Coil Object Name - COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type - TU5 VRF DX Heating Coil, !- Heating Coil Object Name - 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} - 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} - , !- Rated Heating Capacity Sizing Ratio {W/W} - , !- Availability Manager List Name - , !- Design Specification ZoneHVAC Sizing Object Name - , !- Supplemental Heating Coil Object Type - , !- Supplemental Heating Coil Name - ; !- Maximum Supply Air Temperature from Supplemental Heater {C} - - Schedule:Compact, - VRFFanSchedule, !- Name - Any Number, !- Schedule Type Limits Name - Through: 12/31, !- Field 1 - For: AllDays, !- Field 2 - Until: 7:00,1.0, !- Field 3 - Until: 18:00,1.0, !- Field 5 - Until: 24:00,1.0; !- Field 7 - - OutdoorAir:Mixer, - TU1 OA Mixer, !- Name - TU1 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 1,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 1,!- Relief Air Stream Node Name - TU1 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU2 OA Mixer, !- Name - TU2 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 2,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 2,!- Relief Air Stream Node Name - TU2 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU3 OA Mixer, !- Name - TU3 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 3,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 3,!- Relief Air Stream Node Name - TU3 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU4 OA Mixer, !- Name - TU4 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 4,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 4,!- Relief Air Stream Node Name - TU4 Inlet Node; !- Return Air Stream Node Name - - OutdoorAir:Mixer, - TU5 OA Mixer, !- Name - TU5 VRF DX CCoil Inlet Node, !- Mixed Air Node Name - Outside Air Inlet Node 5,!- Outdoor Air Stream Node Name - Relief Air Outlet Node 5,!- Relief Air Stream Node Name - TU5 Inlet Node; !- Return Air Stream Node Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} Fan:SystemModel, TU1 VRF Supply Fan, !- Name @@ -531,7 +364,7 @@ TU1 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -561,6 +394,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU2, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU2 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU2 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU2 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU2 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU2 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU2 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU2 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -568,7 +433,7 @@ TU2 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -598,6 +463,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU3, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU3 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU3 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU3 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU3 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU3 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU3 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU3 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -605,7 +502,7 @@ TU3 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -635,6 +532,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU4, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU4 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU4 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU4 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU4 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU4 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU4 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU4 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -642,7 +571,7 @@ TU4 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -672,6 +601,38 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, + TU5, !- Zone Terminal Unit Name + VRFAvailSched, !- Terminal Unit Availability Schedule + TU5 Inlet Node, !- Terminal Unit Air Inlet Node Name + TU5 Outlet Node, !- Terminal Unit Air Outlet Node Name + autosize, !- Cooling Supply Air Flow Rate {m3/s} + autosize, !- No Cooling Supply Air Flow Rate {m3/s} + autosize, !- Heating Supply Air Flow Rate {m3/s} + autosize, !- No Heating Supply Air Flow Rate {m3/s} + autosize, !- Cooling Outdoor Air Flow Rate {m3/s} + autosize, !- Heating Outdoor Air Flow Rate {m3/s} + autosize, !- No Load Outdoor Air Flow Rate {m3/s} + VRFFanSchedule, !- Supply Air Fan Operating Mode Schedule Name + drawthrough, !- Supply Air Fan Placement + Fan:SystemModel, !- Supply Air Fan Object Type + TU5 VRF Supply Fan, !- Supply Air Fan Object Name + OutdoorAir:Mixer, !- Outside Air Mixer Object Type + TU5 OA Mixer, !- Outside Air Mixer Object Name + Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, !- Cooling Coil Object Type + TU5 VRF DX Cooling Coil, !- Cooling Coil Object Name + COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FluidTemperatureControl, !- Heating Coil Object Type + TU5 VRF DX Heating Coil, !- Heating Coil Object Name + 30, !- Zone Terminal Unit On Parasitic Electric Energy Use {W} + 20, !- Zone Terminal Unit Off Parasitic Electric Energy Use {W} + , !- Rated Heating Capacity Sizing Ratio {W/W} + , !- Availability Manager List Name + , !- Design Specification ZoneHVAC Sizing Object Name + , !- Supplemental Heating Coil Object Type + , !- Supplemental Heating Coil Name + , !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + Fan:SystemModel, TU5 VRF Supply Fan, !- Name VRFAvailSched, !- Availability Schedule Name @@ -679,7 +640,7 @@ TU5 Outlet Node, !- Air Outlet Node Name autosize, !- Design Maximum Air Flow Rate {m3/s} Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction + 0, !- Electric Power Minimum Flow Rate Fraction 600, !- Design Pressure Rise {Pa} 0.9, !- Motor Efficiency 1, !- Motor In Air Stream Fraction @@ -709,6 +670,50 @@ Dimensionless, !- Input Unit Type for X Dimensionless; !- Output Unit Type + Schedule:Compact, + VRFFanSchedule, !- Name + Any Number, !- Schedule Type Limits Name + Through: 12/31, !- Field 1 + For: AllDays, !- Field 2 + Until: 7:00,1.0, !- Field 3 + Until: 18:00,1.0, !- Field 5 + Until: 24:00,1.0; !- Field 7 + + OutdoorAir:Mixer, + TU1 OA Mixer, !- Name + TU1 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 1,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 1,!- Relief Air Stream Node Name + TU1 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU2 OA Mixer, !- Name + TU2 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 2,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 2,!- Relief Air Stream Node Name + TU2 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU3 OA Mixer, !- Name + TU3 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 3,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 3,!- Relief Air Stream Node Name + TU3 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU4 OA Mixer, !- Name + TU4 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 4,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 4,!- Relief Air Stream Node Name + TU4 Inlet Node; !- Return Air Stream Node Name + + OutdoorAir:Mixer, + TU5 OA Mixer, !- Name + TU5 VRF DX CCoil Inlet Node, !- Mixed Air Node Name + Outside Air Inlet Node 5,!- Outdoor Air Stream Node Name + Relief Air Outlet Node 5,!- Relief Air Stream Node Name + TU5 Inlet Node; !- Return Air Stream Node Name + !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, @@ -2144,7 +2149,8 @@ HeatBalanceAlgorithm,ConductionTransferFunction; ZoneAirHeatBalanceAlgorithm, - AnalyticalSolution; !- Algorithm + AnalyticalSolution, !- Algorithm + ; !- Do Space Heat Balance for Sizing GlobalGeometryRules, UpperLeftCorner, !- Starting Vertex Position @@ -2846,8 +2852,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -2872,7 +2878,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -2886,7 +2892,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3061,8 +3067,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3087,7 +3093,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3101,7 +3107,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3241,8 +3247,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3267,7 +3273,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3281,7 +3287,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3436,8 +3442,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3462,7 +3468,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3476,7 +3482,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3616,8 +3622,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.031089, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -3642,7 +3648,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -3656,7 +3662,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 107.64, !- Watts per Zone Floor Area {W/m2} + 107.64, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -3795,7 +3801,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE1-1, !- Name @@ -3831,7 +3844,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE2-1, !- Name @@ -3867,7 +3887,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE3-1, !- Name @@ -3903,7 +3930,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE4-1, !- Name @@ -3939,7 +3973,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} DesignSpecification:OutdoorAir, SZ DSOA SPACE5-1, !- Name diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf index 611e87422c2..4b4c889d90c 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf @@ -145,7 +145,8 @@ !- =========== ALL OBJECTS IN CLASS: ZONEAIRHEATBALANCEALGORITHM =========== ZoneAirHeatBalanceAlgorithm, - AnalyticalSolution; !- Algorithm + AnalyticalSolution, !- Algorithm + ; !- Do Space Heat Balance for Sizing !- =========== ALL OBJECTS IN CLASS: TIMESTEP =========== @@ -1721,7 +1722,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -1735,7 +1736,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -1749,7 +1750,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -1763,7 +1764,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -1777,7 +1778,7 @@ LIGHTS-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Lighting Level {W} - 16.15, !- Watts per Zone Floor Area {W/m2} + 16.15, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0.0, !- Return Air Fraction 0.59, !- Fraction Radiant @@ -1793,7 +1794,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -1805,7 +1806,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -1817,7 +1818,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -1829,7 +1830,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -1841,7 +1842,7 @@ EQUIP-1, !- Schedule Name Watts/Area, !- Design Level Calculation Method , !- Design Level {W} - 10.76, !- Watts per Zone Floor Area {W/m2} + 10.76, !- Watts per Floor Area {W/m2} , !- Watts per Person {W/person} 0, !- Fraction Latent 0.3, !- Fraction Radiant @@ -1855,8 +1856,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -1869,8 +1870,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -1883,8 +1884,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.0167, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -1897,8 +1898,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.00717, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -1911,8 +1912,8 @@ INFIL-SCH, !- Schedule Name flow/zone, !- Design Flow Rate Calculation Method 0.031089, !- Design Flow Rate {m3/s} - , !- Flow per Zone Floor Area {m3/s-m2} - , !- Flow per Exterior Surface Area {m3/s-m2} + , !- Flow Rate per Floor Area {m3/s-m2} + , !- Flow Rate per Exterior Surface Area {m3/s-m2} , !- Air Changes per Hour {1/hr} 0, !- Constant Term Coefficient 0, !- Temperature Term Coefficient @@ -1991,7 +1992,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} Sizing:Zone, SPACE2-1, !- Zone or ZoneList Name @@ -2020,7 +2028,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} Sizing:Zone, SPACE3-1, !- Zone or ZoneList Name @@ -2049,7 +2064,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} Sizing:Zone, SPACE4-1, !- Zone or ZoneList Name @@ -2078,7 +2100,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} Sizing:Zone, SPACE5-1, !- Zone or ZoneList Name @@ -2107,7 +2136,14 @@ No, !- Account for Dedicated Outdoor Air System NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C} - autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + autosize, !- Dedicated Outdoor Air High Setpoint Temperature for Design {C} + , !- Zone Load Sizing Method + , !- Zone Latent Cooling Design Supply Air Humidity Ratio Input Method + , !- Zone Dehumidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + , !- Zone Cooling Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} + , !- Zone Latent Heating Design Supply Air Humidity Ratio Input Method + , !- Zone Humidification Design Supply Air Humidity Ratio {kgWater/kgDryAir} + ; !- Zone Humidification Design Supply Air Humidity Ratio Difference {kgWater/kgDryAir} !- =========== ALL OBJECTS IN CLASS: SIZING:PLANT =========== ! ************* Hot Water Plant Loop for space heating ****************************** @@ -2222,7 +2258,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Electric, !- Supplemental Heating Coil Object Type TU1 Supp Heating Coil, !- Supplemental Heating Coil Name - autosize; !- Maximum Supply Air Temperature from Supplemental Heater {C} + autosize, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU1 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU1 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU1 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, TU2, !- Zone Terminal Unit Name @@ -2253,7 +2327,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Fuel, !- Supplemental Heating Coil Object Type TU2 Supp Heating Coil, !- Supplemental Heating Coil Name - autosize; !- Maximum Supply Air Temperature from Supplemental Heater {C} + autosize, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU2 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU2 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU2 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU2 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, TU3, !- Zone Terminal Unit Name @@ -2284,7 +2396,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Water, !- Supplemental Heating Coil Object Type TU3 Supp Heating Coil, !- Supplemental Heating Coil Name - autosize; !- Maximum Supply Air Temperature from Supplemental Heater {C} + autosize, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU3 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU3 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU3 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU3 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU3 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, TU4, !- Zone Terminal Unit Name @@ -2315,7 +2465,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Fuel, !- Supplemental Heating Coil Object Type TU4 Supp Heating Coil, !- Supplemental Heating Coil Name - autosize; !- Maximum Supply Air Temperature from Supplemental Heater {C} + autosize, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU4 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU4 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU4 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU4 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU4 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, TU5, !- Zone Terminal Unit Name @@ -2346,7 +2534,45 @@ , !- Design Specification ZoneHVAC Sizing Object Name Coil:Heating:Steam, !- Supplemental Heating Coil Object Type TU5 Supp Heating Coil, !- Supplemental Heating Coil Name - autosize; !- Maximum Supply Air Temperature from Supplemental Heater {C} + autosize, !- Maximum Supply Air Temperature from Supplemental Heater {C} + ; !- Maximum Outdoor Dry-Bulb Temperature for Supplemental Heater Operation {C} + + Fan:SystemModel, + TU5 VRF Supply Fan, !- Name + VRFAvailSched, !- Availability Schedule Name + TU5 VRF DX HCoil Outlet Node, !- Air Inlet Node Name + TU5 VRF Fan Outlet Node, !- Air Outlet Node Name + autosize, !- Design Maximum Air Flow Rate {m3/s} + Continuous, !- Speed Control Method + 0, !- Electric Power Minimum Flow Rate Fraction + 600, !- Design Pressure Rise {Pa} + 0.9, !- Motor Efficiency + 1, !- Motor In Air Stream Fraction + autosize, !- Design Electric Power Consumption {W} + TotalEfficiencyAndPressure, !- Design Power Sizing Method + , !- Electric Power Per Unit Flow Rate {W/(m3/s)} + , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} + 0.7, !- Fan Total Efficiency + TU5 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name + , !- Night Ventilation Mode Pressure Rise {Pa} + , !- Night Ventilation Mode Flow Fraction + , !- Motor Loss Zone Name + , !- Motor Loss Radiative Fraction + General; !- End-Use Subcategory + + Curve:Quartic, + TU5 VRF Supply Fan_curve,!- Name + 0.059, !- Coefficient1 Constant + 0, !- Coefficient2 x + 0, !- Coefficient3 x**2 + 0.928, !- Coefficient4 x**3 + 0, !- Coefficient5 x**4 + 0.0000000, !- Minimum Value of x + 1.0, !- Maximum Value of x + 0.0, !- Minimum Curve Output + 5.0, !- Maximum Curve Output + Dimensionless, !- Input Unit Type for X + Dimensionless; !- Output Unit Type !- =========== ALL OBJECTS IN CLASS: ZONEHVAC:EQUIPMENTLIST =========== @@ -2442,193 +2668,6 @@ SPACE5-1 Node, !- Zone Air Node Name SPACE5-1 Out Node; !- Zone Return Air Node or NodeList Name -!- =========== ALL OBJECTS IN CLASS: FAN:VARIABLEVOLUME =========== - - Fan:SystemModel, - TU1 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU1 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU1 VRF Fan Outlet Node, !- Air Outlet Node Name - autosize, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction - 600, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1, !- Motor In Air Stream Fraction - autosize, !- Design Electric Power Consumption {W} - TotalEfficiencyAndPressure, !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.7, !- Fan Total Efficiency - TU1 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name - , !- Night Ventilation Mode Pressure Rise {Pa} - , !- Night Ventilation Mode Flow Fraction - , !- Motor Loss Zone Name - , !- Motor Loss Radiative Fraction - General; !- End-Use Subcategory - - Curve:Quartic, - TU1 VRF Supply Fan_curve,!- Name - 0.059, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.928, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - - Fan:SystemModel, - TU2 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU2 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU2 VRF Fan Outlet Node, !- Air Outlet Node Name - autosize, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction - 600, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1, !- Motor In Air Stream Fraction - autosize, !- Design Electric Power Consumption {W} - TotalEfficiencyAndPressure, !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.7, !- Fan Total Efficiency - TU2 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name - , !- Night Ventilation Mode Pressure Rise {Pa} - , !- Night Ventilation Mode Flow Fraction - , !- Motor Loss Zone Name - , !- Motor Loss Radiative Fraction - General; !- End-Use Subcategory - - Curve:Quartic, - TU2 VRF Supply Fan_curve,!- Name - 0.059, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.928, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - - Fan:SystemModel, - TU3 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU3 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU3 VRF Fan Outlet Node, !- Air Outlet Node Name - autosize, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction - 600, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1, !- Motor In Air Stream Fraction - autosize, !- Design Electric Power Consumption {W} - TotalEfficiencyAndPressure, !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.7, !- Fan Total Efficiency - TU3 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name - , !- Night Ventilation Mode Pressure Rise {Pa} - , !- Night Ventilation Mode Flow Fraction - , !- Motor Loss Zone Name - , !- Motor Loss Radiative Fraction - General; !- End-Use Subcategory - - Curve:Quartic, - TU3 VRF Supply Fan_curve,!- Name - 0.059, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.928, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - - Fan:SystemModel, - TU4 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU4 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU4 VRF Fan Outlet Node, !- Air Outlet Node Name - autosize, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction - 600, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1, !- Motor In Air Stream Fraction - autosize, !- Design Electric Power Consumption {W} - TotalEfficiencyAndPressure, !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.7, !- Fan Total Efficiency - TU4 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name - , !- Night Ventilation Mode Pressure Rise {Pa} - , !- Night Ventilation Mode Flow Fraction - , !- Motor Loss Zone Name - , !- Motor Loss Radiative Fraction - General; !- End-Use Subcategory - - Curve:Quartic, - TU4 VRF Supply Fan_curve,!- Name - 0.059, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.928, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - - Fan:SystemModel, - TU5 VRF Supply Fan, !- Name - VRFAvailSched, !- Availability Schedule Name - TU5 VRF DX HCoil Outlet Node, !- Air Inlet Node Name - TU5 VRF Fan Outlet Node, !- Air Outlet Node Name - autosize, !- Design Maximum Air Flow Rate {m3/s} - Continuous, !- Speed Control Method - 0.0, !- Electric Power Minimum Flow Rate Fraction - 600, !- Design Pressure Rise {Pa} - 0.9, !- Motor Efficiency - 1, !- Motor In Air Stream Fraction - autosize, !- Design Electric Power Consumption {W} - TotalEfficiencyAndPressure, !- Design Power Sizing Method - , !- Electric Power Per Unit Flow Rate {W/(m3/s)} - , !- Electric Power Per Unit Flow Rate Per Unit Pressure {W/((m3/s)-Pa)} - 0.7, !- Fan Total Efficiency - TU5 VRF Supply Fan_curve,!- Electric Power Function of Flow Fraction Curve Name - , !- Night Ventilation Mode Pressure Rise {Pa} - , !- Night Ventilation Mode Flow Fraction - , !- Motor Loss Zone Name - , !- Motor Loss Radiative Fraction - General; !- End-Use Subcategory - - Curve:Quartic, - TU5 VRF Supply Fan_curve,!- Name - 0.059, !- Coefficient1 Constant - 0, !- Coefficient2 x - 0, !- Coefficient3 x**2 - 0.928, !- Coefficient4 x**3 - 0, !- Coefficient5 x**4 - 0.0000000, !- Minimum Value of x - 1.0, !- Maximum Value of x - 0.0, !- Minimum Curve Output - 5.0, !- Maximum Curve Output - Dimensionless, !- Input Unit Type for X - Dimensionless; !- Output Unit Type - !- =========== ALL OBJECTS IN CLASS: COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL =========== Coil:Cooling:DX:VariableRefrigerantFlow:FluidTemperatureControl, @@ -2905,7 +2944,7 @@ Branch, Heating Purchased Hot Water Branch, !- Name , !- Pressure Drop Curve Name - DistrictHeating:Water, !- Component 1 Object Type + DistrictHeating:Water, !- Component 1 Object Type Purchased Heating, !- Component 1 Name Purchased Heat Inlet Node, !- Component 1 Inlet Node Name Purchased Heat Outlet Node; !- Component 1 Outlet Node Name @@ -3357,7 +3396,7 @@ PlantEquipmentList, heating plant, !- Name - DistrictHeating:Water, !- Equipment 1 Object Type + DistrictHeating:Water, !- Equipment 1 Object Type Purchased Heating; !- Equipment 1 Name PlantEquipmentList, From dc5c34246fd34b83c3790c06cb581e6af9f121a5 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 1 Aug 2024 17:58:36 -0700 Subject: [PATCH 36/45] change READ to ProcessNumber --- src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 67a848f7a97..8015e693f6b 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -601,11 +601,20 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(6) = 'Continuous' !- Speed Control Method IF (SameString(OldFanVO(Num3)%minFlowInputMethod, "FixedFlowRate")) THEN IF (.NOT. SameString(OldFanVO(Num3)%maxAirFlow_str, "AUTOSIZE")) THEN - READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow - READ(OldFanVO(Num3)%maxAirFlow_str, '(F15.5)') maxAirFlow + fanPowerMinAirFlow = ProcessNumber(OldFanVO(Num3)%fanPowerMinAirFlow_str, ErrFlag) + IF (ErrFlag) THEN + CALL ShowSevereError('Invalid Number, FAN:VARIABLEVOLUME field 8, Fan Power Minimum Air Flow Rate, Name=' // TRIM(OutArgs(1)), Auditf) + END IF + maxAirFlow = ProcessNumber(OldFanVO(Num3)%maxAirFlow_str, ErrFlag) + IF (ErrFlag) THEN + CALL ShowSevereError('Invalid Number, FAN:VARIABLEVOLUME field 5, Maximum Flow Rate, Name=' // TRIM(OutArgs(1)), Auditf) + END IF WRITE(OutArgs(7), '(F15.5)') (fanPowerMinAirFlow / maxAirFlow) ELSE ! maxAirFlow_stris autosize - READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow + fanPowerMinAirFlow = ProcessNumber(OldFanVO(Num3)%fanPowerMinAirFlow_str, ErrFlag) + IF (ErrFlag) THEN + CALL ShowSevereError('Invalid Number, FAN:VARIABLEVOLUME field 8, Fan Power Minimum Air Flow Rate, Name=' // TRIM(OutArgs(1)), Auditf) + END IF IF (.NOT. fanPowerMinAirFlow == 0) THEN ! don't know how to do division with autosize CALL writePreprocessorObject(DifLfn, PrognameConversion, 'Warning', & 'Cannot calculate Electric Power Minimum Flow Rate Fraction for' // sysFanName // & From d1c3cd7fd1522b564943cd416a53ca6eb15d1a31 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 1 Aug 2024 17:59:12 -0700 Subject: [PATCH 37/45] update err message and call ShowWarningError --- src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 8015e693f6b..78cd7eb1b90 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -617,8 +617,14 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END IF IF (.NOT. fanPowerMinAirFlow == 0) THEN ! don't know how to do division with autosize CALL writePreprocessorObject(DifLfn, PrognameConversion, 'Warning', & - 'Cannot calculate Electric Power Minimum Flow Rate Fraction for' // sysFanName // & - 'when Maximum Flow Rate is autosize and Fan Power Minimum Air Flow Rate is non-zero') + 'Cannot calculate Electric Power Minimum Flow Rate Fraction for Fan:SystemModel=' // sysFanName // & + ' when old Fan:VariableVolume Maximum Flow Rate is autosize and Fan Power Minimum Air Flow Rate is non-zero. ' // & + 'Electric Power Minimum Flow Rate Fraction is set to zero. ' // & + 'Manually size the Maximum Flow Rate if Electric Power Minimum Flow Rate Fraction should not be zero.') + CALL ShowWarningError('Cannot calculate Electric Power Minimum Flow Rate Fraction for Fan:SystemModel=' // sysFanName // & + ' when old Fan:VariableVolume Maximum Flow Rate is autosize and Fan Power Minimum Air Flow Rate is non-zero. ' // & + 'Electric Power Minimum Flow Rate Fraction is set to zero. ' // & + 'Manually size the Maximum Flow Rate if Electric Power Minimum Flow Rate Fraction should not be zero.', Auditf) END IF OutArgs(7) = '0.0' ENDIF From 3c6c5813377b6e3a560e3553e57a9b3612b2c352 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Thu, 1 Aug 2024 17:59:32 -0700 Subject: [PATCH 38/45] use 0.0 as min x value of fan performance curve --- src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 index 78cd7eb1b90..d8bf573e276 100644 --- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 @@ -657,8 +657,7 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(4) = OldFanVO(Num3)%coeff3 !- Coefficient3 x**2 OutArgs(5) = OldFanVO(Num3)%coeff4 !- Coefficient4 x**3 OutArgs(6) = OldFanVO(Num3)%coeff5 !- Coefficient5 x**4 - READ(OldFanVO(Num3)%fanPowerMinAirFlow_str, '(F15.5)') fanPowerMinAirFlow - WRITE(OutArgs(7), '(F10.7)') (fanPowerMinAirFlow / maxAirFlow) !- Minimum Value of x + OutArgs(7) = '0.0' !- Minimum Value of x OutArgs(8) = '1.0' !- Maximum Value of x OutArgs(9) = '0.0' !- Minimum Curve Output OutArgs(10) = '5.0' !- Maximum Curve Output From 698ddbf4ce3aa023a9becab9188875d9e373daca Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 5 Aug 2024 09:18:14 -0700 Subject: [PATCH 39/45] min value of system fan curve in idf change to 0 --- testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf index 2a21a3cbc47..b766fbdc1a5 100644 --- a/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf +++ b/testfiles/US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf @@ -530,7 +530,7 @@ 0, !- Coefficient3 x**2 0.91, !- Coefficient4 x**3 0, !- Coefficient5 x**4 - 0.6974790, !- Minimum Value of x + 0.0, !- Minimum Value of x 1.0, !- Maximum Value of x 0.0, !- Minimum Curve Output 5.0, !- Maximum Curve Output From 261699abc631efc6eb20e73a8181f49c6442e2db Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 7 Aug 2024 12:07:20 -0700 Subject: [PATCH 40/45] remove OU fan adjustment and put it in a different PR there might be larger issue with the OU fan like negative VRF Heat Pump Outdoor Unit Fan Power value. This will be fixed in another PR --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index cda29a32fe6..497f4a341a1 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -11506,9 +11506,9 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); - this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; // 0.95 is the efficiency of the compressor inverter, can come from IDF //@minor - this->OUFanPower = this->RatedOUFanPower * CyclingRatio; //@ * pow_3( CondFlowRatio ) - this->VRFCondCyclingRatio = CyclingRatio; // report variable for cycling rate + this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; // 0.95 is the efficiency of the compressor inverter, can come from IDF //@minor + this->OUFanPower = this->RatedOUFanPower; //@ * pow_3( CondFlowRatio ) + this->VRFCondCyclingRatio = CyclingRatio; // report variable for cycling rate Tdischarge = this->CondensingTemp; // outdoor unit condensing temperature this->CoolingCapacity = @@ -11736,7 +11736,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) // Key outputs of this subroutine this->CompActSpeed = max(CompSpdActual, 0.0); this->Ncomp = max(Ncomp, 0.0) / this->EffCompInverter; - this->OUFanPower = this->RatedOUFanPower * CyclingRatio; + this->OUFanPower = this->RatedOUFanPower; this->VRFCondCyclingRatio = CyclingRatio; Tsuction = this->EvaporatingTemp; // Outdoor unit evaporating temperature From de9baf302ad24431736e9968f9e9cce2cc0a0d6a Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Mon, 12 Aug 2024 14:46:27 -0700 Subject: [PATCH 41/45] change OnOffFanPartLoadFraction back to use PLF --- src/EnergyPlus/DXCoils.cc | 2 +- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc index 2738bf5f501..c2fcfaef4a0 100644 --- a/src/EnergyPlus/DXCoils.cc +++ b/src/EnergyPlus/DXCoils.cc @@ -16880,7 +16880,7 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state, } // If cycling fan, send coil part-load fraction to on/off fan via HVACDataGlobals - if (fanOp == HVAC::FanOp::Cycling) state.dataHVACGlobal->OnOffFanPartLoadFraction = thisDXCoil.CoolingCoilRuntimeFraction; + if (fanOp == HVAC::FanOp::Cycling) state.dataHVACGlobal->OnOffFanPartLoadFraction = PLF; // Check for saturation error and modify temperature at constant enthalpy if (OutletAirTemp < PsyTsatFnHPb(state, OutletAirEnthalpy, OutdoorPressure)) { diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 497f4a341a1..dee354b86d5 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12828,7 +12828,16 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, auto *fan = state.dataFans->fans(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).FanIndex); if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::SystemModel) { if (OnOffAirFlowRatio > 0.0) { - fan->simulate(state, FirstHVACIteration, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); + fan->simulate(state, + FirstHVACIteration, + _, + _, + _, + fan->inletAirMassFlowRate, + state.dataDXCoils->DXCoil(this->CoolCoilIndex).CoolingCoilRuntimeFraction, + 0, + 0, + _); } else { fan->simulate(state, FirstHVACIteration, _, _, PartLoadRatio); } From e03dea0d12f9a3912dab751bb025977548ae1796 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Tue, 13 Aug 2024 10:38:04 -0700 Subject: [PATCH 42/45] fix unit test related to OU fan, as it's not fixed here --- tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc index 1658ce38122..c7f26710338 100644 --- a/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc +++ b/tst/EnergyPlus/unit/HVACVariableRefrigerantFlow.unit.cc @@ -13278,9 +13278,7 @@ TEST_F(EnergyPlusFixture, VRF_FluidTCtrl_ReportOutputVerificationTest) EXPECT_NEAR(125.2573 * thisDXCoolingCoil.CoolingCoilRuntimeFraction, thisFan->totalPower, 0.0001); EXPECT_NEAR(thisDXCoolingCoil.TotalCoolingEnergyRate, (thisVRFTU.TotalCoolingRate + thisFan->totalPower), 0.0001); EXPECT_NEAR(0.8930, 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); + EXPECT_NEAR(state->dataHVACVarRefFlow->VRF(1).OUFanPower, state->dataHVACVarRefFlow->VRF(1).RatedOUFanPower, 0.0001); } // Test for #7648: HREIRFTHeat wrongly used HRCAPFTHeatConst. Occurs only if you have Heat Recovery From 37471e12a01982b1585ce6bbb4374b542714af75 Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Tue, 13 Aug 2024 10:38:52 -0700 Subject: [PATCH 43/45] pass in OnOffFanPartLoadFraction of constant 1 --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index dee354b86d5..fc8ff1253fc 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12834,7 +12834,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, _, _, fan->inletAirMassFlowRate, - state.dataDXCoils->DXCoil(this->CoolCoilIndex).CoolingCoilRuntimeFraction, + OnOffFanPartLoadFraction, 0, 0, _); From bcf41183f5cf727f462266b06274d51d79e6073d Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Wed, 14 Aug 2024 10:32:48 -0700 Subject: [PATCH 44/45] fix err message blow->draw through --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index fc8ff1253fc..19ac6450f64 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -5494,7 +5494,7 @@ void CheckVRFTUNodeConnections(EnergyPlusData &state, int const VRFTUNum, bool & if (fanOutletNode != VRFTUOutletNodeNum) { ShowSevereError(state, fmt::format("{}=\"{}\",", cTerminalUnitType, cTUName)); ShowContinueError(state, - "... For blow through fan and no supplemental heating coil the fan outlet node name must " + "... For draw through fan and no supplemental heating coil the fan outlet node name must " "match the terminal unit outlet node name."); if (fanOutletNode > 0 && VRFTUOutletNodeNum > 0) { ShowContinueError(state, format("... Fan outlet node name = {}.", nodeID(fanOutletNode))); From 49fd825b3d68d4d99114afe5e047d720cb41d96c Mon Sep 17 00:00:00 2001 From: Yujie Xu Date: Fri, 16 Aug 2024 12:36:46 -0700 Subject: [PATCH 45/45] clang-format --- src/EnergyPlus/HVACVariableRefrigerantFlow.cc | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 1422378f6cd..070dd4939fe 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -12850,16 +12850,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, auto *fan = state.dataFans->fans(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).FanIndex); if (state.dataHVACVarRefFlow->VRFTU(VRFTUNum).fanType == HVAC::FanType::SystemModel) { if (OnOffAirFlowRatio > 0.0) { - fan->simulate(state, - FirstHVACIteration, - _, - _, - _, - fan->inletAirMassFlowRate, - OnOffFanPartLoadFraction, - 0, - 0, - _); + fan->simulate(state, FirstHVACIteration, _, _, _, fan->inletAirMassFlowRate, OnOffFanPartLoadFraction, 0, 0, _); } else { fan->simulate(state, FirstHVACIteration, _, _, PartLoadRatio); }