Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,10 @@ \subsubsection{Inputs}\label{inputs-03}

The nominal time (in seconds) after startup for condensate to begin leaving the coil's condensate drain line at the coil's rated airflow and temperature conditions, starting with a dry coil. Nominal time is equal to the ratio of the energy of the coil's maximum condensate holding capacity (J) to the coil's steady-state latent capacity (W). Suggested value is 1000; zero value means the latent degradation model is disabled. The default value for this field is zero. The supply air fan operating mode must be continuous (i.e., the supply air fan operating mode may be specified in other parent objects and is assumed continuous in some objects (e.g., CoilSystem:Cooling:DX) or can be scheduled in other objects (e.g., AirloopHVAC:UnitaryHeatCool), and this field as well as the previous three input fields for this object must have positive values in order to model latent capacity degradation.

\paragraph{Field: Apply Part Load Fraction to Speeds Greater than 1}

This field determines whether part-load impacts on coil energy use are applied when the coil is operating at speeds greater than speed 1. The allowed choices are Yes or No, with the default being No if this field is left blank. Other input fields in this object allow the user to specify a part-load fraction correlation for each speed to account for compressor start up losses (cycle on/off). For the case of a single multi-speed compressor, the part load losses may only be significant when the compressor cycles between speed 1 and off, but the losses may be extremely small when the compressor operates between speed 1 and speed 2 (or between speeds 2 and 3, etc.). In this case, the user may chose to specify NO for this input field to neglect part-load impacts on energy use at higher operating speeds. If part-load impacts on coil energy use are thought to be significant (e.g., interwined cooling coil with multiple compressors feeding individual refrigerant circuits), then the user may chose to specify YES and the part-load fraction correlations specified for speeds 2 through 4 will be applied as appropriate. The selection for this input field does not affect part-load impacts when the compressor cycles between speed 1 and off (i.e., the part-load fraction correlation for speed 1 is always applied).

\paragraph{Field: Apply Latent Degradation to Speeds Greater than 1}

This field determines whether latent capacity degradation is applied when the coil is operating at speeds greater than speed 1. The allowed choices are \textbf{Yes} or \textbf{No}, with the default being \textbf{No} if this field is left blank. Other input fields in this object allow the user to specify latent capacity degradation at each speed.
Expand Down
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 No
A3, \field Condenser Type
A3, \field Apply Latent Degradation to Speeds Greater than 1
\type choice
\key Yes
\key No
\default No
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
19 changes: 17 additions & 2 deletions src/EnergyPlus/Coils/CoilCoolingDXCurveFitOperatingMode.cc
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,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 @@ -152,6 +157,8 @@ CoilCoolingDXCurveFitOperatingMode::CoilCoolingDXCurveFitOperatingMode(EnergyPlu
input_specs.latent_capacity_time_constant = inputProcessor->getRealFieldValue(modeFields, modeSchemaProps, "latent_capacity_time_constant");
input_specs.nominal_time_for_condensate_removal_to_begin =
inputProcessor->getRealFieldValue(modeFields, modeSchemaProps, "nominal_time_for_condensate_removal_to_begin");
input_specs.apply_part_load_fraction_to_speeds_greater_than_1 =
inputProcessor->getAlphaFieldValue(modeFields, modeSchemaProps, "apply_part_load_fraction_to_speeds_greater_than_1");
input_specs.apply_latent_degradation_to_speeds_greater_than_1 =
inputProcessor->getAlphaFieldValue(modeFields, modeSchemaProps, "apply_latent_degradation_to_speeds_greater_than_1");
input_specs.condenser_type = inputProcessor->getAlphaFieldValue(modeFields, modeSchemaProps, "condenser_type");
Expand Down Expand Up @@ -379,7 +386,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 @@ -414,7 +425,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 = false;
bool applyLatentDegradationAllSpeeds = false;

// results from coil model at speed
Expand Down
10 changes: 9 additions & 1 deletion src/Transition/CreateNewIDFUsingRulesV26_2_0.f90
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ MODULE SetVersion

SUBROUTINE SetThisVersionVariables()
! TODO: Update this section as appropriate
VerString='Conversion 26.1 => 26.1'
VerString='Conversion 26.1 => 26.2'
VersionNum=26.2
! Starting with version 22.1, the version string requires 4 characters
! The original sVersionNum variable is a 3 character length string
Expand Down Expand Up @@ -385,6 +385,14 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile

! If your original object starts with C, insert the rules here

CASE('COIL:COOLING:DX:CURVEFIT:OPERATINGMODE')
CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits)
nodiff=.false.
OutArgs(1:8)=InArgs(1:8)
OutArgs(9) = '' ! new Apply Part Load Fraction to Speeds Greater than 1 field
OutArgs(10:CurArgs+1)=InArgs(9:CurArgs)
CurArgs = CurArgs + 1

! If your original object starts with D, insert the rules here

! If your original object starts with E, insert the rules here
Expand Down
6 changes: 6 additions & 0 deletions src/Transition/InputRulesFiles/Rules26-1-0-to-26-2-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,9 @@ Input Changes version 26.1.0 to 26.2.0
======================================

This file documents the structural changes on the input of EnergyPlus that could affect interfaces, etc.

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

Insert new field A2 which is also F9, "Apply Part Load Fraction to Speeds Greater than 1", defaulted to No

See pull request [#11448](https://github.com/NatLabRockies/EnergyPlus/pull/11448)
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 @@ -2530,6 +2530,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 @@ -2989,6 +2990,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 @@ -3458,6 +3460,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 @@ -4114,6 +4117,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 @@ -4770,6 +4774,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 @@ -2530,6 +2530,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 @@ -2989,6 +2990,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 @@ -3458,6 +3460,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 @@ -4114,6 +4117,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 @@ -4770,6 +4774,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
Loading
Loading