# System Design Loads and Air Flow Rates[LINK]

The purpose of the system design calculation is to estimate design heating and cooling loads and air flow rates for each air loop in the simulation problem. The calculation sequence for system level design loads and air flow rates resembles the calculation sequence for zone loads and air flow rates. There is an update subroutine *UpdateSysSizing* called at the beginning, during, and end of a loop in the Sizing Manager over all the design days. The major difference is that this calculation is done at the zone time-step only. There is no idealized component calculation triggered at the system time-step as in the zone calculation. The system design calculation operates at the zone time step using the design environment weather data and the data stored in the zone sizing arrays. The results of the system design calculation are stored in the system sizing arrays described below.

## System Design Data Arrays[LINK]

The system design data arrays are:

*SysSizInput(i)* stores the input data from the Sizing:System objects.

*SysSizing(i,j)* stores the results of the system design calculations for all systems and all design days. The index i is for air loops, j for design days.

*CalcSysSizing(i*) stores the results of the system design calculations for the peak heating and cooling cases for each air loop. **The index i is for the air loops.

*FinalSysSizing(i*) corresponds to *CalcSysSizing* but includes the effect of the user specified sizing factor or user specified system design flow rate.

The data stored in *SysSizing*, *CalcSysSizing* and *FinalSysSizing* includes the following data items.

Table: System Sizing Data

Name|Description —-|———– All the data from *SysSizInput*| *CoinCoolMassFlow*|coincident peak cooling mass flow rate [kg/s] *CoinHeatMassFlow*|coincident peak heating mass flow rate [kg/s] *NonCoinCoolMassFlow*|noncoincident peak cooling mass flow rate [kg/s] *NonCoinHeatMassFlow*|noncoincident peak heating mass flow rate [kg/s] *DesMainVolFlow*|design main supply duct volume flow [m^{3}/s] *DesHeatVolFlow*|design heat supply duct volume flow [m^{3}/s] *DesCoolVolFlow*|design cool supply duct volume flow [m^{3}/s] *SensCoolCap*|design sensible cooling capacity [W] *HeatCap*|design heating capacity [W] *PreheatCap*|design preheat capacity [W] *CoolMixTemp*|design mixed air temperature for cooling [C] *CoolMixHumRat*|design mixed air humidity ratio for cooling [kg water/kg dry air] *CoolRetTemp*|design return air temperature for cooling [C] *CoolRetHumRat*|design return air humidity ratio for cooling [kg water/kg dry air] *CoolOutTemp*|design outside air temperature for cooling [C] *CoolOutHumRat*|design outside air humidity ratio for cooling [kg water/kg dry air] *HeatMixTemp*|design mixed air temperature for heating [C] *HeatMixHumRat*|design mixed air humidity ratio for heating [kg water/kg dry air] *HeatRetTemp*|design return air temperature for heating [C] *HeatRetHumRat*|design return air humidity ratio for heating [kg water/kg dry air] *HeatOutTemp*|design outside air temperature for heating [C] *HeatOutHumRat*|design outside air humidity ratio for heating [kg water/kg dry air] *HeatFlowSeq(i)*|daily sequence of system heating air mass flow rate (zone time step) [kg/s] *CoolFlowSeq(i)*|daily sequence of system cooling air mass flow rate (zone time step) [kg/s] *SensCoolCapSeq(I)*|daily sequence of system sensible cooling capacity (zone time step) [W] *HeatCapSeq(i)*|daily sequence of system heating capacity (zone time step) [W] *PreHeatCapSeq(i)*|daily sequence of system preheat capacity (zone time step) [W] *SysCoolRetTempSeq(i)*|daily sequence of system cooling return temperatures (zone time step) [C] *SysCoolRetHumRatSeq(I)*|daily sequence of system cooling return humidity ratios (zone time step) [kg water/kg dry air] *SysHeatRetTempSeq(i)*|daily sequence of system heating return temperatures (zone time step) [C] *SysHeatRetHumRatSeq(I)*|daily sequence of system heating return humidity ratios (zone time step) [kg water/kg dry air] *SysCoolOutTempSeq*|daily sequence of system cooling outside temperatures (zone time step) [C] *SysCoolOutHumRatSeq*|daily sequence of system cooling outside humidity ratios (zone time step) [kg water/kg dry air] *SysHeatOutTempSeq*|daily sequence of system heating outside temperatures (zone time step) [C] *SysHeatOutHumRatSeq*|daily sequence of system heating outside humidity ratios (zone time step) [kg water/kg dry air]

## System Design Flow Rate and Load Summation and Adjustment[LINK]

There is no system level subroutine corresponding to *SizeZoneEquipment.* Instead the system design loads and flow rates are calculated using the zone level results. The zone design flow rates for the zones served by an air loop are summed to obtain the system level design flow rates. These air flows are mixed with the system level design minimum outside air flow rate to obtain system design coil loads. These activities are all performed within the *UpdateSysSizing* subroutine in the *SimAirServingZones* module. It is called at the start of each design day (*CallIndicator = BeginDay*), at the zone time-step (*CallIndicator = DuringDay*), at the end of the design day (*CallIndicator = EndDay*) and at the end of the zone design calculation (*CallIndicator = EndSysSizingCalc*).

