Skip to content

Commit 4d3263a

Browse files
authored
Merge pull request #10945 from NREL/Desuperheater_multispeed_watertoair_equationfit
Allow water heater desuperheater with Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit
2 parents fac94cd + bba8851 commit 4d3263a

File tree

10 files changed

+501
-38
lines changed

10 files changed

+501
-38
lines changed

doc/engineering-reference/src/simulation-models-encyclopedic-reference-001/coils.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5144,7 +5144,7 @@ \subsubsection{Overview}\label{overview-10}
51445144

51455145
Coil:Cooling:WaterToAirHeatPump:EquationFit
51465146

5147-
Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit (This option is added in the IDD in preparation for full implementation. It is currently not implemented.)
5147+
Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit
51485148

51495149
Refrigeration:CompressorRack
51505150

doc/input-output-reference/src/overview/group-heating-and-cooling-coils.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5191,7 +5191,7 @@ \subsubsection{Inputs}\label{inputs-22-000}
51915191
\item
51925192
\hyperref[coilcoolingwatertoairheatpumpequationfit]{Coil:Cooling:WaterToAirHeatPump:EquationFit}
51935193
\item
5194-
\hyperref[coilcoolingwatertoairheatpumpvariablespeedequationfit]{Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit} (This option is added in the IDD in preparation for full implementation. It is currently not implemented.)
5194+
\hyperref[coilcoolingwatertoairheatpumpvariablespeedequationfit]{Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit}
51955195
\item
51965196
\hyperref[refrigerationcompressorrack]{Refrigeration:CompressorRack}
51975197
\item

src/EnergyPlus/DataHeatBalance.hh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2026,7 +2026,7 @@ struct HeatBalanceData : BaseGlobalStruct
20262026
EPVector<DataHeatBalance::HeatReclaimDataBase> HeatReclaimRefrigeratedRack;
20272027
EPVector<DataHeatBalance::HeatReclaimRefrigCondenserData> HeatReclaimRefrigCondenser;
20282028
EPVector<DataHeatBalance::HeatReclaimDataBase> HeatReclaimDXCoil;
2029-
EPVector<DataHeatBalance::HeatReclaimDataBase> HeatReclaimVS_DXCoil;
2029+
EPVector<DataHeatBalance::HeatReclaimDataBase> HeatReclaimVS_Coil;
20302030
EPVector<DataHeatBalance::HeatReclaimDataBase> HeatReclaimSimple_WAHPCoil;
20312031
EPVector<DataHeatBalance::AirReportVars> ZnAirRpt;
20322032
EPVector<DataHeatBalance::AirReportVars> spaceAirRpt;

src/EnergyPlus/DesiccantDehumidifiers.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2410,8 +2410,8 @@ namespace DesiccantDehumidifiers {
24102410
CondenserWasteHeat = state.dataHeatBal->HeatReclaimDXCoil(desicDehum.DXCoilIndex).AvailCapacity;
24112411
state.dataHeatBal->HeatReclaimDXCoil(desicDehum.DXCoilIndex).AvailCapacity = 0.0;
24122412
} else if (desicDehum.coolingCoil_TypeNum == HVAC::Coil_CoolingAirToAirVariableSpeed) {
2413-
CondenserWasteHeat = state.dataHeatBal->HeatReclaimVS_DXCoil(desicDehum.DXCoilIndex).AvailCapacity;
2414-
state.dataHeatBal->HeatReclaimVS_DXCoil(desicDehum.DXCoilIndex).AvailCapacity = 0.0;
2413+
CondenserWasteHeat = state.dataHeatBal->HeatReclaimVS_Coil(desicDehum.DXCoilIndex).AvailCapacity;
2414+
state.dataHeatBal->HeatReclaimVS_Coil(desicDehum.DXCoilIndex).AvailCapacity = 0.0;
24152415
}
24162416

24172417
CpAir = Psychrometrics::PsyCpAirFnW(state.dataLoopNodes->Node(desicDehum.CondenserInletNode).HumRat);

