Validation models for BaseClasses
Information
This package contains validation models for
Buildings.Fluid.DataCenters.Racks.BaseClasses.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
| Name |
Description |
ControlledFan
|
Validation of the controlled fan model |
Validation of the controlled fan model
Information
Validation model for
Buildings.Fluid.DataCenters.Racks.BaseClasses.ControlledFan.
Air at 20°C is driven by the fan through a pressure drop element and a mixing volume.
The mixing volume receives a heat input that ramps from zero to
Q_flow_nominal, which corresponds to a temperature rise of 10 K
at the nominal mass flow rate,
corresponding to a face velocity of 0.2 m/s across a 2 m2 surface.
When the heat input reaches its maximum value,
the fan runs at full speed (y = 1)
and consume PFan_nominal of electrical power.
Note that the leaving fluid temperature is slightly above its set point because
the heat of the fan is added to the air flow rate, and hence the
20°C is not quite sufficient to provide the cooling required to meet the set point
temperature.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
| Type | Name | Default | Description |
| Power | PFan_nominal | 400 | Fan nominal power [W] |
| Temperature | T_start | 293.15 | Inlet air temperature (20 degC) [K] |
| Temperature | TAirOutSet | T_start + 10 | Controller set point, inlet temperature plus 10 K [K] |
Modelica definition
model ControlledFan
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air ;
parameter Modelica.Units.SI.Power PFan_nominal = 400
;
parameter Modelica.Units.SI.Temperature T_start = 293.15
;
parameter Modelica.Units.SI.Temperature TAirOutSet = T_start + 10
;
Buildings.Fluid.DataCenters.Racks.FanControllers.OutletTemperature con
;
Buildings.Fluid.DataCenters.Racks.BaseClasses.Fan fan(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
PFan_nominal=PFan_nominal) ;
Buildings.Fluid.FixedResistances.PressureDrop res(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
from_dp=true,
dp_nominal=dp_nominal)
;
Buildings.Fluid.MixingVolumes.MixingVolume vol(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
V=0.2,
nPorts=2,
T_start=T_start,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
prescribedHeatFlowRate=true)
;
Buildings.Fluid.Sensors.TemperatureTwoPort senT(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
allowFlowReversal=false,
tau=0) ;
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare package Medium = Medium,
T=T_start,
nPorts=2)
;
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHea
;
Modelica.Blocks.Sources.Ramp ram(
height=Q_flow_nominal,
duration=1800,
startTime=300)
;
protected
parameter Modelica.Units.SI.Density rho_default =
Medium.density(
Medium.setState_pTX(
p=Medium.p_default,
T=Medium.T_default,
X=Medium.X_default))
;
parameter Modelica.Units.SI.SpecificHeatCapacity cp_default =
Medium.specificHeatCapacityCp(
Medium.setState_pTX(
p=Medium.p_default,
T=Medium.T_default,
X=Medium.X_default))
;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal = V_flow_nominal * rho_default
;
parameter Modelica.Units.SI.VolumeFlowRate V_flow_nominal = 0.2 * 2
;
parameter Modelica.Units.SI.PressureDifference dp_nominal(displayUnit="Pa") =
PFan_nominal * fan.eta_nominal / V_flow_nominal
;
parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal = m_flow_nominal * cp_default * 10
;
Controls.OBC.CDL.Reals.Sources.Constant TOutSet(
y(
final unit="K", displayUnit="degC"),
final k=TAirOutSet)
;
equation
connect(vol.ports[1], senT.port_a);
connect(ram.y, preHea.Q_flow);
connect(preHea.port, vol.heatPort);
connect(senT.port_b, res.port_a);
connect(fan.port_b, vol.ports[2]);
connect(fan.port_a, sou.ports[1]);
connect(res.port_b, sou.ports[2]);
connect(TOutSet.y, con.TSet);
connect(con.TMea, senT.T);
connect(con.y, fan.y);
end ControlledFan;