There is a logical flag *SysSizingCalc* corresponding to *ZoneSizingCalc*. It is used to allow the component routines to distinguish a normal simulation call from a being called during a system sizing calculation.

The environment (in this case, a design day) name is stored in the system sizing data structures.

Loop over the zones cooled by this air loop:

*NonCoinCoolMassFlow*_{sys}=**DesCoolMassFlow**_{zone}

Loop over the zones heated by this air loop:

*NonCoinHeatMassFlow*_{sys}=**DesHeatMassFlow**_{zone}

Loop over the zones cooled by this air loop:

*CoolFlowSeq*_{sys}(i) =**CoolFlowSeq**_{zone}(i)

*SysCoolRetTemp(i)*= **(***CoolZoneRetTempSeq(i) CoolFlowSeq*_{zone}(i)) *CoolFlowSeq*_{sys}(i)

*SysCoolRetHumRat(i)*= **(***CoolZoneHumRatSeq(i) CoolFlowSeq*_{zone}(i)) *CoolFlowSeq*_{sys}(i)

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *CoolFlowSeq*_{sys}(i)

*T*_{mix}=*T*_{outside} FracOA + *SysCoolRetTemp(i)*(1 – *FracOA*)

*W*_{mix}=*W*_{outside} FracOA + *SysCoolRetHumRat (i)*(1 – *FracOA*)

*SysCoolOutTempSeq(i)*= *T*_{outside}

*SysCoolOutHumRatSeq(i)*= *W*_{outside}

Get the current (zone time-step) system cooling capacity:

*SysSensCoolCap*_{cur}=*C*_{p,air} CoolFlowSeq_{sys}(i) ( *T*_{mix}-*T*_{sup})

*SensCoolCapSeq(I)*= *SysSensCoolCap*_{cur}

If *SysSensCoolCap*_{cur} is the maximum for the day so far then save *SysSensCoolCap*_{cur} as the design value:

*SensCoolCap(i*_{)sys}= *SysSensCoolCap*_{cur}

And save the corresponding mixed, return and outside conditions:

*CoolMixTemp*_{sys}=~~*T*_{mix}

*CoolMixHumRat*_{sys}=*W*_{mix}

*CoolRetTemp*_{sys}= *SysCoolRetTemp(i)*

*CoolRetHumRat*_{sys}= *SysCoolRetHumRat(I)*

*CoolOutTemp*_{sys}= *T*_{outside}

*CoolOutHumRat*_{sys}= *W*_{outside}

Here**_{air}is the density of dry air at 20C and standard elevation corrected pressure, [kg/m^3]^;

*FracOA* is the outside air fraction;

*C*_{p,air} is the specific heat of dry air at 20C, [J/kg-K];

*T*_{sup} is the user specified design cooling supply temperature [C];

*T*_{mix} is the current mixed air temperature [C];

*W*_{mix} is the current mixed air humidity ratio [kg water / kg dry air];

*T*_{outside} is the current outside air temperature [C];

*W*_{outside} is the current outside air humidity ratio [kg water / kg dry air].

Loop over the zones heated by this air loop.

*HeatFlowSeq*_{sys}(i) =**HeatFlowSeq**_{zone}(i)

*SysHeatRetTemp(i)*= **(***HeatZoneRetTempSeq(i) HeatFlowSeq*_{zone}(i))

*HeatFlowSeq*_{sys}(i)

*SysHeatRetHumRat(i)*= **(***HeatZoneHumRatSeq(i) HeatFlowSeq*_{zone}(i))

*HeatFlowSeq*_{sys}(i)

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *HeatFlowSeq*_{sys}(i)

*T*_{mix}=*T*_{outside} FracOA + *SysHeatRetTemp(i)*(1 – *FracOA*)

*W*_{mix}=*W*_{outside} FracOA + *SysHeatRetHumRat (i)*(1 – *FracOA*)

*SysHeatOutTempSeq(i)*= *T*_{outside}

*SysHeatOutHumRatSeq(i)*= *W*_{outside}

Get the current (zone time-step) system heating capacity:

*SysHeatCap*_{cur}=*C*_{p,air} MinFlowRat_{sys}HeatFlowSeq_{sys}(i) ( *T*_{sup}-*T*_{mix})

*HeatCapSeq(I)*= *SysHeatCap*_{cur}

If *SysHeatCap*_{cur} is the maximum for the day so far then save *SysHeatCap*_{cur} as the design value:

*HeatCap(i*_{)sys}= *SysHeatCap*_{cur}

And save the corresponding mixed, return and outside conditions:

*HeatMixTemp*_{sys}=~~*T*_{mix}

*HeatMixHumRat*_{sys}=*W*_{mix}

*HeatRetTemp*_{sys}= *SysHeatRetTemp(i)*

*HeatRetHumRat*_{sys}= *SysHeatRetHumRat(I)*

*HeatOutTemp*_{sys}= *T*_{outside}

*HeatOutHumRat*_{sys}= *W*_{outside}

Here *MinFlowRat*_{sys} is the user specified minimum supply flow ratio.

If the user has specified *coincident* system sizing then:

