Example model of liquid cooled data center that is cooled with an economizer and a chiller.
The figure below shows the schematic diagram.
The IT load is cooled by a propylene glycol loop, which exchanges
heat through the CDU with a chilled water supply.
A PI controller regulates the chilled water flow rate through the control
valve in the CDU in order to track the propylene glycol temperature that is sent
to the IT rack.
The chilled water is cooled by an economizer -- if the temperatures permit --
and if the water temperature after the economizer is higher than a temperature set point,
the chiller is enabled. The chiller tracks a leaving water set point temperature.
Note that the control is quite simple, and multiple parallel units, as is common in data centers,
are simplified here to one component.
model ChillerWSE
extends Modelica.Icons.Example;
package MediumAir =
Buildings.Media.Air(T_default=TDryBul_nominal) ;
package MediumChi =
Buildings.Media.Water ;
replaceable package MediumTow =
Buildings.Media.Antifreeze.PropyleneGlycolWater(
property_T=TTowSup_nominal,
X_a=
Buildings.Media.Antifreeze.Functions.PropyleneGlycolWater.volumeToMassFraction(
phi=0.4,
T=293.15))
constrainedby Modelica.Media.Interfaces.PartialSimpleMedium(T_default=TTowSup_nominal) ;
replaceable package MediumRac =
Buildings.Media.Antifreeze.PropyleneGlycolWater(
property_T=TRacSup_nominal,
X_a=
Buildings.Media.Antifreeze.Functions.PropyleneGlycolWater.volumeToMassFraction(
phi=0.25,
T=293.15))
constrainedby Modelica.Media.Interfaces.PartialSimpleMedium(T_default=TRacSup_nominal)
;
parameter Modelica.Units.SI.Power PRac = 1E6
;
parameter Real fraWSE = 0.6 ;
parameter Real fraChi = 1-fraWSE ;
constant Modelica.Units.SI.TemperatureDifference dTRac_nominal(max=0) = -5
;
constant Modelica.Units.SI.TemperatureDifference dTPla_nominal(max=0) = -5
;
constant Modelica.Units.SI.TemperatureDifference dTTow_nominal(max=0) = dTPla_nominal
;
constant Modelica.Units.SI.Temperature TRacSup_nominal=273.15 + 45
;
constant Modelica.Units.SI.Temperature TRacRet_nominal=TRacSup_nominal-dTRac_nominal
;
constant Modelica.Units.SI.TemperatureDifference TApp_nominal = 3 ;
constant Modelica.Units.SI.Temperature TPlaSup_nominal=TRacSup_nominal - TApp_nominal
;
constant Modelica.Units.SI.Temperature TPlaRet_nominal=TPlaSup_nominal - dTPla_nominal
;
constant Modelica.Units.SI.Temperature TTowRet_nominal=TPlaSup_nominal - TApp_nominal
;
constant Modelica.Units.SI.Temperature TTowSup_nominal=TTowRet_nominal - dTTow_nominal
;
constant Modelica.Units.SI.Temperature TDryBul_nominal=273.15 + 36
;
parameter Modelica.Units.SI.MassFlowRate mRac_flow_nominal=PRac/(
TRacRet_nominal - TRacSup_nominal)/MediumRac.cp_const
;
parameter Modelica.Units.SI.MassFlowRate mPla_flow_nominal=PRac/(
TPlaRet_nominal -TPlaSup_nominal) /cpChi_default
;
parameter Modelica.Units.SI.PressureDifference dpVal_nominal(
displayUnit="Pa")=20000
;
parameter Modelica.Units.SI.PressureDifference dpHexChi_nominal=80000
;
parameter Modelica.Units.SI.PressureDifference dPRac_nominal = 60000
;
parameter Buildings.Fluid.DataCenters.Racks.Liquid.Data.OCP_1kW_OAM_PG25
datRac(PIT_nominal=PRac, m_flow_nominal=mRac_flow_nominal)
;
parameter Real COPc_nominal=5 ;
parameter Real epsWSE_nominal(min=0.5, max=0.95) = QWSE_flow_nominal /
(
min(mWSEPla_flow_nominal*cpChi_default, mWSETow_flow_nominal*cpTow_default)*(TPlaRet_nominal-TTowRet_nominal))
;
final parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal =
(1-fraWSE) * PRac * (1/COPc_nominal+1)
;
final parameter Modelica.Units.SI.HeatFlowRate QWSE_flow_nominal = fraWSE*PRac
;
final parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal(min=0)=mPla_flow_nominal
;
final parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal(min=0)=-QCon_flow_nominal/dTTow_nominal/cpTow_default
;
final parameter Modelica.Units.SI.MassFlowRate mWSETow_flow_nominal(min=0)=-QWSE_flow_nominal/dTTow_nominal/cpTow_default
;
final parameter Modelica.Units.SI.MassFlowRate mWSEPla_flow_nominal(min=0)=-QWSE_flow_nominal/dTPla_nominal/cpChi_default
;
parameter Fluid.DataCenters.CDUs.LiquidToLiquid.Data.Generic_2MW datCDU(
TApp_nominal=TApp_nominal,
TRacOut_nominal=TRacSup_nominal,
medPla=Buildings.Fluid.DataCenters.CDUs.Types.Media.Water,
phiGlyPla=0,
medRac=Buildings.Fluid.DataCenters.CDUs.Types.Media.PropyleneGlycol,
phiGlyRac=0.25,
Q_flow_nominal=-PRac,
mPla_flow_nominal=mPla_flow_nominal,
mRac_flow_nominal=mRac_flow_nominal,
dpHexPla_nominal=dpHexChi_nominal,
dpPumpExt_nominal=datRac.dp_nominal + valRac.dp_nominal + pipRacIn.dp_nominal
+ pipRacOut.dp_nominal)
;
parameter Fluid.HeatExchangers.CoolingTowers.Data.DryCooler.Generic datCooTow(
Q_flow_nominal=-PRac,
TCooIn_nominal=TTowSup_nominal,
TCooOut_nominal=TTowRet_nominal,
dp_nominal=80000,
ratCooAir_nominal=cpAir_default/cpTow_default,
TAirIn_nominal=TDryBul_nominal)
;
Controls.OBC.CDL.Reals.Sources.Constant uti(k=0.6)
;
Buildings.Fluid.DataCenters.Racks.Liquid.ColdPlateR_P rac(
redeclare package Medium =
MediumRac,
allowFlowReversal=false,
dat=datRac,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.Fluid.Sources.Boundary_pT bou(
redeclare package Medium = MediumChi,
p(displayUnit="Pa") = 300000,
nPorts=1) ;
Buildings.Fluid.Sensors.TemperatureTwoPort senTCDU_a(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
m_flow_nominal=mPla_flow_nominal,
tau=0) ;
Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.CDU_epsNTU cdu(
redeclare package MediumPla = MediumChi,
redeclare package MediumRac =
MediumRac,
show_T=true,
final dat=datCDU,
allowFlowReversalPla=false,
allowFlowReversalRac=false,
yPum_start=1) ;
Fluid.Sensors.TemperatureTwoPort senTCDU_b(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
m_flow_nominal=mPla_flow_nominal,
tau=0) ;
Fluid.Sensors.TemperatureTwoPort senTRac_a(
redeclare package Medium =
MediumRac,
allowFlowReversal=false,
m_flow_nominal=mRac_flow_nominal,
tau=0) ;
Fluid.Sensors.TemperatureTwoPort senTRac_b(
redeclare package Medium =
MediumRac,
allowFlowReversal=false,
m_flow_nominal=mRac_flow_nominal,
tau=0) ;
Controls.OBC.CDL.Reals.Sources.Constant dpSet(k=datCDU.dpPumpExt_nominal)
;
Controls.OBC.CDL.Reals.Sources.Constant TSetRacIn(y(
final unit="K",
displayUnit="degC"), k(
final unit="K",
displayUnit="degC") = TRacSup_nominal)
;
Fluid.HeatExchangers.ConstantEffectiveness wse(
redeclare package Medium1 =
MediumTow,
redeclare package Medium2 = MediumChi,
m1_flow_nominal=mWSETow_flow_nominal,
m2_flow_nominal=mWSEPla_flow_nominal,
show_T=true,
eps=epsWSE_nominal,
dp2_nominal=dpHexChi_nominal,
dp1_nominal=dpHexChi_nominal)
;
Fluid.Chillers.Carnot_TEva chi(
redeclare package Medium1 =
MediumTow,
redeclare package Medium2 = MediumChi,
m1_flow_nominal=mCon_flow_nominal,
m2_flow_nominal=mEva_flow_nominal,
show_T=true,
QEva_flow_nominal=-(1-fraWSE)*PRac,
dTEva_nominal=TPlaSup_nominal -TPlaRet_nominal,
dTCon_nominal=-dTTow_nominal,
dp2_nominal=dpHexChi_nominal,
dp1_nominal=dpHexChi_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) ;
Fluid.HeatExchangers.CoolingTowers.DryCooler cooTow(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
dat=datCooTow)
;
BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
ModelicaServices.ExternalReferences.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"),
computeWetBulbTemperature=false) ;
BoundaryConditions.WeatherData.Bus weaBus ;
Buildings.Fluid.Movers.Preconfigured.SpeedControlled_y pumEva(
redeclare package Medium = MediumChi,
addPowerToMedium=false,
m_flow_nominal=mEva_flow_nominal,
dp_nominal=dpHexChi_nominal) ;
Buildings.Fluid.Movers.Preconfigured.SpeedControlled_y pumWSEChi(
redeclare package Medium = MediumChi,
addPowerToMedium=false,
m_flow_nominal=mWSEPla_flow_nominal,
dp_nominal=dpHexChi_nominal) ;
Buildings.Fluid.Movers.Preconfigured.SpeedControlled_y pumTow(
redeclare package Medium =
MediumTow,
allowFlowReversal=false,
addPowerToMedium=false,
riseTime=5,
m_flow_nominal=mWSETow_flow_nominal,
dp_nominal=dpHexChi_nominal + pipTowIn.dp_nominal + pipTowOut.dp_nominal)
;
Fluid.Sensors.TemperatureTwoPort senTWSE_b2(
redeclare package Medium = MediumChi,
m_flow_nominal=mWSEPla_flow_nominal,
tau=0) ;
Fluid.Movers.Preconfigured.SpeedControlled_y pumCon(
redeclare package Medium =
MediumTow,
addPowerToMedium=false,
m_flow_nominal=mCon_flow_nominal,
dp_nominal=dpHexChi_nominal) ;
Fluid.Sensors.TemperatureTwoPort senTTow_b(
redeclare package Medium =
MediumTow,
allowFlowReversal=false,
m_flow_nominal=mWSETow_flow_nominal,
tau=0) ;
Fluid.FixedResistances.Junction jun1(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mWSETow_flow_nominal*{1,1,1},
dp_nominal={0,0,0});
Fluid.FixedResistances.Junction jun2(
redeclare package Medium = MediumChi,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mPla_flow_nominal*{1,1,fraWSE},
dp_nominal={0,0,0});
Fluid.FixedResistances.Junction jun3(
redeclare package Medium = MediumChi,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mPla_flow_nominal*{1,1,fraWSE},
dp_nominal={0,0,0});
Fluid.Sensors.TemperatureTwoPort senTEvaIn(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
m_flow_nominal=mPla_flow_nominal,
tau=0) ;
Fluid.FixedResistances.Junction jun4(
redeclare package Medium = MediumChi,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mPla_flow_nominal*{1,1,fraChi},
dp_nominal={0,0,0});
Fluid.FixedResistances.Junction jun5(
redeclare package Medium = MediumChi,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mPla_flow_nominal*{1,1,fraChi},
dp_nominal={0,0,0});
Fluid.Sensors.TemperatureTwoPort senTEvaOut(
redeclare package Medium = MediumChi,
m_flow_nominal=mEva_flow_nominal,
tau=0) ;
Fluid.Sensors.TemperatureTwoPort senTChi_b1(
redeclare package Medium =
MediumTow,
m_flow_nominal=mCon_flow_nominal,
tau=0) ;
Fluid.Sensors.TemperatureTwoPort senTWSE_b1(
redeclare package Medium =
MediumTow,
m_flow_nominal=mWSETow_flow_nominal,
tau=0) ;
Buildings.Fluid.Movers.Preconfigured.SpeedControlled_y pumWSECW(
redeclare package Medium =
MediumTow,
addPowerToMedium=false,
m_flow_nominal=mWSETow_flow_nominal,
dp_nominal=dpHexChi_nominal)
;
Fluid.Movers.Preconfigured.FlowControlled_dp pumCDU(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
addPowerToMedium=false,
use_riseTime=false,
m_flow_nominal=mPla_flow_nominal,
dp_nominal=dpHexChi_nominal + datCDU.dpValve_nominal + pipCDUIn.dp_nominal + pipCDUOut.dp_nominal)
;
Fluid.FixedResistances.Junction jun6(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mWSETow_flow_nominal*{1,1,1},
dp_nominal={0,0,0});
Fluid.FixedResistances.Junction jun7(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mWSETow_flow_nominal*{1,1,1},
dp_nominal={0,0,0});
Fluid.FixedResistances.Junction jun8(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mWSETow_flow_nominal*{1,1,1},
dp_nominal={0,0,0});
Controls.OBC.CDL.Reals.PID conTow(
k=1,
yMax=1,
yMin=0.1,
u_s(
final unit="K", displayUnit="degC"),
u_m(
final unit="K", displayUnit="degC"),
controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
Ti=120,
r=1,
xi_start=1,
reverseActing=false) ;
Controls.OBC.CDL.Reals.Sources.Constant TSetEva(y(
final unit="K", displayUnit
="degC"), k(
final unit="K",
displayUnit="degC") =TPlaSup_nominal)
;
Controls.OBC.CDL.Reals.Sources.Constant pSetChiWatPum(
y(
final unit="Pa"), k(
final unit="Pa") = pumCDU.dp_nominal)
;
Controls.OBC.CDL.Reals.Hysteresis hysChi(
uLow=0,
uHigh=1,
u(
final unit="K")) ;
Controls.OBC.CDL.Conversions.BooleanToReal yPumChi(y(
final unit="1"),
realTrue(
final unit="1"))
;
Fluid.Sources.Boundary_pT bou1(
redeclare package Medium =
MediumTow,
p(displayUnit="Pa") = 300000,
nPorts=1) ;
Controls.OBC.CDL.Reals.AddParameter TOffSet(
p=-1,
y(
final unit="K", displayUnit="degC")) ;
Modelica.Blocks.Sources.RealExpression PFan(y(
final unit="W") = cooTow.PFan)
;
Modelica.Blocks.Sources.RealExpression PPum(y(
final unit="W") = cdu.P +
pumWSEChi.P + pumWSECW.P + pumEva.P + pumCon.P + pumTow.P)
;
Modelica.Blocks.Sources.RealExpression PChi(y(
final unit="W") = chi.P)
;
Modelica.Blocks.Sources.RealExpression PIT(y(
final unit="W") = rac.P)
;
BaseClasses.ElectricalEnergyMeter EFan ;
BaseClasses.ElectricalEnergyMeter EPum ;
BaseClasses.ElectricalEnergyMeter EChi ;
BaseClasses.ElectricalEnergyMeter EPIT(y_start=1E-10)
;
Modelica.Blocks.Math.MultiSum EFac(nu=4) ;
Modelica.Blocks.Math.Division PUE
;
Fluid.Sensors.TemperatureTwoPort senTWSEMix(
redeclare package Medium =
MediumTow,
allowFlowReversal=false,
m_flow_nominal=mWSETow_flow_nominal,
tau=0) ;
Fluid.Actuators.Valves.TwoWayLinear valByp(
redeclare package Medium =
MediumTow,
m_flow_nominal=mCon_flow_nominal,
final dpValve_nominal=dpVal_nominal,
strokeTime=30) ;
Fluid.Actuators.Valves.TwoWayLinear valThr(
redeclare package Medium =
MediumTow,
m_flow_nominal=mCon_flow_nominal,
final dpValve_nominal=dpVal_nominal,
strokeTime=30,
y_start=0) ;
Fluid.FixedResistances.Junction jun9(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mCon_flow_nominal*{1,1,1},
dp_nominal={0,0,0}) ;
Fluid.FixedResistances.Junction jun10(
redeclare package Medium =
MediumTow,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=mCon_flow_nominal*{1,1,1},
dp_nominal={0,0,0}) ;
Buildings.Fluid.Sensors.TemperatureTwoPort senTChi_a1(
redeclare package Medium =
MediumTow,
m_flow_nominal=mCon_flow_nominal,
tau=0) ;
Controls.OBC.CDL.Reals.PIDWithReset conPIDCon(
Ti=60,
r=1,
reverseActing=false,
u_s(
final unit="K",
displayUnit="degC"),
u_m(
final unit="K",
displayUnit="degC"))
;
Controls.OBC.CDL.Reals.AddParameter TLifMin(p(
unit="K",
displayUnit="K") = 10,
u(
final unit="K",
displayUnit="degC"),
y(
final unit="K",
displayUnit="degC"))
;
Controls.OBC.CDL.Reals.MultiplyByParameter invValSig(k=-1)
;
Controls.OBC.CDL.Reals.AddParameter invValSig2(p=1)
;
Fluid.Sensors.TemperatureTwoPort senTTow_a(
redeclare package Medium =
MediumTow,
allowFlowReversal=false,
m_flow_nominal=mWSETow_flow_nominal,
tau=0) ;
Controls.OBC.CDL.Reals.AddParameter TOffSetWSE(p=-1)
;
Fluid.Sensors.MassFlowRate senMasFloByEco(
redeclare package Medium =
MediumChi) ;
Controls.OBC.CDL.Reals.PID conEcoPla(
k=1,
yMin=0.1,
u_s(
final unit="kg/s"),
u_m(
final unit="kg/s"),
controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
Ti=60,
r=mWSEPla_flow_nominal,
xi_start=1,
reverseActing=false) ;
Controls.OBC.CDL.Reals.Sources.Constant zer(
k = 0) ;
Fluid.Sensors.MassFlowRate senMasFlo3(
redeclare package Medium =
MediumTow)
;
Controls.OBC.CDL.Reals.Limiter yPumTow(uMax=1, uMin=0.1)
;
Controls.OBC.CDL.Reals.Sources.Constant zer1(k=0)
;
Controls.OBC.CDL.Reals.PID conEcoTow(
k=1,
yMin=0.1,
u_s(
final unit="kg/s"),
u_m(
final unit="kg/s"),
controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
Ti=60,
r=mWSETow_flow_nominal,
xi_start=1,
reverseActing=false) ;
Controls.OBC.CDL.Reals.Sources.Constant TSetTowRet(y(
final unit="K",
displayUnit="degC"), k(
final unit="K",
displayUnit="degC") = TTowRet_nominal)
;
Controls.OBC.CDL.Reals.PID conPumTow(
k=1,
yMax=2,
yMin=0,
u_s(
final unit="K", displayUnit="degC"),
u_m(
final unit="K", displayUnit="degC"),
controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
Ti=120,
r=1,
xi_start=1,
reverseActing=false) ;
Controls.OBC.CDL.Reals.Subtract errTFre(
u1(
final unit="K", displayUnit="degC"),
u2(
final unit="K", displayUnit="degC"))
;
protected
final parameter MediumAir.ThermodynamicState staAir_default=
MediumAir.setState_pTX(
T=MediumAir.T_default,
p=MediumAir.p_default,
X=MediumAir.X_default[1:MediumAir.nXi]) ;
final parameter MediumTow.ThermodynamicState staTow_default=
MediumTow.setState_pTX(
T=MediumTow.T_default,
p=MediumTow.p_default,
X=MediumTow.X_default[1:MediumTow.nXi]) ;
final parameter MediumChi.ThermodynamicState staChi_default=
MediumChi.setState_pTX(
T=MediumChi.T_default,
p=MediumChi.p_default,
X=MediumChi.X_default[1:MediumChi.nXi]) ;
public
Controls.OBC.CDL.Reals.Limiter yFanTow(uMax=1, uMin=0.1)
;
Controls.OBC.CDL.Reals.Max yTowFan ;
Fluid.Actuators.Valves.TwoWayLinear valRac(
redeclare package Medium =
MediumRac,
m_flow_nominal=mRac_flow_nominal,
final dpValve_nominal=dpVal_nominal,
strokeTime=30,
y_start=0) ;
Controls.OBC.CDL.Reals.Sources.Constant TSetRacOut(y(
final unit="K",
displayUnit="degC"), k(
final unit="K",
displayUnit="degC") = TRacRet_nominal)
;
Controls.OBC.CDL.Reals.PID conVal(
Ti=60,
yMin=0.05,
u_s(
final unit="K", displayUnit="degC"),
u_m(
final unit="K", displayUnit="degC"),
final controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI,
final reverseActing=false)
;
Modelica.Blocks.Math.Gain PITIn(
k(
final unit="W",
min=0) = datRac.PIT_nominal,
u(
final unit="1"),
y(
final unit="W")) ;
replaceable model Pipe =
Fluid.FixedResistances.HydraulicDiameter
constrainedby Fluid.FixedResistances.HydraulicDiameter
(
show_T=true,
v_nominal=5,
roughness=0.015E-3,
length=20,
fac=2)
;
Pipe pipTowIn(
redeclare package Medium =
MediumTow,
m_flow_nominal=mWSETow_flow_nominal) ;
Pipe pipTowOut(
redeclare package Medium =
MediumTow,
m_flow_nominal=mWSETow_flow_nominal) ;
Pipe pipCDUIn(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
m_flow_nominal=mPla_flow_nominal) ;
Pipe pipCDUOut(
redeclare package Medium = MediumChi,
allowFlowReversal=false,
m_flow_nominal=mPla_flow_nominal) ;
Pipe pipRacIn(
redeclare package Medium =
MediumRac,
allowFlowReversal=false,
m_flow_nominal=mRac_flow_nominal) ;
Pipe pipRacOut(
redeclare package Medium =
MediumRac,
allowFlowReversal=false,
m_flow_nominal=mRac_flow_nominal) ;
protected
parameter Modelica.Units.SI.SpecificHeatCapacity cpAir_default=
MediumAir.specificHeatCapacityCp(staAir_default)
;
parameter Modelica.Units.SI.SpecificHeatCapacity cpTow_default=
MediumTow.specificHeatCapacityCp(staTow_default)
;
parameter Modelica.Units.SI.SpecificHeatCapacity cpChi_default=
MediumChi.specificHeatCapacityCp(staChi_default)
;
equation
connect(senTCDU_a.port_b, cdu.port_aPla);
connect(cdu.port_bPla, senTCDU_b.port_a);
connect(rac.port_b, senTRac_b.port_a);
connect(pumCDU.port_b, jun3.port_1);
connect(jun2.port_2, senTEvaIn.port_a);
connect(senTEvaIn.port_b, jun4.port_1);
connect(jun4.port_2, jun5.port_1);
connect(jun4.port_3,pumEva. port_a);
connect(pumEva.port_b, chi.port_a2);
connect(chi.port_b2,senTEvaOut. port_a);
connect(senTEvaOut.port_b, jun5.port_3);
connect(jun3.port_3, pumWSEChi.port_a);
connect(pumWSEChi.port_b, wse.port_a2);
connect(wse.port_b2, senTWSE_b2.port_a);
connect(senTWSE_b2.port_b, jun2.port_3);
connect(wse.port_b1, senTWSE_b1.port_a);
connect(wse.port_a1, pumWSECW.port_b);
connect(chi.port_b1, senTChi_b1.port_a);
connect(jun1.port_3, pumWSECW.port_a);
connect(jun8.port_1, jun7.port_2);
connect(cooTow.port_b, senTTow_b.port_a);
connect(weaBus, weaDat.weaBus);
connect(pSetChiWatPum.y, pumCDU.dp_in);
connect(hysChi.y,yPumChi. u);
connect(TOffSet.u, TSetEva.y);
connect(PFan.y, EFan.u);
connect(PPum.y, EPum.u);
connect(PChi.y, EChi.u);
connect(PIT.y, EPIT.u);
connect(EChi.y, EFac.u[1]);
connect(EPum.y, EFac.u[2]);
connect(EFan.y, EFac.u[3]);
connect(EFac.y, PUE.u1);
connect(EPIT.y, PUE.u2);
connect(EPIT.y, EFac.u[4]);
connect(jun7.port_1,senTWSEMix. port_b);
connect(senTWSEMix.port_a, jun6.port_2);
connect(jun7.port_3, valThr.port_a);
connect(jun8.port_3, jun10.port_1);
connect(jun10.port_3, valByp.port_a);
connect(valThr.port_b, jun9.port_1);
connect(jun9.port_2, pumCon.port_a);
connect(valByp.port_b, jun9.port_3);
connect(chi.port_a1, senTChi_a1.port_b);
connect(senTChi_a1.port_a, pumCon.port_b);
connect(senTChi_a1.T, conPIDCon.u_m);
connect(senTEvaIn.T, TLifMin.u);
connect(hysChi.y, conPIDCon.trigger);
connect(TLifMin.y, conPIDCon.u_s);
connect(conPIDCon.y, valThr.y);
connect(invValSig2.u, invValSig.y);
connect(invValSig2.y, valByp.y);
connect(invValSig.u, conPIDCon.y);
connect(pumEva.y, yPumChi.y);
connect(pumCon.y, yPumChi.y);
connect(cooTow.port_a, senTTow_a.port_b);
connect(cooTow.TDryBul, weaBus.TDryBul);
connect(jun3.port_2, senMasFloByEco.port_a);
connect(senMasFloByEco.port_b, jun2.port_1);
connect(senMasFloByEco.m_flow, conEcoPla.u_m);
connect(zer.y, conEcoPla.u_s);
connect(conEcoPla.y, pumWSEChi.y);
connect(yPumTow.y, pumTow.y);
connect(jun6.port_1, senMasFlo3.port_b);
connect(senMasFlo3.port_a, jun1.port_2);
connect(zer1.y, conEcoTow.u_s);
connect(conEcoTow.y, pumWSECW.y);
connect(conEcoTow.u_m, senMasFlo3.m_flow);
connect(jun8.port_2, pumTow.port_a);
connect(jun6.port_3, senTWSE_b1.port_b);
connect(jun10.port_2, senTChi_b1.port_b);
connect(TOffSetWSE.y, conTow.u_s);
connect(conTow.u_m, senTTow_b.T);
connect(TSetTowRet.y, TOffSetWSE.u);
connect(conPumTow.u_s, TOffSet.y);
connect(conPumTow.u_m, senTEvaIn.T);
connect(conPumTow.y, yPumTow.u);
connect(dpSet.y, cdu.dpSet);
connect(TSetRacIn.y, cdu.TSet);
connect(senTEvaIn.T, errTFre.u1);
connect(errTFre.u2, TOffSet.y);
connect(errTFre.y, hysChi.u);
connect(TSetEva.y, chi.TSet);
connect(conTow.y, yTowFan.u1);
connect(yTowFan.y, cooTow.y);
connect(errTFre.y, yFanTow.u);
connect(conTow.y, yTowFan.u2);
connect(rac.port_a, valRac.port_b);
connect(valRac.port_a, senTRac_a.port_b);
connect(TSetRacOut.y, conVal.u_s);
connect(conVal.y, valRac.y);
connect(senTRac_b.T, conVal.u_m);
connect(uti.y, PITIn.u);
connect(PITIn.y, rac.P);
connect(pumCDU.port_a, bou.ports[1]);
connect(jun1.port_1, bou1.ports[1]);
connect(senTTow_a.port_a, pipTowIn.port_b);
connect(pipTowIn.port_a, pumTow.port_b);
connect(senTTow_b.port_b, pipTowOut.port_a);
connect(pipTowOut.port_b, jun1.port_1);
connect(senTCDU_a.port_a, pipCDUIn.port_b);
connect(pipCDUIn.port_a, jun5.port_2);
connect(senTCDU_b.port_b, pipCDUOut.port_a);
connect(pipCDUOut.port_b, pumCDU.port_a);
connect(cdu.port_bRac, pipRacIn.port_a);
connect(pipRacIn.port_b, senTRac_a.port_a);
connect(senTRac_b.port_b, pipRacOut.port_a);
connect(pipRacOut.port_b, cdu.port_aRac);
end ChillerWSE;