NREL / EnergyPlus

EnergyPlus™ is a whole building energy simulation program that engineers, architects, and researchers use to model both energy consumption and water use in buildings.
https://energyplus.net
Other
1.05k stars 378 forks source link

The PlantLoop:EIR heat pump power calculation is incorrect #10387

Open rraustad opened 5 months ago

rraustad commented 5 months ago

Issue overview

The equation:

this->powerUsage =
    (this->loadSideHeatTransfer / this->referenceCOP) * eirModifierFuncPLR * eirModifierFuncTemp * InputPowerMultiplier * this->cyclingRatio;

uses loadSideHeatTransfer which is already multiplied by PLR a few lines up. This means the eirModifierFuncPLR curve output must be near unity to give appropriate results. The EIRfPLR curve typically accounts for a change in power as a function of PLR. Of course, the definition of this curve could be discussed.

Details

Some additional details for this issue (if relevant):

Checklist

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

jmarrec commented 3 weeks ago

The EIRfPLR curve typically accounts for a change in power as a function of PLR. Of course, the definition of this curve could be discussed.

Right, that's the gist of the problem here.

The testfiles are using these coefficients:

https://github.com/NREL/EnergyPlus/blob/cb9e70f16540f0dca5c979f106d985dd8d301d6d/testfiles/PlantLoopHeatPump_EIR_WaterSource.idf#L281-L323

I can't think of another object were the EIRFPLR for a constant COP machine would be EIRFLPR(PLR) = 1. All other objects I can think of, (eg Chiller:Electric:EIR) would expect EIRFPLR(PLR) = PLR

It's not clear to me reading the I/O reference that the HeatPump:PlantLoop:EIR:XXX objects behave that way either.

https://bigladdersoftware.com/epx/docs/24-1/input-output-reference/group-plant-equipment.html#plhp_eir_cooling_inputs_eirft

https://bigladdersoftware.com/epx/docs/24-1/input-output-reference/group-plant-equipment.html#field-electric-input-to-cooling-output-ratio-function-of-temperature-curve-name

jmarrec commented 3 weeks ago

eg ChillerELectricEIR, taking ElectricEIRChiller McQuay WSC 471kW/5.89COP/Vanes EIRFPLR as an example

https://github.com/NREL/EnergyPlus/blob/cb9e70f16540f0dca5c979f106d985dd8d301d6d/datasets/Chillers.idf#L256-L262

image

rraustad commented 3 weeks ago

To be consistent with other models the equation of power would use full capacity/COP and use an EIR curve proportional to PLR. There has always been a question of whether EIRfPLR should show proportionality of power to PLR or if the PartLoadRatio variable should account for that adjustment (i.e., the equation below could be written different ways). The existing equation uses this->loadSideHeatTransfer/COP which already accounts for PLR, which is why the EIRfPLR curve for this model is unity. There was an attempt to correct this in #9979 but that change was reverted here because of diffs and this issue opened to discuss/correct the power calc in this model.

this->powerUsage = (availableCapacity / this->referenceCOP) eirModifierFuncPLR eirModifierFuncTemp InputPowerMultiplier this->cyclingRatio;

mjwitte commented 3 weeks ago

As @rraustad explains above, it all depends on what EIR means. From the IDD

Chiller:Electric:EIR

  A3 , \field Electric Input to Cooling Output Ratio Function of Temperature Curve Name
       \note Electric Input Ratio (EIR) as a function of temperature
       \note EIR = 1/COP
       \required-field
       \type object-list
       \object-list BivariateFunctions
       \note curve = a + b*CWS + c*CWS**2 + d*ECT + e*ECT**2 + f*CWS*ECT
       \note CWS = supply (leaving) chilled water temperature(C)
       \note ECT = entering condenser fluid temperature(C)
  A4 , \field Electric Input to Cooling Output Ratio Function of Part Load Ratio Curve Name
       \note Electric Input Ratio (EIR) as a function of Part Load Ratio (PLR)
       \note EIR = 1/COP
       \required-field
       \type object-list
       \object-list UnivariateFunctions
       \note quadratic curve = a + b*PLR + c*PLR**2 is typical, other univariate curves may be used
       \note PLR = part load ratio (cooling load/steady state capacity)

If EIR=1/COP and we apply modifier curves to that, then flat curves of 1 would represent constant COP. Then CurrentPowerIn = CurrentLoad*CurrentEIR.

But if only one model thinks this way, and the rest assume CurrentPowerIn = AvailableCapacity*CurrentEIR then we should change this one to be consistent and attempt to add a laugh test for the EIRfPLR curve (here and everywhere) to warn if the user (or the curve library) is understanding this curve differently.

Do any other tools have a similar curve for chillers? If so, how is it used?

mjwitte commented 3 weeks ago

I looked at the ASHRAE Handbook of Fundamentals 2021, Chapter 19 for some guidance. Based on the equations in the text (esp the first one below), it appeared to me that EIRfPLR (f2 below) should be flat=1 for constant efficiency. From page 19.16: image

But then a little further down on p. 19.17, the example curves clearly show the other assumption, so go figure. I would argue that the first line of eq 6 above should be P=PIR x Cavail. image image

rraustad commented 3 weeks ago

DOE 2.1E Eng. doc https://doe2.com/Download/DOE-21E/

image

image image

jmarrec commented 3 weeks ago

@Myoldmopar I just realized you implemented the WWHP model in #6766. Do you have any thoughts?

Is this just a case of fixing the documentation, or should we also change the definition of the EIRFPLR / EIRFT curve?