*DesCoolVolFlow*_{sys}=**_{air}CoinCoolMassFlow_{sys}

*DesHeatVolFlow*_{sys}=**_{air}CoinHeatMassFlow_{sys}

*DesMainVolFlow*_{sys}=**Max**(*DesCoolVolFlow*_{sys}, *DesHeatVolFlow*_{sys})

If the user has specified *noncoincident*system sizing then:

*DesCoolVolFlow*_{sys}=**_{air}NonCoinCoolMassFlow_{sys}

*DesHeatVolFlow*_{sys}=**_{air}NonCoinHeatMassFlow_{sys}

*DesMainVolFlow*_{sys}=**Max**(*DesCoolVolFlow*_{sys}, *DesHeatVolFlow*_{sys})

Based on the outdoor air method selected, the *DesCoolVolFlow*_{sys} and *DesHeatVolFlow*_{sys} are modified based on the system ventilation effciency calculated based on the maximum outdoor air fraction.

### EndSysSizingCalc[LINK]

At this point all the calculations have been done in *SysSizing(i,j)*: we have results for each design day. Now these results need to be processed to find the heating and cooling design quantities for each system over all the design days.

For coincident sizing the task is quite easy.

Loop over all of the air loops.

Loop over all of the design days.

If the value of *DesCoolVolFlow* in *SysSizing* for the current design day is greater than the value stored in *CalcSysSizing*, then move *DesCoolVolFlow* from *SysSizing* into *CalcSysSizing* along with *CoolDesDay*, *CoinCoolMassFlow*, *SensCoolCap*, *CoolFlowSeq(i)*, *SensCoolCapSeq(i),* *CoolMixTemp*, *CoolRetTemp*, *CoolMixHumRat*, *CoolRetHumRat*, *CoolOutTemp*, *CoolOutHumRat*, *SysCoolRetTempSeq(i)*, *SysCoolRetHumRatSeq(i)*, *SysCoolOutTempSeq(i)* and *SysCoolOutHumRatSeq(i)*.

If the value of *DesHeatVolFlow* in *SysSizing* for the current design day is greater than the value stored in *CalcSysSizing*, then move *DesHeatVolFlow* from *SysSizing* into *CalcSysSizing* along with *HeatDesDay*, *CoinHeatMassFlow*, *HeatCap*, *PreHeatCap*, *HeatFlowSeq(i)*, *HeatCapSeq(i),* *PreHeatCapSeq(i), HeatMixTemp*, *HeatRetTemp*, *HeatMixHumRat*, *HeatRetHumRat*, *HeatOutTemp*, *HeatOutHumRat*, *SysHeatRetTempSeq(i)*, *SysHeatRetHumRatSeq(i)*, *SysHeatOutTempSeq(i)* and *SysHeatOutHumRatSeq(i)*.

At the end of each design day loop the peak cooling and the peak heating data will be stored in *CalcSysSizing*. At this point we set *DesMainVolFlow* in *CalcSysSizing* equal to the maximum of *DesCoolVolFlow* and *DesHeatVolFlow.*

For noncoincident sizing the task is harder since we don’t have a single time-step during which all the zone peaks occur. So there is no obvious value for outside air temperature at the peak, return air temperature at the peak and so forth. We must return to the zone sizing data and calculate average values for return and outside conditions.

Loop over all of the zones cooled by this air loop

In *FinalZoneSizing* replace the value in *DesCoolCoilInTemp* with the user specified *CoolSupTemp*_{sys}. Do the same for *DesCoolCoilInHumRat* and *CoolSupHumRat*. This ensures that zone equipment connected to an air loop will use the system design supply air conditions as coil entering conditions.

*NonCoinCoolMassFlow*_{sys}=**DesCoolMassFlow**_{zone}

*SysCoolRetTemp*=**(***ZoneRetTempAtCoolPeakDesCoolMassFlow*_{zone})

*/ NonCoinCoolMassFlow*_{sys}

*SysCoolRetHumRat*=**(***ZoneHumRatAtCoolPeak*

*DesCoolMassFlow*_{zone})/ *NonCoinCoolMassFlow*_{sys}

*SysCoolOutTemp*=**(***T~OA,zone peak*_{DesCoolMassFlow}zone~)/

*NonCoinCoolMassFlow*_{sys}

*SysCoolOutHumRat*=**(***W~OA,zone peak*_{DesCoolMassFlow}zone~)/

*NonCoinCoolMassFlow*_{sys}

At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *NonCoinCoolMassFlow*_{sys}

*T*_{mix} =*SysCoolOutTemp FracOA* + *SysCoolRetTemp* (1 – *FracOA*)

*W*_{mix} = *SysCoolOutHumRat* *FracOA* + *SysCoolRetHumRat*

(1 – *FracOA*)

*SysSensCoolCap*=*C*_{p,air} NonCoinCoolMassFlow ( *T*_{mix}-*T*_{sup})

Then (for noncoincident sizing) the variables calculated in section (ii) are moved into the *CalcSysSizing* Array.

Loop over all of the zones heated by this air loop.

