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 [m3/s]
DesHeatVolFlow|design heat supply duct volume flow
[m3/s] DesCoolVolFlow|design cool supply
duct volume flow [m3/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:
NonCoinCoolMassFlowsys=DesCoolMassFlowzone
Loop over the zones heated by this air loop:
NonCoinHeatMassFlowsys=DesHeatMassFlowzone
Loop over the zones cooled by this air loop:
CoolFlowSeqsys(i)
=CoolFlowSeqzone(i)
SysCoolRetTemp(i)=
(CoolZoneRetTempSeq(i)
CoolFlowSeqzone(i))
CoolFlowSeqsys(i)
SysCoolRetHumRat(i)=
(CoolZoneHumRatSeq(i)
CoolFlowSeqzone(i))
CoolFlowSeqsys(i)
FracOA=air
DesOutAirVolFlowsys/
CoolFlowSeqsys(i)
Tmix=Toutside
FracOA + SysCoolRetTemp(i)(1 –
FracOA)
Wmix=Woutside
FracOA + SysCoolRetHumRat (i)(1 –
FracOA)
SysCoolOutTempSeq(i)=
Toutside
SysCoolOutHumRatSeq(i)=
Woutside
Get the current (zone time-step) system cooling
capacity:
SysSensCoolCapcur=Cp,air
CoolFlowSeqsys(i) (
Tmix-Tsup)
SensCoolCapSeq(I)=
SysSensCoolCapcur
If SysSensCoolCapcur is the maximum for
the day so far then save SysSensCoolCapcur
as the design value:
SensCoolCap(i)sys=
SysSensCoolCapcur
And save the corresponding mixed, return and outside
conditions:
CoolMixTempsys=~~Tmix
CoolMixHumRatsys=Wmix
CoolRetTempsys=
SysCoolRetTemp(i)
CoolRetHumRatsys=
SysCoolRetHumRat(I)
CoolOutTempsys=
Toutside
CoolOutHumRatsys=
Woutside
Hereairis the density of dry air at
20C and standard elevation corrected pressure, [kg/m^3]^;
FracOA is the outside air fraction;
Cp,air is the specific heat of dry air
at 20C, [J/kg-K];
Tsup is the user specified design
cooling supply temperature [C];
Tmix is the current mixed air
temperature [C];
Wmix is the current mixed air humidity
ratio [kg water / kg dry air];
Toutside is the current outside air
temperature [C];
Woutside is the current outside air
humidity ratio [kg water / kg dry air].
Loop over the zones heated by this air loop.
HeatFlowSeqsys(i)
=HeatFlowSeqzone(i)
SysHeatRetTemp(i)=
(HeatZoneRetTempSeq(i)
HeatFlowSeqzone(i))
HeatFlowSeqsys(i)
SysHeatRetHumRat(i)=
(HeatZoneHumRatSeq(i)
HeatFlowSeqzone(i))
HeatFlowSeqsys(i)
FracOA=air
DesOutAirVolFlowsys/
HeatFlowSeqsys(i)
Tmix=Toutside
FracOA + SysHeatRetTemp(i)(1 –
FracOA)
Wmix=Woutside
FracOA + SysHeatRetHumRat (i)(1 –
FracOA)
SysHeatOutTempSeq(i)=
Toutside
SysHeatOutHumRatSeq(i)=
Woutside
Get the current (zone time-step) system heating
capacity:
SysHeatCapcur=Cp,air
MinFlowRatsysHeatFlowSeqsys(i) (
Tsup-Tmix)
HeatCapSeq(I)=
SysHeatCapcur
If SysHeatCapcur is the maximum for the
day so far then save SysHeatCapcur as the
design value:
HeatCap(i)sys=
SysHeatCapcur
And save the corresponding mixed, return and outside
conditions:
HeatMixTempsys=~~Tmix
HeatMixHumRatsys=Wmix
HeatRetTempsys=
SysHeatRetTemp(i)
HeatRetHumRatsys=
SysHeatRetHumRat(I)
HeatOutTempsys=
Toutside
HeatOutHumRatsys=
Woutside
Here MinFlowRatsys is the user
specified minimum supply flow ratio.
If the user has specified coincident system sizing
then:
DesCoolVolFlowsys=airCoinCoolMassFlowsys
DesHeatVolFlowsys=airCoinHeatMassFlowsys
DesMainVolFlowsys=Max(DesCoolVolFlowsys,
DesHeatVolFlowsys)
If the user has specified noncoincidentsystem
sizing then:
DesCoolVolFlowsys=airNonCoinCoolMassFlowsys
DesHeatVolFlowsys=airNonCoinHeatMassFlowsys
DesMainVolFlowsys=Max(DesCoolVolFlowsys,
DesHeatVolFlowsys)
Based on the outdoor air method selected, the
DesCoolVolFlowsys and
DesHeatVolFlowsys 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
CoolSupTempsys. 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.
NonCoinCoolMassFlowsys=DesCoolMassFlowzone
SysCoolRetTemp=(ZoneRetTempAtCoolPeakDesCoolMassFlowzone)
/ NonCoinCoolMassFlowsys
SysCoolRetHumRat=(ZoneHumRatAtCoolPeak
DesCoolMassFlowzone)/
NonCoinCoolMassFlowsys
SysCoolOutTemp=(T~OA,zone
peakDesCoolMassFlowzone~)/
NonCoinCoolMassFlowsys
SysCoolOutHumRat=(W~OA,zone
peakDesCoolMassFlowzone~)/
NonCoinCoolMassFlowsys
At the end of the zone loop calculate mixed air conditions
and the system sensible cooling capacity.
FracOA=air
DesOutAirVolFlowsys/
NonCoinCoolMassFlowsys
Tmix =SysCoolOutTemp FracOA +
SysCoolRetTemp (1 – FracOA)
Wmix = SysCoolOutHumRat
FracOA + SysCoolRetHumRat
(1 – FracOA)
SysSensCoolCap=Cp,air
NonCoinCoolMassFlow (
Tmix-Tsup)
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
HeatSupTempsys. 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.
NonCoinHeatMassFlowsys=DesHeatMassFlowzone
SysHeatRetTemp=(ZoneRetTempAtHeatPeakDesHeatMassFlowzone)
/ NonCoinHeatMassFlowsys
SysHeatRetHumRat=(ZoneHumRatAtHeatPeak
DesHeatMassFlowzone)/
NonCoinHeatMassFlowsys
SysHeatOutTemp=(T~OA,zone
peakDesHeatMassFlowzone~)/
NonCoinHeatMassFlowsys
SysHeatOutHumRat=(W~OA,zone
peakDesHeatMassFlowzone~)/
NonCoinHeatMassFlowsys
At the end of the zone loop calculate mixed air conditions
and the system sensible cooling capacity.
FracOA=air
DesOutAirVolFlowsys/
NonCoinHeatMassFlowsys
Tmix =SysHeatOutTemp FracOA +
SysHeatRetTemp (1 – FracOA)
Wmix = SysHeatOutHumRat
FracOA + SysHeatRetHumRat
(1 – FracOA)
SysHeatlCap=Cp,air
NonCoinHeatlMassFlow (
Tsup-Tmix)
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
SizRatcool and
SizRatheat.
CoinCoolMassFlow= SizRatcool
CoinCoolMassFlowcalc
NonCoinCoolMassFlow= SizRatcool
NonCoinCoolMassFlowcalc
DesCoolVolFlow= SizRatcool
DesCoolVolFlowcalc
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).
CoolFlowSeqsys(i)=
SizRatcool
CoolFlowSeqsys,calc(i)
FracOA=air
DesOutAirVolFlowsys/
CoolFlowSeqsys(i)
Tmix= SysCoolOutTempSeq(i)FracOA
+
SysCoolRetTempSeq(i)(1-FracOA)
SensCoolCapSeq(i)= Cp,air
CoolFlowSeqsys(i) (
Tmix-Tsup)
Do the same calculation for peak cooling.
FracOA=air
DesOutAirVolFlowsys/
DesCoolVolFlow
Tmix=
CoolOutTempsysFracOA +
CoolRetTempsys(1-FracOA)
Wmix=
CoolOutHumRatsysFracOA +
CoolRetHumRatsys
(1-FracOA)
SensCoolCapsys= Cp,air
DesCoolVolFlowsys (
Tmix-Tsup)
Tmix and Wmix are
saved in FinalSysSizing .
Do the same calculation for the heating case.
CoinHeatMassFlow= SizRatheat
CoinHeatMassFlowcalc
NonCoinHeatMassFlow= SizRatheat
NonCoinHeatMassFlowcalc
DesHeatVolFlow= SizRatheat
DesHeatVolFlowcalc
Loop over the zone timesteps (index=i).
HeatFlowSeqsys(i)=
SizRatHeat
HeatFlowSeqsys,calc(i)
FracOA=air
DesOutAirVolFlowsys/
HeatFlowSeqsys(i)
Tmix= SysHeatOutTempSeq(i) FracOA
+
SysHeatRetTempSeq(i) (1-FracOA)
HeatCapSeq(i)= Cp,air
HeatFlowSeqsys(i)
(Tsup-Tmix)
Do the same calculation for peak heating.
FracOA=air
DesOutAirVolFlowsys/
DesHeatVolFlow
Tmix=
HeatOutTempsysFracOA +
HeatRetTempsys (1-FracOA)
Wmix=
HeatOutHumRatsysFracOA +
HeatRetHumRatsys
(1-FracOA)
HeatCapsys= Cp,air
DesHeatVolFlowsys (
Tsup-Tmix)
Tmix and Wmix are
saved in FinalSysSizing .
DesMainVolFlowsys=MAX(DesCoolVolFlowsys,DesHeatVolFlowsys)
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 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 [m3/s] DesHeatVolFlow|design heat supply duct volume flow [m3/s] DesCoolVolFlow|design cool supply duct volume flow [m3/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.
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:
NonCoinCoolMassFlowsys=DesCoolMassFlowzone
Loop over the zones heated by this air loop:
NonCoinHeatMassFlowsys=DesHeatMassFlowzone
DuringDay[LINK]
Loop over the zones cooled by this air loop:
CoolFlowSeqsys(i) =CoolFlowSeqzone(i)
SysCoolRetTemp(i)= (CoolZoneRetTempSeq(i) CoolFlowSeqzone(i)) CoolFlowSeqsys(i)
SysCoolRetHumRat(i)= (CoolZoneHumRatSeq(i) CoolFlowSeqzone(i)) CoolFlowSeqsys(i)
FracOA=air DesOutAirVolFlowsys/ CoolFlowSeqsys(i)
Tmix=Toutside FracOA + SysCoolRetTemp(i)(1 – FracOA)
Wmix=Woutside FracOA + SysCoolRetHumRat (i)(1 – FracOA)
SysCoolOutTempSeq(i)= Toutside
SysCoolOutHumRatSeq(i)= Woutside
Get the current (zone time-step) system cooling capacity:
SysSensCoolCapcur=Cp,air CoolFlowSeqsys(i) ( Tmix-Tsup)
SensCoolCapSeq(I)= SysSensCoolCapcur
If SysSensCoolCapcur is the maximum for the day so far then save SysSensCoolCapcur as the design value:
SensCoolCap(i)sys= SysSensCoolCapcur
And save the corresponding mixed, return and outside conditions:
CoolMixTempsys=~~Tmix
CoolMixHumRatsys=Wmix
CoolRetTempsys= SysCoolRetTemp(i)
CoolRetHumRatsys= SysCoolRetHumRat(I)
CoolOutTempsys= Toutside
CoolOutHumRatsys= Woutside
Hereairis the density of dry air at 20C and standard elevation corrected pressure, [kg/m^3]^;
FracOA is the outside air fraction;
Cp,air is the specific heat of dry air at 20C, [J/kg-K];
Tsup is the user specified design cooling supply temperature [C];
Tmix is the current mixed air temperature [C];
Wmix is the current mixed air humidity ratio [kg water / kg dry air];
Toutside is the current outside air temperature [C];
Woutside is the current outside air humidity ratio [kg water / kg dry air].
Loop over the zones heated by this air loop.
HeatFlowSeqsys(i) =HeatFlowSeqzone(i)
SysHeatRetTemp(i)= (HeatZoneRetTempSeq(i) HeatFlowSeqzone(i))
HeatFlowSeqsys(i)
SysHeatRetHumRat(i)= (HeatZoneHumRatSeq(i) HeatFlowSeqzone(i))
HeatFlowSeqsys(i)
FracOA=air DesOutAirVolFlowsys/ HeatFlowSeqsys(i)
Tmix=Toutside FracOA + SysHeatRetTemp(i)(1 – FracOA)
Wmix=Woutside FracOA + SysHeatRetHumRat (i)(1 – FracOA)
SysHeatOutTempSeq(i)= Toutside
SysHeatOutHumRatSeq(i)= Woutside
Get the current (zone time-step) system heating capacity:
SysHeatCapcur=Cp,air MinFlowRatsysHeatFlowSeqsys(i) ( Tsup-Tmix)
HeatCapSeq(I)= SysHeatCapcur
If SysHeatCapcur is the maximum for the day so far then save SysHeatCapcur as the design value:
HeatCap(i)sys= SysHeatCapcur
And save the corresponding mixed, return and outside conditions:
HeatMixTempsys=~~Tmix
HeatMixHumRatsys=Wmix
HeatRetTempsys= SysHeatRetTemp(i)
HeatRetHumRatsys= SysHeatRetHumRat(I)
HeatOutTempsys= Toutside
HeatOutHumRatsys= Woutside
Here MinFlowRatsys is the user specified minimum supply flow ratio.
EndDay[LINK]
If the user has specified coincident system sizing then:
DesCoolVolFlowsys=airCoinCoolMassFlowsys
DesHeatVolFlowsys=airCoinHeatMassFlowsys
DesMainVolFlowsys=Max(DesCoolVolFlowsys, DesHeatVolFlowsys)
If the user has specified noncoincidentsystem sizing then:
DesCoolVolFlowsys=airNonCoinCoolMassFlowsys
DesHeatVolFlowsys=airNonCoinHeatMassFlowsys
DesMainVolFlowsys=Max(DesCoolVolFlowsys, DesHeatVolFlowsys)
Based on the outdoor air method selected, the DesCoolVolFlowsys and DesHeatVolFlowsys 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 CoolSupTempsys. 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.
NonCoinCoolMassFlowsys=DesCoolMassFlowzone
SysCoolRetTemp=(ZoneRetTempAtCoolPeakDesCoolMassFlowzone)
/ NonCoinCoolMassFlowsys
SysCoolRetHumRat=(ZoneHumRatAtCoolPeak
DesCoolMassFlowzone)/ NonCoinCoolMassFlowsys
SysCoolOutTemp=(T~OA,zone peakDesCoolMassFlowzone~)/
NonCoinCoolMassFlowsys
SysCoolOutHumRat=(W~OA,zone peakDesCoolMassFlowzone~)/
NonCoinCoolMassFlowsys
At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.
FracOA=air DesOutAirVolFlowsys/ NonCoinCoolMassFlowsys
Tmix =SysCoolOutTemp FracOA + SysCoolRetTemp (1 – FracOA)
Wmix = SysCoolOutHumRat FracOA + SysCoolRetHumRat
(1 – FracOA)
SysSensCoolCap=Cp,air NonCoinCoolMassFlow ( Tmix-Tsup)
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 HeatSupTempsys. 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.
NonCoinHeatMassFlowsys=DesHeatMassFlowzone
SysHeatRetTemp=(ZoneRetTempAtHeatPeakDesHeatMassFlowzone)
/ NonCoinHeatMassFlowsys
SysHeatRetHumRat=(ZoneHumRatAtHeatPeak
DesHeatMassFlowzone)/ NonCoinHeatMassFlowsys
SysHeatOutTemp=(T~OA,zone peakDesHeatMassFlowzone~)/
NonCoinHeatMassFlowsys
SysHeatOutHumRat=(W~OA,zone peakDesHeatMassFlowzone~)/
NonCoinHeatMassFlowsys
At the end of the zone loop calculate mixed air conditions and the system sensible cooling capacity.
FracOA=air DesOutAirVolFlowsys/ NonCoinHeatMassFlowsys
Tmix =SysHeatOutTemp FracOA + SysHeatRetTemp (1 – FracOA)
Wmix = SysHeatOutHumRat FracOA + SysHeatRetHumRat
(1 – FracOA)
SysHeatlCap=Cp,air NonCoinHeatlMassFlow ( Tsup-Tmix)
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 SizRatcool and SizRatheat.
CoinCoolMassFlow= SizRatcool CoinCoolMassFlowcalc
NonCoinCoolMassFlow= SizRatcool NonCoinCoolMassFlowcalc
DesCoolVolFlow= SizRatcool DesCoolVolFlowcalc
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).
CoolFlowSeqsys(i)= SizRatcool CoolFlowSeqsys,calc(i)
FracOA=air DesOutAirVolFlowsys/ CoolFlowSeqsys(i)
Tmix= SysCoolOutTempSeq(i)FracOA +
SysCoolRetTempSeq(i)(1-FracOA)
SensCoolCapSeq(i)= Cp,air CoolFlowSeqsys(i) ( Tmix-Tsup)
Do the same calculation for peak cooling.
FracOA=air DesOutAirVolFlowsys/ DesCoolVolFlow
Tmix= CoolOutTempsysFracOA + CoolRetTempsys(1-FracOA)
Wmix= CoolOutHumRatsysFracOA + CoolRetHumRatsys
(1-FracOA)
SensCoolCapsys= Cp,air DesCoolVolFlowsys ( Tmix-Tsup)
Tmix and Wmix are saved in FinalSysSizing .
Do the same calculation for the heating case.
CoinHeatMassFlow= SizRatheat CoinHeatMassFlowcalc
NonCoinHeatMassFlow= SizRatheat NonCoinHeatMassFlowcalc
DesHeatVolFlow= SizRatheat DesHeatVolFlowcalc
Loop over the zone timesteps (index=i).
HeatFlowSeqsys(i)= SizRatHeat HeatFlowSeqsys,calc(i)
FracOA=air DesOutAirVolFlowsys/ HeatFlowSeqsys(i)
Tmix= SysHeatOutTempSeq(i) FracOA +
SysHeatRetTempSeq(i) (1-FracOA)
HeatCapSeq(i)= Cp,air HeatFlowSeqsys(i) (Tsup-Tmix)
Do the same calculation for peak heating.
FracOA=air DesOutAirVolFlowsys/ DesHeatVolFlow
Tmix= HeatOutTempsysFracOA + HeatRetTempsys (1-FracOA)
Wmix= HeatOutHumRatsysFracOA + HeatRetHumRatsys
(1-FracOA)
HeatCapsys= Cp,air DesHeatVolFlowsys ( Tsup-Tmix)
Tmix and Wmix are saved in FinalSysSizing .
DesMainVolFlowsys=MAX(DesCoolVolFlowsys,DesHeatVolFlowsys)
This concludes the system design calculation.
Documentation content copyright © 1996-2026 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.