modelSingleMixing

Single mixing circuit

Extends from BaseClasses.SingleMixing (Single mixing circuit).

Information

Summary

This configuration (see schematic below) is used for variable flow primary circuits and either constant flow or variable flow secondary circuits that have a design supply temperature close or identical to the primary circuit but a varying set point during operation. The control valve should be sized with a pressure drop equal to the primary pressure differential. That pressure drop must be compensated for by the secondary pump which excludes the use of this configuration to applications with a high primary pressure differential.

Schematic

The following table presents the main characteristics of this configuration.

Primary circuit Variable flow
Secondary (consumer) circuit Constant or variable flow
Typical applications Circuits that have a design supply temperature close or identical to the primary circuit but a varying set point during operation.
Non-recommended applications Applications with a high primary pressure differential such as DHC systems due to the constraints on the control valve and secondary pump selection: for those applications use either Buildings.Fluid.HydronicConfigurations.ActiveNetworks.InjectionTwoWay, or Buildings.Fluid.HydronicConfigurations.ActiveNetworks.Decoupling in conjunction with Buildings.Fluid.HydronicConfigurations.PassiveNetworks.SingleMixing.
Built-in valve control options Supply temperature
Control valve selection β = ΔpA-AB / (Δp1 + ΔpA-AB)
The valve is sized with a pressure drop of Δp1 which yields an authority close to 0.5.
Balancing requirement The primary balancing valve should compensate for the primary pressure differential (see additional comments below).
Bypass balancing valve not recommended.
Lumped flow resistances include
(With the setting use_lumFloRes=true.)
Direct branch: control valve direct branch val.res1 and whole consumer circuit between b2 and a2
Bypass branch: control valve bypass branch val.res3 and bypass balancing valve res3

Additional comments

The primary pressure differential tends to oppose the bypass flow rate. It is possible to reach zero bypass flow at partial valve opening and a negative bypass flow for even lower opening values. Therefore, a balancing valve in the bypass is not recommended as it would further reduce the bypass flow rate. When using that model, one should keep the default setting dpBal3_nominal=0 Pa.

The balancing procedure should ensure that the primary pressure differential is compensated for by the primary balancing valve. Otherwise, the flow may reverse in the bypass branch and the mixing function of the three-way valve cannot be achieved. The control valve pressure drop must be compensated for by the secondary pump.

Parameters