In *FinalZoneSizing* replace the value in *DesHeatCoilInTemp* with the user specified *HeatSupTemp*_{sys}. Do the same for *DesHeatCoilInHumRat* and *HeatSupHumRat*. This ensures that zone equipment connected to an air loop will use the system design supply air conditions as coil entering conditions.

*NonCoinHeatMassFlow*_{sys}=**DesHeatMassFlow**_{zone}

*SysHeatRetTemp*=**(***ZoneRetTempAtHeatPeakDesHeatMassFlow*_{zone})

*/ NonCoinHeatMassFlow*_{sys}

*SysHeatRetHumRat*=**(***ZoneHumRatAtHeatPeak*

*DesHeatMassFlow*_{zone})/ *NonCoinHeatMassFlow*_{sys}

*SysHeatOutTemp*=**(***T~OA,zone peak*_{DesHeatMassFlow}zone~)/

*NonCoinHeatMassFlow*_{sys}

*SysHeatOutHumRat*=**(***W~OA,zone peak*_{DesHeatMassFlow}zone~)/

*NonCoinHeatMassFlow*_{sys}

At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *NonCoinHeatMassFlow*_{sys}

*T*_{mix} =*SysHeatOutTemp FracOA* + *SysHeatRetTemp* (1 – *FracOA*)

*W*_{mix} = *SysHeatOutHumRat* *FracOA* + *SysHeatRetHumRat*

(1 – *FracOA*)

*SysHeatlCap*=*C*_{p,air} NonCoinHeatlMassFlow ( *T*_{sup}-*T*_{mix})

Then (for noncoincident sizing) the variables calculated in section (ii) are moved into the *CalcSysSizing* Array.

We now have the calculated system sizing data. This data needs to be altered to take into account the user input system design flow rates (if any), or the fact that the user may have requested that the system flow rate be sized on the ventilation requirement. Note that user specified sizing ratios have already been applied to the zone sizing data which have been used in out preceding system sizing calculation. Thus the user specified sizing ratios do not have to be explicitly taken into account at the system level.

First we move the calculated system sizing data from *CalcSysSizing* array into the *FinalSysSizing* array. *FinalSysSizing* will contain the user modified system design data when we are all done.

Loop over the air loops.

As in the zone case, the user specified system design flow rates are turned into sizing ratios by dividing the user input value by the calculated value. The same strategy is employed for sizing on the ventilation requirement: the design ventilation flow rate is divided by the calculated design flow rate value. For each air loop this gives us a *SizRat*_{cool} and *SizRat*_{heat}.

*CoinCoolMassFlow*= *SizRat*_{cool} CoinCoolMassFlow_{calc}

*NonCoinCoolMassFlow*= *SizRat*_{cool} NonCoinCoolMassFlow_{calc}

*DesCoolVolFlow*= *SizRat*_{cool} DesCoolVolFlow_{calc}

Since the flow rates have been altered the outside air fraction will change. This will alter the design mixed air conditions and lead to an altered value for the cooling capacity. This must be done for the time-step sequence and for the peak value.

Loop over the zone timesteps (index=*i*).

*CoolFlowSeq*_{sys}(i)= *SizRat*_{cool} CoolFlowSeq_{sys,calc}(i)

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *CoolFlowSeq*_{sys}(i)

*T*_{mix}= *SysCoolOutTempSeq(i)FracOA +*

*SysCoolRetTempSeq(i)(*1-FracOA)

*SensCoolCapSeq(i)*= *C*_{p,air} CoolFlowSeq_{sys}(i) ( *T*_{mix}-*T*_{sup})

Do the same calculation for peak cooling.

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *DesCoolVolFlow*

*T*_{mix}= *CoolOutTemp*_{sys}FracOA + CoolRetTemp_{sys}(1-FracOA)

*W*_{mix}= *CoolOutHumRat*_{sys}FracOA + CoolRetHumRat_{sys}

*(*1-FracOA)

*SensCoolCap*_{sys}= *C*_{p,air} DesCoolVolFlow_{sys} ( *T*_{mix}-*T*_{sup})

*T*_{mix} and *W*_{mix} are saved in *FinalSysSizing* *.*

Do the same calculation for the heating case.

*CoinHeatMassFlow*= *SizRat*_{heat} CoinHeatMassFlow_{calc}

*NonCoinHeatMassFlow*= *SizRat*_{heat} NonCoinHeatMassFlow_{calc}

*DesHeatVolFlow*= *SizRat*_{heat} DesHeatVolFlow_{calc}

Loop over the zone timesteps (index=*i*).

*HeatFlowSeq*_{sys}(i)= *SizRat*_{Heat} HeatFlowSeq_{sys,calc}(i)

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *HeatFlowSeq*_{sys}(i)

*T*_{mix}= *SysHeatOutTempSeq(i) FracOA +*

*SysHeatRetTempSeq(i) (*1-FracOA)

*HeatCapSeq(i)*= *C*_{p,air} HeatFlowSeq_{sys}(i) (*T*_{sup}-*T*_{mix})

Do the same calculation for peak heating.

*FracOA=*_{air} DesOutAirVolFlow_{sys}/ *DesHeatVolFlow*

*T*_{mix}= *HeatOutTemp*_{sys}FracOA + HeatRetTemp_{sys} (1-FracOA)

