Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

As your description of the issue suggests it is hard to tell if that specific performance curve is used correctly given the interactions of the TUs and outdoor unit. Figure 8 of this document shows the capacity and power as a function of combination ratio (CR) for 2 specific VRF models. The inflection point of each of these models shows where CR=1. There is certainly a difference in both capacity and power at CRs > 1. To be sure this curve is never used, a user would have to set up a building model where the load (and TU total rated capacity) exceeds the outdoor unit capacity such that the TUs would provide more cooling capacity then what is provided by the "operating" capacity of the outdoor unit. If I recall correctly, I have seen PLR exceed 1, but only rarely. Which may mean the issue you describe is real or that the model I was testing was not set up correctly.

In the equations below, CoolEIRFPLR2 is the performance curve specified by the AirConditioner:VariableRefrigerantFlow objects input field for Cooling Energy Input Ratio Modifier Function of High Part-Load Ratio Curve Name (heating equation also shown). The question is, does it ever get used? To prove or disprove that this curve is used would require an input file that exercises this VRF model with loads greater than what is available. There are also 2 report variables that describe when this happens: VRF Heat Pump Maximum Capacity Cooling Rate and VRF Heat Pump Maximum Capacity Heating Rate. If either of these report variables are NOT 1E+20, the outdoor unit has exceeded it's "operating" capacity. Where "operating" means the rated capacity adjusted for current operating conditions (e.g., current OAT and Twb,indoor).

if (state.dataHVACVarRefFlow->CoolingLoad(VRFCond) && CoolingPLR > 0.0) {
    vrf.OperatingMode = ModeCoolingOnly;
    if (CoolingPLR > 1.0) {
        if (vrf.CoolEIRFPLR2 > 0) EIRFPLRModFac = CurveValue(state, vrf.CoolEIRFPLR2, max(vrf.MinPLR, CoolingPLR));
    } else {
        if (vrf.CoolEIRFPLR1 > 0) EIRFPLRModFac = CurveValue(state, vrf.CoolEIRFPLR1, max(vrf.MinPLR, CoolingPLR));
    }

if (state.dataHVACVarRefFlow->HeatingLoad(VRFCond) && HeatingPLR > 0.0) {
    vrf.OperatingMode = ModeHeatingOnly;
    if (HeatingPLR > 1.0) {
        if (vrf.HeatEIRFPLR2 > 0) EIRFPLRModFac = CurveValue(state, vrf.HeatEIRFPLR2, max(vrf.MinPLR, HeatingPLR));
    } else {
        if (vrf.HeatEIRFPLR1 > 0) EIRFPLRModFac = CurveValue(state, vrf.HeatEIRFPLR1, max(vrf.MinPLR, HeatingPLR));
    }