-
Notifications
You must be signed in to change notification settings - Fork 471
Fix Coil:Cooling:DX cannot mimic Coil:Cooling:DX:MultiSpeed PLF > 1 behavior #11448
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
5a83db6
b2947ac
4b6bf5c
d19a253
0b872aa
3795dde
39d828e
c00df0d
738badd
7da847d
311a4e8
5d6cd61
7ba52b7
bc954de
b4d3bca
10a78a0
e3277cd
9cfa5a9
86c9be2
3ea32ea
ababc27
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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 { | ||
|
|
@@ -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"); | ||
|
|
@@ -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; | ||
| } | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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)?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think line 424 is different because we're already under the |
||
| OpModeWasteHeat = thisspeed.fullLoadWasteHeat * thisspeed.RTF; | ||
|
|
||
| if ((speedNum > 1) && (speedRatio < 1.0) && !singleMode) { | ||
|
|
@@ -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 | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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' | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for catching this. |
||
| VersionNum=26.2 | ||
| ! Starting with version 22.1, the version string requires 4 characters | ||
| ! The original sVersionNum variable is a 3 character length string | ||
|
|
@@ -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 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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 | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks good |
||
|
|
||
| See pull request [#11448](https://github.com/NatLabRockies/EnergyPlus/pull/11448) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not all of the real "code" changes are highlighted here, but it surprised me how small the changes are to implement this.