*W*_{mix}= *HeatOutHumRat*_{sys}FracOA + HeatRetHumRat_{sys}

*(*1-FracOA)

*HeatCap*_{sys}= *C*_{p,air} DesHeatVolFlow_{sys} ( *T*_{sup}-*T*_{mix})

*T*_{mix} and *W*_{mix} are saved in *FinalSysSizing* *.*

*DesMainVolFlow*_{sys}=**MAX**(*DesCoolVolFlow*_{sys},*DesHeatVolFlow*_{sys})

**This concludes the system design calculation.**

## System Design Loads and Air Flow Rates[LINK]

## Overview[LINK]

The purpose of the system design calculation is to estimate design heating and cooling loads and air flow rates for each air loop in the simulation problem. The calculation sequence for system level design loads and air flow rates resembles the calculation sequence for zone loads and air flow rates. There is an update subroutine

UpdateSysSizingcalled at the beginning, during, and end of a loop in the Sizing Manager over all the design days. The major difference is that this calculation is done at the zone time-step only. There is no idealized component calculation triggered at the system time-step as in the zone calculation. The system design calculation operates at the zone time step using the design environment weather data and the data stored in the zone sizing arrays. The results of the system design calculation are stored in the system sizing arrays described below.## System Design Data Arrays[LINK]

The system design data arrays are:

SysSizInput(i)stores the input data from the Sizing:System objects.SysSizing(i,j)stores the results of the system design calculations for all systems and all design days. The index i is for air loops, j for design days.CalcSysSizing(i) stores the results of the system design calculations for the peak heating and cooling cases for each air loop. **The index i is for the air loops.FinalSysSizing(i) corresponds toCalcSysSizingbut includes the effect of the user specified sizing factor or user specified system design flow rate.The data stored in

SysSizing,CalcSysSizingandFinalSysSizingincludes the following data items.Table: System Sizing Data

Name|Description —-|———– All the data from

SysSizInput|CoinCoolMassFlow|coincident peak cooling mass flow rate [kg/s]CoinHeatMassFlow|coincident peak heating mass flow rate [kg/s]NonCoinCoolMassFlow|noncoincident peak cooling mass flow rate [kg/s]NonCoinHeatMassFlow|noncoincident peak heating mass flow rate [kg/s]DesMainVolFlow|design main supply duct volume flow [m^{3}/s]DesHeatVolFlow|design heat supply duct volume flow [m^{3}/s]DesCoolVolFlow|design cool supply duct volume flow [m^{3}/s]SensCoolCap|design sensible cooling capacity [W]HeatCap|design heating capacity [W]PreheatCap|design preheat capacity [W]CoolMixTemp|design mixed air temperature for cooling [C]CoolMixHumRat|design mixed air humidity ratio for cooling [kg water/kg dry air]CoolRetTemp|design return air temperature for cooling [C]CoolRetHumRat|design return air humidity ratio for cooling [kg water/kg dry air]CoolOutTemp|design outside air temperature for cooling [C]CoolOutHumRat|design outside air humidity ratio for cooling [kg water/kg dry air]HeatMixTemp|design mixed air temperature for heating [C]HeatMixHumRat|design mixed air humidity ratio for heating [kg water/kg dry air]HeatRetTemp|design return air temperature for heating [C]HeatRetHumRat|design return air humidity ratio for heating [kg water/kg dry air]HeatOutTemp|design outside air temperature for heating [C]HeatOutHumRat|design outside air humidity ratio for heating [kg water/kg dry air]HeatFlowSeq(i)|daily sequence of system heating air mass flow rate (zone time step) [kg/s]CoolFlowSeq(i)|daily sequence of system cooling air mass flow rate (zone time step) [kg/s]SensCoolCapSeq(I)|daily sequence of system sensible cooling capacity (zone time step) [W]HeatCapSeq(i)|daily sequence of system heating capacity (zone time step) [W]PreHeatCapSeq(i)|daily sequence of system preheat capacity (zone time step) [W]SysCoolRetTempSeq(i)|daily sequence of system cooling return temperatures (zone time step) [C]SysCoolRetHumRatSeq(I)|daily sequence of system cooling return humidity ratios (zone time step) [kg water/kg dry air]SysHeatRetTempSeq(i)|daily sequence of system heating return temperatures (zone time step) [C]SysHeatRetHumRatSeq(I)|daily sequence of system heating return humidity ratios (zone time step) [kg water/kg dry air]SysCoolOutTempSeq|daily sequence of system cooling outside temperatures (zone time step) [C]SysCoolOutHumRatSeq|daily sequence of system cooling outside humidity ratios (zone time step) [kg water/kg dry air]SysHeatOutTempSeq|daily sequence of system heating outside temperatures (zone time step) [C]SysHeatOutHumRatSeq|daily sequence of system heating outside humidity ratios (zone time step) [kg water/kg dry air]## System Design Flow Rate and Load Summation and Adjustment[LINK]

There is no system level subroutine corresponding to

