modelDualMixing
Extends from HydronicConfigurations.Interfaces.PartialHydronicConfiguration.
Information
Summary
This configuration (see schematic below) is used instead of Buildings.Fluid.HydronicConfigurations.PassiveNetworks.SingleMixing when the primary and secondary circuits have a different design supply temperature. Contrary to the single mixing circuit, the use of this configuration is restricted to constant flow secondary circuits due to the constraint on the fixed bypass pressure differential that must remain sufficiently high.
The following table presents the main characteristics of this configuration.
| Primary circuit | Variable flow |
| Secondary (consumer) circuit | Constant flow |
| Typical applications | Consumer circuit supply temperature different from primary circuit such as underfloor heating systems |
| Non-recommended applications | Applications where primary and secondary supply temperature must be equal as secondary flow recirculation cannot be avoided. |
| Built-in valve control options | Supply temperature |
|
Control valve selection (See the nomenclature in the schematic.) |
β = ΔpA-AB / ΔpK-L =
ΔpA-AB /
(Δp1 + ΔpA-AB) The control valve is sized with a pressure drop equal to the maximum of Δp1 and 3e3 Pa at ṁ1, design (see below). |
| Balancing requirement |
The three-way valve should be fully open at design conditions. |
|
Lumped flow resistance includes (With the setting use_lumFloRes=true.)
|
Control valve val only(So the option has no effect here: the balancing valves are always modeled as distinct flow resistances.) |
Additional comments
The bypass balancing valve works together with the secondary pump to generate the pressure differential differential at the boundaries of the control valve. So it is paramount for proper operation of the consumer circuit that the bypass balancing valve generates enough pressure drop at its design flow rate ṁ3, design otherwise the consumer circuit is starved with primary flow rate despite the control valve being fully open. So oversizing the bypass balancing valve (yielding a lower pressure drop) is detrimental to the consumer circuit operation. Undersizing the bypass balancing valve (yielding a lower pressure drop) does not disturb the secondary circuit operation as the control valve then compensates for the elevated pressure differential by working at a lower opening on average. However, the secondary pump head is increased and so is the electricity consumption. See Buildings.Fluid.HydronicConfigurations.PassiveNetworks.Examples.DualMixing for a numerical illustration of those effects.
The parameter dp1_nominal stands for the potential
primary back pressure and must be provided as an absolute value.
By default the secondary pump is parameterized with a design pressure rise
equal to dp2_nominal + dpBal2_nominal + dpBal3_nominal.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Real | n (from PartialHydronicConfiguration) | 2 | Flow exponent, n1=1 for laminar, n1=2 for turbulent |
| Movers.Data.Generic | perPum (from PartialHydronicConfiguration) | ||
| Configuration | |||
| Boolean | use_siz (from PartialHydronicConfiguration) | true | Set to true for built-in sizing of control valve and optional pump |
| Boolean | use_dp1 (from PartialHydronicConfiguration) | Set to true to enable dp1_nominal | |
| Boolean | use_dp2 (from PartialHydronicConfiguration) | Set to true to enable dp2_nominal | |
| Buildings.Fluid.HydronicConfigurations.Types.Valve | typVal (from PartialHydronicConfiguration) | Type of control valve | |
| Boolean | have_typVar (from PartialHydronicConfiguration) | true | Set to true to enable the choice of the controlled variable |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_nominal (from PartialHydronicConfiguration) | Mass flow rate in primary circuit at design conditions | |
| Modelica.Units.SI.MassFlowRate | m2_flow_nominal (from PartialHydronicConfiguration) | Mass flow rate in consumer circuit at design conditions | |
| Modelica.Units.SI.PressureDifference | dp1_nominal (from PartialHydronicConfiguration) | Primary circuit pressure differential at design conditions | |
| Modelica.Units.SI.PressureDifference | dp2_nominal (from PartialHydronicConfiguration) | Consumer circuit pressure differential at design conditions | |
| Control valve | |||
| Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristic | typCha (from PartialHydronicConfiguration) | Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristic.EqualPercentage | Control valve characteristic |
| Modelica.Units.SI.PressureDifference | dpValve_nominal (from PartialHydronicConfiguration) | Control valve pressure drop at design conditions | |
| Actuators.Valves.Data.Generic | flowCharacteristics (from PartialHydronicConfiguration) | Table with flow characteristics | |
| Actuators.Valves.Data.Generic | flowCharacteristics1 (from PartialHydronicConfiguration) | Table with flow characteristics for direct flow path at port_1 | |
| Actuators.Valves.Data.Generic | flowCharacteristics3 (from PartialHydronicConfiguration) | Table with flow characteristics for bypass flow path at port_3 | |
| Pump | |||
| Buildings.Fluid.HydronicConfigurations.Types.Pump | typPum (from PartialHydronicConfiguration) | Buildings.Fluid.HydronicConfigurations.Types.Pump.VariableInput | Type of secondary pump |
| Buildings.Fluid.HydronicConfigurations.Types.PumpModel | typPumMod (from PartialHydronicConfiguration) | Buildings.Fluid.HydronicConfigurations.Types.PumpModel.Speed | Type of pump model |
| Modelica.Units.SI.MassFlowRate | mPum_flow_nominal (from PartialHydronicConfiguration) | m2_flow_nominal | Pump head at design conditions |
| Modelica.Units.SI.PressureDifference | dpPum_nominal (from PartialHydronicConfiguration) | dp2_nominal + dpBal2_nominal | Pump head at design conditions |
| Controls | |||
| Buildings.Fluid.HydronicConfigurations.Types.Control | typCtl (from PartialHydronicConfiguration) | Buildings.Fluid.HydronicConfigurations.Types.Control.None | Type of built-in controls |
| Buildings.Fluid.HydronicConfigurations.Types.ControlVariable | typVar (from PartialHydronicConfiguration) | Buildings.Fluid.HydronicConfigurations.Types.ControlVariable.SupplyTemperature | Controlled variable |
| Buildings.Controls.OBC.CDL.Types.SimpleController | controllerType (from PartialHydronicConfiguration) | Buildings.Controls.OBC.CDL.Types.SimpleController.PI | Type of controller |
| Real | k (from PartialHydronicConfiguration) | 0.1 | Gain of controller |
| Real | Ti (from PartialHydronicConfiguration) | 120 | Time constant of integrator block |
| Assumptions | |||
| Boolean | use_lumFloRes (from PartialHydronicConfiguration) | true | Set to true to use a lumped flow resistance when possible |
| Boolean | allowFlowReversal (from PartialHydronicConfiguration) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Balancing valves | |||
| Modelica.Units.SI.PressureDifference | dpBal1_nominal (from PartialHydronicConfiguration) | 0 | Primary balancing valve pressure drop at design conditions |
| Modelica.Units.SI.PressureDifference | dpBal2_nominal (from PartialHydronicConfiguration) | 0 | Secondary balancing valve pressure drop at design conditions |
| Modelica.Units.SI.PressureDifference | dpBal3_nominal (from PartialHydronicConfiguration) | 0 | Bypass balancing valve pressure drop at design conditions |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialHydronicConfiguration) | Modelica.Fluid.Types.Dynamics.FixedInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialHydronicConfiguration) | false | = true, if actual temperature at port is computed |
Connectors
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium.MassFlowRate | m1_flow (from PartialHydronicConfiguration) | port_a1.m_flow | Mass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp1 (from PartialHydronicConfiguration) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium.MassFlowRate | m2_flow (from PartialHydronicConfiguration) | port_a2.m_flow | Mass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp2 (from PartialHydronicConfiguration) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThreeWayValve | val | Control valve | |
| FixedResistances.Junction | jun | Junction | |
| FixedResistances.PressureDrop | res2 | Secondary balancing valve | |
| Buildings.Fluid.HydronicConfigurations.Components.Pump | pum | Pump | |
| Sensors.TemperatureTwoPort | T2Sup | Consumer circuit supply temperature sensor | |
| FixedResistances.Junction | junBypSup | Junction | |
| FixedResistances.Junction | junBypRet | Junction | |
| Sensors.TemperatureTwoPort | T2Ret | Consumer circuit return temperature sensor | |
| Buildings.Controls.OBC.CDL.Integers.GreaterThreshold | isEna | Returns true if enabled | |
| Controls.PIDWithOperatingMode | ctl | Controller | |
| FixedResistances.PressureDrop | res3 | Bypass balancing valve |
Revisions
-
June 17, 2026, by Michael Wetter:
Updated implementation to allow a flow coefficientnthat is different from2. This allows use of the model for not fully turbulent flow.
This is for Buildings, #4620. -
June 30, 2022, by Antoine Gautier:
First implementation.