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.14k stars 392 forks source link

Coil:Cooling:DX:VariableSpeed autosizes airflow rate > parent cooling flow rate #9911

Open mjwitte opened 1 year ago

mjwitte commented 1 year ago

Issue overview

DirectIndirectEvapCoolersVSAS has several AirLoopHVAC:UnitaryHeatCool systems with COIL:COOLING:DX:VARIABLESPEED. This file has max iteration warnings on the summer design day. Looking at the system node flow rates shows that the furnace inlet node flow rate is often higher than the rest of the nodes in the system.

image

FURNACE_PACU_CAV:1_OA-FURNACE_PACU_CAV:1_Unitary_PackageNode is the:

The furnace is setting the airflow rate at it's inlet node here in Furnaces::SetVSHPAirFlow.

Because this node is the fan inlet node, the changes tested in https://github.com/NREL/EnergyPlus/commit/837d1e5edb4738d98c8797660f7c8e9820ddd9c2 caused big diffs and got rid of the max iteration warnings. But that's just covering up a deeper sizing issue.

The eio sizing results show the discrepancy in airflow rates for the DX coil 0.649 and the parent system 0.540.

Component Sizing Information, COIL:COOLING:DX:VARIABLESPEED, FURNACE_PACU_CAV:1_UNITARY_PACKAGE_COOLCOIL, Design Size Rated Total Cooling Capacity [W], 11620.39622
 Component Sizing Information, COIL:COOLING:DX:VARIABLESPEED, FURNACE_PACU_CAV:1_UNITARY_PACKAGE_COOLCOIL, Design Size Rated Air Flow Rate [m3/s], 0.64915
 Component Sizing Information, COIL:COOLING:DX:VARIABLESPEED, FURNACE_PACU_CAV:1_UNITARY_PACKAGE_COOLCOIL, Design Size Rated Sensible Cooling Capacity [W], 8877.66854
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Supply Air Flow Rate [m3/s], 0.54038
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Supply Air Flow Rate During Heating Operation [m3/s], 0.54038
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Supply Air Flow Rate During Cooling Operation [m3/s], 0.54038
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Supply Air Flow Rate When No Cooling or Heating is Needed [m3/s], 0.54038
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Nominal Heating Capacity [W], 6420.33621
 Component Sizing Information, AirLoopHVAC:UnitaryHeatCool, FURNACE_PACU_CAV:1_UNITARY_PACKAGE, Nominal Cooling Capacity [W], 11620.39622

Details

Some additional details for this issue (if relevant):

rraustad commented 1 year ago