src/EnergyPlus/HeatingCoils.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,9 +1119,9 @@ namespace HeatingCoils {
11191119
heatingCoil.ReclaimHeatingSource = HeatObjTypes::COIL_DX_VARIABLE_COOLING;
11201120
heatingCoil.ReclaimHeatingSourceIndexNum = VariableSpeedCoils::GetCoilIndexVariableSpeed(state, Alphas(5), Alphas(6), DXCoilErrFlag);
11211121
if (heatingCoil.ReclaimHeatingSourceIndexNum > 0) {
1122-
if (allocated(state.dataHeatBal->HeatReclaimVS_DXCoil)) {
1122+
if (allocated(state.dataHeatBal->HeatReclaimVS_Coil)) {
11231123
DataHeatBalance::HeatReclaimDataBase &HeatReclaim =
1124-
state.dataHeatBal->HeatReclaimVS_DXCoil(heatingCoil.ReclaimHeatingSourceIndexNum);
1124+
state.dataHeatBal->HeatReclaimVS_Coil(heatingCoil.ReclaimHeatingSourceIndexNum);
11251125
if (!allocated(HeatReclaim.HVACDesuperheaterReclaimedHeat)) {
11261126
HeatReclaim.HVACDesuperheaterReclaimedHeat.allocate(state.dataHeatingCoils->NumDesuperheaterCoil);
11271127
std::fill(HeatReclaim.HVACDesuperheaterReclaimedHeat.begin(), HeatReclaim.HVACDesuperheaterReclaimedHeat.end(), 0.0);
@@ -1510,11 +1510,11 @@ namespace HeatingCoils {
15101510
} break;
15111511
case HeatObjTypes::COIL_DX_VARIABLE_COOLING: {
15121512
for (int DXCoilNum = 1; DXCoilNum <= state.dataVariableSpeedCoils->NumVarSpeedCoils; ++DXCoilNum) {
1513-
if (!Util::SameString(state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).Name, heatingCoil.ReclaimHeatingCoilName)) continue;
1513+
if (!Util::SameString(state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).Name, heatingCoil.ReclaimHeatingCoilName)) continue;
15141514
heatingCoil.ReclaimHeatingSourceIndexNum = DXCoilNum;
1515-
if (allocated(state.dataHeatBal->HeatReclaimVS_DXCoil)) {
1515+
if (allocated(state.dataHeatBal->HeatReclaimVS_Coil)) {
15161516
DataHeatBalance::HeatReclaimDataBase &HeatReclaim =
1517-
state.dataHeatBal->HeatReclaimVS_DXCoil(heatingCoil.ReclaimHeatingSourceIndexNum);
1517+
state.dataHeatBal->HeatReclaimVS_Coil(heatingCoil.ReclaimHeatingSourceIndexNum);
15181518
if (!allocated(HeatReclaim.HVACDesuperheaterReclaimedHeat)) {
15191519
HeatReclaim.HVACDesuperheaterReclaimedHeat.allocate(state.dataHeatingCoils->NumDesuperheaterCoil);
15201520
std::fill(HeatReclaim.HVACDesuperheaterReclaimedHeat.begin(), HeatReclaim.HVACDesuperheaterReclaimedHeat.end(), 0.0);
@@ -2633,8 +2633,8 @@ namespace HeatingCoils {
26332633
case HeatObjTypes::COIL_DX_VARIABLE_COOLING:
26342634
// condenser heat rejection
26352635
heatingCoil.RTF = state.dataVariableSpeedCoils->VarSpeedCoil(SourceID).RunFrac;
2636-
heatingCoil.NominalCapacity = state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).AvailCapacity * Effic -
2637-
state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).WaterHeatingDesuperheaterReclaimedHeatTotal;
2636+
heatingCoil.NominalCapacity = state.dataHeatBal->HeatReclaimVS_Coil(SourceID).AvailCapacity * Effic -
2637+
state.dataHeatBal->HeatReclaimVS_Coil(SourceID).WaterHeatingDesuperheaterReclaimedHeatTotal;
26382638
break;
26392639
case HeatObjTypes::COIL_COOLING_DX_NEW:
26402640
// get RTF and NominalCapacity from Coil:CoolingDX
@@ -2745,10 +2745,10 @@ namespace HeatingCoils {
27452745
state.dataHeatBal->HeatReclaimDXCoil(SourceID).HVACDesuperheaterReclaimedHeatTotal += num;
27462746
} break;
27472747
case HeatObjTypes::COIL_DX_VARIABLE_COOLING: {
2748-
state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).HVACDesuperheaterReclaimedHeat(DesuperheaterNum) = HeatingCoilLoad;
2749-
state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).HVACDesuperheaterReclaimedHeatTotal = 0.0;
2750-
for (auto const &num : state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).HVACDesuperheaterReclaimedHeat)
2751-
state.dataHeatBal->HeatReclaimVS_DXCoil(SourceID).HVACDesuperheaterReclaimedHeatTotal += num;
2748+
state.dataHeatBal->HeatReclaimVS_Coil(SourceID).HVACDesuperheaterReclaimedHeat(DesuperheaterNum) = HeatingCoilLoad;
2749+
state.dataHeatBal->HeatReclaimVS_Coil(SourceID).HVACDesuperheaterReclaimedHeatTotal = 0.0;
2750+
for (auto const &num : state.dataHeatBal->HeatReclaimVS_Coil(SourceID).HVACDesuperheaterReclaimedHeat)
2751+
state.dataHeatBal->HeatReclaimVS_Coil(SourceID).HVACDesuperheaterReclaimedHeatTotal += num;
27522752
} break;
27532753
default:
27542754
break;

src/EnergyPlus/VariableSpeedCoils.cc

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ namespace VariableSpeedCoils {
255255
// Allocate Arrays
256256
if (state.dataVariableSpeedCoils->NumVarSpeedCoils > 0) {
257257
state.dataVariableSpeedCoils->VarSpeedCoil.allocate(state.dataVariableSpeedCoils->NumVarSpeedCoils);
258-
state.dataHeatBal->HeatReclaimVS_DXCoil.allocate(state.dataVariableSpeedCoils->NumVarSpeedCoils);
258+
state.dataHeatBal->HeatReclaimVS_Coil.allocate(state.dataVariableSpeedCoils->NumVarSpeedCoils);
259259
}
260260

261261
state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(
@@ -313,6 +313,8 @@ namespace VariableSpeedCoils {
313313

314314
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).bIsDesuperheater = false;
315315
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name = AlphArray(1);
316+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).Name = state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name;
317+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).SourceType = CurrentModuleObject;
316318
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CoolHeatType = "COOLING";
317319
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).VSCoilType = HVAC::Coil_CoolingWaterToAirHPVSEquationFit;
318320
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).VarSpeedCoilType =
@@ -848,8 +850,8 @@ namespace VariableSpeedCoils {
848850
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).bIsDesuperheater = false;
849851
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name = AlphArray(1);
850852
// Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
851-
state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).Name = state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name;
852-
state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).SourceType = CurrentModuleObject;
853+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).Name = state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name;
854+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).SourceType = CurrentModuleObject;
853855
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CoolHeatType = "COOLING";
854856
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).VSCoilType = HVAC::Coil_CoolingAirToAirVariableSpeed;
855857
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).VarSpeedCoilType = HVAC::cAllCoilTypes(HVAC::Coil_CoolingAirToAirVariableSpeed);
@@ -4298,7 +4300,7 @@ namespace VariableSpeedCoils {
42984300
}
42994301

