modelChillerGroup

Model of multiple identical chillers in parallel

Extends from Buildings.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models).

Information

This model represents a set of identical water-cooled compression chillers that are piped in parallel. Modulating isolation valves are included on condenser and evaporator side.

Control points

The following input and output points are available.

  • On/Off command y1: DO signal dedicated to each unit, with a dimensionality of one
  • CHW supply temperature setpoint TSet: AO signal common to all units, with a dimensionality of zero
  • Condenser and evaporator isolation valve commanded position yVal(Con|Eva): AO signal dedicated to each unit, with a dimensionality of one
  • Condenser and evaporator leaving temperature T(Con|Eva)Lvg: AI signal dedicated to each unit, with a dimensionality of one
  • Condenser and evaporator mass flow rate m(Con|Eva)_flow: AI signal dedicated to each unit, with a dimensionality of one

Details

Modeling approach

In a parallel arrangement, all operating units have the same operating point, provided that the isolation valves are commanded to the same position. This allows modeling the heat transfer through the condenser and evaporator barrel with a single instance of Buildings.Fluid.Chillers.ElectricReformulatedEIR. Hydronics are resolved with mass flow rate multiplier components in conjunction with instances of Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.MultipleValves which represent the parallel network of valves and fixed resistances.

Actuators

By default, linear valve models are used. Those are configured with a pressure drop varying linearly with the flow rate, as opposed to the quadratic dependency usually considered for a turbulent flow regime. This is because the whole plant model contains large nonlinear systems of equations and this configuration limits the risk of solver failure while reducing the time to solution. This has no significant impact on the operating point of the circulation pumps when a control loop is used to modulate the valve opening and maintain the flow rate or the leaving temperature at setpoint. Then, whatever the modeling assumptions for the valve, the control loop ensures that the valve creates the adequate pressure drop and flow, which will simply be reached at a different valve opening with the above simplification.

Parameters

TypeNameDefaultDescription
IntegernUniNumber of units operating at design conditions
Modelica.Units.SI.TemperatureTChiWatSup_nominaldat.TEvaLvg_nominalDesign (minimum) CHW supply temperature
Modelica.Units.SI.TemperatureTConWatLvg_nominaldat.TConLvg_nominalDesign (maximum) CW leaving temperature
Fluid.Chillers.Data.ElectricReformulatedEIR.GenericdatChiller parameters (each unit)
Assumptions
BooleanallowFlowReversal1 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Nominal condition
Modelica.Units.SI.MassFlowRatem1_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem2_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.HeatFlowRateQChiWatUni_flow_nominaldat.QEva_flow_nominalDesign cooling heat flow rate (each unit, <0)
Modelica.Units.SI.HeatFlowRateQConWatUni_flow_nominal-dat.QEva_flow_nominal*(1 + 1/dat.COP_nominal*dat.etaMotor)Design CW heat flow rate (each unit, >0)
Modelica.Units.SI.HeatFlowRateQChiWat_flow_nominalnUni*QChiWatUni_flow_nominalDesign cooling heat flow rate (all units, <0)
Modelica.Units.SI.HeatFlowRateQConWat_flow_nominalnUni*QConWatUni_flow_nominalDesign CW heat flow rate (all units, >0)
Modelica.Units.SI.MassFlowRatemChiWatUni_flow_nominaldat.mEva_flow_nominalDesign chiller CHW mass flow rate (each unit)
Modelica.Units.SI.MassFlowRatemConWatUni_flow_nominaldat.mCon_flow_nominalDesign chiller CW mass flow rate (each unit)
Modelica.Units.SI.MassFlowRatemChiWat_flow_nominalnUni*mChiWatUni_flow_nominalDesign CHW mass flow rate (all units)
Modelica.Units.SI.MassFlowRatemConWat_flow_nominalnUni*mConWatUni_flow_nominalDesign CW mass flow rate (all units)
Modelica.Units.SI.PressureDifferencedpEva_nominalDesign chiller evaporator pressure drop (each unit)
Modelica.Units.SI.PressureDifferencedpCon_nominalChiller condenser design pressure drop (each unit)
Advanced
Medium1.MassFlowRatem1_flow_small (from PartialFourPortInterface)1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow
Medium2.MassFlowRatem2_flow_small (from PartialFourPortInterface)1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamicsModelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Dynamics › Time needed to open or close valve
Booleanuse_strokeTimeenergyDynamics <> Modelica.Fluid.Types.Dynamics.SteadyStateSet to true to continuously open and close valve
Modelica.Units.SI.TimestrokeTime120Time needed to open or close valve
Modelica.Blocks.Types.InitinitModelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
Realy_start1Initial position of actuator

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialFourPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialFourPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialFourPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialFourPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nUni]y1Chiller On/Off command
Buildings.Controls.OBC.CDL.Interfaces.RealInputTSetSupply temperature setpoint
Buildings.Controls.OBC.CDL.Interfaces.RealOutputPPower drawn
Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni]yValConChiller condenser isolation valve commanded position
Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni]yValEvaChiller evaporator isolation valve commanded position
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]TConLvgChiller condenser leaving temperature
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]mCon_flowChiller condenser barrel mass flow rate
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]TEvaLvgChiller evaporator leaving temperature
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]mEva_flowChiller evaporator barrel mass flow rate

Components

TypeNameDefaultDescription
Medium1.MassFlowRatem1_flow (from PartialFourPortInterface)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp1 (from PartialFourPortInterface)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium2.MassFlowRatem2_flow (from PartialFourPortInterface)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp2 (from PartialFourPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium1.ThermodynamicStatesta_a1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium1.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow))Medium properties in port_a1
Medium1.ThermodynamicStatesta_b1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium1.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow)Medium properties in port_b1
Medium2.ThermodynamicStatesta_a2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium2.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow))Medium properties in port_a2
Medium2.ThermodynamicStatesta_b2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium2.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow)Medium properties in port_b2
Fluid.Chillers.ElectricReformulatedEIRchiChiller
Fluid.BaseClasses.MassFlowRateMultipliermulConInlFlow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulConOutFlow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulEvaInlFlow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulEvaOutFlow rate multiplier
Buildings.Templates.Components.Controls.MultipleCommandscomConvert command signals
BaseClasses.MultipleValvesvalEvaChiller evaporator isolation valves
BaseClasses.MultipleValvesvalConChiller condenser isolation valves
Buildings.Controls.OBC.CDL.Reals.MultiplymulPScale power
Fluid.Sensors.TemperatureTwoPorttemConLvgChiller condenser leaving temperature
Fluid.Sensors.TemperatureTwoPorttemEvaLvgChiller evaporator leaving temperature
Fluid.Sensors.MassFlowRatefloConChiller condenser barrel mass flow rate
Fluid.Sensors.MassFlowRatefloEvaChiller evaporator barrel mass flow rate
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorrepReplicate
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorrep1Replicate
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorrep2Replicate
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorrep3Replicate

Revisions

  • February 24, 2023, by Antoine Gautier:
    First implementation.