Skip to content

Commit

Permalink
Multispeed DX fix outlet conditions at low speed
Browse files Browse the repository at this point in the history
  • Loading branch information
mjwitte committed Oct 28, 2020
1 parent 0c6493f commit bd8aa38
Showing 1 changed file with 18 additions and 23 deletions.
41 changes: 18 additions & 23 deletions src/EnergyPlus/DXCoils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12187,6 +12187,9 @@ namespace DXCoils {
DXCoil(DXCoilNum).ElecCoolingPower = DXCoil(DXCoilNum).CoolingCoilRuntimeFraction * HSElecCoolingPower +
(1.0 - DXCoil(DXCoilNum).CoolingCoilRuntimeFraction) * LSElecCoolingPower;
}
// Now reset runtime fraction to 1.0 (because LS is running the full timestep)
DXCoil(DXCoilNum).CoolingCoilRuntimeFraction = 1.0;

// Calculation for heat reclaim needs to be corrected to use compressor power (not including condenser fan power)
HeatReclaimDXCoil(DXCoilNum).AvailCapacity = DXCoil(DXCoilNum).TotalCoolingEnergyRate + DXCoil(DXCoilNum).ElecCoolingPower;

Expand Down Expand Up @@ -12367,10 +12370,20 @@ namespace DXCoils {
}

if (FanOpMode == CycFanCycCoil) OnOffFanPartLoadFraction = PLF;
// outlet conditions are average of inlet and low speed weighted by CycRatio
OutletAirEnthalpy = LSOutletAirEnthalpy;
OutletAirHumRat = LSOutletAirHumRat;
OutletAirDryBulbTemp = LSOutletAirDryBulbTemp;
if (FanOpMode == ContFanCycCoil) {
// outlet conditions are average of inlet and low speed weighted by CycRatio
// Continuous fan, cycling compressor
Real64 CycAirFlowRatio = CycRatio * AirMassFlow / DXCoil(DXCoilNum).InletAirMassFlowRate; // ratio of compressor on airflow to average timestep airflow
OutletAirEnthalpy =
CycAirFlowRatio * LSOutletAirEnthalpy + (1.0 - CycAirFlowRatio) * InletAirEnthalpy;
OutletAirHumRat =
CycAirFlowRatio * LSOutletAirHumRat + (1.0 - CycAirFlowRatio) * InletAirHumRat;
OutletAirDryBulbTemp = PsyTdbFnHW(OutletAirEnthalpy, OutletAirHumRat);
} else {
OutletAirHumRat = LSOutletAirHumRat;
OutletAirDryBulbTemp = LSOutletAirDryBulbTemp;
OutletAirEnthalpy = LSOutletAirEnthalpy;
}
// get low speed EIR at current conditions
EIRTempModFacLS = CurveValue(state, DXCoil(DXCoilNum).MSEIRFTemp(SpeedNum), InletAirWetBulbC, CondInletTemp);
EIRFlowModFacLS = CurveValue(state, DXCoil(DXCoilNum).MSEIRFFlow(SpeedNum), AirMassFlowRatioLS);
Expand All @@ -12391,25 +12404,7 @@ namespace DXCoils {
DXCoil(DXCoilNum).TotalCoolingEnergyRate = DXCoil(DXCoilNum).TotalCoolingEnergyRate * CycRatio;
DXCoil(DXCoilNum).SensCoolingEnergyRate = DXCoil(DXCoilNum).SensCoolingEnergyRate * CycRatio;
DXCoil(DXCoilNum).LatCoolingEnergyRate = DXCoil(DXCoilNum).LatCoolingEnergyRate * CycRatio;
if (FanOpMode == ContFanCycCoil) {
OutletAirEnthalpy = InletAirEnthalpy - DXCoil(DXCoilNum).TotalCoolingEnergyRate / DXCoil(DXCoilNum).InletAirMassFlowRate;
Real64 MinAirHumRat(0.0); // set to zero because MinAirHumRat is unused argument
Hfg = PsyHfgAirFnWTdb(MinAirHumRat, OutletAirDryBulbTemp * CycRatio + (1.0 - CycRatio) * InletAirDryBulbTemp);
OutletAirHumRat = InletAirHumRat - DXCoil(DXCoilNum).LatCoolingEnergyRate / Hfg / DXCoil(DXCoilNum).InletAirMassFlowRate;
OutletAirDryBulbTemp = PsyTdbFnHW(OutletAirEnthalpy, OutletAirHumRat);
if (OutletAirDryBulbTemp < OutletAirDryBulbTempSat) { // Limit to saturated conditions at OutletAirEnthalpy
OutletAirDryBulbTemp = OutletAirDryBulbTempSat;
OutletAirHumRat = PsyWFnTdbH(OutletAirDryBulbTemp, OutletAirEnthalpy, RoutineName);
CalcComponentSensibleLatentOutput(DXCoil(DXCoilNum).InletAirMassFlowRate,
InletAirDryBulbTemp,
InletAirHumRat,
OutletAirDryBulbTemp,
OutletAirHumRat,
DXCoil(DXCoilNum).SensCoolingEnergyRate,
DXCoil(DXCoilNum).LatCoolingEnergyRate,
DXCoil(DXCoilNum).TotalCoolingEnergyRate);
}
}

// Calculation for heat reclaim needs to be corrected to use compressor power (not including condenser fan power)
HeatReclaimDXCoil(DXCoilNum).AvailCapacity = DXCoil(DXCoilNum).TotalCoolingEnergyRate + DXCoil(DXCoilNum).ElecCoolingPower;
DXCoil(DXCoilNum).OutletAirEnthalpy = OutletAirEnthalpy;
Expand Down

0 comments on commit bd8aa38

Please sign in to comment.