This model consist of an HVAC system, a building envelope model and a model
for air flow through building leakage and through open doors.
The HVAC system is a variable air volume (VAV) flow system with economizer
and a heating and cooling coil in the air handler unit. There is also a
reheat coil and an air damper in each of the five zone inlet branches.
The figure below shows the schematic diagram of the HVAC system
To model the heat transfer through the building envelope,
a model of five interconnected rooms is used.
The five room model is representative of one floor of the
new construction medium office building for Chicago, IL,
as described in the set of DOE Commercial Building Benchmarks
(Deru et al, 2009). There are four perimeter zones and one core zone.
The envelope thermal properties meet ASHRAE Standard 90.1-2004.
The thermal room model computes transient heat conduction through
walls, floors and ceilings and long-wave radiative heat exchange between
surfaces. The convective heat transfer coefficient is computed based
on the temperature difference between the surface and the room air.
There is also a layer-by-layer short-wave radiation,
long-wave radiation, convection and conduction heat transfer model for the
windows. The model is similar to the
Window 5 model and described in TARCOG 2006.
Each thermal zone can have air flow from the HVAC system, through leakages of the building envelope (except for the core zone) and through bi-directional air exchange through open doors that connect adjacent zones. The bi-directional air exchange is modeled based on the differences in static pressure between adjacent rooms at a reference height plus the difference in static pressure across the door height as a function of the difference in air density.
Infiltration is a function of the
flow imbalance of the HVAC system.
Deru M., K. Field, D. Studer, K. Benne, B. Griffith, P. Torcellini,
M. Halverson, D. Winiarski, B. Liu, M. Rosenberg, J. Huang, M. Yazdanian, and D. Crawley.
DOE commercial building research benchmarks for commercial buildings.
Technical report, U.S. Department of Energy, Energy Efficiency and
Renewable Energy, Office of Building Technologies, Washington, DC, 2009.
TARCOG 2006: Carli, Inc., TARCOG: Mathematical models for calculation
of thermal performance of glazing systems with our without
shading devices, Technical Report, Oct. 17, 2006.
partial model PartialOpenLoop
package MediumA =
Buildings.Media.Air ;
package MediumW =
Buildings.Media.Water ;
constant Integer numZon=5 ;
parameter Modelica.SIunits.Volume VRooCor=AFloCor*flo.hRoo ;
parameter Modelica.SIunits.Volume VRooSou=AFloSou*flo.hRoo ;
parameter Modelica.SIunits.Volume VRooNor=AFloNor*flo.hRoo ;
parameter Modelica.SIunits.Volume VRooEas=AFloEas*flo.hRoo ;
parameter Modelica.SIunits.Volume VRooWes=AFloWes*flo.hRoo ;
parameter Modelica.SIunits.Area AFloCor=flo.cor.AFlo ;
parameter Modelica.SIunits.Area AFloSou=flo.sou.AFlo ;
parameter Modelica.SIunits.Area AFloNor=flo.nor.AFlo ;
parameter Modelica.SIunits.Area AFloEas=flo.eas.AFlo ;
parameter Modelica.SIunits.Area AFloWes=flo.wes.AFlo ;
parameter Modelica.SIunits.Area AFlo[numZon]={flo.cor.AFlo,flo.sou.AFlo,flo.eas.AFlo,
flo.nor.AFlo,flo.wes.AFlo} ;
final parameter Modelica.SIunits.Area ATot=
sum(AFlo) ;
constant Real conv=1.2/3600 ;
parameter Modelica.SIunits.MassFlowRate mCor_flow_nominal=6*VRooCor*conv ;
parameter Modelica.SIunits.MassFlowRate mSou_flow_nominal=6*VRooSou*conv ;
parameter Modelica.SIunits.MassFlowRate mEas_flow_nominal=9*VRooEas*conv ;
parameter Modelica.SIunits.MassFlowRate mNor_flow_nominal=6*VRooNor*conv ;
parameter Modelica.SIunits.MassFlowRate mWes_flow_nominal=7*VRooWes*conv ;
parameter Modelica.SIunits.MassFlowRate m_flow_nominal=0.7*(mCor_flow_nominal +
mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal +
mWes_flow_nominal) ;
parameter Modelica.SIunits.Angle lat=41.98*3.14159/180 ;
parameter Modelica.SIunits.Temperature THeaOn=293.15 ;
parameter Modelica.SIunits.Temperature THeaOff=285.15 ;
parameter Modelica.SIunits.Temperature TCooOn=297.15 ;
parameter Modelica.SIunits.Temperature TCooOff=303.15 ;
parameter Modelica.SIunits.PressureDifference dpBuiStaSet(min=0) = 12 ;
parameter Real yFanMin=0.1 ;
parameter Boolean allowFlowReversal=true ;
parameter Boolean use_windPressure=true ;
parameter Boolean sampleModel=true ;
Buildings.Fluid.Sources.Outside amb(
redeclare package Medium = MediumA,
nPorts=3) ;
Buildings.Fluid.HeatExchangers.DryEffectivenessNTU heaCoi(
redeclare package Medium1 = MediumW,
redeclare package Medium2 = MediumA,
m1_flow_nominal=m_flow_nominal*1000*(10 - (-20))/4200/10,
m2_flow_nominal=m_flow_nominal,
configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow,
Q_flow_nominal=m_flow_nominal*1006*(16.7 - 8.5),
dp1_nominal=0,
dp2_nominal=200 + 200 + 100 + 40,
allowFlowReversal1=false,
allowFlowReversal2=allowFlowReversal,
T_a1_nominal=318.15,
T_a2_nominal=281.65) ;
Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi(
UA_nominal=3*m_flow_nominal*1000*15/
Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
T_a1=26.2,
T_b1=12.8,
T_a2=6,
T_b2=16),
redeclare package Medium1 = MediumW,
redeclare package Medium2 = MediumA,
m1_flow_nominal=m_flow_nominal*1000*15/4200/10,
m2_flow_nominal=m_flow_nominal,
dp2_nominal=0,
dp1_nominal=0,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
allowFlowReversal1=false,
allowFlowReversal2=allowFlowReversal) ;
Buildings.Fluid.FixedResistances.PressureDrop dpRetDuc(
m_flow_nominal=m_flow_nominal,
redeclare package Medium = MediumA,
allowFlowReversal=allowFlowReversal,
dp_nominal=40) ;
Buildings.Fluid.Movers.SpeedControlled_y fanSup(
redeclare package Medium = MediumA,
per(pressure(V_flow={0,m_flow_nominal/1.2*2}, dp=2*{780 + 10 + dpBuiStaSet,0})),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) ;
Buildings.Fluid.Sensors.VolumeFlowRate senSupFlo(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal) ;
Buildings.Fluid.Sensors.VolumeFlowRate senRetFlo(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal) ;
Buildings.Fluid.Sources.FixedBoundary sinHea(
redeclare package Medium = MediumW,
p=300000,
T=318.15,
nPorts=1) ;
Buildings.Fluid.Sources.FixedBoundary sinCoo(
redeclare package Medium = MediumW,
p=300000,
T=285.15,
nPorts=1) ;
Modelica.Blocks.Routing.RealPassThrough TOut(y(
final quantity="ThermodynamicTemperature",
final unit="K",
displayUnit="degC",
min=0));
Buildings.Fluid.Sensors.TemperatureTwoPort TSup(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal,
allowFlowReversal=allowFlowReversal);
Buildings.Fluid.Sensors.RelativePressure dpDisSupFan(
redeclare package Medium
= MediumA) ;
Buildings.Controls.SetPoints.OccupancySchedule occSch(occupancy=3600*{6,19}) ;
Buildings.Utilities.Math.Min min(nin=5) ;
Buildings.Utilities.Math.Average ave(nin=5) ;
Buildings.Fluid.Sources.MassFlowSource_T souCoo(
redeclare package Medium = MediumW,
T=279.15,
nPorts=1,
use_m_flow_in=true) ;
Buildings.Fluid.Sensors.TemperatureTwoPort TRet(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Buildings.Fluid.Sensors.TemperatureTwoPort TMix(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Buildings.Fluid.Sources.MassFlowSource_T souHea(
redeclare package Medium = MediumW,
T=318.15,
use_m_flow_in=true,
nPorts=1) ;
Buildings.Fluid.Sensors.VolumeFlowRate VOut1(
redeclare package Medium = MediumA,
m_flow_nominal=m_flow_nominal) ;
Buildings.Examples.VAVReheat.ThermalZones.VAVBranch cor(
redeclare package MediumA = MediumA,
redeclare package MediumW = MediumW,
m_flow_nominal=mCor_flow_nominal,
VRoo=VRooCor,
allowFlowReversal=allowFlowReversal) ;
Buildings.Examples.VAVReheat.ThermalZones.VAVBranch sou(
redeclare package MediumA = MediumA,
redeclare package MediumW = MediumW,
m_flow_nominal=mSou_flow_nominal,
VRoo=VRooSou,
allowFlowReversal=allowFlowReversal) ;
Buildings.Examples.VAVReheat.ThermalZones.VAVBranch eas(
redeclare package MediumA = MediumA,
redeclare package MediumW = MediumW,
m_flow_nominal=mEas_flow_nominal,
VRoo=VRooEas,
allowFlowReversal=allowFlowReversal) ;
Buildings.Examples.VAVReheat.ThermalZones.VAVBranch nor(
redeclare package MediumA = MediumA,
redeclare package MediumW = MediumW,
m_flow_nominal=mNor_flow_nominal,
VRoo=VRooNor,
allowFlowReversal=allowFlowReversal) ;
Buildings.Examples.VAVReheat.ThermalZones.VAVBranch wes(
redeclare package MediumA = MediumA,
redeclare package MediumW = MediumW,
m_flow_nominal=mWes_flow_nominal,
VRoo=VRooWes,
allowFlowReversal=allowFlowReversal) ;
Buildings.Fluid.FixedResistances.Junction splRetRoo1(
redeclare package Medium = MediumA,
m_flow_nominal={m_flow_nominal,m_flow_nominal - mCor_flow_nominal,
mCor_flow_nominal},
from_dp=false,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering) ;
Buildings.Fluid.FixedResistances.Junction splRetSou(
redeclare package Medium = MediumA,
m_flow_nominal={mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal +
mWes_flow_nominal,mEas_flow_nominal + mNor_flow_nominal +
mWes_flow_nominal,mSou_flow_nominal},
from_dp=false,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering) ;
Buildings.Fluid.FixedResistances.Junction splRetEas(
redeclare package Medium = MediumA,
m_flow_nominal={mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,
mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal},
from_dp=false,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering) ;
Buildings.Fluid.FixedResistances.Junction splRetNor(
redeclare package Medium = MediumA,
m_flow_nominal={mNor_flow_nominal + mWes_flow_nominal,mWes_flow_nominal,
mNor_flow_nominal},
from_dp=false,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering) ;
Buildings.Fluid.FixedResistances.Junction splSupRoo1(
redeclare package Medium = MediumA,
m_flow_nominal={m_flow_nominal,m_flow_nominal - mCor_flow_nominal,
mCor_flow_nominal},
from_dp=true,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving) ;
Buildings.Fluid.FixedResistances.Junction splSupSou(
redeclare package Medium = MediumA,
m_flow_nominal={mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal +
mWes_flow_nominal,mEas_flow_nominal + mNor_flow_nominal +
mWes_flow_nominal,mSou_flow_nominal},
from_dp=true,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving) ;
Buildings.Fluid.FixedResistances.Junction splSupEas(
redeclare package Medium = MediumA,
m_flow_nominal={mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,
mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal},
from_dp=true,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving) ;
Buildings.Fluid.FixedResistances.Junction splSupNor(
redeclare package Medium = MediumA,
m_flow_nominal={mNor_flow_nominal + mWes_flow_nominal,mWes_flow_nominal,
mNor_flow_nominal},
from_dp=true,
linearized=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
dp_nominal(
each displayUnit="Pa") = {0,0,0},
portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving) ;
BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam="modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos");
BoundaryConditions.WeatherData.Bus weaBus ;
ThermalZones.Floor flo(
redeclare final package Medium = MediumA,
final lat=lat,
final use_windPressure=use_windPressure,
final sampleModel=sampleModel) ;
Modelica.Blocks.Routing.DeMultiplex5 TRooAir(u(
each unit="K",
each
displayUnit="degC")) ;
Fluid.Sensors.TemperatureTwoPort TSupCor(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mCor_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.TemperatureTwoPort TSupSou(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mSou_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.TemperatureTwoPort TSupEas(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mEas_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.TemperatureTwoPort TSupNor(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mNor_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.TemperatureTwoPort TSupWes(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mWes_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.VolumeFlowRate VSupCor_flow(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mCor_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.VolumeFlowRate VSupSou_flow(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mSou_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.VolumeFlowRate VSupEas_flow(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mEas_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.VolumeFlowRate VSupNor_flow(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mNor_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Fluid.Sensors.VolumeFlowRate VSupWes_flow(
redeclare package Medium = MediumA,
initType=Modelica.Blocks.Types.Init.InitialState,
m_flow_nominal=mWes_flow_nominal,
allowFlowReversal=allowFlowReversal) ;
Buildings.Examples.VAVReheat.BaseClasses.MixingBox eco(
redeclare package Medium = MediumA,
mOut_flow_nominal=m_flow_nominal,
dpOut_nominal=10,
mRec_flow_nominal=m_flow_nominal,
dpRec_nominal=10,
mExh_flow_nominal=m_flow_nominal,
dpExh_nominal=10,
from_dp=false) ;
Results res(
final A=ATot,
PFan=fanSup.P + 0,
PHea=heaCoi.Q2_flow + cor.terHea.Q1_flow + nor.terHea.Q1_flow + wes.terHea.Q1_flow
+ eas.terHea.Q1_flow + sou.terHea.Q1_flow,
PCooSen=cooCoi.QSen2_flow,
PCooLat=cooCoi.QLat2_flow) ;
protected
model Results
parameter Modelica.SIunits.Area A ;
input Modelica.SIunits.Power PFan ;
input Modelica.SIunits.Power PHea ;
input Modelica.SIunits.Power PCooSen ;
input Modelica.SIunits.Power PCooLat ;
Real EFan(
unit="J/m2",
start=0,
nominal=1E5,
fixed=true) ;
Real EHea(
unit="J/m2",
start=0,
nominal=1E5,
fixed=true) ;
Real ECooSen(
unit="J/m2",
start=0,
nominal=1E5,
fixed=true) ;
Real ECooLat(
unit="J/m2",
start=0,
nominal=1E5,
fixed=true) ;
Real ECoo(unit="J/m2") ;
equation
A*
der(EFan) = PFan;
A*
der(EHea) = PHea;
A*
der(ECooSen) = PCooSen;
A*
der(ECooLat) = PCooLat;
ECoo = ECooSen + ECooLat;
end Results;
public
Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoi(k=m_flow_nominal*1000*40/
4200/10) ;
Buildings.Controls.OBC.CDL.Continuous.Gain gaiCooCoi(k=m_flow_nominal*1000*15/
4200/10) ;
Buildings.Controls.OBC.CDL.Logical.OnOffController freSta(bandwidth=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant freStaTSetPoi(k=273.15 +
3) ;
equation
connect(fanSup.port_b, dpDisSupFan.port_a);
connect(TSup.port_a, fanSup.port_b);
connect(amb.ports[1], VOut1.port_a);
connect(splRetRoo1.port_1, dpRetDuc.port_a);
connect(splRetNor.port_1, splRetEas.port_2);
connect(splRetEas.port_1, splRetSou.port_2);
connect(splRetSou.port_1, splRetRoo1.port_2);
connect(splSupRoo1.port_3, cor.port_a);
connect(splSupRoo1.port_2, splSupSou.port_1);
connect(splSupSou.port_3, sou.port_a);
connect(splSupSou.port_2, splSupEas.port_1);
connect(splSupEas.port_3, eas.port_a);
connect(splSupEas.port_2, splSupNor.port_1);
connect(splSupNor.port_3, nor.port_a);
connect(splSupNor.port_2, wes.port_a);
connect(cooCoi.port_b1, sinCoo.ports[1]);
connect(weaDat.weaBus, weaBus);
connect(weaBus.TDryBul, TOut.u);
connect(amb.weaBus, weaBus);
connect(splRetRoo1.port_3, flo.portsCor[2]);
connect(splRetSou.port_3, flo.portsSou[2]);
connect(splRetEas.port_3, flo.portsEas[2]);
connect(splRetNor.port_3, flo.portsNor[2]);
connect(splRetNor.port_2, flo.portsWes[2]);
connect(weaBus, flo.weaBus);
connect(flo.TRooAir, min.u);
connect(flo.TRooAir, ave.u);
connect(TRooAir.u, flo.TRooAir);
connect(cooCoi.port_b2, fanSup.port_a);
connect(cor.port_b, TSupCor.port_a);
connect(sou.port_b, TSupSou.port_a);
connect(eas.port_b, TSupEas.port_a);
connect(nor.port_b, TSupNor.port_a);
connect(wes.port_b, TSupWes.port_a);
connect(TSupCor.port_b, VSupCor_flow.port_a);
connect(TSupSou.port_b, VSupSou_flow.port_a);
connect(TSupEas.port_b, VSupEas_flow.port_a);
connect(TSupNor.port_b, VSupNor_flow.port_a);
connect(TSupWes.port_b, VSupWes_flow.port_a);
connect(VSupCor_flow.port_b, flo.portsCor[1]);
connect(VSupSou_flow.port_b, flo.portsSou[1]);
connect(VSupEas_flow.port_b, flo.portsEas[1]);
connect(VSupNor_flow.port_b, flo.portsNor[1]);
connect(VSupWes_flow.port_b, flo.portsWes[1]);
connect(VOut1.port_b, eco.port_Out);
connect(eco.port_Sup, TMix.port_a);
connect(eco.port_Exh, amb.ports[2]);
connect(eco.port_Ret, TRet.port_b);
connect(senRetFlo.port_a, dpRetDuc.port_b);
connect(TSup.port_b, senSupFlo.port_a);
connect(senSupFlo.port_b, splSupRoo1.port_1);
connect(cooCoi.port_a1, souCoo.ports[1]);
connect(gaiHeaCoi.y, souHea.m_flow_in);
connect(gaiCooCoi.y, souCoo.m_flow_in);
connect(dpDisSupFan.port_b, amb.ports[3]);
connect(senRetFlo.port_b, TRet.port_a);
connect(freStaTSetPoi.y, freSta.reference);
connect(freSta.u, TMix.T);
connect(TMix.port_b, heaCoi.port_a2);
connect(heaCoi.port_b2, cooCoi.port_a2);
connect(souHea.ports[1], heaCoi.port_a1);
connect(heaCoi.port_b1, sinHea.ports[1]);
end PartialOpenLoop;