43004302
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).SimFlag = true;
4301-
state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).AvailCapacity = 0.0;
4303+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).AvailCapacity = 0.0;
43024304

43034305
state.dataVariableSpeedCoils->MyEnvrnFlag(DXCoilNum) = false;
43044306

@@ -4426,7 +4428,7 @@ namespace VariableSpeedCoils {
44264428
state.dataVariableSpeedCoils->VSHPWHHeatingCapacity = 0.0; // Used by Heat Pump:Water Heater object as total water heating capacity [W]
44274429
state.dataVariableSpeedCoils->VSHPWHHeatingCOP = 0.0; // Used by Heat Pump:Water Heater object as water heating COP [W/W]
44284430
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletWaterTemp = state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).InletWaterTemp;
4429-
state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).AvailCapacity = 0.0;
4431+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).AvailCapacity = 0.0;
44304432
}
44314433

44324434
void SizeVarSpeedCoil(EnergyPlusData &state, int const DXCoilNum, bool &ErrorsFound)
@@ -6393,13 +6395,11 @@ namespace VariableSpeedCoils {
63936395
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).QSensible = state.dataVariableSpeedCoils->QSensible;
63946396
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).QLatent =
63956397
state.dataVariableSpeedCoils->QLoadTotal - state.dataVariableSpeedCoils->QSensible;
6396-
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).QSource = state.dataVariableSpeedCoils->QSource;
63976398
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Energy = state.dataVariableSpeedCoils->Winput * TimeStepSysSec;
63986399
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EnergyLoadTotal = state.dataVariableSpeedCoils->QLoadTotal * TimeStepSysSec;
63996400
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EnergySensible = state.dataVariableSpeedCoils->QSensible * TimeStepSysSec;
64006401
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EnergyLatent =
64016402
(state.dataVariableSpeedCoils->QLoadTotal - state.dataVariableSpeedCoils->QSensible) * TimeStepSysSec;
6402-
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EnergySource = state.dataVariableSpeedCoils->QSource * TimeStepSysSec;
64036403
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterConsumption =
64046404
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterPower * TimeStepSysSec;
64056405
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EvapWaterConsump =
@@ -6431,7 +6431,9 @@ namespace VariableSpeedCoils {
64316431
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).WaterMassFlowRate = 0.0;
64326432
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletWaterTemp = 0.0;
64336433
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletWaterEnthalpy = 0.0;
6434-
state.dataHeatBal->HeatReclaimVS_DXCoil(DXCoilNum).AvailCapacity = state.dataVariableSpeedCoils->QSource;
6434+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).AvailCapacity = state.dataVariableSpeedCoils->QSource;
6435+
if (state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).WaterHeatingDesuperheaterReclaimedHeatTotal > 0.0)
6436+
state.dataVariableSpeedCoils->QSource -= state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).WaterHeatingDesuperheaterReclaimedHeatTotal;
64356437
} else {
64366438
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).WaterMassFlowRate = state.dataVariableSpeedCoils->SourceSideMassFlowRate;
64376439
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletWaterTemp =
@@ -6440,7 +6442,12 @@ namespace VariableSpeedCoils {
64406442
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).OutletWaterEnthalpy =
64416443
state.dataVariableSpeedCoils->SourceSideInletEnth +
64426444
state.dataVariableSpeedCoils->QSource / state.dataVariableSpeedCoils->SourceSideMassFlowRate;
6445+
state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).AvailCapacity = state.dataVariableSpeedCoils->QSource;
6446+
if (state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).WaterHeatingDesuperheaterReclaimedHeatTotal > 0.0)
6447+
state.dataVariableSpeedCoils->QSource -= state.dataHeatBal->HeatReclaimVS_Coil(DXCoilNum).WaterHeatingDesuperheaterReclaimedHeatTotal;
64436448
}
6449+
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).QSource = state.dataVariableSpeedCoils->QSource;
6450+
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).EnergySource = state.dataVariableSpeedCoils->QSource * TimeStepSysSec;
64446451

64456452
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).QWasteHeat = QWasteHeat;
64466453

0 commit comments

Comments
 (0)