Buildings.Applications.DataCenters.ChillerCooled.Equipment
Equipment models for chiller cooled data centers
Information
Package with equipment models for chiller cooled data centers.
Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).
Package Content
Name | Description |
---|---|
CoolingCoilHumidifyingHeating | |
ElectricChillerParallel | Multiple identical electric chillers |
ElectricHeater | Model for electric heater |
FlowMachine_m | Identical m_flow controlled pumps |
FlowMachine_y | Identical speed controlled flow machines |
HeatExchanger_TSet | Heat exchanger |
IntegratedPrimaryLoadSide | Integrated water-side economizer on the load side in a primary-only chilled water system |
IntegratedPrimaryPlantSide | Integrated waterside economizer on the plant side in a primary-only chilled water System |
IntegratedPrimarySecondary | Integrated waterside economizer on the load side in a primary-secondary chilled water system |
NonIntegrated | Non-integrated waterside economizer in chilled water system |
WatersideEconomizer | Waterside economizer |
Validation | Collection of models that validate the Buildings.Applications.DataCenters.ChillerCooled package |
BaseClasses | Package with base classes for Buildings.Applications.DataCenters.ChillerCooled |
Buildings.Applications.DataCenters.ChillerCooled.Equipment.CoolingCoilHumidifyingHeating
Information
This model can represent a typical air handler with a cooling coil, a variable-speed fan, a humidifier and an electric reheater. The heating coil is not included in this model.
The water-side valve can be manipulated to control the outlet temperature on air side, as shown in Buildings.Applications.DataCenters.AHUs.Example.AirHandlingUnitControl.
It's usually undesired to control the outlet air temperature by simultenanously manipulating the water-valve and reheater, because energy waste could happen in this case. For example, under the part-load condition, the water valve might be in its maximum position with the reheater turning on to maintain the outlet air temperature. To avoid that water-valve and reheater control the outlet temperature at the same time, a buit-in reheater on/off controller is implemented. The detailed control logic about the reheater on/off control is shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.Reheat.
The humidfier is an adiabatic spray air washer with a prescribed outlet water vapor mass fraction
in kg/kg total air. During the humidification, the enthalpy remains constant.
Details can be found in
Buildings.Fluid.Humidifiers.SprayAirWasher_X. The humidifer can be turned off
when the prescribed mass fraction
is smaller than the current state at the outlet, for example, XSet=0
.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialCoolingCoilHumidifyingHeating (Partial AHU model ).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Generic | perFan | redeclare parameter Building... | Performance data for the fan |
Real | yValSwi | Switch point for valve signal [1] | |
Real | yValDeaBan | 0.1 | Deadband for valve signal [1] |
TemperatureDifference | dTSwi | 0 | Switch point for temperature difference [K] |
TemperatureDifference | dTDeaBan | 0.5 | Deadband for temperature difference [K] |
Time | tWai | 60 | Waiting time [s] |
Nominal condition | |||
MassFlowRate | m1_flow_nominal | Nominal mass flow rate [kg/s] | |
MassFlowRate | m2_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dpValve_nominal | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] | |
PressureDifference | dp1_nominal | Pressure difference [Pa] | |
PressureDifference | dp2_nominal | Pressure difference [Pa] | |
Cooling coil | |||
ThermalConductance | UA_nominal | Thermal conductance at nominal flow for sensible heat, used to compute time constant [W/K] | |
Real | r_nominal | 2/3 | Ratio between air-side and water-side convective heat transfer coefficient |
Time | tau1 | 20 | Time constant at nominal flow of medium 1 [s] |
Time | tau2 | 1 | Time constant at nominal flow of medium 2 [s] |
Time | tau_m | 20 | Time constant of metal at nominal UA value [s] |
Integer | nEle | 4 | Number of pipe segments used for discretization in the cooling coil |
Flow Coefficient | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av | Av (metric) flow coefficient [m2] | |
Valve | |||
Real | l | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law |
Fan | |||
InputType | inputType | Buildings.Fluid.Types.InputT... | Control input type |
Boolean | addPowerToMedium | true | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
Electric heater | |||
Efficiency | etaHea | 1.0 | Efficiency of electrical heater [1] |
HeatFlowRate | QHeaMax_flow | Nominal heating capacity of eletric heater,positive [W] | |
Humidifier | |||
MassFlowRate | mWatMax_flow | Nominal humidification capacity for humidifier, positive for humidification [kg/s] | |
Temperature | THum | 293.15 | Temperature of water that is added to the fluid stream by the humidifier [K] |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Dynamics | |||
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Valve | |||
Boolean | use_inputFilterValve | true | = true, if opening is filtered with a 2nd order CriticalDamping filter for the water-side valve |
Time | riseTimeValve | 120 | Rise time of the filter for the water-side valve (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValve_start | 1 | Initial value of output |
Fan | |||
Time | tauFan | 1 | Time constant at nominal flow (if energyDynamics <> SteadyState) [s] |
Boolean | use_inputFilterFan | true | = true, if speed is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeFan | 30 | Rise time of the filter (time to reach 99.6 % of the speed) [s] |
Init | initFan | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yFan_start | 0 | Initial value of speed [1] |
Electric heater | |||
Time | tauEleHea | 10 | Time constant at nominal flow for electric heater (if energyDynamics <> SteadyState) [s] |
Humidifier | |||
Time | tauHum | 10 | Time constant at nominal flow for humidifier(if energyDynamics <> SteadyState) [s] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Heat transfer | |||
Cooling coil | |||
Boolean | waterSideFlowDependent | true | Set to false to make water-side hA independent of mass flow rate |
Boolean | airSideFlowDependent | true | Set to false to make air-side hA independent of mass flow rate |
Boolean | waterSideTemperatureDependent | false | Set to false to make water-side hA independent of temperature |
Boolean | airSideTemperatureDependent | false | Set to false to make air-side hA independent of temperature |
Initialization | |||
AbsolutePressure | p_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input RealInput | uVal | Actuator position (0: closed, 1: open) on water side [1] |
input RealInput | uFan | Continuous input signal for the fan |
output RealOutput | PFan | Electrical power consumed by the fan [W] |
output RealOutput | yVal | Actual valve position [1] |
input IntegerInput | stage | Stage input signal for the pressure head |
output RealOutput | PHea | Power consumed by electric heater [W] |
input RealInput | TSet | Set point temperature of the fluid that leaves port_b [K] |
input RealInput | XSet_w | Set point for water vapor mass fraction in kg/kg total air of the fluid that leaves port_b [1] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.ElectricChillerParallel
Multiple identical electric chillers
Information
This model implements a chiller parallel with num
identical chillers. For the chiller model please see
Buildings.Fluid.Chillers.ElectricEIR.
Note that although the chillers have identical nominal conditions, they can have different
performance curves specified in performance data per
.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialParallelElectricEIR (Partial model for electric chiller parallel).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Integer | num | 2 | Number of equipment |
Generic | per[num] | redeclare parameter Building... | Performance data |
Nominal condition | |||
MassFlowRate | m1_flow_nominal | Nominal mass flow rate [kg/s] | |
MassFlowRate | m2_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dp1_nominal | Pressure difference [Pa] | |
PressureDifference | dp2_nominal | Pressure difference [Pa] | |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | l[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValve_start[numFil] | fill(1, numFil) | Initial value of output:0-closed, 1-fully opened |
Nominal condition | |||
Time | tau1 | 30 | Time constant at nominal flow in chillers [s] |
Time | tau2 | 30 | Time constant at nominal flow in chillers [s] |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Initialization | |||
Medium 1 | |||
AbsolutePressure | p1_start | Medium1.p_default | Start value of pressure [Pa] |
Temperature | T1_start | Medium1.T_default | Start value of temperature [K] |
MassFraction | X1_start[Medium1.nX] | Medium1.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C1_start[Medium1.nC] | fill(0, Medium1.nC) | Start value of trace substances |
ExtraProperty | C1_nominal[Medium1.nC] | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Medium 2 | |||
AbsolutePressure | p2_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T2_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X2_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C2_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C2_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
input RealInput | TSet | Set point for leaving water temperature [K] |
output RealOutput | P[num] | Electric power consumed by chiller compressor [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.ElectricHeater
Model for electric heater
Information
Model for an ideal heater that controls its outlet temperature to a prescribed outlet temperature with constant efficiency.
The switch model swi
is used to turn on/off the heater.
Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model transporting fluid between two ports without storing mass or energy), Buildings.Fluid.Interfaces.TwoPortFlowResistanceParameters (Parameters for flow resistance for models with two ports).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Efficiency | eta | 1 | Effciency of electrical heater [1] |
HeatFlowRate | QMax_flow | Modelica.Constants.inf | Maximum heat flow rate for heating (positive) [W] |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dp_nominal | Pressure difference [Pa] | |
Assumptions | |||
Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Flow resistance | |||
Boolean | computeFlowResistance | (abs(dp_nominal) > Modelica.... | =true, compute flow resistance. Set to false to assume no friction |
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Initialization | |||
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
Dynamics | |||
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Time | tau | 10 | Time constant at nominal flow rate (used if energyDynamics or massDynamics not equal Modelica.Fluid.Types.Dynamics.SteadyState) [s] |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
output RealOutput | Q_flow | Heat flow rate added to the fluid (if flow is from port_a to port_b) [W] |
output RealOutput | P | Electrical power consumed [W] |
input BooleanInput | on | Set to true to enable heater, or false to disable heater |
input RealInput | TSet | Set point temperature of the fluid that leaves port_b [K] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.FlowMachine_m
Identical m_flow controlled pumps
Information
This model implements a parallel of identical pumps with m_flow
being controlled.
The number can be specified by setting a value of num
.
The shutoff valves are used to avoid circulating flow among pumps.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialPumpParallel (Partial model for pump parallel).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Generic | per[num] | redeclare parameter Building... | Record with performance data |
Integer | num | 2 | The number of pumps |
Real | threshold | 0.05 | Hysteresis threshold |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dpValve_nominal | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] | |
Flow Coefficient | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av | Av (metric) flow coefficient [m2] | |
Pressure-flow linearization | |||
Real | deltaM | 0.02 | Fraction of nominal flow rate where linearization starts, if y=1 |
Pump | |||
Boolean | addPowerToMedium | false | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
Two-way valve | |||
Real | l | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Assumptions | |||
Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Nominal condition | |||
Density | rhoStd | Medium.density_pTX(101325, 2... | Inlet density for which valve coefficients are defined [kg/m3] |
Dynamics | |||
Pump | |||
Time | tau | 1 | Time constant at nominal flow (if energyDynamics <> SteadyState) [s] |
Boolean | use_inputFilter | true | = true, if speed is filtered with a 2nd order CriticalDamping filter |
Time | riseTimePump | 30 | Rise time of the filter (time to reach 99.6 % of the speed) [s] |
Init | init | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yPump_start[num] | fill(0, num) | Initial value of pump signals |
Valve | |||
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of the speed) [s] |
Real | yValve_start[num] | fill(0, num) | Initial value of pump signals |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Flow resistance | |||
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | u[num] | Continuous input signal for the flow machine [1] |
output RealOutput | P[num] | Electrical power consumed by the pumps [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.FlowMachine_y
Identical speed controlled flow machines
Information
This model implements a parallel of identical pumps with speed being controlled.
The number can be specified by setting a value of num
.
The shutoff valves are used to avoid circulating flow among pumps.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialPumpParallel (Partial model for pump parallel).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Generic | per[num] | redeclare parameter Building... | Record with performance data |
Integer | num | 2 | The number of pumps |
Real | threshold | 0.05 | Hysteresis threshold |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dpValve_nominal | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] | |
Flow Coefficient | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av | Av (metric) flow coefficient [m2] | |
Pressure-flow linearization | |||
Real | deltaM | 0.02 | Fraction of nominal flow rate where linearization starts, if y=1 |
Pump | |||
Boolean | addPowerToMedium | false | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
Two-way valve | |||
Real | l | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Assumptions | |||
Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Nominal condition | |||
Density | rhoStd | Medium.density_pTX(101325, 2... | Inlet density for which valve coefficients are defined [kg/m3] |
Dynamics | |||
Pump | |||
Time | tau | 1 | Time constant at nominal flow (if energyDynamics <> SteadyState) [s] |
Boolean | use_inputFilter | true | = true, if speed is filtered with a 2nd order CriticalDamping filter |
Time | riseTimePump | 30 | Rise time of the filter (time to reach 99.6 % of the speed) [s] |
Init | init | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yPump_start[num] | fill(0, num) | Initial value of pump signals |
Valve | |||
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of the speed) [s] |
Real | yValve_start[num] | fill(0, num) | Initial value of pump signals |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Flow resistance | |||
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | u[num] | Continuous input signal for the flow machine [1] |
output RealOutput | P[num] | Electrical power consumed by the pumps [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.HeatExchanger_TSet
Heat exchanger
Information
This module impliments a heat exchanger model with a built-in PID controller to
control the outlet temperature at port_b2
if set parameter
use_controller=true
. Otherwise, if set use_controller=false
,
the PID controller and the three-way valve are removed and the outlet temperature at port_b2
will
not be controlled.
Note that if the three-way valve is activated, it'll have the same differential pressure as the heat exchanger.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialHeatExchanger (Partial model for heat exchangers ), Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialControllerInterface (Partial interface model for waterside economizer temperature controller).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Boolean | activate_ThrWayVal | use_controller | Activate the use of three-way valve: True-use three-way valve; False-not use the three-way valve |
Efficiency | eta | constant effectiveness [1] | |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Nominal condition | |||
MassFlowRate | m1_flow_nominal | Nominal mass flow rate [kg/s] | |
MassFlowRate | m2_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dp1_nominal | Pressure difference [Pa] | |
PressureDifference | dp2_nominal | Pressure difference [Pa] | |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
PressureDifference | dpValve_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Nominal condition | |||
Density | rhoStd | Medium2.density_pTX(101325, ... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Dynamics | |||
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTime | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | init | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yThrWayVal_start | 1 | Initial value of output from the filter in the bypass valve |
Nominal condition | |||
Time | tauThrWayVal | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Boolean | reverseActing | false | Set to true for throttling the water flow rate through a cooling coil controller |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
input RealInput | TSet | Temperature setpoint for port_b2 [K] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimaryLoadSide
Integrated water-side economizer on the load side in a primary-only chilled water system
Information
This model implements an integrated water-side economizer (WSE) on the load side of the primary-only chilled water system, as shown in the following figure. In the configuration, users can model multiple chillers with only one integrated WSE.
Implementation
The WSE located on the load side can see the warmest return chilled water, and hence can maximize the use time of the heat exchanger. This system have three operation modes: free cooling (FC) mode, partial mechanical cooling (PMC) mode and fully mechanical cooling (FMC) mode.
There are 7 valves for on/off use only, which can be controlled in order to switch among FC, PMC and FMC mode.
- V1 and V2 are associated with the chiller. When the chiller is commanded to run, V1 and V2 will be open, and vice versa. Note that when the number of chillers are larger than 1, V1 and V2 are vectored models with the same dimension as the chillers.
- V3 and V4 are associated with the WSE. When the WSE is commanded to run, V3 and V4 will be open, and vice versa.
- V5 is for FMC only. When FMC is on, V5 is commanded to on. Otherwise, V5 is off.
- V6 is for FC only. When FC is on, V6 is commanded to on. Otherwise, V6 is off.
- V7 is controlled to track a minimum flowrate through the chiller. If the cooling load is very small (e.g. when the data center start to be occupied), and the flowrate through the chiller is smaller than the minimum requirement, then V7 is open, and the valve position is controlled to meet the minimum flowrate through the chiller. If the cooling load grows, V7 will eventually be fully closed.
The details about how to switch among different cooling modes are shown as:
For Free Cooling (FC) Mode:
- V1 and V2 are closed, and V3 and V4 are open;
- V5 is closed;
- V6 is open;
- V7 is closed;
For Partially Mechanical Cooling (PMC) Mode:
- V1 and V2 are open, and V3 and V4 are open;
- V5 is closed;
- V6 is closed;
- V7 is controlled to track a minumum flowrate through the chiller;
For Fully Mechanical Cooling (FMC) Mode:
- V1 and V2 are open, and V3 and V4 are closed;
- V5 is open;
- V6 is closed;
- V7 is controlled to track a minumum flowrate through the chiller;
Reference
- Stein, Jeff. 2009. Waterside Economizing in Data Centers: Design and Control Considerations.ASHRAE Transactions, 115(2).
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialIntegratedPrimary (Integrated water-side economizer for primary-only chilled water system).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Chiller | |||
MassFlowRate | m1_flow_chi_nominal | Nominal mass flow rate on the medium 1 side in the chiller [kg/s] | |
MassFlowRate | m2_flow_chi_nominal | Nominal mass flow rate on the medium 2 side in the chiller [kg/s] | |
PressureDifference | dp1_chi_nominal | Pressure difference on medium 1 side in the chillers [Pa] | |
PressureDifference | dp2_chi_nominal | Pressure difference on medium 2 side in the chillers [Pa] | |
Integer | numChi | Number of chillers | |
Generic | perChi[numChi] | redeclare parameter Building... | Performance data for chillers |
Waterside economizer | |||
MassFlowRate | m1_flow_wse_nominal | Nominal mass flow rate on the medium 1 side in the waterside economizer [kg/s] | |
MassFlowRate | m2_flow_wse_nominal | Nominal mass flow rate on the medium 2 side in the waterside economizer [kg/s] | |
PressureDifference | dp1_wse_nominal | Pressure difference on medium 1 side in the waterside economizer [Pa] | |
PressureDifference | dp2_wse_nominal | Pressure difference on medium 2 side in the waterside economizer [Pa] | |
Efficiency | eta | 0.8 | Heat exchange effectiveness [1] |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
MassFlowRate | m_flow_nominal[numVal] | {m1_flow_chi_nominal,m2_flow... | Nominal mass flow rate [kg/s] |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | lValChi[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lValWSE[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lVal5 | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lVal6 | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
Pump | |||
Integer | numPum | numChi | Number of pumps |
Generic | perPum[numPum] | redeclare parameter Building... | Performance data for the pumps |
Boolean | addPowerToMedium | true | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
Real | lValPum | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValChi_start[numChi] | fill(0, numChi) | Initial value of output from on/off valves in chillers |
Real | yValWSE_start | 0 | Initial value of output from on/off valve in WSE |
Real | yThrWayValWSE_start | 0 | Initial value of output from three-way bypass valve in WSE |
Real | yVal5_start | 0 | Initial value of output:0-closed, 1-fully opened |
Real | yVal6_start | 1 - yVal5_start | Initial value of output:0-closed, 1-fully opened |
Real | yValPum_start[numPum] | fill(0, numPum) | Initial value of output:0-closed, 1-fully opened |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Chiller | |||
Time | tauChi1 | 30 | Time constant at nominal flow in chillers [s] |
Time | tauChi2 | 30 | Time constant at nominal flow in chillers [s] |
Waterside economizer | |||
Time | tauWSE | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Temperature Sensor | |||
Time | tauSenT | 1 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) [s] |
Init | initTSenor | Modelica.Blocks.Types.Init.I... | Type of initialization of the temperature sensor (InitialState and InitialOutput are identical) |
Pump | |||
Time | tauPump | 1 | Time constant of fluid volume for nominal flow in pumps, used if energy or mass balance is dynamic [s] |
Filtered speed | |||
Time | riseTimePump | 30 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initPum | initValve | Type of initialization (no init/steady state/initial state/initial output) |
Real | yPum_start[numPum] | fill(0, numPum) | Initial value of output:0-closed, 1-fully opened |
Initialization | |||
Medium 1 | |||
AbsolutePressure | p1_start | Medium1.p_default | Start value of pressure [Pa] |
Temperature | T1_start | Medium1.T_default | Start value of temperature [K] |
MassFraction | X1_start[Medium1.nX] | Medium1.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C1_start[Medium1.nC] | fill(0, Medium1.nC) | Start value of trace substances |
ExtraProperty | C1_nominal[Medium1.nC] | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Medium 2 | |||
AbsolutePressure | p2_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T2_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X2_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C2_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C2_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input RealInput | TSet | Set point for leaving water temperature [K] |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
output RealOutput | TCHWSupWSE | Chilled water supply temperature in the waterside economizer [K] |
output RealOutput | powChi[numChi] | Electric power consumed by chiller compressor [W] |
input RealInput | yVal6 | Actuator position for valve 6 (0: closed, 1: open) [1] |
input RealInput | yVal5 | Actuator position for valve 5(0: closed, 1: open) [1] |
input RealInput | yPum[numPum] | Constant normalized rotational speed [1] |
output RealOutput | powPum[numPum] | Electrical power consumed by the pumps [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimaryPlantSide
Integrated waterside economizer on the plant side in a primary-only chilled water System
Information
This model implements an integrated water-side economizer (WSE) on the plant side of the primary-only chilled water system, as shown in the following figure. In the configuration, users can model multiple chillers with only one integrated WSE.
Implementation
The WSE located on the load side can see the warmest return chilled water, and hence can maximize the use time of the heat exchanger. This system have three operation modes: free cooling (FC) mode, partial mechanical cooling (PMC) mode and fully mechanical cooling (FMC) mode.
There are 6 valves for on/off use only, which can be controlled in order to switch among FC, PMC and FMC mode.
- V1 and V2 are associated with the chiller. When the chiller is commanded to run, V1 and V2 will be open, and vice versa. Note that when the number of chillers are larger than 1, V1 and V2 are vectored models with the same dimension as the chillers.
- V2 and V3 are associated with the WSE. When the WSE is commanded to run, V3 and V4 will be open, and vice versa.
- V5 is for FMC only. When FMC is on, V5 is commanded to on. Otherwise, V5 is off.
- V6 is for FC only. When FC is on, V6 is commanded to on. Otherwise, V6 is off.
The details about how to switch among different cooling modes are shown as:
For Free Cooling (FC) Mode:
- V1 and V2 are closed, and V3 and V4 are open;
- V5 is closed;
- V6 is open;
For Partially Mechanical Cooling (PMC) Mode:
- V1 and V2 are open, and V3 and V4 are open;
- V5 is closed;
- V6 is closed;
For fully Mechanical Cooling (FMC) Mode:
- V1 and V2 are open, and V3 and V4 are closed;
- V5 is open;
- V6 is closed;
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialIntegratedPrimary (Integrated water-side economizer for primary-only chilled water system).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Chiller | |||
MassFlowRate | m1_flow_chi_nominal | Nominal mass flow rate on the medium 1 side in the chiller [kg/s] | |
MassFlowRate | m2_flow_chi_nominal | Nominal mass flow rate on the medium 2 side in the chiller [kg/s] | |
PressureDifference | dp1_chi_nominal | Pressure difference on medium 1 side in the chillers [Pa] | |
PressureDifference | dp2_chi_nominal | Pressure difference on medium 2 side in the chillers [Pa] | |
Integer | numChi | Number of chillers | |
Generic | perChi[numChi] | redeclare parameter Building... | Performance data for chillers |
Waterside economizer | |||
MassFlowRate | m1_flow_wse_nominal | Nominal mass flow rate on the medium 1 side in the waterside economizer [kg/s] | |
MassFlowRate | m2_flow_wse_nominal | Nominal mass flow rate on the medium 2 side in the waterside economizer [kg/s] | |
PressureDifference | dp1_wse_nominal | Pressure difference on medium 1 side in the waterside economizer [Pa] | |
PressureDifference | dp2_wse_nominal | Pressure difference on medium 2 side in the waterside economizer [Pa] | |
Efficiency | eta | 0.8 | Heat exchange effectiveness [1] |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
MassFlowRate | m_flow_nominal[numVal] | {m1_flow_chi_nominal,m2_flow... | Nominal mass flow rate [kg/s] |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | lValChi[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lValWSE[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lVal5 | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lVal6 | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValChi_start[numChi] | fill(0, numChi) | Initial value of output from on/off valves in chillers |
Real | yValWSE_start | 0 | Initial value of output from on/off valve in WSE |
Real | yThrWayValWSE_start | 0 | Initial value of output from three-way bypass valve in WSE |
Real | yVal5_start | 0 | Initial value of output:0-closed, 1-fully opened |
Real | yVal6_start | 1 - yVal5_start | Initial value of output:0-closed, 1-fully opened |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Chiller | |||
Time | tauChi1 | 30 | Time constant at nominal flow in chillers [s] |
Time | tauChi2 | 30 | Time constant at nominal flow in chillers [s] |
Waterside economizer | |||
Time | tauWSE | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Temperature Sensor | |||
Time | tauSenT | 1 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) [s] |
Init | initTSenor | Modelica.Blocks.Types.Init.I... | Type of initialization of the temperature sensor (InitialState and InitialOutput are identical) |
Initialization | |||
Medium 1 | |||
AbsolutePressure | p1_start | Medium1.p_default | Start value of pressure [Pa] |
Temperature | T1_start | Medium1.T_default | Start value of temperature [K] |
MassFraction | X1_start[Medium1.nX] | Medium1.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C1_start[Medium1.nC] | fill(0, Medium1.nC) | Start value of trace substances |
ExtraProperty | C1_nominal[Medium1.nC] | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Medium 2 | |||
AbsolutePressure | p2_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T2_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X2_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C2_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C2_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input RealInput | TSet | Set point for leaving water temperature [K] |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
output RealOutput | TCHWSupWSE | Chilled water supply temperature in the waterside economizer [K] |
output RealOutput | powChi[numChi] | Electric power consumed by chiller compressor [W] |
input RealInput | yVal6 | Actuator position for valve 6 (0: closed, 1: open) [1] |
input RealInput | yVal5 | Actuator position for valve 5(0: closed, 1: open) [1] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimarySecondary
Integrated waterside economizer on the load side in a primary-secondary chilled water system
Information
This model implements an integrated water-side economizer (WSE) on the load side of the primary-secondary chilled water system, as shown in the following figure. In the configuration, users can model multiple chillers with only one integrated WSE.
Implementation
The WSE located on the load side can see the warmest return chilled water, and hence can maximize the hours when the WSE can operate. Also it allows the primary pumps to be shut off when the WSE can handle the entire load. This system have three operation modes: free cooling (FC) mode, partial mechanical cooling (PMC) mode and fully mechanical cooling (FMC) mode.
There are 5 valves for on/off use only, which can be controlled in order to switch among FC, PMC and FMC mode.
- V1 and V2 are associated with the chiller. When the chiller is commanded to run, V1 and V2 will be open, and vice versa. Note that when the number of chillers are larger than 1, V1 and V2 are vectored models with the same dimension as the chillers.
- V2 and V3 are associated with the WSE. When the WSE is commanded to run, V3 and V4 will be open, and vice versa.
- V5 is for FMC only. When FMC is on, V5 is commanded to on. Otherwise, V5 is off.
The details about how to switch among different cooling modes are shown as:
For Free Cooling (FC) Mode:
- V1 and V2 are closed, and V3 and V4 are open;
- V5 is closed;
For Partially Mechanical Cooling (PMC) Mode:
- V1 and V2 are open, and V3 and V4 are open;
- V5 is closed;
For Fully Mechanical Cooling (FMC) Mode:
- V1 and V2 are open, and V3 and V4 are closed;
- V5 is open;
Reference
- Stein, Jeff. 2009. Waterside Economizing in Data Centers: Design and Control Considerations.ASHRAE Transactions, 115(2).
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialChillerWSE (Partial model for chiller and WSE package).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Integer | numVal | 5 | Number of valves |
Chiller | |||
MassFlowRate | m1_flow_chi_nominal | Nominal mass flow rate on the medium 1 side in the chiller [kg/s] | |
MassFlowRate | m2_flow_chi_nominal | Nominal mass flow rate on the medium 2 side in the chiller [kg/s] | |
PressureDifference | dp1_chi_nominal | Pressure difference on medium 1 side in the chillers [Pa] | |
PressureDifference | dp2_chi_nominal | Pressure difference on medium 2 side in the chillers [Pa] | |
Integer | numChi | Number of chillers | |
Generic | perChi[numChi] | redeclare parameter Building... | Performance data for chillers |
Waterside economizer | |||
MassFlowRate | m1_flow_wse_nominal | Nominal mass flow rate on the medium 1 side in the waterside economizer [kg/s] | |
MassFlowRate | m2_flow_wse_nominal | Nominal mass flow rate on the medium 2 side in the waterside economizer [kg/s] | |
PressureDifference | dp1_wse_nominal | Pressure difference on medium 1 side in the waterside economizer [Pa] | |
PressureDifference | dp2_wse_nominal | Pressure difference on medium 2 side in the waterside economizer [Pa] | |
Efficiency | eta | 0.8 | Heat exchange effectiveness [1] |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
MassFlowRate | m_flow_nominal[numVal] | {m1_flow_chi_nominal,m2_flow... | Nominal mass flow rate [kg/s] |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | lValChi[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lValWSE[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
Pump | |||
Integer | numPum | numChi | Number of pumps |
MassFlowRate | m_flow_pum_nominal | m2_flow_chi_nominal | Nominal flow rate of the pump [kg/s] |
Generic | perPum[numPum] | redeclare parameter Building... | Performance data for primary pumps |
Boolean | addPowerToMedium | true | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
Real | lValPum | 0.0001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
PressureDifference | dpValPum_nominal | 6000 | Nominal differential pressure of the shutoff valves for primary pumps [Pa] |
Shutoff valve | |||
Real | lVal5 | 0.0001 | Valve 5 leakage, l=Kv(y=0)/Kv(y=1) |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValChi_start[numChi] | fill(0, numChi) | Initial value of output from on/off valves in chillers |
Real | yValWSE_start | 0 | Initial value of output from on/off valve in WSE |
Real | yThrWayValWSE_start | 0 | Initial value of output from three-way bypass valve in WSE |
Real | yValPum_start[numPum] | fill(0, numPum) | Initial value of output:0-closed, 1-fully opened |
Real | yVal5_start | 0 | Initial value of output from valve 5:0-closed, 1-fully opened |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Chiller | |||
Time | tauChi1 | 30 | Time constant at nominal flow in chillers [s] |
Time | tauChi2 | 30 | Time constant at nominal flow in chillers [s] |
Waterside economizer | |||
Time | tauWSE | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Temperature Sensor | |||
Time | tauSenT | 1 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) [s] |
Init | initTSenor | Modelica.Blocks.Types.Init.I... | Type of initialization of the temperature sensor (InitialState and InitialOutput are identical) |
Pump | |||
Time | tauPump | 1 | Time constant of fluid volume for nominal flow in pumps, used if energy or mass balance is dynamic [s] |
Filtered flowrate | |||
Time | riseTimePump | 30 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initPum | initValve | Type of initialization (no init/steady state/initial state/initial output) |
Real | yPum_start[numPum] | fill(0, numPum) | Initial value of output from pumps:0-closed, 1-fully opened |
Real | m_flow_start[numPum] | fill(0, numPum) | Initial value of output from pumps |
Initialization | |||
Medium 1 | |||
AbsolutePressure | p1_start | Medium1.p_default | Start value of pressure [Pa] |
Temperature | T1_start | Medium1.T_default | Start value of temperature [K] |
MassFraction | X1_start[Medium1.nX] | Medium1.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C1_start[Medium1.nC] | fill(0, Medium1.nC) | Start value of trace substances |
ExtraProperty | C1_nominal[Medium1.nC] | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Medium 2 | |||
AbsolutePressure | p2_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T2_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X2_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C2_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C2_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input RealInput | TSet | Set point for leaving water temperature [K] |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
output RealOutput | TCHWSupWSE | Chilled water supply temperature in the waterside economizer [K] |
output RealOutput | powChi[numChi] | Electric power consumed by chiller compressor [W] |
input RealInput | yPum[numPum] | Prescribed normalized flowrate for primary pumps: 1 - nominal flowrate, 0 - no flowrate [1] |
input RealInput | yVal5 | Actuator position for valve 5 (0: closed, 1: open) [1] |
output RealOutput | powPum[numPum] | Electrical power consumed by the pumps [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.NonIntegrated
Non-integrated waterside economizer in chilled water system
Information
This model implements a non-integrated water-side economizer (WSE) in the chilled water system, as shown in the following figure. In the configuration, users can model multiple chillers with only one integrated WSE. This model can be used in both primary-only and primary-secondary pumping system.
Implementation
The WSE is in parallel with chillers on both the condenser and chilled water sides. If the economizer cannot meet the entire load then it must be shut off. Otherwise, the relatively warm economier leaving water will be mixed with the cold chiller leaving water and hence the plant leaving water temperature will be above setpoint. For this configuration, there are only two cooling modes: free cooling (FC) mode and fully mechanical cooling (FMC) mode.
There are 4 valves for on/off use only, which can be controlled in order to switch between FC and FMC mode.
- V1 and V2 are associated with the chiller. When the chiller is commanded to run, V1 and V2 will be open, and vice versa. Note that when the number of chillers are larger than 1, V1 and V2 are vectored models with the same dimension as the chillers.
- V3 and V4 are associated with the WSE. When the WSE is commanded to run, V3 and V4 will be open, and vice versa.
The details about how to switch among different cooling modes are shown as:
For Free Cooling (FC) Mode:
- V1 and V2 are closed, and V3 and V4 are open;
For Fully Mechanical Cooling (FMC) Mode:
- V1 and V2 are open, and V3 and V4 are closed;
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialChillerWSE (Partial model for chiller and WSE package).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Integer | numVal | 4 | Number of valves |
Chiller | |||
MassFlowRate | m1_flow_chi_nominal | Nominal mass flow rate on the medium 1 side in the chiller [kg/s] | |
MassFlowRate | m2_flow_chi_nominal | Nominal mass flow rate on the medium 2 side in the chiller [kg/s] | |
PressureDifference | dp1_chi_nominal | Pressure difference on medium 1 side in the chillers [Pa] | |
PressureDifference | dp2_chi_nominal | Pressure difference on medium 2 side in the chillers [Pa] | |
Integer | numChi | Number of chillers | |
Generic | perChi[numChi] | redeclare parameter Building... | Performance data for chillers |
Waterside economizer | |||
MassFlowRate | m1_flow_wse_nominal | Nominal mass flow rate on the medium 1 side in the waterside economizer [kg/s] | |
MassFlowRate | m2_flow_wse_nominal | Nominal mass flow rate on the medium 2 side in the waterside economizer [kg/s] | |
PressureDifference | dp1_wse_nominal | Pressure difference on medium 1 side in the waterside economizer [Pa] | |
PressureDifference | dp2_wse_nominal | Pressure difference on medium 2 side in the waterside economizer [Pa] | |
Efficiency | eta | 0.8 | Heat exchange effectiveness [1] |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
MassFlowRate | m_flow_nominal[numVal] | {m1_flow_chi_nominal,m2_flow... | Nominal mass flow rate [kg/s] |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | lValChi[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | lValWSE[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_chi_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValChi_start[numChi] | fill(0, numChi) | Initial value of output from on/off valves in chillers |
Real | yValWSE_start | 0 | Initial value of output from on/off valve in WSE |
Real | yThrWayValWSE_start | 0 | Initial value of output from three-way bypass valve in WSE |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Chiller | |||
Time | tauChi1 | 30 | Time constant at nominal flow in chillers [s] |
Time | tauChi2 | 30 | Time constant at nominal flow in chillers [s] |
Waterside economizer | |||
Time | tauWSE | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Temperature Sensor | |||
Time | tauSenT | 1 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) [s] |
Init | initTSenor | Modelica.Blocks.Types.Init.I... | Type of initialization of the temperature sensor (InitialState and InitialOutput are identical) |
Initialization | |||
Medium 1 | |||
AbsolutePressure | p1_start | Medium1.p_default | Start value of pressure [Pa] |
Temperature | T1_start | Medium1.T_default | Start value of temperature [K] |
MassFraction | X1_start[Medium1.nX] | Medium1.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C1_start[Medium1.nC] | fill(0, Medium1.nC) | Start value of trace substances |
ExtraProperty | C1_nominal[Medium1.nC] | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Medium 2 | |||
AbsolutePressure | p2_start | Medium2.p_default | Start value of pressure [Pa] |
Temperature | T2_start | Medium2.T_default | Start value of temperature [K] |
MassFraction | X2_start[Medium2.nX] | Medium2.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C2_start[Medium2.nC] | fill(0, Medium2.nC) | Start value of trace substances |
ExtraProperty | C2_nominal[Medium2.nC] | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input RealInput | TSet | Set point for leaving water temperature [K] |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
output RealOutput | TCHWSupWSE | Chilled water supply temperature in the waterside economizer [K] |
output RealOutput | powChi[numChi] | Electric power consumed by chiller compressor [W] |
Modelica definition
Buildings.Applications.DataCenters.ChillerCooled.Equipment.WatersideEconomizer
Waterside economizer
Information
This module impliments a waterside economizer model that consists of a heat exchanger and a shutoff valve on each medium side. This waterside economizer model can be used in two different control scenarios:
- The temperature at
port_b2
is controlled by a built-in PID controller and a three-way valve by setting the parameteruse_controller
astrue
. - The temperature at
port_b2
is NOT controlled by a built-in controller by setting the parameteruse_controller
asfalse
. Hence, an outside controller can be used to control the temperature. For example, in the free-cooling mode, the speed of variable-speed cooling tower fans can be adjusted to maintain the supply chilled water temperature around the setpoint.
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialPlantParallel (Partial source plant model with associated valves), Buildings.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.ThreeWayValveParameters (Model with parameters for a three-way valve), Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialControllerInterface (Partial interface model for waterside economizer temperature controller).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium1 | PartialMedium | Medium 1 in the component | |
replaceable package Medium2 | PartialMedium | Medium 2 in the component | |
Integer | num | 1 | Number of equipment |
replaceable package Medium | PartialMedium | Medium in the component | |
Boolean | activate_ThrWayVal | use_controller | Activate the use of three-way valve: True-use three-way valve; False-not use the three-way valve |
Boolean | use_controller | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
Efficiency | eta | constant effectiveness [1] | |
Nominal condition | |||
MassFlowRate | m1_flow_nominal | Nominal mass flow rate [kg/s] | |
MassFlowRate | m2_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dp1_nominal | Pressure difference [Pa] | |
PressureDifference | dp2_nominal | Pressure difference [Pa] | |
Two-way valve | |||
CvTypes | CvData | Buildings.Fluid.Types.CvType... | Selection of flow coefficient |
Real | Kv[numVal] | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
Real | Cv[numVal] | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
Area | Av[numVal] | Av (metric) flow coefficient [m2] | |
PressureDifference | dpValve_nominal[numVal] | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint [Pa] |
Real | l[2] | {0.0001,0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
Three-way Valve | |||
PressureDifference | dpThrWayVal_nominal | 6000 | Nominal pressure drop of fully open valve [Pa] |
Real | fraK_ThrWayVal | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
Real | l_ThrWayVal[2] | {0.0001,0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
Real | R | 50 | Rangeability, R=50...100 typically for the three-way valve |
Real | delta0 | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
Assumptions | |||
Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
Advanced | |||
MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
PortFlowDirection | portFlowDirection_1 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_1 in the three-way valve |
PortFlowDirection | portFlowDirection_2 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_2 in the three-way valve |
PortFlowDirection | portFlowDirection_3 | Modelica.Fluid.Types.PortFlo... | Flow direction for port_3 in the three-way valve |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
Two-way valve | |||
Density | rhoStd[numVal] | {Medium1.density_pTX(101325,... | Inlet density for which valve coefficients are defined [kg/m3] |
Flow resistance | |||
Medium 1 | |||
Boolean | from_dp1 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance1 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM1 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Medium 2 | |||
Boolean | from_dp2 | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance2 | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM2 | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Dynamics | |||
Filtered opening | |||
Boolean | use_inputFilter | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
Time | riseTimeValve | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) [s] |
Init | initValve | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
Real | yValve_start[numFil] | {yValWSE_start} | Initial value of output:0-closed, 1-fully opened |
Real | yThrWayVal_start | 1 | Initial value of output from the filter in the bypass valve |
Real | yValWSE_start | 1 | Initial value of output from the filter in the shutoff valve |
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
Real | mSenFac | 1 | Factor for scaling the sensible thermal mass of the volume |
Nominal condition | |||
Time | tauThrWayVal | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve [s] |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
Controller | |||
SimpleController | controllerType | Modelica.Blocks.Types.Simple... | Type of controller |
Real | k | 1 | Gain of controller [1] |
Time | Ti | 0.5 | Time constant of integrator block [s] |
Time | Td | 0.1 | Time constant of derivative block [s] |
Real | yMax | 1 | Upper limit of output |
Real | yMin | 0 | Lower limit of output |
Real | wp | 1 | Set-point weight for Proportional block (0..1) |
Real | wd | 0 | Set-point weight for Derivative block (0..1) |
Real | Ni | 0.9 | Ni*Ti is time constant of anti-windup compensation |
Real | Nd | 10 | The higher Nd, the more ideal the derivative block |
Boolean | reverseActing | false | Set to true for throttling the water flow rate through a cooling coil controller |
Initialization | |||
InitPID | initType | Modelica.Blocks.Types.InitPI... | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
Real | xi_start | 0 | Initial or guess value value for integrator output (= integrator state) |
Real | xd_start | 0 | Initial or guess value for state of derivative block |
Real | yCon_start | 0 | Initial value of output from the controller |
Integrator reset | |||
Reset | reset | Buildings.Types.Reset.Disabled | Type of controller output reset |
Real | y_reset | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
input BooleanInput | on[num] | Set to true to enable equipment, or false to disable equipment |
replaceable package Medium | Medium in the component | |
input BooleanInput | trigger | Resets the controller output when trigger becomes true |
input RealInput | y_reset_in | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input |
input RealInput | TSet | Set point for leaving water temperature [K] |