Buildings.Fluid.DataCenters.Racks.Hybrid.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.Racks.Hybrid.

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

Package Content

Name Description
Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid AirLiquid Example model for hybrid liquid-cooled and air-cooled rack
Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexActive AirLiquidRearDoorHexActive Example model for hybrid liquid-cooled and air-cooled rack with active rear door heat exchanger
Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive AirLiquidRearDoorHexPassive Example model for hybrid liquid-cooled and air-cooled rack with rear door heat exchanger
Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexActive AirRearDoorHexActive Example model for air-cooled rack with active rear door heat exchanger
Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive AirRearDoorHexPassive Example model for air-cooled rack with passive rear door heat exchanger

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid

Example model for hybrid liquid-cooled and air-cooled rack

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid

Information

Example model of a hybrid IT rack with both liquid-cooled and air-cooled components. The model demonstrates the operation of a rack that combines liquid cooling for high-power IT equipment of 633.6 kW using propylene glycol water with 25% mass fraction as the coolant, and air cooling for lower-power IT equipment of 63.36 kW, which is 10% of the liquid-cooled load.

The liquid cooling loop uses a cooler upstream of a variable speed pump. The cooler maintains a constant supply temperature to the rack at 42°C. A control valve regulates the coolant mass flow rate to track a leaving coolant temperature setpoint. The pump is controlled by a PI controller that maintains a constant pressure drop across the rack equal to the design pressure drop. The controller adjusts the pump speed between 10% and 100% to maintain the pressure setpoint.

The IT loads for both cooling systems are specified using different control strategies. The liquid-cooled utilization follows a time-based schedule. The air-cooled utilization is kept constant at 100% throughout the simulation.

The air cooling loop uses simple pressure boundary conditions that allow free circulation of air through the rack component. The air inlet temperature is 30°C and the fan is sized to have a temperature difference across the rack of 10 K, leading a 40°C outlet air temperature.

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

Parameters

