Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Examples

Collection of models that illustrate model use and test models

Information

This package contains examples for the use of models that can be found in Buildings.Fluid.DataCenters.CDUs.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Examples.CDU_epsNTU CDU_epsNTU Example model of a CDU with varying load on the IT side

Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Examples.CDU_epsNTU Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Examples.CDU_epsNTU

Example model of a CDU with varying load on the IT side

Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Examples.CDU_epsNTU

Information

Example model of a CDU that serves liquid cooled racks.

The IT load is specified using a periodic pulse input. This load is cooled by a propylene glycol loop, which exchanges heat through the CDU with a chilled water supply. The chilled water is assumed to be delivered at constant temperature. 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.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
PowerPRac48*132000Total rack design power [W]
TemperatureTRac_a273.15 + 42Supply coolant temperature to rack at design conditions [K]
TemperatureTRac_b273.15 + 47Return coolant temperature from rack at design conditions [K]
TemperatureTChi_a273.15 + 36Supply chilled water temperature to CDU at design conditions [K]
TemperatureTChi_b273.15 + 41Return chilled temperature from CDU at design conditions [K]
MassFlowRatemRac_flow_nominalPRac/(TRac_b - TRac_a)/Mediu...Rack mass flow rate at design conditions [kg/s]
MassFlowRatemChi_flow_nominalPRac/(TChi_b - TChi_a)/Mediu...Chilled water mass flow rate at design conditions [kg/s]
PressureDifferencedpRac_nominal60000Rack design pressure drop [Pa]
PressureDifferencedpHexChi_nominal80000Heat exchanger design pressure drop on chiller side [Pa]
Generic_epsNTUdatCDUdatCDU(Q_flow_nominal=-PRac,...Data performance record for CDU
OCP_1kW_OAM_PG25datRacdatRac(PIT_nominal=PRac, m_f...Rack performance data

Modelica definition

model CDU_epsNTU "Example model of a CDU with varying load on the IT side" extends Modelica.Icons.Example; package MediumChi = Buildings.Media.Water "Medium for chilled water loop"; package MediumRac = Buildings.Media.Antifreeze.PropyleneGlycolWater( T_default=303.15, property_T=303.15, X_a=Buildings.Media.Antifreeze.Functions.PropyleneGlycolWater.volumeToMassFraction( phi=0.25, T=293.15)) "Medium for rack"; parameter Modelica.Units.SI.Power PRac = 48*132000 "Total rack design power"; parameter Modelica.Units.SI.Temperature TRac_a = 273.15+42 "Supply coolant temperature to rack at design conditions"; parameter Modelica.Units.SI.Temperature TRac_b = 273.15+47 "Return coolant temperature from rack at design conditions"; parameter Modelica.Units.SI.Temperature TChi_a = 273.15+36 "Supply chilled water temperature to CDU at design conditions"; parameter Modelica.Units.SI.Temperature TChi_b = 273.15+41 "Return chilled temperature from CDU at design conditions"; parameter Modelica.Units.SI.MassFlowRate mRac_flow_nominal = PRac/(TRac_b-TRac_a)/MediumRac.cp_const "Rack mass flow rate at design conditions"; parameter Modelica.Units.SI.MassFlowRate mChi_flow_nominal = PRac/(TChi_b-TChi_a)/MediumChi.cp_const "Chilled water mass flow rate at design conditions"; parameter Modelica.Units.SI.PressureDifference dpRac_nominal( displayUnit="Pa") = 60000 "Rack design pressure drop"; parameter Modelica.Units.SI.PressureDifference dpHexChi_nominal( displayUnit="Pa")=80000 "Heat exchanger design pressure drop on chiller side"; parameter Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.Data.Generic_epsNTU datCDU( Q_flow_nominal=-PRac, TRacOut_nominal=TRac_a, mPla_flow_nominal=mChi_flow_nominal, mRac_flow_nominal=mRac_flow_nominal, dpHexPla_nominal=dpHexChi_nominal, medPla=Buildings.Fluid.DataCenters.CDUs.Types.Media.Water, phiGlyPla=0, medRac=Buildings.Fluid.DataCenters.CDUs.Types.Media.PropyleneGlycol, phiGlyRac=0.25, TApp_nominal=6, dpPumpExt_nominal(displayUnit="Pa") = dpRac_nominal, pumpExtHead( V_flow=mRac_flow_nominal/1010*{0.000, 0.250, 0.500, 0.750, 1.000}, dp=dpRac_nominal*({11.90, 11.61, 9.810, 6.202, 1.0}))) "Data performance record for CDU"; parameter Buildings.Fluid.DataCenters.Racks.Liquid.Data.OCP_1kW_OAM_PG25 datRac( PIT_nominal=PRac, m_flow_nominal=mRac_flow_nominal, dp_nominal=dpRac_nominal) "Rack performance data"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse uti( amplitude=0.4, width=0.5, period=3600, shift=900, offset=0.6) "Utilization of hardware"; Buildings.Fluid.DataCenters.Racks.Liquid.ColdPlateR_P rac( redeclare package Medium = MediumRac, allowFlowReversal=false, dat=datRac, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Rack with cold plate heat exchangers, modeled for simplicity as one large rack"; Buildings.Fluid.Sources.Boundary_pT bou( redeclare package Medium = MediumChi, p(displayUnit="Pa") = 300000, T=TChi_b, nPorts=1) "Pressure boundary condition"; Buildings.Fluid.Sensors.TemperatureTwoPort senTCDU_a( redeclare package Medium = MediumChi, allowFlowReversal=false, m_flow_nominal=mChi_flow_nominal, tau=0) "Chilled water supply temperature"; Buildings.Fluid.DataCenters.CDUs.LiquidToLiquid.CDU_epsNTU cdu( redeclare package MediumPla = MediumChi, redeclare package MediumRac = MediumRac, allowFlowReversalRac=false, final dat=datCDU, allowFlowReversalPla=false, yPum_start=1) "CDU, modelled for simplicity as one large CDU"; Fluid.Sources.Boundary_pT sou(redeclare package Medium = MediumChi, p=300000 + 2*dpHexChi_nominal, T=TChi_a, nPorts=1) "Pressure boundary condition"; Fluid.Sensors.TemperatureTwoPort senTCDU_b( redeclare package Medium = MediumChi, allowFlowReversal=false, m_flow_nominal=mChi_flow_nominal, tau=0) "Outlet temperature"; Fluid.Sensors.TemperatureTwoPort senTRac_a( redeclare package Medium = MediumRac, allowFlowReversal=false, m_flow_nominal=mRac_flow_nominal, tau=0) "Rack inlet temperature"; Fluid.Sensors.TemperatureTwoPort senTRac_b( redeclare package Medium = MediumRac, allowFlowReversal=false, m_flow_nominal=mRac_flow_nominal, tau=0) "Rack outlet temperature"; Controls.OBC.CDL.Reals.Sources.Constant dpSet(k=50000) "Set point for head"; Controls.OBC.CDL.Reals.Sources.Constant TSetRacIn(k=TRac_a) "Set point for rack inlet temperature"; Modelica.Blocks.Math.Gain PITAir( k(final unit="W", min=0) = datRac.PIT_nominal, u(final unit="1"), y(final unit="W")) "Power consumption by the air-cooled IT equipment"; equation connect(sou.ports[1], senTCDU_a.port_a); connect(senTCDU_a.port_b, cdu.port_aPla); connect(cdu.port_bPla, senTCDU_b.port_a); connect(senTCDU_b.port_b, bou.ports[1]); connect(cdu.port_bRac, senTRac_a.port_a); connect(senTRac_a.port_b, rac.port_a); connect(rac.port_b, senTRac_b.port_a); connect(senTRac_b.port_b, cdu.port_aRac); connect(dpSet.y, cdu.dpSet); connect(cdu.TSet, TSetRacIn.y); connect(uti.y, PITAir.u); connect(PITAir.y, rac.P); end CDU_epsNTU;