Repository navigation
Conversation
HeatPump:AirToWater never set flowMode, so it always requested its rated water flow whenever it ran, even at part load on loops with variable speed pumps. Pump energy was higher than an equivalent chiller using LeavingSetpointModulated. Add an optional Flow Mode field at the end of the object, with choices ConstantFlow (default) and LeavingSetpointModulated. With LeavingSetpointModulated, flow is set to |load| / (cp * dT) to meet the loop leaving setpoint (high setpoint for cooling, low setpoint for heating on dual setpoint loops). Flow is capped at the rated flow and kept at or above the branch variable speed pump's minimum flow. The default keeps the previous behavior, so no transition is needed. - IDD: new A60 Flow Mode field on HeatPump:AirToWater - Read flow_mode in HeatPumpAirToWater::processInputForEIRPLHP - Override setOperatingFlowRatesASHP for HeatPumpAirToWater - Compute branch VS pump minimum flow for modulated AWHP in init - Add LeavingSetpointModulatedFlow_AWHP unit test; check the default flow mode in HeatingSimulate_AirSource_AWHP - Document the field in the Input Output Reference Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
|
These changes look good to me. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull request overview
Description of the purpose of this PR
HeatPump:AirToWaternever set itsflowMode, so whenever it ran it requested its full rated water flow, even at part load on a loop with a variable speed pump. Compared with an equivalent air-cooled chiller usingLeavingSetpointModulated, it pumped much more water and used more pump energy (issue #11520, configuration 1).This PR adds an optional Flow Mode field at the end of
HeatPump:AirToWater:ConstantFlow(default): unchanged behavior, requests rated flow whenever the heat pump operates.LeavingSetpointModulated: on non-first HVAC iterations, flow = |load| / (cp · ΔT), where ΔT is between the load-side inlet temperature and the loop leaving setpoint. On dual-setpoint loops it uses the high setpoint for cooling and the low setpoint for heating. Flow is capped at the rated flow, and kept at or above the minimum flow of a variable speed pump on the heat pump's branch. This followsChiller:Electric:EIRLeavingSetpointModulated.The field applies to both the hot water and chilled water sides.
Code changes
idd/Energy+.idd.in: newA60, \field Flow Mode(ConstantFlow/LeavingSetpointModulated, defaultConstantFlow).HeatPumpAirToWater::processInputForEIRPLHP: readflow_mode.HeatPumpAirToWater::setOperatingFlowRatesASHPoverride. It calls the base implementation first (off, out-of-range and no-load handling are unchanged), then modulates flow inLeavingSetpointModulatedmode. WithConstantFlowit returns immediately, so the default path runs the same code as before.EIRPlantLoopHeatPump::onInitLoopEquip: compute the branch VS pump minimum flow for an AWHP inLeavingSetpointModulatedmode. This is limited to the AWHP becauseMinFlowIfBranchHasVSPumpalso sets the component's flow priority, andHeatPump:AirToWater:FuelFired:*already usesLeavingSetpointModulatedwith its own logic.Results
The issue's configuration 1 files were transitioned to the current version and run for Apr–Jul in Chicago:
The modulated AWHP meets its leaving setpoint whenever it runs, and unmet hours don't change. Hourly-average supply temperature reads higher in modulated mode, because there are now substeps where the coils request no flow and the whole loop sits at zero flow. At constant flow, the AWHP's request kept water circulating.
The modulated AWHP's flow ends up below the chiller's. The chiller sizes flow from its delivered capacity, which its minimum unloading ratio keeps above the load. The AWHP sizes flow to the actual load, and the test file's AWHP
Minimum Part Load Ratiois 0.Known limitation
If
Minimum Part Load Ratio> 0, the AWHP delivers at least the minimum load, but flow is sized to the actual load, so at very low loads the leaving water may be colder than setpoint. Sizing flow from the minimum load needs the available capacity, which isn't calculated yet when flow is set. This can be a follow-up.Out of scope
Configurations 2 and 3 of #11520 are not changed here:
HeatExchanger:FluidToFluidUncontrolledOninput.HeatPump:PlantLoop:EIR:*#11602.Pull Request Author
Reviewer