Buildings.Applications.DataCenters.ChillerCooled.Examples

Collection of models that illustrate model use and test models

Information

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

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

Package Content

Name Description
Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimaryLoadSideEconomizer IntegratedPrimaryLoadSideEconomizer Example that demonstrates a chiller plant with integrated primary load side economizer
Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimarySecondaryEconomizer IntegratedPrimarySecondaryEconomizer Example that demonstrates a chiller plant with integrated primary-secondary side economizer
Buildings.Applications.DataCenters.ChillerCooled.Examples.NonIntegratedPrimarySecondaryEconomizer NonIntegratedPrimarySecondaryEconomizer Example that demonstrates a chiller plant with non-integrated primary-secondary side economizer
Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses BaseClasses Base classes for examples

Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimaryLoadSideEconomizer Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimaryLoadSideEconomizer

Example that demonstrates a chiller plant with integrated primary load side economizer

Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimaryLoadSideEconomizer

Information

System Configuration

This example demonstrates the implementation of a chiller plant with water-side economizer (WSE) to cool a data center. The system is a primary-only chiller plant with two chillers and an integrated WSE located on the load side. The system schematics is as shown below.

image

Control Logic

This section describes the detailed control logic used in this chilled water plant system.

Cooling Mode Control

The chilled water system with integrated waterside economizer can run in three modes: free cooling (FC) mode, partially mechanical cooling (PMC) mode and fully mechanical cooling (FMC) mode. The detailed control logics about how to switch among these three cooling modes are described in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingMode. Details on how the valves are operated under different cooling modes are presented in Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimaryLoadSide.

Chiller Staging Control

The staging sequence of multiple chillers are descibed as below:

The detailed implementation is shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.ChillerStage.

Pump Staging Control

For constant speed pumps, the number of running pumps equals to the number of running chillers.

For variable speed pumps, the number of running pumps is controlled by the speed signal and the mass flow rate. Details are shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.VariableSpeedPumpStage. The speed is controlled by maintaining a fixed differential pressure between the outlet and inlet on the waterside of the Computer Room Air Handler (CRAH).

Cooling Tower Speed Control

The control logic for cooling tower fan speed is described as:

Detailed implementation of cooling tower speed control can be found in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingTowerSpeed.

Room temperature control

The room temperature is controlled by adjusting the fan speed of the AHU using a PI controller.

Note that for simplicity, the temperature and differential pressure reset control are not implemented in this example.

Extends from Modelica.Icons.Example (Icon for runnable examples), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess (Post-processing), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter (Partial model that impliments cooling system for data centers).

Parameters

