Buildings.Fluid.DataCenters.Racks.BaseClasses

Package with base classes for racks

Information

This package contains base classes that are used to construct the classes in Buildings.Fluid.DataCenters.Racks.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Fluid.DataCenters.Racks.BaseClasses.Fan Fan Preconfigured server fan
Buildings.Fluid.DataCenters.Racks.BaseClasses.PartialRack PartialRack Partial model of an IT rack, with utilization as input
Buildings.Fluid.DataCenters.Racks.BaseClasses.Data Data Package with data records for racks
Buildings.Fluid.DataCenters.Racks.BaseClasses.Validation Validation Validation models for BaseClasses

Buildings.Fluid.DataCenters.Racks.BaseClasses.Fan Buildings.Fluid.DataCenters.Racks.BaseClasses.Fan

Preconfigured server fan

Buildings.Fluid.DataCenters.Racks.BaseClasses.Fan

Information

Preconfigured fan model.

The fan is modelled using Buildings.Fluid.Movers.SpeedControlled_y. The fan pressure rise at the nominal volumetric flow rate is

dp0 = Pfan,0 η0 ⁄ V̇0.

The fan uses a constant total efficiency, which is set by the parameters eta_nominal.

Extends from Buildings.Fluid.Movers.SpeedControlled_y (Fan or pump with ideally controlled normalized speed y as input signal).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
BooleanaddPowerToMediumtrueSet to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations)
Control
InputTypeinputTypeBuildings.Fluid.Types.InputT...Control input type
Fan
Realeta_nominal0.7Fan and motor combined efficiency at nominal conditions [1]
MassFlowRatem_flow_nominal Design air mass flow rate [kg/s]
PowerPFan_nominal Fan electricity consumption at design flow rate [W]
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
Timetau1Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic [s]
Motor speed
Booleanuse_riseTimetrueSet to true to continuously change motor speed
TimeriseTime2Time needed to change motor speed between zero and full speed [s]
InitinitModelica.Blocks.Types.Init.I...Type of initialization (no init/steady state/initial state/initial output)
Realy_start0Initial value of speed [1]
Advanced
MassFlowRatem_flow_small1E-4*abs(_m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances
ExtraPropertyC_nominal[Medium.nC]fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
input IntegerInputstageStage input signal for the pressure head
output RealOutputy_actualActual normalised fan or pump speed that is used for computations [1]
output RealOutputPElectrical power consumed [W]
HeatPort_aheatPortHeat dissipation to environment
input RealInputyConstant normalized rotational speed [1]

Modelica definition

model Fan "Preconfigured server fan" extends Buildings.Fluid.Movers.SpeedControlled_y( energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, use_riseTime=true, riseTime=2, tau=1, per( pressure( V_flow={ 0, 2*V_flow_nominal}, dp={ 2*dp_nominal, 0}), etaHydMet=Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber, etaMotMet=Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.Efficiency_VolumeFlowRate, motorEfficiency(V_flow={0}, eta={sqrt(eta_nominal)}), etaMot_max=sqrt(eta_nominal), powerOrEfficiencyIsHydraulic=false)); parameter Real eta_nominal( final unit="1", final min=Modelica.Constants.small) = 0.7 "Fan and motor combined efficiency at nominal conditions"; parameter Modelica.Units.SI.MassFlowRate m_flow_nominal(min=0) "Design air mass flow rate"; parameter Modelica.Units.SI.Power PFan_nominal(min=0) "Fan electricity consumption at design flow rate"; protected parameter Modelica.Units.SI.VolumeFlowRate V_flow_nominal = m_flow_nominal / rho_default "Nominal volumetric flow rate"; parameter Modelica.Units.SI.PressureDifference dp_nominal(displayUnit="Pa") = PFan_nominal * eta_nominal / V_flow_nominal "Fan pressure rise at nominal conditions"; end Fan;

Buildings.Fluid.DataCenters.Racks.BaseClasses.PartialRack Buildings.Fluid.DataCenters.Racks.BaseClasses.PartialRack

Partial model of an IT rack, with utilization as input

Buildings.Fluid.DataCenters.Racks.BaseClasses.PartialRack

Information

Partial model of an IT rack.

Electrical and fluid characterization

The model takes as an input the electrical power consumption, and assumes all is converted to the heat that needs to be rejected through the fluid ports, e.g.,

Q_flow = P.

The fluid outlet temperature is computed using a first order delay to mimic the transient effect. This first order delay is characterized by the user-configurable time constant tau, set by default to tau=2 seconds. For exact transient response, this value should be identified based on measurements.

To compute the pressure drop, the model uses Buildings.Fluid.FixedResistances.PressureDrop. Therefore, the mass flow rate and pressure drop are related as

m_flow ⁄ m_flow_nominal = (dp ⁄ dp_nominal)m,

where m_flow_nominal is a parameter for the design flow rate, dp is the pressure difference between inlet and outlet, dp_nominal is a parameter for the design pressure difference, and m is a parameter for the flow exponent.

Extends from Buildings.Fluid.Interfaces.PartialTwoPort (Partial component with two ports).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Genericdatredeclare parameter Building...Performance data
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
Timetau2Time constant of fluid outlet temperature at nominal flow [s]
Initialization
TemperatureT_startMedium.T_defaultStart value of temperature [K]

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
replaceable package MediumMedium in the component
input RealInputPElectrical power consumption [W]

Modelica definition

partial model PartialRack "Partial model of an IT rack, with utilization as input" extends Buildings.Fluid.Interfaces.PartialTwoPort; replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component"; replaceable parameter Buildings.Fluid.DataCenters.Racks.BaseClasses.Data.Generic dat "Performance data"; parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial "Type of energy balance: dynamic (3 initialization options) or steady state"; parameter Modelica.Units.SI.Time tau=2 "Time constant of fluid outlet temperature at nominal flow"; // Initialization parameter Medium.Temperature T_start = Medium.T_default "Start value of temperature"; Modelica.Blocks.Interfaces.RealInput P(final unit="W", min=0) "Electrical power consumption"; output Real utiIT( final unit="1", final min=0) = P / dat.PIT_nominal "IT utilization"; Fluid.Delays.DelayFirstOrder vol( redeclare final package Medium = Medium, final energyDynamics=energyDynamics, final T_start=T_start, final m_flow_nominal=dat.m_flow_nominal, final allowFlowReversal=allowFlowReversal, final tau=tau, final prescribedHeatFlowRate=true) "Fluid control volume"; Modelica.Units.SI.MassFlowRate m_flow = port_a.m_flow "Mass flow rate from port_a to port_b"; protected Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHea "Prescribed heat flow rate"; equation connect(preHea.port,vol. heatPort); end PartialRack;