modelChillerHeatRecoveryGroup

Model of multiple identical heat recovery chillers in parallel

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

Information

This model represents a set of identical heat recovery chillers that are piped in parallel. Modulating isolation valves and modulating switchover valves are included on condenser and evaporator side. The switchover valves allow indexing the condenser (resp. the evaporator) either to the CWC loop or to the HW loop (resp. to the CWE loop or to the CHW loop). Modulating valves are used to allow for sequences of operation that bleed CWE into the HW return flow to modulate the condenser entering temperature.

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
  • Cooling switchover command y1Coo: DO signal dedicated to each unit, with a dimensionality of one
  • Supply temperature setpoint TSet: AO signal dedicated to each unit, with a dimensionality of one
    The signal corresponds either to the HW supply temperature setpoint when the unit operates in heating mode, or to the CHW supply temperature setpoint when the unit operates in cooling mode.
  • Condenser and evaporator isolation valve commanded position yVal(Con|Eva): AO signal dedicated to each unit, with a dimensionality of one
  • Condenser and evaporator switchover valve commanded position yVal(Con|Eva)Swi: 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 entering temperature TConEnt: 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

HRC performance data

The performance data should cover the HRC lift envelope, that is when the HRC is operating in direct heat recovery mode, producing CHW and HW at their setpoint value at full load. In this case, and to allow for cascading heat recovery where a third fluid circuit is used to generate a cascade of thermodynamic cycles, two additional parameters TCasEntCoo_nominal and TCasEntHea_nominal are exposed to specify the entering temperature of the third fluid circuit when the HRC is operating in cooling mode and in heating mode, respectively. In cooling mode the third fluid circuit is connected to the condenser barrel. In heating mode, the third fluid circuit is connected to the evaporator barrel. The parameters TCasEnt*_nominal are then used to assess the design capacity in heating and cooling mode, respectively.

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.TemperatureTCasHeaEnt_nominal298.15Design evaporator entering temperature in cascading heating mode
Modelica.Units.SI.TemperatureTCasCooEnt_nominal288.15Design condenser entering temperature in cascading cooling mode
Modelica.Units.SI.TemperatureTChiWatSup_nominaldat.TEvaLvg_nominalDesign (minimum) CHW supply temperature
Modelica.Units.SI.TemperatureTHeaWatSup_nominaldat.TConLvg_nominalDesign (maximum) HW supply temperature
Modelica.Units.SI.EfficiencyCOPCasHea_nominalCoefficient of performance in cascading heating mode
Modelica.Units.SI.EfficiencyCOPCasCoo_nominalCoefficient of performance in cascading cooling mode
Modelica.Units.SI.TemperatureTCasHeaLvg_nominalDesign value of evaporator leaving temperature in cascading heating mode
Modelica.Units.SI.TemperatureTCasCooLvg_nominalDesign value of condenser leaving temperature in cascading cooling mode
Fluid.Chillers.Data.ElectricReformulatedEIR.GenericdatChiller parameters (each unit)
Assumptions
BooleanallowFlowReversal1 (from EightPort)true= true to allow flow reversal in medium 1, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal2 (from EightPort)true= true to allow flow reversal in medium 2, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal3 (from EightPort)true= true to allow flow reversal in medium 3, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal4 (from EightPort)true= true to allow flow reversal in medium 4, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced › Initialization
Modelica.Units.SI.SpecificEnthalpyh_outflow_a1_start (from EightPort)Medium1.h_defaultStart value for enthalpy flowing out of port a1
Modelica.Units.SI.SpecificEnthalpyh_outflow_b1_start (from EightPort)Medium1.h_defaultStart value for enthalpy flowing out of port b1
Modelica.Units.SI.SpecificEnthalpyh_outflow_a2_start (from EightPort)Medium2.h_defaultStart value for enthalpy flowing out of port a2
Modelica.Units.SI.SpecificEnthalpyh_outflow_b2_start (from EightPort)Medium2.h_defaultStart value for enthalpy flowing out of port b2
Modelica.Units.SI.SpecificEnthalpyh_outflow_a3_start (from EightPort)Medium3.h_defaultStart value for enthalpy flowing out of port a1
Modelica.Units.SI.SpecificEnthalpyh_outflow_b3_start (from EightPort)Medium3.h_defaultStart value for enthalpy flowing out of port b1
Modelica.Units.SI.SpecificEnthalpyh_outflow_a4_start (from EightPort)Medium4.h_defaultStart value for enthalpy flowing out of port a1
Modelica.Units.SI.SpecificEnthalpyh_outflow_b4_start (from EightPort)Medium4.h_defaultStart value for enthalpy flowing out of port b1
Nominal condition
Modelica.Units.SI.MassFlowRatem1_flow_nominal (from PartialEightPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem2_flow_nominal (from PartialEightPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem3_flow_nominal (from PartialEightPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem4_flow_nominal (from PartialEightPortInterface)Nominal mass flow rate
Modelica.Units.SI.HeatFlowRateQChiWatUni_flow_nominaldat.QEva_flow_nominalDesign cooling heat flow rate (each unit, <0)
Modelica.Units.SI.HeatFlowRateQHeaWatUni_flow_nominal-dat.QEva_flow_nominal*(1 + 1/dat.COP_nominal*dat.etaMotor)Design heating heat flow rate in direct heat recovery mode (each unit, >0)
Modelica.Units.SI.HeatFlowRateQEvaCasHeaUni_flow_nominalDesign evaporator heat flow rate in cascading heating mode (each unit, <0)
Modelica.Units.SI.HeatFlowRateQChiWatCasCooUni_flow_nominalDesign cooling heat flow rate in cascading cooling mode (each unit, <0)
Modelica.Units.SI.HeatFlowRateQHeaWatCasHeaUni_flow_nominal-QEvaCasHeaUni_flow_nominal*(1 + 1/COPCasHea_nominal*dat.etaMotor)Design heating heat flow rate in cascading heating mode (each unit, >0)
Modelica.Units.SI.HeatFlowRateQConCasCooUni_flow_nominal-QChiWatCasCooUni_flow_nominal*(1 + 1/COPCasCoo_nominal*dat.etaMotor)Design condenser heat flow rate in cascading cooling mode (each unit, >0)
Modelica.Units.SI.HeatFlowRateQChiWat_flow_nominalnUni*QChiWatUni_flow_nominalDesign cooling heat flow rate (all units, <0)
Modelica.Units.SI.HeatFlowRateQHeaWat_flow_nominalnUni*QHeaWatUni_flow_nominalDesign heating heat flow rate (all units, >0)
Modelica.Units.SI.HeatFlowRateQEvaCasHea_flow_nominalnUni*QEvaCasHeaUni_flow_nominalDesign evaporator heat flow rate in cascading heating mode (all units, <0)
Modelica.Units.SI.HeatFlowRateQChiWatCasCoo_flow_nominalnUni*QChiWatCasCooUni_flow_nominalDesign cooling heat flow rate in cascading cooling mode (all units, <0)
Modelica.Units.SI.HeatFlowRateQHeaWatCasHea_flow_nominalnUni*QHeaWatCasHeaUni_flow_nominalDesign heating heat flow rate in cascading heating mode (all units, >0)
Modelica.Units.SI.HeatFlowRateQConCasCoo_flow_nominalnUni*QConCasCooUni_flow_nominalDesign condenser heat flow rate in cascading cooling mode (all units, >0)
Modelica.Units.SI.MassFlowRatemChiWatUni_flow_nominaldat.mEva_flow_nominalDesign CHW mass flow rate (each unit)
Modelica.Units.SI.MassFlowRatemConWatUni_flow_nominaldat.mCon_flow_nominalDesign 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 evaporator pressure drop (each unit)
Modelica.Units.SI.PressureDifferencedpCon_nominalDesign condenser pressure drop (each unit)
Advanced
Medium1.MassFlowRatem1_flow_small (from PartialEightPortInterface)1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow
Medium2.MassFlowRatem2_flow_small (from PartialEightPortInterface)1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow
Medium3.MassFlowRatem3_flow_small (from PartialEightPortInterface)1E-4*abs(m3_flow_nominal)Small mass flow rate for regularization of zero flow
Medium4.MassFlowRatem4_flow_small (from PartialEightPortInterface)1E-4*abs(m4_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialEightPortInterface)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 EightPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from EightPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from EightPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from EightPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_aport_a3 (from EightPort)Fluid connector a1 (positive design flow direction is from port_a3 to port_b3)
Modelica.Fluid.Interfaces.FluidPort_bport_b3 (from EightPort)Fluid connector b2 (positive design flow direction is from port_a3 to port_b3)
Modelica.Fluid.Interfaces.FluidPort_aport_a4 (from EightPort)Fluid connector a1 (positive design flow direction is from port_a4 to port_b4)
Modelica.Fluid.Interfaces.FluidPort_bport_b4 (from EightPort)Fluid connector b2 (positive design flow direction is from port_a4 to port_b4)
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nUni]y1Chiller On/Off command
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nUni]y1CooCooling switchover command: true for cooling, false for heating
Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni]TSetSupply temperature setpoint
Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni]yValConSwiChiller condenser switchover valve commanded position
Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni]yValEvaSwiChiller evaporator switchover valve commanded position
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]mEva_flowChiller evaporator barrel mass flow rate
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]TEvaLvgChiller evaporator leaving temperature
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]mCon_flowChiller condenser barrel mass flow rate
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]TConLvgChiller condenser leaving temperature
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni]TConEntChiller condenser entering temperature

