Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #10663 - Fan runtime fraction < 1 when flow rate scaling using DesignSpecification:ZoneHVAC:Sizing #10673

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from
5 changes: 4 additions & 1 deletion src/EnergyPlus/WindowAC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1011,7 +1011,7 @@ namespace WindowAC {
zoneEqSizing.SizingMethod(SizingMethod) = CapSizingMethod;
if (CapSizingMethod == CoolingDesignCapacity || CapSizingMethod == CapacityPerFloorArea ||
CapSizingMethod == FractionOfAutosizedCoolingCapacity) {
if (CapSizingMethod == HeatingDesignCapacity) {
if (CapSizingMethod == CoolingDesignCapacity) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was an existing logic error that I noticed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Without example files or unit tests these are hard to find.

if (zoneHVACSizing.ScaledCoolingCapacity > 0.0) {
zoneEqSizing.CoolingCapacity = true;
zoneEqSizing.DesCoolingLoad = zoneHVACSizing.ScaledCoolingCapacity;
Expand Down Expand Up @@ -1058,6 +1058,9 @@ namespace WindowAC {

zoneEqSizing.OAVolFlow = windowAC.OutAirVolFlow;
zoneEqSizing.AirVolFlow = windowAC.MaxAirVolFlow;
// Make the Fan be sized by this
zoneEqSizing.CoolingAirFlow = true;
zoneEqSizing.CoolingAirVolFlow = windowAC.MaxAirVolFlow;
Comment on lines +1061 to +1063
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will size the Fan to match.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

} else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In SystemAirFlowSizing, if CoolingAirVolFlow = windowAC.MaxAirVolFlow (which should be already adjusted?) and dataFracOfAutosizedCoolingAirflow = the target fraction, then how does this get the right answer? I would think this would either be 1 * adjusted air flow or fraction * design air flow. This looks like it's fraction * adjusted air flow. Maybe windowAC.MaxAirVolFlow is the design air flow which gets multiplied by the fraction. In any event you are getting the right answer now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies, I linked to the wrong bit in SystemAirFlowSizing. The correct bit is:

if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;

Process 2757796 stopped
* thread #1, name = 'energyplus', stop reason = step over
    frame #0: 0x00007ffff50d4370 libenergyplusapi.so.24.2.0`EnergyPlus::SystemAirFlowSizer::size(this=0x00007fffffff4d88, state=0x00007fffffffa980, _originalValue=-99999, errorsFound=0x00007fffffff529f) at SystemAirFlowSizing.cc:620:54
   617 	                    }
   618 	                } else {
   619 	                    if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
-> 620 	                        this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
   621 	                        if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
   622 	                            this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
   623 	                            DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
(lldb) p this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow
(Real64) 0.28246116346780509

}

state.dataSize->DataScalableCapSizingON = false;
Expand Down
Loading