modelValvesIsolation

Heat pump isolation valves

Information

This model represents the heat pump isolation valves. The isolation valves are modeled as two-way two-position valves, which can be located at the heat pump inlet and/or outlet depending on the settings of the parameters have_valHpInlIso and have_valHpOutIso. It is assumed that the heat pumps always provide heating hot water. Optionally, chilled water return and supply and the associated isolation valves can be modeled by setting the parameter have_chiWat to true.

Parameters

TypeNameDefaultDescription
Buildings.Templates.Components.Types.ValvetypValHpInlIsoif have_valHpInlIso then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition else Buildings.Templates.Components.Types.Valve.NoneValve type at HP inlet
Buildings.Templates.Components.Types.ValvetypValHpOutIsoif have_valHpOutIso then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition else Buildings.Templates.Components.Types.Valve.NoneValve type at HP outlet
Buildings.Templates.Components.Types.ValvetypValPhpInlIsoif have_valPhpInlIso then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition else Buildings.Templates.Components.Types.Valve.NoneValve type at polyvalent HP inlet
Buildings.Templates.Components.Types.ValvetypValPhpOutIsoif have_valPhpOutIso then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition else Buildings.Templates.Components.Types.Valve.NoneValve type at polyvalent HP outlet
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpChiWatUni_nominalif have_hp and have_php then cat(1, dpHeaWatUni_nominal[1:nHp].*(mChiWatUni_flow_nominal[1:nHp]./mHeaWatUni_flow_nominal[1:nHp]).^2, dpChiWatPhp_nominal) elseif have_hp then dpHeaWatUni_nominal[1:nHp].*(mChiWatUni_flow_nominal[1:nHp]./mHeaWatUni_flow_nominal[1:nHp]).^2 else dpChiWatPhp_nominalPressure drop at design CHW mass flow rate - Each unit
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpHeaWatVal_nominalif have_hp and have_php then cat(1, dpValveHeaWat_nominal[1:nHp]*((if have_valHpInlIso then 1 else 0) + (if have_valHpOutIso then 1 else 0)), dpValveHeaWat_nominal[nHp + 1:nHp + nPhp]*((if have_valPhpInlIso then 1 else 0) + (if have_valPhpOutIso then 1 else 0))) elseif have_hp then dpValveHeaWat_nominal[1:nHp]*((if have_valHpInlIso then 1 else 0) + (if have_valHpOutIso then 1 else 0)) else dpValveHeaWat_nominal[nHp + 1:nHp + nPhp]*((if have_valPhpInlIso then 1 else 0) + (if have_valPhpOutIso then 1 else 0))Total HW pressure drop for inlet and outlet valves
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpHeaWat_nominaldpFixedHeaWat_nominal .+ dpHeaWatVal_nominalTotal HW pressure drop: fixed + valves
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpChiWatVal_nominalif have_hp and have_php then cat(1, dpValveChiWat_nominal[1:nHp]*((if have_valHpInlIso then 1 else 0) + (if have_valHpOutIso then 1 else 0)), dpValveChiWat_nominal[nHp + 1:nHp + nPhp]*((if have_valPhpInlIso then 1 else 0) + (if have_valPhpOutIso then 1 else 0))) elseif have_hp then dpValveChiWat_nominal[1:nHp]*((if have_valHpInlIso then 1 else 0) + (if have_valHpOutIso then 1 else 0)) else dpValveChiWat_nominal[nHp + 1:nHp + nPhp]*((if have_valPhpInlIso then 1 else 0) + (if have_valPhpOutIso then 1 else 0))Total CHW pressure drop for inlet and outlet valves
Buildings.Templates.Components.Data.Valve[nHp + nPhp]datValHeaWatUniOutIsoUnit outlet HW isolation valve parameters
Buildings.Templates.Components.Data.Valve[nHp + nPhp]datValHeaWatUniInlIsoUnit inlet HW isolation valve parameters
Buildings.Templates.Components.Data.Valve[nHp + nPhp]datValChiWatUniOutIsoUnit outlet CHW isolation valve parameters
Buildings.Templates.Components.Data.Valve[nHp + nPhp]datValChiWatUniInlIsoHeat pump inlet CHW isolation valve parameters
Configuration
Booleanhave_chiWattrueSet to true if the plant provides CHW
Booleanhave_hptrueSet to true for plants with non-reversible or reversible heat pumps
Booleanhave_phpfalseSet to true for plants with polyvalent heat pumps
IntegernHpNumber of heat pumps (excluding polyvalent HPs)
IntegernPhp0Number of polyvalent heat pumps
Booleanhave_valHpInlIsofalseSet to true for isolation valves at HP inlet
Booleanhave_valHpOutIsofalseSet to true for isolation valves at HP outlet
Booleanhave_valPhpInlIsofalseSet to true for isolation valves at polyvalent HP inlet
Booleanhave_valPhpOutIsofalseSet to true for isolation valves at polyvalent HP outlet
Booleanhave_pumChiWatDedHpfalseSet to true for HP with separate dedicated primary CHW pumps
Nominal condition
Modelica.Units.SI.MassFlowRate[nHp + nPhp]mHeaWatUni_flow_nominalHW mass flow rate - Each unit
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpHeaWatUni_nominalPressure drop at design HW mass flow rate - Each unit
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpBalHeaWatUni_nominalfill(0, nHp + nPhp)Balancing valve pressure drop at design HW mass flow rate - Each unit
Modelica.Units.SI.MassFlowRate[nHp + nPhp]mChiWatUni_flow_nominalCHW mass flow rate - Each unit
Modelica.Units.SI.PressureDifference[nPhp]dpChiWatPhp_nominalPressure drop at design CHW mass flow rate - Each polyvalent HP
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpBalChiWatUni_nominalfill(0, nHp + nPhp)Balancing valve pressure drop at design CHW mass flow rate - Each unit
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpValveHeaWat_nominalfill(Buildings.Templates.Data.Defaults.dpValIso, nHp + nPhp)HW isolation valve pressure drop (identical for inlet and outlet valves)
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpFixedHeaWat_nominaldpHeaWatUni_nominal + dpBalHeaWatUni_nominalFixed HW pressure drop: HP + balancing valve
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpValveChiWat_nominalif have_chiWat then fill(Buildings.Templates.Data.Defaults.dpValIso, nHp + nPhp) else fill(0, nHp + nPhp)Isolation valve CHW pressure drop (identical for inlet and outlet valves)
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpFixedChiWat_nominalif have_chiWat then dpBalChiWatUni_nominal + dpChiWatUni_nominal else fill(0, nHp + nPhp)Total fixed CHW pressure drop
Modelica.Units.SI.PressureDifference[nHp + nPhp]dpChiWat_nominalif have_chiWat then dpFixedChiWat_nominal .+ dpChiWatVal_nominal else fill(0, nHp + nPhp)Total CHW pressure drop: fixed + valves
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamicsModelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Dynamics › Nominal condition
Modelica.Units.SI.Timetau10Time constant at nominal flow
Assumptions
BooleanallowFlowReversaltrueSet to false to simplify equations, assuming, but not enforcing, no flow reversal
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
Advanced
Booleanfrom_dptrue= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_bport_bChiWatCHW supply (to primary loop)
Modelica.Fluid.Interfaces.FluidPort_aport_aChiWatCHW return (from primary loop)
Modelica.Fluid.Interfaces.FluidPort_bport_bHeaWatHW supply (to primary loop)
Modelica.Fluid.Interfaces.FluidPort_aport_aHeaWatHW return (from primary loop)
Modelica.Fluid.Interfaces.FluidPorts_b[nHp]ports_bChiHeaWatHpCHW/HW return – HP entering
Modelica.Fluid.Interfaces.FluidPorts_a[nHp]ports_aChiHeaWatHpCHW/HW supply – HP leaving
Modelica.Fluid.Interfaces.FluidPorts_a[nHp]ports_aHeaWatHpHW supply – HP leaving
Modelica.Fluid.Interfaces.FluidPorts_a[nHp]ports_aChiWatHpCHW supply – HP leaving
Buildings.Templates.Plants.HeatPumps.Interfaces.BusbusPlant control bus
Modelica.Fluid.Interfaces.FluidPorts_b[nPhp]ports_bChiWatPhpCHW return – Polyvalent heat pump entering
Modelica.Fluid.Interfaces.FluidPorts_b[nPhp]ports_bHeaWatPhpHW return – Polyvalent heat pump entering
Modelica.Fluid.Interfaces.FluidPorts_a[nPhp]ports_aHeaWatPhpHW supply – Polyvalent heat pump leaving
Modelica.Fluid.Interfaces.FluidPorts_a[nPhp]ports_aChiWatPhpCHW supply – Polyvalent heat pump leaving

