Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Addressed idle/noload air flow rate for variable and multi speed coils of unitary system #7919

Merged
merged 12 commits into from
May 13, 2020
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ \subsubsection{Inputs}\label{inputs-049}

\paragraph{Field: No Load Supply Air Flow Rate}\label{field-no-load-supply-air-flow-rate-000}

This numeric field defines the supply air flow rate leaving the unitary system in cubic meters per second when neither cooling or heating is required (i.e., main cooling/heating coils and supplemental heater are off but the supply air fan operates). This field is only used when the unitary system operating mode is specified as continuous fan operation. Values must be greater than or equal to 0, or this field is autosizable. If the unitary system operating mode is specified as continuous fan operation and this value is set to zero or this field is left blank, then the model assumes that the supply air flow rate when no cooling/heating is needed is equal to the supply air flow rate when the compressor was last operating (for cooling operation or heating operation).
This numeric field defines the supply air flow rate leaving the unitary system in cubic meters per second when neither cooling or heating is required (i.e., main cooling/heating coils and supplemental heater are off but the supply air fan operates). This field is only used when the unitary system operating mode is specified as continuous fan operation. Values must be greater than or equal to 0, or this field is autosizable. If this field is autosized, then it is sized to the minimum of the heating and cooling lowest speed supply air flow rate. If the unitary system operating mode is specified as continuous fan operation and this value is set to zero or this field is left blank, then the model assumes that the supply air flow rate when no cooling/heating is needed is equal to the supply air flow rate when the compressor was last operating (for cooling operation or heating operation).

\paragraph{Field: No Load Supply Air Flow Rate Per Floor Area}\label{field-no-load-supply-air-flow-rate-per-floor-area}

Expand Down Expand Up @@ -726,7 +726,7 @@ \subsubsection{Inputs}\label{inputs-1-046}

\paragraph{Field: No Load Supply Air Flow Rate Ratio}\label{field-no-load-supply-air-flow-rate-ratio}

This field defines the no load operating air flow rate when the system fan is specified to operate continuously. The allowed fractions are between 0 and 1 with a default value of 1. The no load air flow rate will be calculated as this fraction multiplied by the minimum of the cooling and heating supply air flow rate. If the cooling or heating coil is not present, this fraction is multiplied by the operating supply air flow rate.
This field defines the no load operating air flow rate when the system fan is specified to operate continuously. The allowed fractions are between 0 and 1 with a default value of 1. This fraction is usually set to the mimumum of heating and cooling operation lowest speed supply air flow fraction. The no load air flow rate will be calculated as this fraction multiplied by the minimum of the cooling and heating high speed supply air flow rate. If the cooling or heating coil is not present, this fraction is multiplied by the operating supply air flow rate.

\paragraph{Field Group: Heating and Cooling Speeds 1 to 10}\label{field-group-heating-and-cooling-speeds-1-to-10}