SizeZoneEquipment.Instead the system design loads and flow rates are calculated using the zone level results. The zone design flow rates for the zones served by an air loop are summed to obtain the system level design flow rates. These air flows are mixed with the system level design minimum outside air flow rate to obtain system design coil loads. These activities are all performed within theUpdateSysSizingsubroutine in theSimAirServingZonesmodule. It is called at the start of each design day (CallIndicator = BeginDay), at the zone time-step (CallIndicator = DuringDay), at the end of the design day (CallIndicator = EndDay) and at the end of the zone design calculation (CallIndicator = EndSysSizingCalc).There is a logical flag

SysSizingCalccorresponding toZoneSizingCalc. It is used to allow the component routines to distinguish a normal simulation call from a being called during a system sizing calculation.## BeginDay[LINK]

The environment (in this case, a design day) name is stored in the system sizing data structures.

Loop over the zones cooled by this air loop:

NonCoinCoolMassFlow=_{sys}DesCoolMassFlow_{zone}Loop over the zones heated by this air loop:

NonCoinHeatMassFlow=_{sys}DesHeatMassFlow_{zone}## DuringDay[LINK]

Loop over the zones cooled by this air loop:

CoolFlowSeq=_{sys}(i)CoolFlowSeq(i)_{zone}SysCoolRetTemp(i)=(CoolZoneRetTempSeq(i) CoolFlowSeq)_{zone}(i)CoolFlowSeq_{sys}(i)SysCoolRetHumRat(i)=(CoolZoneHumRatSeq(i) CoolFlowSeq)_{zone}(i)CoolFlowSeq_{sys}(i)FracOA=/_{air}DesOutAirVolFlow_{sys}CoolFlowSeq_{sys}(i)T=_{mix}T+_{outside}FracOASysCoolRetTemp(i)(1 –FracOA)W=_{mix}W+_{outside}FracOASysCoolRetHumRat (i)(1 –FracOA)SysCoolOutTempSeq(i)=T_{outside}SysCoolOutHumRatSeq(i)=W_{outside}Get the current (zone time-step) system cooling capacity:

SysSensCoolCap=_{cur}C(_{p,air}CoolFlowSeq_{sys}(i)T-_{mix}T)_{sup}SensCoolCapSeq(I)=SysSensCoolCap_{cur}If

SysSensCoolCapis the maximum for the day so far then save_{cur}SysSensCoolCapas the design value:_{cur}SensCoolCap(i=_{)sys}SysSensCoolCap_{cur}And save the corresponding mixed, return and outside conditions:

CoolMixTemp=~~_{sys}T_{mix}CoolMixHumRat=_{sys}W_{mix}CoolRetTemp=_{sys}SysCoolRetTemp(i)CoolRetHumRat=_{sys}SysCoolRetHumRat(I)CoolOutTemp=_{sys}T_{outside}CoolOutHumRat=_{sys}W_{outside}Here

is the density of dry air at 20C and standard elevation corrected pressure, [kg/m^3]^;_{air}FracOAis the outside air fraction;Cis the specific heat of dry air at 20C, [J/kg-K];_{p,air}Tis the user specified design cooling supply temperature [C];_{sup}Tis the current mixed air temperature [C];_{mix}Wis the current mixed air humidity ratio [kg water / kg dry air];_{mix}Tis the current outside air temperature [C];_{outside}Wis the current outside air humidity ratio [kg water / kg dry air]._{outside}Loop over the zones heated by this air loop.

HeatFlowSeq=_{sys}(i)HeatFlowSeq(i)_{zone}SysHeatRetTemp(i)=(HeatZoneRetTempSeq(i) HeatFlowSeq)_{zone}(i)HeatFlowSeq_{sys}(i)SysHeatRetHumRat(i)=(HeatZoneHumRatSeq(i) HeatFlowSeq)_{zone}(i)HeatFlowSeq_{sys}(i)FracOA=/_{air}DesOutAirVolFlow_{sys}HeatFlowSeq_{sys}(i)T=_{mix}T+_{outside}FracOASysHeatRetTemp(i)(1 –FracOA)W=_{mix}W+_{outside}FracOASysHeatRetHumRat (i)(1 –FracOA)SysHeatOutTempSeq(i)=T_{outside}SysHeatOutHumRatSeq(i)=W_{outside}Get the current (zone time-step) system heating capacity:

SysHeatCap=_{cur}C(_{p,air}MinFlowRat_{sys}HeatFlowSeq_{sys}(i)T-_{sup}T)_{mix}HeatCapSeq(I)=SysHeatCap_{cur}If

SysHeatCapis the maximum for the day so far then save_{cur}SysHeatCapas the design value:_{cur}HeatCap(i=_{)sys}SysHeatCap_{cur}And save the corresponding mixed, return and outside conditions:

HeatMixTemp=~~_{sys}T_{mix}HeatMixHumRat=_{sys}W_{mix}HeatRetTemp=_{sys}SysHeatRetTemp(i)HeatRetHumRat=_{sys}SysHeatRetHumRat(I)HeatOutTemp=_{sys}T_{outside}HeatOutHumRat=_{sys}W_{outside}Here

MinFlowRatis the user specified minimum supply flow ratio._{sys}## EndDay[LINK]

If the user has specified