Components

TypeNameDefaultDescription
Medium1.MassFlowRatem1_flow (from PartialEightPortInterface)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.Units.SI.Pressuredp1 (from PartialEightPortInterface)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium2.MassFlowRatem2_flow (from PartialEightPortInterface)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.Units.SI.Pressuredp2 (from PartialEightPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium3.MassFlowRatem3_flow (from PartialEightPortInterface)port_a3.m_flowMass flow rate from port_a3 to port_b3 (m3_flow > 0 is design flow direction)
Modelica.Units.SI.Pressuredp3 (from PartialEightPortInterface)port_a3.p - port_b3.pPressure difference between port_a3 and port_b3
Medium4.MassFlowRatem4_flow (from PartialEightPortInterface)port_a4.m_flowMass flow rate from port_a4 to port_b4 (m4_flow > 0 is design flow direction)
Modelica.Units.SI.Pressuredp4 (from PartialEightPortInterface)port_a4.p - port_b4.pPressure difference between port_a4 and port_b4
Medium1.ThermodynamicStatesta_a1 (from PartialEightPortInterface)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 PartialEightPortInterface)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 PartialEightPortInterface)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 PartialEightPortInterface)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
Medium3.ThermodynamicStatesta_a3 (from PartialEightPortInterface)if allowFlowReversal3 then Medium3.setState_phX(port_a3.p, noEvent(actualStream(port_a3.h_outflow)), noEvent(actualStream(port_a3.Xi_outflow))) else Medium3.setState_phX(port_a3.p, inStream(port_a3.h_outflow), inStream(port_a3.Xi_outflow))Medium properties in port_a3
Medium3.ThermodynamicStatesta_b3 (from PartialEightPortInterface)if allowFlowReversal3 then Medium3.setState_phX(port_b3.p, noEvent(actualStream(port_b3.h_outflow)), noEvent(actualStream(port_b3.Xi_outflow))) else Medium3.setState_phX(port_b3.p, port_b3.h_outflow, port_b3.Xi_outflow)Medium properties in port_b3
Medium4.ThermodynamicStatesta_a4 (from PartialEightPortInterface)if allowFlowReversal4 then Medium4.setState_phX(port_a4.p, noEvent(actualStream(port_a4.h_outflow)), noEvent(actualStream(port_a4.Xi_outflow))) else Medium4.setState_phX(port_a4.p, inStream(port_a4.h_outflow), inStream(port_a4.Xi_outflow))Medium properties in port_a4
Medium4.ThermodynamicStatesta_b4 (from PartialEightPortInterface)if allowFlowReversal4 then Medium4.setState_phX(port_b4.p, noEvent(actualStream(port_b4.h_outflow)), noEvent(actualStream(port_b4.Xi_outflow))) else Medium4.setState_phX(port_b4.p, port_b4.h_outflow, port_b4.Xi_outflow)Medium properties in port_b4
Fluid.Chillers.ElectricReformulatedEIR[nUni]chiChiller
Fluid.Actuators.Valves.TwoWayLinear[nUni]valConCondenser isolation valve
Fluid.Actuators.Valves.TwoWayLinear[nUni]valEvaEvaporator isolation valve
Fluid.FixedResistances.Junction[nUni]junConWatEvaOutFluid junction
Fluid.FixedResistances.Junction[nUni]junConWatEvaInlFluid junction
Fluid.Sensors.TemperatureTwoPort[nUni]temEvaLvgChiller evaporator leaving temperature
Fluid.FixedResistances.Junction[nUni]junHeaWatConInlFluid junction
Fluid.FixedResistances.Junction[nUni]junHeaWatConOutFluid junction
Fluid.Sensors.TemperatureTwoPort[nUni]temConEntChiller condenser entering temperature
Fluid.Sensors.TemperatureTwoPort[nUni]temConLvgChiller condenser leaving temperature
Buildings.Controls.OBC.CDL.Reals.MultiSummulSumSum up power of all units
Fluid.Sensors.MassFlowRate[nUni]floEvaChiller evaporator barrel mass flow rate
Fluid.Sensors.MassFlowRate[nUni]floConChiller condenser barrel mass flow rate
Fluid.Actuators.Valves.TwoWayLinear[nUni]valConSwiCondenser switchover valve
Fluid.Actuators.Valves.TwoWayLinear[nUni]valEvaSwiEvaporator switchover valve

Contents

NameDescription
Medium

Revisions

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