Components

TypeNameDefaultDescription
Buildings.Templates.Components.Actuators.Valve[nHp + nPhp]valHeaWatUniOutIsoUnit outlet HW isolation valve
Buildings.Templates.Components.Actuators.Valve[nHp + nPhp]valChiWatUniOutIsoUnit outlet CHW isolation valve
Buildings.Templates.Components.Actuators.Valve[nHp + nPhp]valHeaWatUniInlIsoUnit inlet HW isolation valve
Buildings.Templates.Components.Actuators.Valve[nHp + nPhp]valChiWatUniInlIsoUnit inlet CHW isolation valve
Fluid.Delays.DelayFirstOrderjunHeaWatSupFluid volume at junction
Fluid.Delays.DelayFirstOrderjunChiWatSupFluid volume at junction
Fluid.Delays.DelayFirstOrderjunHeaWatRetFluid volume at junction
Fluid.Delays.DelayFirstOrderjunChiWatRetFluid volume at junction

Contents

NameDescription
Medium

Revisions

  • July 10, 2026, by Antoine Gautier:
    Refactored for plants with polyvalent heat pumps.
    This is for #4512.
  • May 7, 2025, by Antoine Gautier:
    Refactored with fixed resistance in valve component.
    This is for #4227.
  • March 29, 2024, by Antoine Gautier:
    First implementation.