Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5a83db6
Add new Apply PLF field to Coil:Cooling:DX:CurveFit:OperatingMode.
joseph-robertson Mar 5, 2026
b2947ac
Introduce new bool for using Apply PLF field.
joseph-robertson Mar 5, 2026
4b6bf5c
Stub input transition rules for new Apply PLF field.
joseph-robertson Mar 5, 2026
d19a253
Transition all testfiles with Coil:Cooling:DX.
joseph-robertson Mar 5, 2026
0b872aa
Update CoilCoolingDX unit test files for new field.
joseph-robertson Mar 5, 2026
3795dde
Formatting.
joseph-robertson Mar 5, 2026
39d828e
Update various unit tests with new field default.
joseph-robertson Mar 5, 2026
c00df0d
Merge branch 'develop' into coil-cooling-dx-plf
joseph-robertson Mar 26, 2026
738badd
Change default for new field to No.
joseph-robertson Mar 26, 2026
7da847d
Move input rules to new version file.
joseph-robertson Mar 26, 2026
311a4e8
Create new transition rule file for new field.
joseph-robertson Mar 26, 2026
5d6cd61
Update cmakelists for transition.
joseph-robertson Mar 26, 2026
7ba52b7
Merge branch 'develop' into coil-cooling-dx-plf
joseph-robertson Apr 9, 2026
bc954de
Add new field to the docs.
joseph-robertson Apr 9, 2026
b4d3bca
Revert testfiles so we can apply new transition rules.
joseph-robertson Apr 9, 2026
10a78a0
Update transition rule to write blank default to mean No.
joseph-robertson Apr 9, 2026
e3277cd
Run the updated transition rule on testfiles.
joseph-robertson Apr 10, 2026
9cfa5a9
Merge branch 'develop' into coil-cooling-dx-plf
joseph-robertson Apr 10, 2026
86c9be2
Merge branch 'develop' into coil-cooling-dx-plf
joseph-robertson Apr 13, 2026
3ea32ea
Default new bool variable to false for consistency with IDD.
joseph-robertson Apr 14, 2026
ababc27
Merge branch 'develop' into coil-cooling-dx-plf
mitchute Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions idd/Energy+.idd.in
Original file line number Diff line number Diff line change
Expand Up @@ -52276,12 +52276,17 @@ Coil:Cooling:DX:CurveFit:OperatingMode,
\minimum 0.0
\maximum 3000.0
\default 0.0
A2, \field Apply Latent Degradation to Speeds Greater than 1
A2, \field Apply Part Load Fraction to Speeds Greater than 1
\type choice
\key Yes
\key No
\default Yes
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I was thinking that the default should be the same as the Multispeed object and the transition could insert Yes. What do you think?

Coil:Cooling:DX:MultiSpeed,
    A9 , \field Apply Part Load Fraction to Speeds Greater than 1
       \type choice
       \key Yes
       \key No
       \default No

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I agree that No should be the default. And I personally think the transition should use the default (even though it will result in diffs), but I can see arguments for both sides.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would not have a problem with using the default of No.

A3, \field Apply Latent Degradation to Speeds Greater than 1
\type choice
\key Yes
\key No
\default No
A3, \field Condenser Type
A4, \field Condenser Type
\type choice
\key AirCooled
\key EvaporativelyCooled
Expand All @@ -52297,35 +52302,35 @@ Coil:Cooling:DX:CurveFit:OperatingMode,
\note Must be lower than or equal to the highest speed number.
\note If blank, defaults to the highest speed number used.
\type integer
A4, \field Speed 1 Name
A5, \field Speed 1 Name
\required-field
\type object-list
\object-list DXCoolingSpeedNames
A5, \field Speed 2 Name
A6, \field Speed 2 Name
\type object-list
\object-list DXCoolingSpeedNames
A6, \field Speed 3 Name
A7, \field Speed 3 Name
\type object-list
\object-list DXCoolingSpeedNames
A7, \field Speed 4 Name
A8, \field Speed 4 Name
\type object-list
\object-list DXCoolingSpeedNames
A8, \field Speed 5 Name
A9, \field Speed 5 Name
\type object-list
\object-list DXCoolingSpeedNames
A9, \field Speed 6 Name
A10, \field Speed 6 Name
\type object-list
\object-list DXCoolingSpeedNames
A10, \field Speed 7 Name
A11, \field Speed 7 Name
\type object-list
\object-list DXCoolingSpeedNames
A11, \field Speed 8 Name
A12, \field Speed 8 Name
\type object-list
\object-list DXCoolingSpeedNames
A12, \field Speed 9 Name
A13, \field Speed 9 Name
\type object-list
\object-list DXCoolingSpeedNames
A13; \field Speed 10 Name
A14; \field Speed 10 Name
\type object-list
\object-list DXCoolingSpeedNames

