-
Notifications
You must be signed in to change notification settings - Fork 448
HeatPump:AirToWater followup PR update test idf #11251
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
base: develop
Are you sure you want to change the base?
Conversation
|
|
|
|
|
|
A5, \field Operating Mode Control Option for Multiple Unit | ||
\note this determines how the operation mode is assigned when the load | ||
\note is too large to be met by multiple heat pump units | ||
\type choice |
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.
I added this missing type.
I'm currently trying to scope how I would wrap this object in the OpenStudio SDK.
I had already figured I would probably break the heating/cooling speeds into subobjects, but I might actually break the cooling and heating side into two subobjects too.
Have you considered this versus a large object (105 fields)? Just curious.
https://docs.google.com/spreadsheets/d/1uCcEdmM4p3M9L7HeihAwL9F9NawK1TR8j3ADBqS6jTs/edit?usp=sharing
Placement of field "Minimum Part Load Ratio" is strange to me, it's "stuck" between heating-related fields
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.
Why did you pick "min-fields 56"?
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.
I don't understand the booster mode for cooling/heating. Didn't find an entry in the Engineering reference.
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.
Essentially, this appears to just allow using 6 speeds instead of 5, but that sixth speed isn't used to determine the reference Capacity and COP (edit: this statement is apparently wrong)
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.
I think there's a weirdness and potential error in the way the reference capacity is set.
I/O ref says
The maximum number of speeds allowed is 5. Speed level 1 is the lowest speed; and speed level 5 is the highest
speed.
Rated heating capacity at speed i, where i is the speed number from 1 to 5. For speed 1, the default value is autosize.
So, it seems that the reference Capacity is taken at speed 1, and the flag referenceCapacityWasAutoSized
is set based on that
EnergyPlus/src/EnergyPlus/PlantLoopHeatPumpEIR.cc
Lines 4162 to 4167 in a4c9dbe
if (i == 0) { | |
thisAWHP.referenceCapacity = thisAWHP.ratedCapacity[0] = state.dataInputProcessing->inputProcessor->getRealFieldValue( | |
fields, schemaProps, format("rated_{}_capacity_at_speed_1", modeKeyWord)); | |
if (thisAWHP.ratedCapacity[0] == DataSizing::AutoSize) { | |
thisAWHP.referenceCapacityWasAutoSized = true; | |
} |
Then it's assigned to speed 5 here:
EnergyPlus/src/EnergyPlus/PlantLoopHeatPumpEIR.cc
Lines 4270 to 4272 in a4c9dbe
thisAWHP.referenceCapacityOneUnit = thisAWHP.ratedCapacity[thisAWHP.numSpeeds - 1]; | |
thisAWHP.referenceCapacity = thisAWHP.referenceCapacityOneUnit * thisAWHP.heatPumpMultiplier; | |
thisAWHP.referenceCOP = thisAWHP.ratedCOP[thisAWHP.numSpeeds - 1]; |
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.
-
If speed 5 is the nominal speed level, shouldn't it be the one carrying the "autosize"? And shouldn't the
thisAWHP.ratedCapacity[thisAWHP.numSpeeds - 1]
be reassigned the autosized capacity? -
It seems that if you have a booster mode, the block on line 4270 to 4272 actually takes the booster mode as a the reference capacity. is that correct?
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.
Have you considered this versus a large object (105 fields)? Just curious.
The intention was so that it resembles the real equipment, whose heating and cooling functionality is usually encapsulated in one piece of equipment. Although it would have been easier to implement with heating and cooling as separate component.
Placement of field "Minimum Part Load Ratio" is strange to me, it's "stuck" between heating-related fields
Indeed. I just moved it up to before the group of heating input.
Why did you pick "min-fields 56"?
It should be 77. To make sure the number of speeds for heating and cooling gets defaults if user didn't give inputs. I just changed it.
I don't understand the booster mode for cooling/heating. Didn't find an entry in the Engineering reference.
To my understanding, if the booster mode is enabled, the heat pump will have the ability to increase its capacity (increase compressor speed) further beyond the maximum, to meet a large demand. But this is usually at the cost of lower COP. If it's not enabled, the heat pump will operate at the maximum speed level and not meet the large demand.
I only have description of booster mode in IO reference as follows. I can add some more description of its intention to engineering reference.
Field: Booster Mode On Heating. This field is a flag that indicates
whether the heat pump has a booster mode enabled for heating operation. If the
flag is on, booster mode will be enabled and the heat pump will operate at a
higher capacity during heating operation. The default value is false, which
means booster mode is not enabled. When the booster mode is on, the following
performance fields are required.
Essentially, this appears to just allow using 6 speeds instead of 5, but that sixth speed isn't used to determine the reference Capacity and COP.
Yes, it will use another set of performance curves to represent the booster mode.
It is used to determine reference capacity and COP. Here when the booster mode is on, the curves, COP, capacity etc are added as another speed level. In the later calculation of reference COP and capacity, the booster mode data is considered as well.
if (thisAWHP.boosterOn) {
thisAWHP.numSpeeds += 1;
I think there's a weirdness and potential error in the way the reference capacity is set.
Indeed, I will modify the code to have the highest speed level be autosizable (currently it's fixed at the lowest speed) and make the autosized capacity be reference capacity.
It seems that if you have a booster mode, the block on line 4270 to 4272 actually takes the booster mode as a the reference capacity. is that correct?
Yes, the booster mode is treated as a higher speed level and its capacity will be considered in the reference capacity
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.
I guess my followup question is why do you need a booster speed in that case?
Just have the potential for 6 speeds. And the Nth highest speed is hte booster one. each speed level includes the curves, COP and capacity, so I don't understand how it's different from regular speeds?
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.
(and thanks for the taking the time to answer the questions! I'm not trying to be difficult, this is just a byproduct of having to wrap this object in the OpenStudio SDK).
Dunno if you saw my question lower here; #11251 (comment)
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.
The intention was so that it resembles the real equipment, whose heating and cooling functionality is usually encapsulated in one piece of equipment. Although it would have been easier to implement with heating and cooling as separate component.
FWIW, one does not prevent the other. We have a bunch of equipment that has a top-level wrapper object and logical subojects. (CentralHeatPumpSystem and ChillerHeaterPerformance:Electric:EIR to name one)
|
|
I've got another question @yujiex . I'm seeing on the branch that this type... Branch,
Heating Coil Load Loop Supply Branch, !- Name
, !- Pressure Drop Curve Name
Pump:VariableSpeed, !- Component 1 Object Type
Heating Coil Load Loop Pump, !- Component 1 Name
Heating Coil Load Loop Supply Inlet Node, !- Component 1 Inlet Node Name
Heating Coil Load Loop Intermediate Node, !- Component 1 Outlet Node Name
- HeatPump:AirToWater:Heating, !- Component 2 Object Type
test_AWHP, !- Component 2 Name
Heating Coil Load Loop Intermediate Node, !- Component 2 Inlet Node Name
Heating Coil Load Loop Supply Outlet Node; !- Component 2 Outlet Node Name Is this expected and documented? |
|
|
this is because when there are both heating and cooling component, if they have the same type, they'll have this error: "Same component name and type has differing Node Names" |
|
|
|
|
|
I see, I will investigate what is the issue and fix it. |
|
|
|
|
|
|
OpenStudio enforces the references, that's why I found this on this object and realized more objects had the same issue.
|
|
@yujiex The IDD says that Resistive Defrost Heater Capacity is autosizable
But I'm not seeing it handled in C++ EnergyPlus/src/EnergyPlus/PlantLoopHeatPumpEIR.cc Lines 4031 to 4048 in 3a8a040
|
It should not say autosize, I just removed that in the idd. |
|
|
missing from the object. |
…city to be autosized cf NREL/EnergyPlus#11251
Just added. Thanks for catching this. |
|
|
Pull request overview
Description of the purpose of this PR
This PR addresses comments from @jmarrec about the test files in #11001
Pull Request Author
Reviewer