TypeNameDefaultDescription
replaceable package MediumAAirMedium model
replaceable package MediumWWaterMedium model
IntegernumChi2Number of chillers
MassFlowRatem1_flow_chi_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_chi_nominal18.3Nominal mass flow rate at evaporator water in the chillers [kg/s]
PressureDifferencedp1_chi_nominal46.2*1000Nominal pressure [Pa]
PressureDifferencedp2_chi_nominal44.8*1000Nominal pressure [Pa]
PowerQEva_nominalm2_flow_chi_nominal*4200*(6....Nominal cooling capaciaty(Negative means cooling) [W]
MassFlowRatem1_flow_wse_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_wse_nominal35.3Nominal mass flow rate at condenser water in the chillers [kg/s]
PressureDifferencedp1_wse_nominal33.1*1000Nominal pressure [Pa]
PressureDifferencedp2_wse_nominal34.5*1000Nominal pressure [Pa]
GenericperPumCW[numChi] Performance data for condenser water pumps
TimetWai1200Waiting time [s]
ThermalConductanceUA_nominalnumChi*QEva_nominal/Building...Thermal conductance at nominal flow for sensible heat, used to compute time constant [W/K]
MassFlowRatemAir_flow_nominal161.35Nominal air mass flowrate [kg/s]
RealyValMinAHU0.1Minimum valve openning position [1]
TemperatureTCHWSet273.15 + 8Chilled water temperature setpoint [K]
TemperatureTSupAirSetTCHWSet + 10Supply air temperature setpoint [K]
TemperatureTRetAirSet273.15 + 25Supply air temperature setpoint [K]
PressuredpSetPoi80000Differential pressure setpoint [Pa]
GenericperPumPri[numChi]perPumPri(each pressure=Buil...Performance data for primary pumps

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model IntegratedPrimaryLoadSideEconomizer "Example that demonstrates a chiller plant with integrated primary load side economizer" extends Modelica.Icons.Example; extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess ( freCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FreeCooling) then 1 else 0), parMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.PartialMechanical) then 1 else 0), fulMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FullMechanical) then 1 else 0), PHVAC(y=cooTow[1].PFan + cooTow[2].PFan + pumCW[1].P + pumCW[2].P + sum( chiWSE.powChi + chiWSE.powPum) + ahu.PFan + ahu.PHea), PIT(y=roo.QSou.Q_flow)); extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter ( redeclare Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimaryLoadSide chiWSE( addPowerToMedium=false, perPum=perPumPri), weaData(filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/DRYCOLD.mos"))); parameter Buildings.Fluid.Movers.Data.Generic[numChi] perPumPri( each pressure=Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters( V_flow=m2_flow_chi_nominal/1000*{0.2,0.6,1.0,1.2}, dp=(dp2_chi_nominal+dp2_wse_nominal+18000)*{1.5,1.3,1.0,0.6})) "Performance data for primary pumps"; Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingMode cooModCon( tWai=tWai, deaBan1=1.1, deaBan2=0.5, deaBan3=1.1, deaBan4=0.5) "Cooling mode controller"; Modelica.Blocks.Sources.RealExpression towTApp(y=cooTow[1].TApp_nominal) "Cooling tower approach temperature"; Modelica.Blocks.Sources.RealExpression yVal5( y=if cooModCon.y == Integer( Buildings.Applications.DataCenters.Types.CoolingModes.FullMechanical) then 1 else 0) "On/off signal for valve 5"; Modelica.Blocks.Sources.RealExpression yVal6( y=if cooModCon.y == Integer( Buildings.Applications.DataCenters.Types.CoolingModes.FreeCooling) then 1 else 0) "On/off signal for valve 6"; Modelica.Blocks.Sources.RealExpression cooLoaChi( y=-chiWSE.port_a2.m_flow*4180*(chiWSE.TCHWSupWSE - TCHWSupSet.y)) "Cooling load in chillers"; equation connect(pumSpeSig.y, chiWSE.yPum); connect(TCHWSup.port_b, ahu.port_a1); connect(chiWSE.TCHWSupWSE, cooModCon.TCHWSupWSE); connect(cooLoaChi.y, chiStaCon.QTot); for i in 1:numChi loop connect(pumCW[i].port_a, TCWSup.port_b); end for; connect(TCHWSupSet.y, cooModCon.TCHWSupSet); connect(towTApp.y, cooModCon.TApp); connect(weaBus.TWetBul.TWetBul, cooModCon.TWetBul); connect(TCHWRet.port_b, chiWSE.port_a2); connect(cooModCon.TCHWRetWSE, TCHWRet.T); connect(cooModCon.y, chiStaCon.cooMod); connect(cooModCon.y,intToBoo.u); connect(TCHWSup.T, chiStaCon.TCHWSup); connect(cooModCon.y, sigCha.u); connect(yVal5.y, chiWSE.yVal5); connect(yVal6.y, chiWSE.yVal6); connect(cooModCon.y, cooTowSpeCon.cooMod); connect(cooModCon.y, CWPumCon.cooMod); end IntegratedPrimaryLoadSideEconomizer;

Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimarySecondaryEconomizer Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimarySecondaryEconomizer

Example that demonstrates a chiller plant with integrated primary-secondary side economizer

Buildings.Applications.DataCenters.ChillerCooled.Examples.IntegratedPrimarySecondaryEconomizer

Information

System Configuration

This example demonstrates the implementation of a chiller plant with water-side economizer (WSE) to cool a data center. The system schematics is as shown below.

The system is a primary-secondary chiller plant with two chillers and an integrated WSE.

image

Control Logic

This section describes the detailed control logic used in this chilled water plant system.

Cooling Mode Control

The chilled water system with integrated waterside economizer can run in three modes: free cooling (FC) mode, partially mechanical cooling (PMC) mode and fully mechanical cooling (FMC) mode. The detailed control logics about how to switch among these three cooling modes are described in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingMode. Details on how the valves are operated under different cooling modes are presented in Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimarySecondary.

Chiller Staging Control

The staging sequence of multiple chillers are descibed as below:

The detailed implementation is shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.ChillerStage.

Pump Staging Control

For constant speed pumps, the number of running pumps equals to the number of running chillers.

For variable speed pumps, the number of running pumps is controlled by the speed signal and the mass flow rate. Details are shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.VariableSpeedPumpStage. And the speed is controlled by maintaining a fixed differential pressure between the outlet and inlet on the waterside of the Computer Room Air Handler (CRAH).

Cooling Tower Speed Control

The control logic for cooling tower fan speed is described as:

Detailed implementation of cooling tower speed control can be found in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingTowerSpeed.

Room temperature control

The room temperature is controlled by adjusting the fan speed of the AHU using a PI controller.

Note that for simplicity, the chilled water supply temperature and differential pressure reset control are not implemented in this example.

Extends from Modelica.Icons.Example (Icon for runnable examples), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess (Post-processing), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter (Partial model that impliments cooling system for data centers).

Parameters

TypeNameDefaultDescription
replaceable package MediumAAirMedium model
replaceable package MediumWWaterMedium model
IntegernumChi2Number of chillers
MassFlowRatem1_flow_chi_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_chi_nominal18.3Nominal mass flow rate at evaporator water in the chillers [kg/s]
PressureDifferencedp1_chi_nominal46.2*1000Nominal pressure [Pa]
PressureDifferencedp2_chi_nominal44.8*1000Nominal pressure [Pa]
PowerQEva_nominalm2_flow_chi_nominal*4200*(6....Nominal cooling capaciaty(Negative means cooling) [W]
MassFlowRatem1_flow_wse_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_wse_nominal35.3Nominal mass flow rate at condenser water in the chillers [kg/s]
PressureDifferencedp1_wse_nominal33.1*1000Nominal pressure [Pa]
PressureDifferencedp2_wse_nominal34.5*1000Nominal pressure [Pa]
GenericperPumCW[numChi] Performance data for condenser water pumps
TimetWai1200Waiting time [s]
ThermalConductanceUA_nominalnumChi*QEva_nominal/Building...Thermal conductance at nominal flow for sensible heat, used to compute time constant [W/K]
MassFlowRatemAir_flow_nominal161.35Nominal air mass flowrate [kg/s]
RealyValMinAHU0.1Minimum valve openning position [1]
TemperatureTCHWSet273.15 + 8Chilled water temperature setpoint [K]
TemperatureTSupAirSetTCHWSet + 10Supply air temperature setpoint [K]
TemperatureTRetAirSet273.15 + 25Supply air temperature setpoint [K]
PressuredpSetPoi80000Differential pressure setpoint [Pa]
GenericperPumSec[numChi]perPumSec(each pressure=Buil...Performance data for secondary chilled water pumps
GenericperPumPri[numChi]perPumPri(each pressure=Buil...Performance data for secondary chilled water pumps

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model IntegratedPrimarySecondaryEconomizer "Example that demonstrates a chiller plant with integrated primary-secondary side economizer" extends Modelica.Icons.Example; extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess ( freCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FreeCooling) then 1 else 0), parMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.PartialMechanical) then 1 else 0), fulMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FullMechanical) then 1 else 0), PHVAC(y=cooTow[1].PFan + cooTow[2].PFan + pumCW[1].P + pumCW[2].P + sum( chiWSE.powChi + chiWSE.powPum) + sum(secPum.P) + ahu.PFan + ahu.PHea), PIT(y=roo.QSou.Q_flow)); extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter ( redeclare Buildings.Applications.DataCenters.ChillerCooled.Equipment.IntegratedPrimarySecondary chiWSE( addPowerToMedium=false, perPum=perPumPri), weaData(filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/DRYCOLD.mos"))); parameter Buildings.Fluid.Movers.Data.Generic[numChi] perPumSec( each pressure= Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters( V_flow=m2_flow_chi_nominal/1000*{0.2,0.6,1.0,1.2}, dp=(dp2_wse_nominal+dpSetPoi+18000+30000)*{1.5,1.3,1.0,0.6})) "Performance data for secondary chilled water pumps"; parameter Buildings.Fluid.Movers.Data.Generic[numChi] perPumPri( each pressure= Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters( V_flow=m2_flow_chi_nominal/1000*{0.2,0.6,1.0,1.2}, dp=(dp2_chi_nominal+dp2_wse_nominal+6000)*{1.5,1.3,1.0,0.6})) "Performance data for secondary chilled water pumps"; Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingMode cooModCon( tWai=tWai, deaBan1=1.1, deaBan2=0.5, deaBan3=1.1, deaBan4=0.5) "Cooling mode controller"; Modelica.Blocks.Sources.RealExpression towTApp(y=cooTow[1].TApp_nominal) "Cooling tower approach temperature"; Modelica.Blocks.Sources.RealExpression yVal5( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FullMechanical) then 1 else 0) "On/off signal for valve 5"; Modelica.Blocks.Sources.RealExpression cooLoaChi( y=-chiWSE.port_a2.m_flow*4180*(chiWSE.TCHWSupWSE - TCHWSupSet.y)) "Cooling load in chillers"; Buildings.Applications.DataCenters.ChillerCooled.Equipment.FlowMachine_y secPum( redeclare package Medium = MediumW, dpValve_nominal=6000, per=perPumSec, addPowerToMedium=false, m_flow_nominal=m2_flow_chi_nominal, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Secondary pumps"; Buildings.Applications.DataCenters.ChillerCooled.Controls.ConstantSpeedPumpStage PriPumCon(tWai=0) "Chilled water primary pump controller"; Modelica.Blocks.Math.Product priPumSpe[numChi] "Primary pump speed signal"; Modelica.Blocks.Sources.RealExpression notFreCoo(y=if cooModCon.y == Integer( Buildings.Applications.DataCenters.Types.CoolingModes.FreeCooling) then 0 else 1) "Not free cooling mode"; equation connect(yVal5.y, chiWSE.yVal5); connect(cooLoaChi.y, chiStaCon.QTot); connect(TCHWSup.port_b, secPum.port_a); connect(secPum.port_b, ahu.port_a1); connect(pumSpeSig.y, secPum.u); for i in 1:numChi loop connect(pumCW[i].port_a, TCWSup.port_b); end for; connect(towTApp.y, cooModCon.TApp); connect(weaBus.TWetBul.TWetBul, cooModCon.TWetBul); connect(TCHWRet.port_b, chiWSE.port_a2); connect(cooModCon.TCHWRetWSE, TCHWRet.T); connect(chiWSE.TCHWSupWSE, cooModCon.TCHWSupWSE); connect(TCHWSupSet.y, cooModCon.TCHWSupSet); connect(TCHWSup.T, chiStaCon.TCHWSup); connect(PriPumCon.numOnChi, chiNumOn.y); connect(PriPumCon.cooMod, cooModCon.y); connect(cooTowSpeCon.cooMod, cooModCon.y); connect(intToBoo.u, cooModCon.y); connect(CWPumCon.cooMod, cooModCon.y); connect(cooModCon.y, sigCha.u); connect(cooModCon.y, chiStaCon.cooMod); connect(notFreCoo.y, priPumSpe[1].u1); connect(notFreCoo.y, priPumSpe[2].u1); connect(PriPumCon.y, priPumSpe.u2); connect(priPumSpe.y, chiWSE.yPum); end IntegratedPrimarySecondaryEconomizer;

Buildings.Applications.DataCenters.ChillerCooled.Examples.NonIntegratedPrimarySecondaryEconomizer Buildings.Applications.DataCenters.ChillerCooled.Examples.NonIntegratedPrimarySecondaryEconomizer

Example that demonstrates a chiller plant with non-integrated primary-secondary side economizer

Buildings.Applications.DataCenters.ChillerCooled.Examples.NonIntegratedPrimarySecondaryEconomizer

Information

System Configuration

This example demonstrates the implementation of a chiller plant with water-side economizer (WSE) to cool a data center. The system schematics is as shown below.

The system is a primary-secondary chiller plant with two chillers and a non-integrated WSE.

image

Control Logic

This section describes the detailed control logic used in this chilled water plant system.

Cooling Mode Control

The chilled water system with non-integrated waterside economizer can run in two modes: free cooling (FC) mode, and fully mechanical cooling (FMC) mode. The detailed control logics about how to switch between these two cooling modes are described in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingModeNonIntegrated. Details on how the valves are operated under different cooling modes are presented in Buildings.Applications.DataCenters.ChillerCooled.Equipment.NonIntegrated.

Chiller Staging Control

The staging sequence of multiple chillers are descibed as below:

The detailed implementation is shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.ChillerStage.

Pump Staging Control

For constant speed pumps, the number of running pumps equals to the number of running chillers.

For variable speed pumps, the number of runing pumps is controlled by the speed signal and the mass flowrate. Details are shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.VariableSpeedPumpStage. And the speed is controlled by maintaining a fixed differential pressure between the outlet and inlet on the waterside of the Computer Room Air Handler (CRAH).

Cooling Tower Speed Control

The control logic for cooling tower fan speed is described as:

Detailed implementation of cooling tower speed control can be found in Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingTowerSpeed.

Room temperature control

The room temperature is controlled by adjusting the fan speed of the AHU using a PI controller.

Note that for simplicity, the temperature and differential pressure reset control are not implemented in this example.

Extends from Modelica.Icons.Example (Icon for runnable examples), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess (Post-processing), Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter (Partial model that impliments cooling system for data centers).

Parameters

TypeNameDefaultDescription
replaceable package MediumAAirMedium model
replaceable package MediumWWaterMedium model
IntegernumChi2Number of chillers
MassFlowRatem1_flow_chi_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_chi_nominal18.3Nominal mass flow rate at evaporator water in the chillers [kg/s]
PressureDifferencedp1_chi_nominal46.2*1000Nominal pressure [Pa]
PressureDifferencedp2_chi_nominal44.8*1000Nominal pressure [Pa]
PowerQEva_nominalm2_flow_chi_nominal*4200*(6....Nominal cooling capaciaty(Negative means cooling) [W]
MassFlowRatem1_flow_wse_nominal34.7Nominal mass flow rate at condenser water in the chillers [kg/s]
MassFlowRatem2_flow_wse_nominal35.3Nominal mass flow rate at condenser water in the chillers [kg/s]
PressureDifferencedp1_wse_nominal33.1*1000Nominal pressure [Pa]
PressureDifferencedp2_wse_nominal34.5*1000Nominal pressure [Pa]
GenericperPumCW[numChi] Performance data for condenser water pumps
TimetWai1200Waiting time [s]
ThermalConductanceUA_nominalnumChi*QEva_nominal/Building...Thermal conductance at nominal flow for sensible heat, used to compute time constant [W/K]
MassFlowRatemAir_flow_nominal161.35Nominal air mass flowrate [kg/s]
RealyValMinAHU0.1Minimum valve openning position [1]
TemperatureTCHWSet273.15 + 8Chilled water temperature setpoint [K]
TemperatureTSupAirSetTCHWSet + 10Supply air temperature setpoint [K]
TemperatureTRetAirSet273.15 + 25Supply air temperature setpoint [K]
PressuredpSetPoi80000Differential pressure setpoint [Pa]
GenericperPumSec[numChi]perPumSec(each pressure=Buil...Performance data for secondary chilled water pumps
GenericperPumPri[numChi]perPumPri(each pressure=Buil...Performance data for secondary chilled water pumps

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model NonIntegratedPrimarySecondaryEconomizer "Example that demonstrates a chiller plant with non-integrated primary-secondary side economizer" extends Modelica.Icons.Example; extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PostProcess ( freCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FreeCooling) then 1 else 0), parMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.PartialMechanical) then 1 else 0), fulMecCooSig( y=if cooModCon.y == Integer(Buildings.Applications.DataCenters.Types.CoolingModes.FullMechanical) then 1 else 0), PHVAC(y=cooTow[1].PFan + cooTow[2].PFan + pumCW[1].P + pumCW[2].P + sum( chiWSE.powChi) + sum(priPum.P) + sum(secPum.P) + ahu.PFan + ahu.PHea), PIT(y=roo.QSou.Q_flow)); extends Buildings.Applications.DataCenters.ChillerCooled.Examples.BaseClasses.PartialDataCenter ( redeclare Buildings.Applications.DataCenters.ChillerCooled.Equipment.NonIntegrated chiWSE( controllerType=Modelica.Blocks.Types.SimpleController.PI, Ti=60), weaData(filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/DRYCOLD.mos")), CWPumCon(tWai=60), chiStaCon(tWai=60)); parameter Buildings.Fluid.Movers.Data.Generic[numChi] perPumSec( each pressure= Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters( V_flow=m2_flow_chi_nominal/1000*{0.2,0.6,1.0,1.2}, dp=(dp2_wse_nominal+dpSetPoi+18000+30000)*{1.5,1.3,1.0,0.6})) "Performance data for secondary chilled water pumps"; parameter Buildings.Fluid.Movers.Data.Generic[numChi] perPumPri( each pressure=Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters( V_flow=m2_flow_chi_nominal/1000*{0.2,0.6,1.0,1.2}, dp=(dp2_chi_nominal+6000)*{1.5,1.3,1.0,0.6})) "Performance data for secondary chilled water pumps"; Buildings.Applications.DataCenters.ChillerCooled.Controls.CoolingModeNonIntegrated cooModCon( tWai=tWai, deaBan=1, TSwi=TCHWSet - 5) "Cooling mode controller"; Buildings.Applications.DataCenters.ChillerCooled.Equipment.FlowMachine_y secPum( redeclare package Medium = MediumW, dpValve_nominal=6000, per=perPumSec, addPowerToMedium=false, m_flow_nominal=m2_flow_chi_nominal, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, tau=1, use_inputFilter=true) "Secondary pumps"; Buildings.Applications.DataCenters.ChillerCooled.Equipment.FlowMachine_m priPum( redeclare package Medium = MediumW, dpValve_nominal=6000, per=perPumPri, m_flow_nominal=m2_flow_chi_nominal, addPowerToMedium=false, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, tau=1, use_inputFilter=true) "Constant speed pumps"; Buildings.Applications.DataCenters.ChillerCooled.Controls.ConstantSpeedPumpStage priPumCon(tWai=0) "Chilled water primary pump controller"; Modelica.Blocks.Sources.RealExpression cooLoaChi( y=-ahu.port_a1.m_flow*4180*(TCHWRet.T - TCHWSupSet.y)) "Cooling load in chillers"; inner Modelica.StateGraph.StateGraphRoot stateGraphRoot; Buildings.Fluid.Sensors.MassFlowRate bypFlo( redeclare package Medium = MediumW) "Sensor for bypass flowrate"; equation for i in 1:numChi loop connect(chiOn[i].y, chiWSE.on[i]); end for; connect(TCHWSupSet.y, cooModCon.TCHWSupSet); connect(weaBus.TWetBul.TWetBul, cooModCon.TWetBul); connect(chiStaCon.y, chiOn.u); connect(intToBoo.y, wseOn.u); connect(wseOn.y, chiWSE.on[numChi + 1]); connect(CWPumCon.y, gai.u); connect(secPum.port_b, ahu.port_a1); connect(TCHWSup.port_b, secPum.port_a); connect(pumSpeSig.y, secPum.u); connect(cooLoaChi.y, chiStaCon.QTot); connect(TCHWSup.T, cooModCon.TCHWSup); connect(priPum.port_a, TCHWRet.port_b); connect(chiWSE.port_a2, priPum.port_b); connect(priPum.port_a, bypFlo.port_a); connect(bypFlo.port_b, TCHWSup.port_a); connect(TCHWSup.T, chiStaCon.TCHWSup); connect(priPumCon.y, priPum.u); connect(cooModCon.numOnChi, chiNumOn.y); connect(priPumCon.cooMod, cooModCon.y); connect(cooModCon.y, CWPumCon.cooMod); connect(chiStaCon.cooMod, cooModCon.y); connect(cooModCon.y, intToBoo.u); connect(cooModCon.y, sigCha.u); connect(chiNumOn.y, priPumCon.numOnChi); connect(cooModCon.y, cooTowSpeCon.cooMod); end NonIntegratedPrimarySecondaryEconomizer;