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

UnitarySystem component sizing does not report design values when greater than 10% different than user specified (hard-sized) values #10811

Open rraustad opened 3 weeks ago

rraustad commented 3 weeks ago

Issue overview

Follow up to pull request #10735. The UnitarySystem is pre-determining the operating air flow and capacity and passing that information to the coils. It appears to coil sizing as if the coils were hard-sized, which they were in this case. I've seen this before. For these single coil UnitarySystems the zone air flow rate is more than 10% different so should be reporting both design size and user specified values. Showing the air flow rates here as an example, similar issue with coil capacity.

Zone Sizing Information, PERIMZN_1, Cooling, 6090.56736, 6090.56736, 0.44620, 0.44620
Zone Sizing Information, PERIMZN_1, Heating, 5721.55938, 3803.13801, 0.33564, 0.22310

Component Sizing Information, AirLoopHVAC:UnitarySystem, PERIM_1_WSHP_COILCLG UNITARY, User-Specified Cooling Supply Air Flow Rate [m3/s], 0.57633

Component Sizing Information, COIL:COOLING:WATERTOAIRHEATPUMP:EQUATIONFIT, PERIM_1_WSHP_COILCLG, Design Size Rated Air Flow Rate [m3/s], 0.57633
Component Sizing Information, COIL:COOLING:WATERTOAIRHEATPUMP:EQUATIONFIT, PERIM_1_WSHP_COILCLG, User-Specified Rated Air Flow Rate [m3/s], 0.57633

Component Sizing Information, COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT, PERIM_1_WSHP_COILHTG, Design Size Rated Air Flow Rate [m3/s], 0.57633
Component Sizing Information, COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT, PERIM_1_WSHP_COILHTG, User-Specified Rated Air Flow Rate [m3/s], 0.57633

This is where the heating coil gets it's air flow value, from the parent. But this is not the autosized air flow rate if the coil air flow is hard sized, it's the value passed from the parent. I think here, if the air flow is hard sized, then the zone or system design air flow rate should be set to the autosized value (e.g., FinalZoneSizing or FinalSysSizing data)

} else if (this->unitarySysEqSizing(this->curSysNum).HeatingAirFlow) {
    this->autoSizedValue = this->unitarySysEqSizing(this->curSysNum).HeatingAirVolFlow;

since the non-autosized value is stored in this->originalValue. Then the sizing could report both if > than 10% different. This is a bigger issue than should be handled in this branch.

} else if (!this->wasAutoSized &&
           (this->autoSizedValue == this->originalValue || this->autoSizedValue == 0.0)) { // no sizing run done or autosizes to 0
    this->autoSizedValue = this->originalValue;
    if (this->dataAutosizable || (!this->sizingDesRunThisZone && Util::SameString(this->compType, "Fan:ZoneExhaust"))) {
        this->reportSizerOutput(
            state, this->compType, this->compName, "User-Specified " + this->sizingStringScalable + this->sizingString, this->autoSizedValue);
    }

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.