Expand Down
40 changes: 39 additions & 1 deletion src/EnergyPlus/UnitarySystem.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1887,6 +1887,44 @@ namespace UnitarySystems {

SizingMethod = DataHVACGlobals::SystemAirflowSizing;

MSHPIndex = this->m_DesignSpecMSHPIndex;
// set no load air flow ratio local var
Real64 NoLoadCoolingAirFlowRateRatio = 1.0;
Real64 NoLoadHeatingAirFlowRateRatio = 1.0;
if (MSHPIndex > -1) {
if (designSpecMSHP[MSHPIndex].coolingVolFlowRatio[0] == DataSizing::AutoSize) {
NoLoadCoolingAirFlowRateRatio = min(this->m_NoLoadAirFlowRateRatio, 1.0 / double(designSpecMSHP[MSHPIndex].numOfSpeedCooling));
} else {
NoLoadCoolingAirFlowRateRatio = min(this->m_NoLoadAirFlowRateRatio, designSpecMSHP[MSHPIndex].coolingVolFlowRatio[0]);
}
if (designSpecMSHP[MSHPIndex].heatingVolFlowRatio[0] == DataSizing::AutoSize) {
NoLoadHeatingAirFlowRateRatio = min(this->m_NoLoadAirFlowRateRatio, 1.0 / double(designSpecMSHP[MSHPIndex].numOfSpeedHeating));
} else {
NoLoadHeatingAirFlowRateRatio = min(this->m_NoLoadAirFlowRateRatio, designSpecMSHP[MSHPIndex].heatingVolFlowRatio[0]);
}
this->m_NoLoadAirFlowRateRatio = min(NoLoadCoolingAirFlowRateRatio, NoLoadHeatingAirFlowRateRatio);
} else {
if (this->m_CoolingCoilType_Num == DataHVACGlobals::Coil_CoolingAirToAirVariableSpeed ||
this->m_HeatingCoilType_Num == DataHVACGlobals::Coil_HeatingAirToAirVariableSpeed) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, so now what happens with multispeed and multistage coils and the new cooling coil model (Coil:Cooling:DX)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In all multi/variable speed coil test cases that I run the no-load mass flow rate is minimum flow rate, not the full flow rate. This change allows to determine the minimum flow rate either based on the minimum flow fraction autosized (or hard value user-input) when it is uses multi-speed coils, or based on the flow fraction (ratio of lowest speed flow to maximum speed flow) for variable speed DX coils. This change works fine with the new DX cooling coil as well. One of the unit tests uses the new DX cooling coil. Three of the defect files use the new dx cooling coil model.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then this seems to cover all cases.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Below is expected diffs from one of the regression tests file (UnitarySystem_MultiSpeedDX.idf) which has a single speed gas heating coil and two speed new DX cooling coil. The no load flow rate is autosized to half of the full flow rate as shown below.

@@ -207,7 +207,7 @@
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Supply Air Flow Rate [m3/s], 0.24830
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Heating Supply Air Flow Rate [m3/s], 0.24830
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size Cooling Supply Air Flow Rate [m3/s], 0.24830
- Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.24830
+ Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 1 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.12415
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Evaporator Air Flow Rate, 0.24830
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Gross Total Cooling Capacity, 6165.88337
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 1 FURNACE DX COOL COOLING COIL OPERATING MODE, User-Specified Rated Condenser Air Flow Rate, 0.00000

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For three speed new dx cooling coil and a single speed electric heating coil, the no-load flow rate sized to 1/3 of the full flow rate as expected and is shown below:

@@ -230,7 +230,7 @@
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Supply Air Flow Rate [m3/s], 0.19125
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Heating Supply Air Flow Rate [m3/s], 0.19125
  Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size Cooling Supply Air Flow Rate [m3/s], 0.19125
- Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 0.19125
+ Component Sizing Information, AirLoopHVAC:UnitarySystem, SYS 2 FURNACE DX COOL UNITARY SYSTEM, Design Size No Load Supply Air Flow Rate [m3/s], 6.37490E-002
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Evaporator Air Flow Rate, 0.19125
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, Design Size Rated Gross Total Cooling Capacity, 3958.37344
  Component Sizing Information, Coil:Cooling:DX:CurveFit:OperatingMode, SYS 2 FURNACE DX COOL COOLING COIL OPERATING MODE, User-Specified Rated Condenser Air Flow Rate, 0.00000

Copy link
Contributor Author

@Nigusse Nigusse Apr 10, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think so based on the tests I have run. I have tested UnitarySystem with UnitarySystemPerformance:Multispeed objects specified for various number of the new DX cooling coil speeds and the old multispeedDXcoils and single speed coils. Also tested the variable speed DX coils without UnitarySystemPerformance:Multispeed objects. All behaved as expected.

if (this->m_CoolCoilExists && this->m_CoolingCoilType_Num == DataHVACGlobals::Coil_CoolingAirToAirVariableSpeed) {
Real64 MaxSpeedFlowRate = VariableSpeedCoils::VarSpeedCoil(this->m_CoolingCoilIndex)
.MSRatedAirVolFlowRate(VariableSpeedCoils::VarSpeedCoil(this->m_CoolingCoilIndex).NumOfSpeeds);
if (MaxSpeedFlowRate > 0.0) {
NoLoadCoolingAirFlowRateRatio =
VariableSpeedCoils::VarSpeedCoil(this->m_CoolingCoilIndex).MSRatedAirVolFlowRate(1) / MaxSpeedFlowRate;
}
}
if (this->m_HeatCoilExists && this->m_HeatingCoilType_Num == DataHVACGlobals::Coil_HeatingAirToAirVariableSpeed) {
Real64 MaxSpeedFlowRate = VariableSpeedCoils::VarSpeedCoil(this->m_HeatingCoilIndex)
.MSRatedAirVolFlowRate(VariableSpeedCoils::VarSpeedCoil(this->m_HeatingCoilIndex).NumOfSpeeds);
if (MaxSpeedFlowRate > 0.0) {
NoLoadHeatingAirFlowRateRatio =
VariableSpeedCoils::VarSpeedCoil(this->m_HeatingCoilIndex).MSRatedAirVolFlowRate(1) / MaxSpeedFlowRate;
}
}
this->m_NoLoadAirFlowRateRatio = min(NoLoadCoolingAirFlowRateRatio, NoLoadHeatingAirFlowRateRatio);
}
}
if (this->m_NoCoolHeatSAFMethod <= SupplyAirFlowRate && this->m_ControlType == ControlType::CCMASHRAE) {
SizingMethod = DataHVACGlobals::AutoCalculateSizing;
if (this->m_MaxNoCoolHeatAirVolFlow == DataSizing::AutoSize) {
Expand Down Expand Up @@ -2241,7 +2279,7 @@ namespace UnitarySystems {
min(this->m_IdleVolumeAirRate, this->m_MaxHeatAirVolFlow * designSpecMSHP[MSHPIndex].noLoadAirFlowRateRatio);
this->m_IdleMassFlowRate =
min(this->m_IdleMassFlowRate, this->MaxHeatAirMassFlow * designSpecMSHP[MSHPIndex].noLoadAirFlowRateRatio);
this->m_IdleSpeedRatio = min(this->m_IdleSpeedRatio, this->m_MaxNoCoolHeatAirVolFlow / this->m_DesignFanVolFlowRate);
this->m_IdleSpeedRatio = min(this->m_IdleSpeedRatio, this->m_IdleVolumeAirRate / this->m_DesignFanVolFlowRate);
} else {
this->m_IdleVolumeAirRate = this->m_MaxNoCoolHeatAirVolFlow;
this->m_IdleMassFlowRate = this->MaxNoCoolHeatAirMassFlow;
Expand Down
Loading