Expand Down
24 changes: 19 additions & 5 deletions src/EnergyPlus/Coils/CoilCoolingDXCurveFitOperatingMode.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ void CoilCoolingDXCurveFitOperatingMode::instantiateFromInputSpec(EnergyPlus::En
this->evapRateRatio = input_data.ratio_of_initial_moisture_evaporation_rate_and_steady_state_latent_capacity;
this->maxCyclingRate = input_data.maximum_cycling_rate;
this->latentTimeConst = input_data.latent_capacity_time_constant;
if (Util::SameString(input_data.apply_part_load_fraction_to_speeds_greater_than_1, "Yes")) {
this->applyPartLoadFractionAllSpeeds = true;
} else {
this->applyPartLoadFractionAllSpeeds = false;
}
if (Util::SameString(input_data.apply_latent_degradation_to_speeds_greater_than_1, "Yes")) {
this->applyLatentDegradationAllSpeeds = true;
} else {
Expand Down Expand Up @@ -157,11 +162,12 @@ CoilCoolingDXCurveFitOperatingMode::CoilCoolingDXCurveFitOperatingMode(EnergyPlu
input_specs.ratio_of_initial_moisture_evaporation_rate_and_steady_state_latent_capacity = state.dataIPShortCut->rNumericArgs(5);
input_specs.latent_capacity_time_constant = state.dataIPShortCut->rNumericArgs(6);
input_specs.nominal_time_for_condensate_removal_to_begin = state.dataIPShortCut->rNumericArgs(7);
input_specs.apply_latent_degradation_to_speeds_greater_than_1 = state.dataIPShortCut->cAlphaArgs(2);
input_specs.condenser_type = state.dataIPShortCut->cAlphaArgs(3);
input_specs.apply_part_load_fraction_to_speeds_greater_than_1 = state.dataIPShortCut->cAlphaArgs(2);
input_specs.apply_latent_degradation_to_speeds_greater_than_1 = state.dataIPShortCut->cAlphaArgs(3);
input_specs.condenser_type = state.dataIPShortCut->cAlphaArgs(4);
input_specs.nominal_evap_condenser_pump_power = state.dataIPShortCut->rNumericArgs(8);
input_specs.nominal_speed_number = state.dataIPShortCut->rNumericArgs(9);
for (int fieldNum = 4; fieldNum <= NumAlphas; fieldNum++) {
for (int fieldNum = 5; fieldNum <= NumAlphas; fieldNum++) {
if (state.dataIPShortCut->cAlphaArgs(fieldNum).empty()) {
break;
}
Expand Down Expand Up @@ -376,7 +382,11 @@ void CoilCoolingDXCurveFitOperatingMode::CalcOperatingMode(EnergyPlus::EnergyPlu
}

OpModeRTF = thisspeed.RTF;
OpModePower = thisspeed.fullLoadPower * thisspeed.RTF;
if ((!this->applyPartLoadFractionAllSpeeds) && (speedNum > 1)) {
OpModePower = thisspeed.fullLoadPower * speedRatio;
} else {
OpModePower = thisspeed.fullLoadPower * thisspeed.RTF;
}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

So either multiply by PLR when NOT including startup losses or use RTF when including startup losses. That does seem correct. And only do this for speeds > 1 because at low speed the compressor will obviously cycle on and off. To save me some investigation time, why is line 424 different (i.e., doesn't check for speedNum)?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I think line 424 is different because we're already under the speedNum > 1 block.

OpModeWasteHeat = thisspeed.fullLoadWasteHeat * thisspeed.RTF;

if ((speedNum > 1) && (speedRatio < 1.0) && !singleMode) {
Expand Down Expand Up @@ -411,7 +421,11 @@ void CoilCoolingDXCurveFitOperatingMode::CalcOperatingMode(EnergyPlus::EnergyPlu
inletNode.MassFlowRate;
outletNode.Temp = Psychrometrics::PsyTdbFnHW(outletNode.Enthalpy, outletNode.HumRat);

this->OpModePower += (1.0 - thisspeed.RTF) * lowerspeed.fullLoadPower;
if (!this->applyPartLoadFractionAllSpeeds) {
this->OpModePower += (1.0 - speedRatio) * lowerspeed.fullLoadPower;
} else {
this->OpModePower += (1.0 - thisspeed.RTF) * lowerspeed.fullLoadPower;
}
this->OpModeWasteHeat += (1.0 - thisspeed.RTF) * lowerspeed.fullLoadWasteHeat;
this->OpModeRTF = 1.0; // if we are on greater than 1 speed, RTF *must* be 1
}
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/Coils/CoilCoolingDXCurveFitOperatingMode.hh
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ struct CoilCoolingDXCurveFitOperatingModeInputSpecification
Real64 ratio_of_initial_moisture_evaporation_rate_and_steady_state_latent_capacity = 0.0;
Real64 latent_capacity_time_constant = 0.0;
Real64 nominal_time_for_condensate_removal_to_begin = 0.0;
std::string apply_part_load_fraction_to_speeds_greater_than_1;
std::string apply_latent_degradation_to_speeds_greater_than_1;
std::string condenser_type;
Real64 nominal_evap_condenser_pump_power = 0.0;
Expand Down Expand Up @@ -114,6 +115,7 @@ struct CoilCoolingDXCurveFitOperatingMode
Real64 maxCyclingRate = 0.0;
Real64 latentTimeConst = 0.0;
bool latentDegradationActive = false;
bool applyPartLoadFractionAllSpeeds = true;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Maybe it doesn't matter, but should this default to false so it's consistent with the IDD default?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I think it doesn't matter since downstream this variable is set to true when "Yes" in the IDF, otherwise false (when blank or "No"). But for consistency, I'll change it anyway. Good catch.

bool applyLatentDegradationAllSpeeds = false;

// results from coil model at speed
Expand Down
6 changes: 6 additions & 0 deletions src/Transition/InputRulesFiles/Rules25-2-0-to-26-1-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ See pull request [#11366](https://github.com/NatLabRockies/EnergyPlus/pull/11366

# Object Change: ObjectStartsWithC

# Object Change: Coil:Cooling:DX:CurveFit:OperatingMode

Insert new field A2 which is also TODO, "Apply Part Load Fraction to Speeds Greater than 1", defaulted to blank
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Isn't this TODONE?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

You're right, TODO is F9.


See pull request TODO.

# Object Change: ObjectStartsWithD

# Object Change: ObjectStartsWithE
Expand Down
1 change: 1 addition & 0 deletions testfiles/5Zone_Unitary_VSDesuperheater.idf
Original file line number Diff line number Diff line change
Expand Up @@ -2812,6 +2812,7 @@
0.0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0.0, !- Latent Capacity Time Constant {s}
0.0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/CoilWaterDesuperheatingUnitaryCoilDX.idf
Original file line number Diff line number Diff line change
Expand Up @@ -1502,6 +1502,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/DXCoilSystemAuto.idf
Original file line number Diff line number Diff line change
Expand Up @@ -1744,6 +1744,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
5 changes: 5 additions & 0 deletions testfiles/EMSLoadBasedMultiSpeedDXCoilOverrideControl.idf
Original file line number Diff line number Diff line change
Expand Up @@ -2532,6 +2532,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -2991,6 +2992,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -3460,6 +3462,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -4116,6 +4119,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -4772,6 +4776,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2945,6 +2945,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1493,6 +1493,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1759,6 +1759,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2532,6 +2532,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -2991,6 +2992,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -3460,6 +3462,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -4116,6 +4119,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down Expand Up @@ -4772,6 +4776,7 @@
0, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0, !- Latent Capacity Time Constant {s}
0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/UnitarySystem_DXCoilSystemAuto.idf
Original file line number Diff line number Diff line change
Expand Up @@ -1771,6 +1771,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/UnitarySystem_FurnaceWithDXSystemRHcontrol.idf
Original file line number Diff line number Diff line change
Expand Up @@ -1359,6 +1359,7 @@
0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
45, !- Latent Capacity Time Constant {s}
1000, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/UnitarySystem_HeatPumpAuto.idf
Original file line number Diff line number Diff line change
Expand Up @@ -1741,6 +1741,7 @@
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Latent Capacity Time Constant {s}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
, !- Apply Latent Degradation to Speeds Greater than 1
, !- Condenser Type
, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
1 change: 1 addition & 0 deletions testfiles/UnitarySystem_MultiSpeedCoils_SingleMode.idf
Original file line number Diff line number Diff line change
Expand Up @@ -2162,6 +2162,7 @@
1.5, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
45.0, !- Latent Capacity Time Constant {s}
1000.0, !- Nominal Time for Condensate Removal to Begin {s}
, !- Apply Part Load Fraction to Speeds Greater than 1
No, !- Apply Latent Degradation to Speeds Greater than 1
AirCooled, !- Condenser Type
100, !- Nominal Evaporative Condenser Pump Power {W}
Expand Down
Loading