coincidentsystem sizing then:DesCoolVolFlow=_{sys}_{air}CoinCoolMassFlow_{sys}DesHeatVolFlow=_{sys}_{air}CoinHeatMassFlow_{sys}DesMainVolFlow=_{sys}Max(DesCoolVolFlow,_{sys}DesHeatVolFlow)_{sys}If the user has specified

noncoincidentsystem sizing then:DesCoolVolFlow=_{sys}_{air}NonCoinCoolMassFlow_{sys}DesHeatVolFlow=_{sys}_{air}NonCoinHeatMassFlow_{sys}DesMainVolFlow=_{sys}Max(DesCoolVolFlow,_{sys}DesHeatVolFlow)_{sys}Based on the outdoor air method selected, the

DesCoolVolFlowand_{sys}DesHeatVolFloware modified based on the system ventilation effciency calculated based on the maximum outdoor air fraction._{sys}## EndSysSizingCalc[LINK]

At this point all the calculations have been done in

SysSizing(i,j): we have results for each design day. Now these results need to be processed to find the heating and cooling design quantities for each system over all the design days.For coincident sizing the task is quite easy.

Loop over all of the air loops.

Loop over all of the design days.

If the value of

DesCoolVolFlowinSysSizingfor the current design day is greater than the value stored inCalcSysSizing, then moveDesCoolVolFlowfromSysSizingintoCalcSysSizingalong withCoolDesDay,CoinCoolMassFlow,SensCoolCap,CoolFlowSeq(i),SensCoolCapSeq(i),CoolMixTemp,CoolRetTemp,CoolMixHumRat,CoolRetHumRat,CoolOutTemp,CoolOutHumRat,SysCoolRetTempSeq(i),SysCoolRetHumRatSeq(i),SysCoolOutTempSeq(i)andSysCoolOutHumRatSeq(i).If the value of

DesHeatVolFlowinSysSizingfor the current design day is greater than the value stored inCalcSysSizing, then moveDesHeatVolFlowfromSysSizingintoCalcSysSizingalong withHeatDesDay,CoinHeatMassFlow,HeatCap,PreHeatCap,HeatFlowSeq(i),HeatCapSeq(i),PreHeatCapSeq(i), HeatMixTemp,HeatRetTemp,HeatMixHumRat,HeatRetHumRat,HeatOutTemp,HeatOutHumRat,SysHeatRetTempSeq(i),SysHeatRetHumRatSeq(i),SysHeatOutTempSeq(i)andSysHeatOutHumRatSeq(i).At the end of each design day loop the peak cooling and the peak heating data will be stored in

CalcSysSizing. At this point we setDesMainVolFlowinCalcSysSizingequal to the maximum ofDesCoolVolFlowandDesHeatVolFlow.For noncoincident sizing the task is harder since we don’t have a single time-step during which all the zone peaks occur. So there is no obvious value for outside air temperature at the peak, return air temperature at the peak and so forth. We must return to the zone sizing data and calculate average values for return and outside conditions.

Loop over all of the zones cooled by this air loop

In

FinalZoneSizingreplace the value inDesCoolCoilInTempwith the user specifiedCoolSupTemp. Do the same for_{sys}DesCoolCoilInHumRatandCoolSupHumRat. This ensures that zone equipment connected to an air loop will use the system design supply air conditions as coil entering conditions.NonCoinCoolMassFlow=_{sys}DesCoolMassFlow_{zone}SysCoolRetTemp=(ZoneRetTempAtCoolPeakDesCoolMassFlow)_{zone}/ NonCoinCoolMassFlow_{sys}SysCoolRetHumRat=(ZoneHumRatAtCoolPeakDesCoolMassFlow)/_{zone}NonCoinCoolMassFlow_{sys}SysCoolOutTemp=(T~OA,zone peak)/_{DesCoolMassFlow}zone~NonCoinCoolMassFlow_{sys}SysCoolOutHumRat=(W~OA,zone peak)/_{DesCoolMassFlow}zone~NonCoinCoolMassFlow_{sys}At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.

FracOA=/_{air}DesOutAirVolFlow_{sys}NonCoinCoolMassFlow_{sys}T=_{mix}SysCoolOutTemp FracOA+SysCoolRetTemp(1 –FracOA)W=_{mix}SysCoolOutHumRatFracOA+SysCoolRetHumRat(1 –

FracOA)SysSensCoolCap=C(_{p,air}NonCoinCoolMassFlowT-_{mix}T)_{sup}Then (for noncoincident sizing) the variables calculated in section (ii) are moved into the

CalcSysSizingArray.Loop over all of the zones heated by this air loop.

In

FinalZoneSizingreplace the value inDesHeatCoilInTempwith the user specifiedHeatSupTemp. Do the same for_{sys}DesHeatCoilInHumRatandHeatSupHumRat. This ensures that zone equipment connected to an air loop will use the system design supply air conditions as coil entering conditions.NonCoinHeatMassFlow=_{sys}DesHeatMassFlow_{zone}SysHeatRetTemp=(ZoneRetTempAtHeatPeakDesHeatMassFlow)_{zone}/ NonCoinHeatMassFlow_{sys}SysHeatRetHumRat=(ZoneHumRatAtHeatPeakDesHeatMassFlow)/_{zone}NonCoinHeatMassFlow_{sys}SysHeatOutTemp=(T~OA,zone peak)/_{DesHeatMassFlow}zone~NonCoinHeatMassFlow_{sys}SysHeatOutHumRat=(W~OA,zone peak)/_{DesHeatMassFlow}zone~NonCoinHeatMassFlow_{sys}At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.