This is a known issue. The VS coil takes design zone air flow and calculates capacity, then uses that capacity to back calculate "coil" air flow rate. That air flow rate could be higher or lower than the design zone flow rate. The parent then uses the coil flow rate as the operating flow rate. The other components in the system do not know of this change in design zone air flow rate. Fans and TUs (and anything else that happens to be in the same air stream) will still operate at the zone design air flow rate.

        if (state.dataFurnaces->Furnace(FurnaceNum).CoolingCoilType_Num == Coil_CoolingAirToAirVariableSpeed) {
            errFlag = false;
            if (state.dataFurnaces->Furnace(FurnaceNum).bIsIHP) {
                state.dataFurnaces->Furnace(FurnaceNum).CoolingCoilIndex = GetCoilIndexIHP(state, CoolingCoilType, CoolingCoilName, errFlag);
                IHPCoilName = state.dataIntegratedHP->IntegratedHeatPumps(state.dataFurnaces->Furnace(FurnaceNum).CoolingCoilIndex).SCCoilName;
                state.dataFurnaces->Furnace(FurnaceNum).MaxCoolAirVolFlow =
                    GetCoilAirFlowRateVariableSpeed(state, "COIL:COOLING:DX:VARIABLESPEED", IHPCoilName, errFlag);
            } else {
                state.dataFurnaces->Furnace(FurnaceNum).MaxCoolAirVolFlow =
                    GetCoilAirFlowRateVariableSpeed(state, CoolingCoilType, CoolingCoilName, errFlag);
            }
mjwitte commented 1 year ago

So, who should win this argument? If the fan and TUs are sized to X and the coil is sized to Y, then the coil shouldn't ever operate at a flow >X. Either that, or the coil should adjust it's capacity to match the flow at X. It could throw a warning in that case.

rraustad commented 1 year ago

It would be nice if the coil model could somehow adjust to the zone design flow rate. I just don't see how that could happen without deviating from the flow to capacity inputs in this coil model. Not allowing the coil to operate at Y flow when greater than X means the coil does not have the capacity to meet the zone load. Well, sort of, the coil can operate at an off-design air flow, it's just that these flow to capacity inputs are now not adhered to. We allow that with the other DX coils but that typically happens for non-autosized inputs. When the air flow turns out to be less than zone design air flow (Y < X) the coil does have the capacity to meet the zone load but is operating at a flow rate lower than zone design, which doesn't seem like a bad thing except that all other components are oversized.

These scaling inputs of capacity and air flow should mean something and this flow to capacity ratio is fixed, so scaling air flow would adjust capacity in the same proportion. Coil capacity is already sized to meet the zone load at an adjusted flow rate. Lowering air flow (Y > X so we lower to Y = X) would undersize capacity and raising air flow would oversize capacity (but should never need to happen?).

Coil:Cooling:DX:VariableSpeed,
  36991.44197,             !- Speed 1 Reference Unit Gross Rated Total Cooling Capacity {W}
  3.776,                   !- Speed 1 Reference Unit Rated Air Flow Rate {m3/s}

How would a designer choose this coil type for a given application? Oversize capacity so that the design air flow matches the application (Y = X)? or choose a coil with sufficient capacity and then operate at off-design air flow (Y > X and will operate at X)? or choose capacity and then down-size design air flow (Y < X and will operate at Y)? Manufacturers must have a method for sizing this type of coil for a given application.

It seems that this coil model does not adhere to the zone design cooling supply air temperature input because you get the design zone capacity at a different air flow rate. When air flow is lower than design it's not a problem, the parent operates at a flow rate lower than design and can still meet the load. When air flow is greater than design, this issue gets posted. This just made me think, I could adjust the zone design cooling SAT and match this coil's flow to capacity ratio.

Maybe the simple answer is to allow the parent to operate at the design zone air flow rate and you get what you get from the coil (this assumes the off-design mass flow performance adjustment in the DX coil model is applied). Let the coil size however it wants and then still operate at the zone design air flow. Then figure out if anything else needs to be done to meet the load in all sizing scenarios (i.e., flow to capacity ratios).

What I have tried to do in the past is upsize the fan for this case (Y > X) but that is 1) hard to do, and 2) currently leaves the TU undersized.

mjwitte commented 1 year ago

If we're going to honor this coil's cfm/ton inputs, then perhaps in Sizing:System, the Cooling Supply Air Flow Rate Method should be FlowPerCoolingCapacity. If the system sizing wants more airflow than the zone sizing called for it will adjust the zone airflows to match.

mjwitte commented 1 year ago

If we're going to honor this coil's cfm/ton inputs, then perhaps in Sizing:System, the Cooling Supply Air Flow Rate Method should be FlowPerCoolingCapacity. If the system sizing wants more airflow than the zone sizing called for it will adjust the zone airflows to match.

That doesn't work as expected. The system air flow is larger, but then the coil sizes even larger, apparently due to the higher airflow. I would have expected the system cooling design load to remain the same after the airflow adjustment.

rraustad commented 1 year ago

The idea that the system will operate at the child flow rate may have been flawed from the start. It seems it should be the other way around. I will talk to Trane about how this type of coil is sized for a given application. I wonder if these flow per capacity inputs are even a concern in real world applications.

rraustad commented 1 year ago

OK, here's what Trane said. When choosing a coil for a given application, the reference air flow rate and capacity are provided along with the supply air condition. The manufacturer then uses that information to pick a coil. That coil will still operate at the reference air flow rate but needs to meet the supply air condition specified. If a specific coil cannot meet the supply air condition at the reference flow rate a larger coil is chosen such that at the reference air flow rate the target supply air condition is met.

So there is upsizing involved for certain coil characteristics since the flow per capacity ratio is different for different coil lines. Maybe this can be done entirely within the coil model. Not sure yet how to do that but it seems the burden is on the coil model not the sizing results.