TypeNameDefaultDescription
Realn (from PartialHydronicConfiguration)2Flow exponent, n1=1 for laminar, n1=2 for turbulent
Movers.Data.GenericperPum (from PartialHydronicConfiguration)
Configuration
Booleanuse_siz (from PartialHydronicConfiguration)trueSet to true for built-in sizing of control valve and optional pump
Booleanuse_dp1 (from PartialHydronicConfiguration)Set to true to enable dp1_nominal
Booleanuse_dp2 (from PartialHydronicConfiguration)Set to true to enable dp2_nominal
Buildings.Fluid.HydronicConfigurations.Types.ValvetypVal (from PartialHydronicConfiguration)Type of control valve
Booleanhave_typVar (from PartialHydronicConfiguration)trueSet to true to enable the choice of the controlled variable
Nominal condition
Modelica.Units.SI.MassFlowRatem1_flow_nominal (from PartialHydronicConfiguration)Mass flow rate in primary circuit at design conditions
Modelica.Units.SI.MassFlowRatem2_flow_nominal (from PartialHydronicConfiguration)Mass flow rate in consumer circuit at design conditions
Modelica.Units.SI.PressureDifferencedp1_nominal (from PartialHydronicConfiguration)Primary circuit pressure differential at design conditions
Modelica.Units.SI.PressureDifferencedp2_nominal (from PartialHydronicConfiguration)Consumer circuit pressure differential at design conditions
Control valve
Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristictypCha (from PartialHydronicConfiguration)Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristic.EqualPercentageControl valve characteristic
Modelica.Units.SI.PressureDifferencedpValve_nominal (from PartialHydronicConfiguration)Control valve pressure drop at design conditions
Actuators.Valves.Data.GenericflowCharacteristics (from PartialHydronicConfiguration)Table with flow characteristics
Actuators.Valves.Data.GenericflowCharacteristics1 (from PartialHydronicConfiguration)Table with flow characteristics for direct flow path at port_1
Actuators.Valves.Data.GenericflowCharacteristics3 (from PartialHydronicConfiguration)Table with flow characteristics for bypass flow path at port_3
Pump
Buildings.Fluid.HydronicConfigurations.Types.PumptypPum (from PartialHydronicConfiguration)Buildings.Fluid.HydronicConfigurations.Types.Pump.VariableInputType of secondary pump
Buildings.Fluid.HydronicConfigurations.Types.PumpModeltypPumMod (from PartialHydronicConfiguration)Buildings.Fluid.HydronicConfigurations.Types.PumpModel.SpeedType of pump model
Modelica.Units.SI.MassFlowRatemPum_flow_nominal (from PartialHydronicConfiguration)m2_flow_nominalPump head at design conditions
Modelica.Units.SI.PressureDifferencedpPum_nominal (from PartialHydronicConfiguration)dp2_nominal + dpBal2_nominalPump head at design conditions
Controls
Buildings.Fluid.HydronicConfigurations.Types.ControltypCtl (from PartialHydronicConfiguration)Buildings.Fluid.HydronicConfigurations.Types.Control.NoneType of built-in controls
Buildings.Fluid.HydronicConfigurations.Types.ControlVariabletypVar (from PartialHydronicConfiguration)Buildings.Fluid.HydronicConfigurations.Types.ControlVariable.SupplyTemperatureControlled variable
Buildings.Controls.OBC.CDL.Types.SimpleControllercontrollerType (from PartialHydronicConfiguration)Buildings.Controls.OBC.CDL.Types.SimpleController.PIType of controller
Realk (from PartialHydronicConfiguration)0.1Gain of controller
RealTi (from PartialHydronicConfiguration)120Time constant of integrator block
Assumptions
Booleanuse_lumFloRes (from PartialHydronicConfiguration)trueSet to true to use a lumped flow resistance when possible
BooleanallowFlowReversal (from PartialHydronicConfiguration)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
Balancing valves
Modelica.Units.SI.PressureDifferencedpBal1_nominal (from PartialHydronicConfiguration)0Primary balancing valve pressure drop at design conditions
Modelica.Units.SI.PressureDifferencedpBal2_nominal (from PartialHydronicConfiguration)0Secondary balancing valve pressure drop at design conditions
Modelica.Units.SI.PressureDifferencedpBal3_nominal (from PartialHydronicConfiguration)0Bypass balancing valve pressure drop at design conditions
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialHydronicConfiguration)Modelica.Fluid.Types.Dynamics.FixedInitialType of energy balance: dynamic (3 initialization options) or steady state
Advanced › Diagnostics
Booleanshow_T (from PartialHydronicConfiguration)false= true, if actual temperature at port is computed

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialHydronicConfiguration)Primary supply port
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialHydronicConfiguration)Primary return port
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialHydronicConfiguration)Secondary return port
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialHydronicConfiguration)Secondary supply port
Buildings.Controls.OBC.CDL.Interfaces.RealInputyVal (from PartialHydronicConfiguration)Valve control signal
Buildings.Controls.OBC.CDL.Interfaces.RealInputset (from PartialHydronicConfiguration)Set point
Buildings.Controls.OBC.CDL.Interfaces.RealInputyPum (from PartialHydronicConfiguration)Pump control signal (variable speed)
Buildings.Controls.OBC.CDL.Interfaces.IntegerInputmode (from PartialHydronicConfiguration)Operating mode
Buildings.Controls.OBC.CDL.Interfaces.RealOutputyVal_actual (from PartialHydronicConfiguration)Valve position feedback
Buildings.Controls.OBC.CDL.Interfaces.RealOutputyPum_actual (from PartialHydronicConfiguration)Actual pump input value that is used for computations
Buildings.Controls.OBC.CDL.Interfaces.RealOutputPPum (from PartialHydronicConfiguration)Pump electrical power

Components

TypeNameDefaultDescription
Medium.MassFlowRatem1_flow (from PartialHydronicConfiguration)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp1 (from PartialHydronicConfiguration)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium.MassFlowRatem2_flow (from PartialHydronicConfiguration)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp2 (from PartialHydronicConfiguration)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium.ThermodynamicStatesta_a1 (from PartialHydronicConfiguration)if allowFlowReversal then Medium.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow))Medium properties in port_a1
Medium.ThermodynamicStatesta_b1 (from PartialHydronicConfiguration)if allowFlowReversal then Medium.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow)Medium properties in port_b1
Medium.ThermodynamicStatesta_a2 (from PartialHydronicConfiguration)if allowFlowReversal then Medium.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow))Medium properties in port_a2
Medium.ThermodynamicStatesta_b2 (from PartialHydronicConfiguration)if allowFlowReversal then Medium.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow)Medium properties in port_b2
Buildings.Fluid.HydronicConfigurations.Components.ThreeWayValveval (from SingleMixing)Control valve
FixedResistances.Junctionjun (from SingleMixing)Junction
FixedResistances.PressureDropres1 (from SingleMixing)Primary balancing valve
FixedResistances.PressureDropres2 (from SingleMixing)Secondary balancing valve
Buildings.Fluid.HydronicConfigurations.Components.Pumppum (from SingleMixing)Pump
Sensors.TemperatureTwoPortT2Sup (from SingleMixing)Consumer circuit supply temperature sensor
Controls.PIDWithOperatingModectl (from SingleMixing)Controller
Buildings.Controls.OBC.CDL.Integers.GreaterThresholdisEna (from SingleMixing)Returns true if enabled
Sensors.TemperatureTwoPortT2Ret (from SingleMixing)Consumer circuit return temperature sensor
FixedResistances.PressureDropres3 (from SingleMixing)Bypass balancing valve

Revisions

  • June 30, 2022, by Antoine Gautier:
    First implementation.