FracOA=/_{air}DesOutAirVolFlow_{sys}NonCoinHeatMassFlow_{sys}T=_{mix}SysHeatOutTemp FracOA+SysHeatRetTemp(1 –FracOA)W=_{mix}SysHeatOutHumRatFracOA+SysHeatRetHumRat(1 –

FracOA)SysHeatlCap=C(_{p,air}NonCoinHeatlMassFlowT-_{sup}T)_{mix}Then (for noncoincident sizing) the variables calculated in section (ii) are moved into the

CalcSysSizingArray.We now have the calculated system sizing data. This data needs to be altered to take into account the user input system design flow rates (if any), or the fact that the user may have requested that the system flow rate be sized on the ventilation requirement. Note that user specified sizing ratios have already been applied to the zone sizing data which have been used in out preceding system sizing calculation. Thus the user specified sizing ratios do not have to be explicitly taken into account at the system level.

First we move the calculated system sizing data from

CalcSysSizingarray into theFinalSysSizingarray.FinalSysSizingwill contain the user modified system design data when we are all done.Loop over the air loops.

As in the zone case, the user specified system design flow rates are turned into sizing ratios by dividing the user input value by the calculated value. The same strategy is employed for sizing on the ventilation requirement: the design ventilation flow rate is divided by the calculated design flow rate value. For each air loop this gives us a

SizRatand_{cool}SizRat._{heat}CoinCoolMassFlow=SizRat_{cool}CoinCoolMassFlow_{calc}NonCoinCoolMassFlow=SizRat_{cool}NonCoinCoolMassFlow_{calc}DesCoolVolFlow=SizRat_{cool}DesCoolVolFlow_{calc}Since the flow rates have been altered the outside air fraction will change. This will alter the design mixed air conditions and lead to an altered value for the cooling capacity. This must be done for the time-step sequence and for the peak value.

Loop over the zone timesteps (index=

i).CoolFlowSeq=_{sys}(i)SizRat_{cool}CoolFlowSeq_{sys,calc}(i)FracOA=/_{air}DesOutAirVolFlow_{sys}CoolFlowSeq_{sys}(i)T=_{mix}SysCoolOutTempSeq(i)FracOA +SysCoolRetTempSeq(i)(1-FracOA)SensCoolCapSeq(i)=C(_{p,air}CoolFlowSeq_{sys}(i)T-_{mix}T)_{sup}Do the same calculation for peak cooling.

FracOA=/_{air}DesOutAirVolFlow_{sys}DesCoolVolFlowT=_{mix}CoolOutTemp1-FracOA)_{sys}FracOA + CoolRetTemp_{sys}(W=_{mix}CoolOutHumRat_{sys}FracOA + CoolRetHumRat_{sys}(1-FracOA)SensCoolCap=_{sys}C(_{p,air}DesCoolVolFlow_{sys}T-_{mix}T)_{sup}Tand_{mix}Ware saved in_{mix}FinalSysSizing.Do the same calculation for the heating case.

CoinHeatMassFlow=SizRat_{heat}CoinHeatMassFlow_{calc}NonCoinHeatMassFlow=SizRat_{heat}NonCoinHeatMassFlow_{calc}DesHeatVolFlow=SizRat_{heat}DesHeatVolFlow_{calc}Loop over the zone timesteps (index=

i).HeatFlowSeq=_{sys}(i)SizRat_{Heat}HeatFlowSeq_{sys,calc}(i)FracOA=/_{air}DesOutAirVolFlow_{sys}HeatFlowSeq_{sys}(i)T=_{mix}SysHeatOutTempSeq(i) FracOA +SysHeatRetTempSeq(i) (1-FracOA)HeatCapSeq(i)=C(_{p,air}HeatFlowSeq_{sys}(i)T-_{sup}T)_{mix}Do the same calculation for peak heating.

FracOA=/_{air}DesOutAirVolFlow_{sys}DesHeatVolFlowT=_{mix}HeatOutTemp1-FracOA)_{sys}FracOA + HeatRetTemp_{sys}(W=_{mix}HeatOutHumRat_{sys}FracOA + HeatRetHumRat_{sys}(1-FracOA)HeatCap=_{sys}C(_{p,air}DesHeatVolFlow_{sys}T-_{sup}T)_{mix}Tand_{mix}Ware saved in_{mix}FinalSysSizing.DesMainVolFlow=_{sys}MAX(DesCoolVolFlow,_{sys}DesHeatVolFlow)_{sys}This concludes the system design calculation.Documentation content copyright © 1996-2014 The Board of Trustees of the University of Illinois and the Regents of the University of California through the Ernest Orlando Lawrence Berkeley National Laboratory. All rights reserved. EnergyPlus is a trademark of the US Department of Energy.

This documentation is made available under the EnergyPlus Open Source License v1.0.