TypeNameDefaultDescription
PowerPLiq_nominal48*13200Design power for liquid-cooled IT [W]
PowerPAir_nominal0.1*PLiq_nominalDesign power for air-cooled IT [W]
TemperatureDifferencedTLiq_nominal7Design temperature difference of liquid coolant [K]
TemperatureTLiqIn_nominal273.15 + 42Supply coolant temperature to rack at design conditions [K]
SpecificHeatCapacitycpLiq_defaultMediumLiq.specificHeatCapaci...Heat capacity of liquid coolant [J/(kg.K)]
PressureDifferencedpValve_nominal5000Nominal pressure drop of fully open valve [Pa]
OCP_1kW_OAM_PG25datLiqdatLiq(PIT_nominal=PLiq_nomi...Liquid-cooled rack performance data
GenericdatAirdatAir(PIT_nominal=PAir_nomi...Air-cooled rack performance data
Genericdatredeclare parameter Building...Hybrid rack performance data
TemperatureTAirDatHal303.15Air temperature in data hall [K]
AirLiquidracredeclare Buildings.Fluid.Da...Liquid and air-cooled rack

Modelica definition

model AirLiquid "Example model for hybrid liquid-cooled and air-cooled rack" extends Modelica.Icons.Example; package MediumLiq = Buildings.Media.Antifreeze.PropyleneGlycolWater( T_default=303.15, property_T=303.15, X_a=0.25) "Propylene glycol"; package MediumAir = Buildings.Media.Air "Medium for air cooling loop"; parameter Modelica.Units.SI.Power PLiq_nominal=48*13200 "Design power for liquid-cooled IT"; parameter Modelica.Units.SI.Power PAir_nominal=0.1*PLiq_nominal "Design power for air-cooled IT"; parameter Modelica.Units.SI.TemperatureDifference dTLiq_nominal = 7 "Design temperature difference of liquid coolant"; parameter Modelica.Units.SI.Temperature TLiqIn_nominal=273.15 + 42 "Supply coolant temperature to rack at design conditions"; final parameter Modelica.Units.SI.MassFlowRate mLiq_flow_nominal= PLiq_nominal/dTLiq_nominal/cpLiq_default "Nominal mass flow rate for liquid cooling at design conditions"; parameter Modelica.Units.SI.SpecificHeatCapacity cpLiq_default= MediumLiq.specificHeatCapacityCp( state=MediumLiq.setState_pTX( T=MediumLiq.T_default, p=MediumLiq.p_default, X=MediumLiq.X_default[1:MediumLiq.nXi])) "Heat capacity of liquid coolant"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal=5000 "Nominal pressure drop of fully open valve"; parameter Buildings.Fluid.DataCenters.Racks.Liquid.Data.OCP_1kW_OAM_PG25 datLiq( PIT_nominal=PLiq_nominal, m_flow_nominal=mLiq_flow_nominal) "Liquid-cooled rack performance data"; parameter Buildings.Fluid.DataCenters.Racks.Air.Data.Generic datAir( PIT_nominal=PAir_nominal, cpAir_nominal=cpAir_default) "Air-cooled rack performance data"; replaceable parameter Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquid.Generic dat constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquid.Generic( liq=datLiq, air=datAir) "Hybrid rack performance data"; parameter Modelica.Units.SI.Temperature TAirDatHal = 303.15 "Air temperature in data hall"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable utiLiq( table=[0,0; 900,0; 1800,0.5; 5400,0.5; 6300,1; 7200,1], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Utilization of liquid-cooled hardware"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant utiAir(k=1) "Utilization of air-cooled hardware"; Modelica.Blocks.Math.Gain PITLiq( k(final unit="W", min=0) = datLiq.PIT_nominal, u(final unit="1"), y(final unit="W")) "Power consumption by the liquid-cooled IT equipment"; Modelica.Blocks.Math.Gain PITAir( k(final unit="W", min=0) = datAir.PIT_nominal, u(final unit="1"), y(final unit="W")) "Power consumption by the air-cooled IT equipment"; replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.AirLiquid rac constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.AirLiquid( redeclare package MediumLiq = MediumLiq, redeclare package MediumAir = MediumAir, dat=dat, energyDynamicsLiq=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamicsAir=Modelica.Fluid.Types.Dynamics.FixedInitial) "Liquid and air-cooled rack"; final parameter Modelica.Units.SI.SpecificHeatCapacity cpAir_default= MediumAir.specificHeatCapacityCp( MediumAir.setState_pTX( T=MediumAir.T_default, p=MediumAir.p_default, X=MediumAir.X_default[1:MediumAir.nXi])) "Specific heat capacity of air"; Buildings.Fluid.Movers.Preconfigured.SpeedControlled_y pum( redeclare package Medium = MediumLiq, m_flow_nominal=mLiq_flow_nominal, dp_nominal=datLiq.dp_nominal + dpValve_nominal) "Pump for liquid cooling loop"; Buildings.Fluid.Sources.Boundary_pT bouLiq( redeclare package Medium = MediumLiq, nPorts=1) "Pressure boundary condition for liquid loop"; Buildings.Fluid.Sources.Boundary_pT datHal( redeclare package Medium = MediumAir, T=TAirDatHal, nPorts=2) "Temperature and pressure of air in data hall"; Fluid.Sensors.TemperatureTwoPort senTLiq_a( redeclare package Medium = MediumLiq, allowFlowReversal=false, m_flow_nominal=mLiq_flow_nominal, tau=0) "Liquid inlet temperature to rack"; Fluid.Sensors.TemperatureTwoPort senTLiq_b( redeclare package Medium = MediumLiq, allowFlowReversal=false, m_flow_nominal=mLiq_flow_nominal, tau=0) "Liquid outlet temperature from rack"; Fluid.Sensors.TemperatureTwoPort senTAir_a( redeclare package Medium = MediumAir, allowFlowReversal=false, m_flow_nominal=datAir.m_flow_nominal, tau=0) "Air inlet temperature"; Fluid.Sensors.TemperatureTwoPort senTAir_b( redeclare package Medium = MediumAir, allowFlowReversal=false, m_flow_nominal=datAir.m_flow_nominal, tau=0) "Air outlet temperature"; Buildings.Controls.OBC.CDL.Reals.PID conPI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=0.5, Ti=60, r=datLiq.dp_nominal, yMax=1, yMin=0.1) "PI controller for pump speed to maintain constant pressure across rack"; Actuators.Valves.TwoWayLinear val( redeclare package Medium = MediumLiq, m_flow_nominal=mLiq_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve"; Controls.OBC.CDL.Reals.Sources.Constant TSetRet(k=TLiqIn_nominal + dTLiq_nominal) "Temperature setpoint for return water"; Controls.OBC.CDL.Reals.PID conVal( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, Ti=30, yMax=1, yMin=0.1, reverseActing=false, u_s(final unit="K", displayUnit="degC"), u_m(final unit="K", displayUnit="degC")) "PI controller for valve to control return temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant dpSet(k=datLiq.dp_nominal + dpValve_nominal) "Pressure drop setpoint across rack"; Buildings.Fluid.HeatExchangers.SensibleCooler_T coo( redeclare package Medium = MediumLiq, m_flow_nominal=mLiq_flow_nominal, dp_nominal=0, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Cooler to maintain supply temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetCoo(k=TLiqIn_nominal) "Temperature setpoint for cooler"; Fluid.Sensors.RelativePressure senRelPre(redeclare package Medium = MediumLiq) "Relative pressure sensor across rack"; equation connect(rac.portLiq_b, senTLiq_b.port_a); connect(senTLiq_b.port_b, bouLiq.ports[1]); connect(senTAir_a.port_b, rac.portAir_a); connect(rac.portAir_b, senTAir_b.port_a); connect(senTAir_a.port_a,datHal. ports[1]); connect(senTAir_b.port_b,datHal. ports[2]); connect(pum.port_b, senTLiq_a.port_a); connect(bouLiq.ports[1], coo.port_a); connect(dpSet.y, conPI.u_s); connect(conPI.y, pum.y); connect(coo.port_b, pum.port_a); connect(TSetCoo.y, coo.TSet); connect(senTLiq_b.port_a, senRelPre.port_b); connect(senRelPre.p_rel, conPI.u_m); connect(senRelPre.port_a, senTLiq_a.port_b); connect(utiLiq.y[1], PITLiq.u); connect(PITLiq.y, rac.PLiq); connect(utiAir.y, PITAir.u); connect(PITAir.y, rac.PAir); connect(val.port_b, rac.portLiq_a); connect(val.port_a, senTLiq_a.port_b); connect(conVal.u_m, senTLiq_b.T); connect(TSetRet.y, conVal.u_s); connect(conVal.y, val.y); end AirLiquid;

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexActive Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexActive

Example model for hybrid liquid-cooled and air-cooled rack with active rear door heat exchanger

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexActive

Information

Example model of a hybrid IT rack with liquid-cooled, air-cooled, and active rear door heat exchanger components.

This model is identical to Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive except that the rear door heat exchanger has a built-in fan.

Extends from Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive (Example model for hybrid liquid-cooled and air-cooled rack with rear door heat exchanger).

Parameters

TypeNameDefaultDescription
PowerPLiq_nominal48*13200Design power for liquid-cooled IT [W]
PowerPAir_nominal0.1*PLiq_nominalDesign power for air-cooled IT [W]
TemperatureDifferencedTLiq_nominal7Design temperature difference of liquid coolant [K]
TemperatureTLiqIn_nominal273.15 + 42Supply coolant temperature to rack at design conditions [K]
SpecificHeatCapacitycpLiq_defaultMediumLiq.specificHeatCapaci...Heat capacity of liquid coolant [J/(kg.K)]
PressureDifferencedpValve_nominal5000Nominal pressure drop of fully open valve [Pa]
OCP_1kW_OAM_PG25datLiq Liquid-cooled rack performance data
GenericdatAir Air-cooled rack performance data
TemperatureTAirDatHal303.15Air temperature in data hall [K]
TemperatureTReaDooCooIn_nominal273.15 + 25Rear door heat exchanger coolant supply temperature [K]
TemperatureTReaDooCooOut_nominal273.15 + 35Rear door heat exchanger coolant return temperature [K]
TemperatureTAirReaDooIn_nominalTAirDatHal + (datAir.TOut_no...Nominal air temperature entering the rear door heat exchanger [K]

Modelica definition

model AirLiquidRearDoorHexActive "Example model for hybrid liquid-cooled and air-cooled rack with active rear door heat exchanger" extends Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive ( redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquidRearDoorHexActive.Generic dat constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquidRearDoorHexActive.Generic ( liq=datLiq, air=datAir, reaDooHex=datReaDooHex), redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.AirLiquidRearDoorHexActive rac constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.BaseClasses.PartialAirLiquidRearDoorHex ( redeclare package MediumLiq = MediumLiq, redeclare package MediumAir = MediumAir, redeclare package MediumReaDooHex = MediumReaDooHex, dat=dat), redeclare replaceable parameter Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Active.Generic datReaDooHex constrainedby Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic); end AirLiquidRearDoorHexActive;

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive

Example model for hybrid liquid-cooled and air-cooled rack with rear door heat exchanger

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquidRearDoorHexPassive

Information

Example model of a hybrid IT rack with liquid-cooled, air-cooled, and rear door heat exchanger components. This model extends Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid and replaces the rack with a rack that has a passive rear door heat exchanger.

The room inlet air temperature is set to 30 °C. The air-cooled rack raises the air temperature around 11.7 K, so the air entering the rear door heat exchanger is at approximately 41.7 °C. Note that these values are slightly higher than the ones in Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid. The reason is that the rear door heat exchanger is passive, i.e., it does not have fans. Due to its air-side flow resistance, the air flow rate through the rack is therefore slightly lower, leading to a higher rack outlet temperature, which is upstream of the rear door heat exchanger. The air leaving the rear door heat exchanger is 30.1°C.

Water at 25 °C is supplied to the rear door heat exchanger. In this simplified model, the water flow rate is uncontrolled, leading to a leaving water temperature of 35.3°C, which is above the design temperature of 35°C due to the reduced air flow rate that causes the air inlet temperature into the rear door heat exchanger to be slightly warmer than the design temperature.

The liquid cooling and pump control loops operate identically to the base example.

Extends from Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid (Example model for hybrid liquid-cooled and air-cooled rack).

Parameters

TypeNameDefaultDescription
PowerPLiq_nominal48*13200Design power for liquid-cooled IT [W]
PowerPAir_nominal0.1*PLiq_nominalDesign power for air-cooled IT [W]
TemperatureDifferencedTLiq_nominal7Design temperature difference of liquid coolant [K]
TemperatureTLiqIn_nominal273.15 + 42Supply coolant temperature to rack at design conditions [K]
SpecificHeatCapacitycpLiq_defaultMediumLiq.specificHeatCapaci...Heat capacity of liquid coolant [J/(kg.K)]
PressureDifferencedpValve_nominal5000Nominal pressure drop of fully open valve [Pa]
OCP_1kW_OAM_PG25datLiq Liquid-cooled rack performance data
GenericdatAir Air-cooled rack performance data
TemperatureTAirDatHal303.15Air temperature in data hall [K]
TemperatureTReaDooCooIn_nominal273.15 + 25Rear door heat exchanger coolant supply temperature [K]
TemperatureTReaDooCooOut_nominal273.15 + 35Rear door heat exchanger coolant return temperature [K]
TemperatureTAirReaDooIn_nominalTAirDatHal + (datAir.TOut_no...Nominal air temperature entering the rear door heat exchanger [K]
GenericdatReaDooHexredeclare parameter Building...Rear door heat exchanger performance data

Modelica definition

model AirLiquidRearDoorHexPassive "Example model for hybrid liquid-cooled and air-cooled rack with rear door heat exchanger" extends Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirLiquid( redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquidRearDoorHexPassive.Generic dat constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirLiquidRearDoorHexPassive.Generic ( liq=datLiq, air=datAir, reaDooHex=datReaDooHex), redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.AirLiquidRearDoorHexPassive rac constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.BaseClasses.PartialAirLiquidRearDoorHex ( redeclare package MediumLiq = MediumLiq, redeclare package MediumAir = MediumAir, redeclare package MediumReaDooHex = MediumReaDooHex, dat=dat)); package MediumReaDooHex = Buildings.Media.Water "Water for rear door heat exchanger loop"; parameter Modelica.Units.SI.Temperature TReaDooCooIn_nominal=273.15 + 25 "Rear door heat exchanger coolant supply temperature"; parameter Modelica.Units.SI.Temperature TReaDooCooOut_nominal=273.15 + 35 "Rear door heat exchanger coolant return temperature"; parameter Modelica.Units.SI.Temperature TAirReaDooIn_nominal= TAirDatHal + (datAir.TOut_nominal - datAir.TIn_nominal) "Nominal air temperature entering the rear door heat exchanger"; final parameter Modelica.Units.SI.MassFlowRate mReaDoo_flow_nominal= (PAir_nominal + datAir.PFan_nominal)/((TReaDooCooOut_nominal - TReaDooCooIn_nominal)*Buildings.Utilities.Psychrometrics.Constants.cpWatLiq) "Nominal mass flow rate for rear door heat exchanger at design conditions"; replaceable parameter Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic datReaDooHex constrainedby Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic ( mAir_flow_nominal=datAir.m_flow_nominal, mCoo_flow_nominal=mReaDoo_flow_nominal, Q_flow_nominal=-PAir_nominal - datAir.PFan_nominal, TCooIn_nominal=TReaDooCooIn_nominal, TAirIn_nominal=TAirReaDooIn_nominal) "Rear door heat exchanger performance data"; Buildings.Fluid.Sources.Boundary_pT souReaDoo( redeclare package Medium = MediumReaDooHex, T=TReaDooCooIn_nominal, p=MediumReaDooHex.p_default + datReaDooHex.dpCoo_nominal, nPorts=1) "Rear door heat exchanger coolant supply at elevated pressure"; Sources.Boundary_pT sinReaDoo( redeclare package Medium = MediumReaDooHex, p=MediumReaDooHex.p_default, nPorts=1) "Sink rear door heat exchanger coolant"; Sensors.TemperatureTwoPort senTReaDooLvg( redeclare package Medium = MediumReaDooHex, allowFlowReversal=false, m_flow_nominal=mReaDoo_flow_nominal, tau=0) "Coolant outlet temperature from rear door heat exchanger"; equation connect(rac.portReaDooHex_a, souReaDoo.ports[1]); connect(rac.portReaDooHex_b, senTReaDooLvg.port_a); connect(senTReaDooLvg.port_b, sinReaDoo.ports[1]); end AirLiquidRearDoorHexPassive;

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexActive Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexActive

Example model for air-cooled rack with active rear door heat exchanger

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexActive

Information

Example model of an air-cooled IT rack with an active rear door heat exchanger.

This model is identical to Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive except that the rear door heat exchanger has a built-in fan.

Extends from Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive (Example model for air-cooled rack with passive rear door heat exchanger).

Parameters

TypeNameDefaultDescription
PowerPAir_nominal48*1320Design power for air-cooled IT [W]
TemperatureTAirDatHal303.15Air temperature in data hall [K]
GenericdatAir Air-cooled rack performance data
TemperatureTReaDooCooIn_nominal273.15 + 25Rear door heat exchanger coolant supply temperature [K]
TemperatureTReaDooCooOut_nominal273.15 + 35Rear door heat exchanger coolant return temperature [K]
TemperatureTAirReaDooIn_nominalTAirDatHal + (datAir.TOut_no...Nominal air temperature entering the rear door heat exchanger [K]

Modelica definition

model AirRearDoorHexActive "Example model for air-cooled rack with active rear door heat exchanger" extends Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive( redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirRearDoorHexActive.Generic dat constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirRearDoorHexActive.Generic( air=datAir, reaDooHex=datReaDooHex), redeclare replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.AirRearDoorHexActive rac constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.BaseClasses.PartialAirRearDoorHex( redeclare package MediumAir = MediumAir, redeclare package MediumReaDooHex = MediumReaDooHex, dat=dat), redeclare replaceable parameter Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Active.Generic datReaDooHex constrainedby Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic); end AirRearDoorHexActive;

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive

Example model for air-cooled rack with passive rear door heat exchanger

Buildings.Fluid.DataCenters.Racks.Hybrid.Examples.AirRearDoorHexPassive

Information

Example model of an air-cooled IT rack with a passive rear door heat exchanger.

The room inlet air temperature is set to 30°C. The air-cooled rack raises the air temperature around 11.7 K, so the air entering the rear door heat exchanger is at approximately 41.7°C. The rear door heat exchanger is passive, i.e., it does not have fans. Due to its air-side flow resistance, the air flow rate through the rack is slightly lower than when no rear door heat exchanger is present, leading to a higher rack outlet temperature, which is upstream of the rear door heat exchanger.

Water at 25°C is supplied to the rear door heat exchanger. In this simplified model, the water flow rate is uncontrolled, leading to a leaving water temperature above the design temperature due to the reduced air flow rate that causes the air inlet temperature into the rear door heat exchanger to be slightly warmer than the design temperature.

The air-cooled utilization is kept constant at 100% throughout the simulation.

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

Parameters

TypeNameDefaultDescription
PowerPAir_nominal48*1320Design power for air-cooled IT [W]
TemperatureTAirDatHal303.15Air temperature in data hall [K]
GenericdatAirdatAir(PIT_nominal=PAir_nomi...Air-cooled rack performance data
TemperatureTReaDooCooIn_nominal273.15 + 25Rear door heat exchanger coolant supply temperature [K]
TemperatureTReaDooCooOut_nominal273.15 + 35Rear door heat exchanger coolant return temperature [K]
TemperatureTAirReaDooIn_nominalTAirDatHal + (datAir.TOut_no...Nominal air temperature entering the rear door heat exchanger [K]
GenericdatReaDooHexredeclare parameter Building...Rear door heat exchanger performance data
Genericdatredeclare parameter Building...Hybrid rack performance data
AirRearDoorHexPassiveracredeclare Buildings.Fluid.Da...Air-cooled rack with passive rear door heat exchanger

Modelica definition

model AirRearDoorHexPassive "Example model for air-cooled rack with passive rear door heat exchanger" extends Modelica.Icons.Example; package MediumAir = Buildings.Media.Air "Medium for air cooling loop"; package MediumReaDooHex = Buildings.Media.Water "Water for rear door heat exchanger loop"; parameter Modelica.Units.SI.Power PAir_nominal=48*1320 "Design power for air-cooled IT"; parameter Modelica.Units.SI.Temperature TAirDatHal = 303.15 "Air temperature in data hall"; final parameter Modelica.Units.SI.SpecificHeatCapacity cpAir_default= MediumAir.specificHeatCapacityCp( MediumAir.setState_pTX( T=MediumAir.T_default, p=MediumAir.p_default, X=MediumAir.X_default[1:MediumAir.nXi])) "Specific heat capacity of air"; parameter Buildings.Fluid.DataCenters.Racks.Air.Data.Generic datAir( PIT_nominal=PAir_nominal, cpAir_nominal=cpAir_default) "Air-cooled rack performance data"; parameter Modelica.Units.SI.Temperature TReaDooCooIn_nominal=273.15 + 25 "Rear door heat exchanger coolant supply temperature"; parameter Modelica.Units.SI.Temperature TReaDooCooOut_nominal=273.15 + 35 "Rear door heat exchanger coolant return temperature"; parameter Modelica.Units.SI.Temperature TAirReaDooIn_nominal= TAirDatHal + (datAir.TOut_nominal - datAir.TIn_nominal) "Nominal air temperature entering the rear door heat exchanger"; final parameter Modelica.Units.SI.MassFlowRate mReaDoo_flow_nominal= (PAir_nominal + datAir.PFan_nominal)/((TReaDooCooOut_nominal - TReaDooCooIn_nominal)*Buildings.Utilities.Psychrometrics.Constants.cpWatLiq) "Nominal mass flow rate for rear door heat exchanger at design conditions"; replaceable parameter Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic datReaDooHex constrainedby Buildings.Fluid.DataCenters.Racks.RearDoorHeatExchangers.Data.Passive.Generic( mAir_flow_nominal=datAir.m_flow_nominal, mCoo_flow_nominal=mReaDoo_flow_nominal, Q_flow_nominal=-PAir_nominal - datAir.PFan_nominal, TCooIn_nominal=TReaDooCooIn_nominal, TAirIn_nominal=TAirReaDooIn_nominal) "Rear door heat exchanger performance data"; replaceable parameter Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirRearDoorHexPassive.Generic dat constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.Data.AirRearDoorHexPassive.Generic( air=datAir, reaDooHex=datReaDooHex) "Hybrid rack performance data"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant utiAir(k=1) "Utilization of air-cooled hardware"; Modelica.Blocks.Math.Gain PITAir( k(final unit="W", min=0) = datAir.PIT_nominal, u(final unit="1"), y(final unit="W")) "Power consumption by the air-cooled IT equipment"; replaceable Buildings.Fluid.DataCenters.Racks.Hybrid.AirRearDoorHexPassive rac constrainedby Buildings.Fluid.DataCenters.Racks.Hybrid.BaseClasses.PartialAirRearDoorHex( redeclare package MediumAir = MediumAir, redeclare package MediumReaDooHex = MediumReaDooHex, dat=dat, energyDynamicsAir=Modelica.Fluid.Types.Dynamics.FixedInitial) "Air-cooled rack with passive rear door heat exchanger"; Buildings.Fluid.Sources.Boundary_pT datHal( redeclare package Medium = MediumAir, T=TAirDatHal, nPorts=2) "Temperature and pressure of air in data hall"; Fluid.Sensors.TemperatureTwoPort senTAir_a( redeclare package Medium = MediumAir, allowFlowReversal=false, m_flow_nominal=datAir.m_flow_nominal, tau=0) "Air inlet temperature"; Fluid.Sensors.TemperatureTwoPort senTAir_b( redeclare package Medium = MediumAir, allowFlowReversal=false, m_flow_nominal=datAir.m_flow_nominal, tau=0) "Air outlet temperature"; Buildings.Fluid.Sources.Boundary_pT souReaDoo( redeclare package Medium = MediumReaDooHex, T=TReaDooCooIn_nominal, p=MediumReaDooHex.p_default + datReaDooHex.dpCoo_nominal, nPorts=1) "Rear door heat exchanger coolant supply at elevated pressure"; Sources.Boundary_pT sinReaDoo( redeclare package Medium = MediumReaDooHex, p=MediumReaDooHex.p_default, nPorts=1) "Sink rear door heat exchanger coolant"; Sensors.TemperatureTwoPort senTReaDooLvg( redeclare package Medium = MediumReaDooHex, allowFlowReversal=false, m_flow_nominal=mReaDoo_flow_nominal, tau=0) "Coolant outlet temperature from rear door heat exchanger"; equation connect(senTAir_a.port_b, rac.portAir_a); connect(rac.portAir_b, senTAir_b.port_a); connect(senTAir_a.port_a,datHal. ports[1]); connect(senTAir_b.port_b,datHal. ports[2]); connect(utiAir.y, PITAir.u); connect(PITAir.y, rac.PAir); connect(rac.portReaDooHex_a, souReaDoo.ports[1]); connect(rac.portReaDooHex_b, senTReaDooLvg.port_a); connect(senTReaDooLvg.port_b, sinReaDoo.ports[1]); end AirRearDoorHexPassive;