Package with component models
Information
This package contains component models that are used in the templates
within
Buildings.Templates.Plants.HeatPumps.
Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).
Package Content
| Name |
Description |
HeatRecoveryChiller
|
Heat recovery chiller for sidestream integration |
PumpsPrimaryDedicated
|
Dedicated primary pumps |
ValvesIsolation
|
Heat pump isolation valves |
Controls
|
Controllers |
HeatPumpGroups
|
Models for heat pump groups |
Data
|
Records for design and operating parameters |
Validation
|
Package with validation models |
Interfaces
|
Interface classes |
Heat recovery chiller for sidestream integration
Information
Model of a heat recovery chiller with constant speed CHW and HW pumps.
The model is intended to represent the sidestream integration of a HRC
into a heating and cooling plant.
In such a configuration, the condenser is connected to the HW
return and the evaporator is connected to the CHW return.
Control points
The following input and output points are available.
Extends from Buildings.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models).
Parameters
| Type | Name | Default | Description |
| replaceable package Medium1 | PartialMedium | Medium 1 in the component |
| replaceable package Medium2 | PartialMedium | Medium 2 in the component |
| replaceable package MediumChiWat | Buildings.Media.Water | CHW medium |
| replaceable package MediumHeaWat | Buildings.Media.Water | HW medium |
| PumpSingle | datPumChiWat | | HRC CHW pump parameters |
| PumpSingle | datPumHeaWat | | HRC HW pump parameters |
| Chiller | datHrc | | HRC parameters |
| HeatFlowRate | QCon_flow_nominal | hrc.QCon_flow_nominal | Design condenser heat flow rate [W] |
| Temperature | TConEnt_nominal | hrc.TConEnt_nominal | Design condenser entering fluid temperature [K] |
| Temperature | TConLvg_nominal | hrc.TConLvg_nominal | Design condenser leaving fluid temperature [K] |
| Nominal condition |
| MassFlowRate | m1_flow_nominal | datHrc.mCon_flow_nominal | Nominal mass flow rate [kg/s] |
| MassFlowRate | m2_flow_nominal | datHrc.mChiWat_flow_nominal | Nominal mass flow rate [kg/s] |
| Assumptions |
| Boolean | allowFlowReversal1 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Boolean | allowFlowReversal2 | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
| Advanced |
| MassFlowRate | m1_flow_small | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
| MassFlowRate | m2_flow_small | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
| Diagnostics |
| Boolean | show_T | false | = true, if actual temperature at port is computed |
| Dynamics |
| Nominal condition |
| Time | tauHrc | 30 | HRC – Time constant at nominal flow, used if energy or mass balance is dynamic [s] |
| Time | tauPum | 1 | Pump – Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic [s] |
| Conservation equations |
| Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Connectors
| Type | Name | Description |
| replaceable package Medium1 | Medium 1 in the component |
| replaceable package Medium2 | Medium 2 in the component |
| FluidPort_a | port_a1 | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) |
| FluidPort_b | port_b1 | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) |
| FluidPort_a | port_a2 | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) |
| FluidPort_b | port_b2 | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
| replaceable package MediumChiWat | CHW medium |
| replaceable package MediumHeaWat | HW medium |
| Bus | bus | Plant control bus |
Modelica definition
model HeatRecoveryChiller
extends Buildings.Fluid.Interfaces.PartialFourPortInterface(
redeclare final package Medium1=
MediumHeaWat,
redeclare final package Medium2=
MediumChiWat,
final m1_flow_nominal=datHrc.mCon_flow_nominal,
final m2_flow_nominal=datHrc.mChiWat_flow_nominal);
replaceable package MediumChiWat=
Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
;
replaceable package MediumHeaWat=
Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
;
parameter Buildings.Templates.Components.Data.PumpSingle datPumChiWat
;
parameter Buildings.Templates.Components.Data.PumpSingle datPumHeaWat
;
parameter Buildings.Templates.Components.Data.Chiller datHrc
;
final parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal=hrc.mChiWat_flow_nominal
;
final parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal=hrc.mCon_flow_nominal
;
final parameter Modelica.Units.SI.HeatFlowRate QChiWat_flow_nominal=hrc.QChiWat_flow_nominal
;
final parameter Modelica.Units.SI.PressureDifference dpChiWat_nominal=hrc.dpChiWat_nominal
;
final parameter Modelica.Units.SI.PressureDifference dpCon_nominal=hrc.dpCon_nominal
;
final parameter Modelica.Units.SI.Temperature TChiWatSup_nominal=hrc.TChiWatSup_nominal
;
final parameter Modelica.Units.SI.Temperature TChiWatRet_nominal=hrc.TChiWatRet_nominal
;
parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal=hrc.QCon_flow_nominal
;
parameter Modelica.Units.SI.Temperature TConEnt_nominal=hrc.TConEnt_nominal
;
parameter Modelica.Units.SI.Temperature TConLvg_nominal=hrc.TConLvg_nominal
;
parameter Modelica.Units.SI.Time tauHrc=30
;
parameter Modelica.Units.SI.Time tauPum=1
;
parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial
;
Buildings.Templates.Plants.HeatPumps.Interfaces.Bus bus
;
Buildings.Templates.Components.Chillers.Compression hrc(
redeclare final package MediumChiWat=
MediumChiWat,
redeclare final package MediumCon=
MediumHeaWat,
final dat=datHrc,
final typ=Buildings.Templates.Components.Types.Chiller.WaterCooled,
final have_switchover=true,
final energyDynamics=energyDynamics,
final tau=tauHrc,
final allowFlowReversal1=allowFlowReversal1,
final allowFlowReversal2=allowFlowReversal2,
final show_T=show_T)
;
Buildings.Templates.Components.Pumps.Single pumChiWat(
have_var=false,
have_valChe=false,
redeclare final package Medium=
MediumChiWat,
final dat=datPumChiWat,
final energyDynamics=energyDynamics,
final tau=tauPum,
final allowFlowReversal=allowFlowReversal2,
final show_T=show_T)
;
Buildings.Templates.Components.Pumps.Single pumHeaWat(
have_var=false,
have_valChe=false,
redeclare final package Medium=
MediumHeaWat,
final dat=datPumHeaWat,
final energyDynamics=energyDynamics,
final tau=tauPum,
final allowFlowReversal=allowFlowReversal1,
final show_T=show_T)
;
equation
connect(port_a1, pumHeaWat.port_a);
connect(port_a2, pumChiWat.port_a);
connect(pumChiWat.port_b, hrc.port_a2);
connect(hrc.port_b2, port_b2);
connect(pumHeaWat.port_b, hrc.port_a1);
connect(hrc.port_b1, port_b1);
connect(bus.hrc, hrc.bus);
connect(bus.pumHeaWatHrc, pumHeaWat.bus);
connect(bus.pumChiWatHrc, pumChiWat.bus);
end HeatRecoveryChiller;
Dedicated primary pumps
Information
This model represents dedicated primary HW pumps and, optionally, separate
dedicated primary CHW pumps if the parameter
have_pumChiWatDedHp is set to true. The pump components are
connected to the heat pump outlet, in a "pump away" configuration. Variable
speed or constant speed pumps can be modeled by setting the parameters
have_pumHeaWatPriVar and have_pumChiWatPriVar. If
headered pumps are modeled
(typArrPumPri=Buildings.Templates.Components.Types.PumpArrangement.Headered),
this component resolves to a direct fluid pass-through.
Parameters
| Type | Name | Default | Description |
| replaceable package Medium | Buildings.Media.Water | Medium model |
| Integer | nPumHeaWat | | Number of primary HW pumps |
| Integer | nPumChiWat | | Number of primary CHW pumps |
| PumpMultiple | datPumHeaWat | datPumHeaWat(typ=if nPumHeaW... | HW pump parameters |
| PumpMultiple | datPumChiWat | datPumChiWat(typ=if nPumChiW... | CHW pump parameters |
| Configuration |
| Boolean | have_hp | true | Set to true for plants with non-reversible or reversible heat pumps |
| Boolean | have_php | false | Set to true for plants with polyvalent heat pumps |
| Integer | nHp | | Number of heat pumps (excluding polyvalent HPs) |
| Integer | nPhp | 0 | Number of polyvalent heat pumps |
| PumpArrangement | typArrPumPri | | Type of primary pump arrangement |
| Boolean | have_pumPriComHp | | Set to true for HP with single dedicated primary pump serving both CHW and HW circuits |
| Boolean | have_pumHeaWatPriVar | | Set to true for variable speed primary HW pumps |
| Boolean | have_pumChiWatPriVar | | Set to true for variable speed primary CHW pumps |
| Nominal condition |
| PressureDifference | dpValCheHeaWat_nominal[nPumHeaWat] | fill(if typArrPumPri == Buil... | HW pump check valve pressure drop at design pump flow rate (selection conditions) [Pa] |
| PressureDifference | dpValCheChiWat_nominal[nPumChiWat] | fill(if typArrPumPri == Buil... | CHW pump check valve pressure drop at design pump flow rate (selection conditions) [Pa] |
| Dynamics |
| Conservation equations |
| Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
| Nominal condition |
| Time | tau | 1 | Time constant at nominal flow [s] |
| Assumptions |
| Boolean | allowFlowReversal | true | Set to false to simplify equations, assuming, but not enforcing, no flow reversal |
Connectors
| Type | Name | Description |
| replaceable package Medium | Medium model |
| FluidPorts_b | ports_bChiHeaWat[nHp] | CHW/HW supply (to primary loop) |
| FluidPorts_a | ports_aChiHeaWat[nHp] | CHW/HW return (from primary loop) |
| FluidPorts_b | ports_bChiHeaWatHp[nHp] | CHW/HW return – HP entering |
| FluidPorts_b | ports_bHeaWat[nHp] | HW supply (to primary loop) – HP with dedicated pumps and (heating-only or separate CHW and HW pumps) |
| FluidPorts_b | ports_bChiWat[nHp] | CHW supply (to primary loop) |
| FluidPorts_a | ports_aChiHeaWatHp[nHp] | CHW/HW supply (HP leaving) |
| Bus | bus | Plant control bus |
| FluidPorts_a | ports_aHeaWat[nPhp] | HW return (from primary loop) to polyvalent HP |
| FluidPorts_a | ports_aChiWat[nPhp] | CHW return (from primary loop) to polyvalent HP |
| FluidPorts_b | ports_bHeaWatRetShc[nPhp] | HW return – Polyvalent heat pump entering |
| FluidPorts_b | ports_bChiWatRetShc[nPhp] | CHW return – Polyvalent heat pump entering |
| FluidPorts_a | ports_aHeaWatPhp[nPhp] | HW supply – Polyvalent heat pump leaving |
| FluidPorts_a | ports_aChiWatPhp[nPhp] | CHW supply – Polyvalent heat pump leaving |
| FluidPorts_b | ports_bChiWatSupShc[nPhp] | CHW supply – Polyvalent heat pump leaving |
| FluidPorts_b | ports_bHeaWatSupShc[nPhp] | HW supply – Polyvalent heat pump leaving |
Modelica definition
model PumpsPrimaryDedicated
replaceable package Medium =
Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
;
parameter Integer nPumHeaWat
;
parameter Integer nPumChiWat
;
final parameter Integer idxConPumChiWat =
if have_pumChiWatDedHp
then nHp + 1
else 1
;
parameter Boolean have_hp = true
;
parameter Boolean have_php = false
;
parameter Integer nHp
;
parameter Integer nPhp = 0
;
parameter Buildings.Templates.Components.Types.PumpArrangement typArrPumPri
;
parameter Boolean have_pumPriComHp(start=false)
;
final parameter Boolean have_pumChiWatDedHp =
have_hp
and nPumChiWat > 0
and typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and not have_pumPriComHp
;
final parameter Boolean is_heaOnlHp =
have_hp
and nPumHeaWat > 0
and nPumChiWat == 0
and typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and not have_pumPriComHp
;
parameter Boolean have_pumHeaWatPriVar(start=false)
;
parameter Boolean have_pumChiWatPriVar(start=false)
;
parameter Buildings.Templates.Components.Data.PumpMultiple datPumHeaWat(
typ=
if nPumHeaWat > 0
then Buildings.Templates.Components.Types.Pump.Multiple
else Buildings.Templates.Components.Types.Pump.None,
nPum=nPumHeaWat)
;
parameter Buildings.Templates.Components.Data.PumpMultiple datPumChiWat(
typ=
if nPumChiWat > 0
then Buildings.Templates.Components.Types.Pump.Multiple
else Buildings.Templates.Components.Types.Pump.None,
nPum=nPumChiWat)
;
parameter Modelica.Units.SI.PressureDifference dpValCheHeaWat_nominal[nPumHeaWat](
final min=
fill(0, nPumHeaWat),
start=
fill(
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
then Buildings.Templates.Data.Defaults.dpValChe
else 0,
nPumHeaWat)) =
fill(
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
then Buildings.Templates.Data.Defaults.dpValChe
else 0,
nPumHeaWat)
;
parameter Modelica.Units.SI.PressureDifference dpValCheChiWat_nominal[nPumChiWat](
final min=
fill(0, nPumChiWat),
start=
fill(
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and (have_pumChiWatDedHp
or have_php)
then Buildings.Templates.Data.Defaults.dpValChe
else 0,
nPumChiWat)) =
fill(
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and (have_pumChiWatDedHp
or have_php)
then Buildings.Templates.Data.Defaults.dpValChe
else 0,
nPumChiWat)
;
parameter Modelica.Fluid.Types.Dynamics energyDynamics =
Modelica.Fluid.Types.Dynamics.DynamicFreeInitial
;
parameter Modelica.Units.SI.Time tau = 1
;
parameter Boolean allowFlowReversal = true
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiHeaWat[nHp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
and not have_pumChiWatDedHp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiHeaWat[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiHeaWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWat[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_pumChiWatDedHp
or is_heaOnlHp
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWat[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_pumChiWatDedHp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiHeaWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
;
Buildings.Templates.Plants.HeatPumps.Interfaces.Bus bus
;
Buildings.Templates.Components.Pumps.Multiple pumHeaWat(
redeclare final package Medium=
Medium,
final have_var=have_pumHeaWatPriVar,
final have_varCom=false,
final nPum=nPumHeaWat,
final dat=datPumHeaWat,
final dpValChe_nominal=dpValCheHeaWat_nominal,
final allowFlowReversal=allowFlowReversal,
final tau=tau,
final energyDynamics=energyDynamics)
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and nPumHeaWat > 0
;
Buildings.Templates.Components.Pumps.Multiple pumChiWat(
redeclare final package Medium=
Medium,
final have_var=have_pumChiWatPriVar,
final have_varCom=false,
final nPum=nPumChiWat,
final dat=datPumChiWat,
final dpValChe_nominal=dpValCheChiWat_nominal,
final allowFlowReversal=allowFlowReversal,
final tau=tau,
final energyDynamics=energyDynamics)
if typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Dedicated
and nPumChiWat > 0
;
Buildings.Templates.Components.Routing.PassThroughFluid pasHdr[nHp](
redeclare each final package Medium=
Medium)
if have_hp
and typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Headered
;
Fluid.FixedResistances.Junction junDedSep[nHp](
redeclare each final package Medium=
Medium,
final m_flow_nominal={{
max(
datPumHeaWat.m_flow_nominal[i], datPumChiWat.m_flow_nominal[i]),
-datPumHeaWat.m_flow_nominal[i],
-datPumChiWat.m_flow_nominal[i]}
for i
in 1:nHp},
dp_nominal=
fill(
fill(0, 3), nHp),
each final energyDynamics=energyDynamics,
each final portFlowDirection_1=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Entering,
each final portFlowDirection_2=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving,
each final portFlowDirection_3=
if allowFlowReversal
then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
else Modelica.Fluid.Types.PortFlowDirection.Leaving)
if have_pumChiWatDedHp
;
Buildings.Templates.Components.Routing.PassThroughFluid pasDedCom[nHp](
redeclare each final package Medium=
Medium)
if have_pumPriComHp
or is_heaOnlHp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWat[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWat[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWatRetShc[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWatRetShc[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWatSupShc[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWatSupShc[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Buildings.Templates.Components.Routing.PassThroughFluid pasHdrHeaWatShc[nPhp](
redeclare each final package Medium=
Medium)
if have_php
and typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Headered
;
Buildings.Templates.Components.Routing.PassThroughFluid pasHdrChiWatShc[nPhp](
redeclare each final package Medium=
Medium)
if have_php
and typArrPumPri ==
Buildings.Templates.Components.Types.PumpArrangement.Headered
;
protected
Buildings.Templates.Components.Interfaces.Bus busPumHeaWatPri
;
Buildings.Templates.Components.Interfaces.Bus busPumChiWatPri
;
equation
connect(bus.pumHeaWatPri, busPumHeaWatPri);
connect(bus.pumChiWatPri, busPumChiWatPri);
connect(busPumHeaWatPri, pumHeaWat.bus);
connect(busPumChiWatPri, pumChiWat.bus);
connect(ports_aChiHeaWat, ports_bChiHeaWatHp);
connect(pasHdr.port_b, ports_bChiHeaWat);
connect(ports_aChiHeaWatHp, junDedSep.port_1);
connect(ports_aHeaWat, ports_bHeaWatRetShc);
connect(ports_aChiWat, ports_bChiWatRetShc);
connect(ports_aHeaWatPhp, pumHeaWat.ports_a[nHp + 1:nHp + nPhp]);
connect(ports_aChiWatPhp, pumChiWat.ports_a[idxConPumChiWat:idxConPumChiWat +
nPhp - 1]);
connect(pumHeaWat.ports_b[nHp + 1:nHp + nPhp], ports_bHeaWatSupShc);
connect(pumChiWat.ports_b[idxConPumChiWat:idxConPumChiWat + nPhp -
1], ports_bChiWatSupShc);
connect(junDedSep.port_2, pumHeaWat.ports_a[1:nHp]);
connect(junDedSep.port_3, pumChiWat.ports_a[1:nHp]);
connect(pasDedCom.port_b, pumHeaWat.ports_a[1:nHp]);
connect(ports_aChiWatPhp, pasHdrChiWatShc.port_a);
connect(pasHdrChiWatShc.port_b, ports_bChiWatSupShc);
connect(ports_aHeaWatPhp, pasHdrHeaWatShc.port_a);
connect(pasHdrHeaWatShc.port_b, ports_bHeaWatSupShc);
connect(pumHeaWat.ports_b[1:nHp], ports_bHeaWat);
connect(pumChiWat.ports_b[1:nHp], ports_bChiWat);
connect(ports_aChiHeaWatHp, pasHdr.port_a);
connect(ports_aChiHeaWatHp, pasDedCom.port_a);
connect(pumHeaWat.ports_b[1:nHp], ports_bChiHeaWat);
end PumpsPrimaryDedicated;
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
| Type | Name | Default | Description |
| replaceable package Medium | Buildings.Media.Water | Medium model |
| Configuration |
| Boolean | have_chiWat | true | Set to true if the plant provides CHW |
| Boolean | have_hp | true | Set to true for plants with non-reversible or reversible heat pumps |
| Boolean | have_php | false | Set to true for plants with polyvalent heat pumps |
| Integer | nHp | | Number of heat pumps (excluding polyvalent HPs) |
| Integer | nPhp | 0 | Number of polyvalent heat pumps |
| Boolean | have_valHpInlIso | false | Set to true for isolation valves at HP inlet |
| Boolean | have_valHpOutIso | false | Set to true for isolation valves at HP outlet |
| Boolean | have_valPhpInlIso | false | Set to true for isolation valves at polyvalent HP inlet |
| Boolean | have_valPhpOutIso | false | Set to true for isolation valves at polyvalent HP outlet |
| Boolean | have_pumChiWatDedHp | false | Set to true for HP with separate dedicated primary CHW pumps |
| Nominal condition |
| MassFlowRate | mHeaWatUni_flow_nominal[nHp + nPhp] | | HW mass flow rate - Each unit [kg/s] |
| PressureDifference | dpHeaWatUni_nominal[nHp + nPhp] | | Pressure drop at design HW mass flow rate - Each unit [Pa] |
| PressureDifference | dpBalHeaWatUni_nominal[nHp + nPhp] | fill(0, nHp + nPhp) | Balancing valve pressure drop at design HW mass flow rate - Each unit [Pa] |
| MassFlowRate | mChiWatUni_flow_nominal[nHp + nPhp] | | CHW mass flow rate - Each unit [kg/s] |
| PressureDifference | dpChiWatPhp_nominal[nPhp] | | Pressure drop at design CHW mass flow rate - Each polyvalent HP [Pa] |
| PressureDifference | dpBalChiWatUni_nominal[nHp + nPhp] | fill(0, nHp + nPhp) | Balancing valve pressure drop at design CHW mass flow rate - Each unit [Pa] |
| PressureDifference | dpValveHeaWat_nominal[nHp + nPhp] | fill(Buildings.Templates.Dat... | HW isolation valve pressure drop (identical for inlet and outlet valves) [Pa] |
| PressureDifference | dpValveChiWat_nominal[nHp + nPhp] | if have_chiWat then fill(Bui... | Isolation valve CHW pressure drop (identical for inlet and outlet valves) [Pa] |
| Dynamics |
| Conservation equations |
| Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
| Nominal condition |
| Time | tau | 10 | Time constant at nominal flow [s] |
| Time needed to open or close valve |
| Boolean | use_strokeTime | energyDynamics <> Modelica.F... | Set to true to continuously open and close valve |
| Time | strokeTime | 120 | Time needed to open or close valve [s] |
| Init | init | Modelica.Blocks.Types.Init.I... | Type of initialization (no init/steady state/initial state/initial output) |
| Real | y_start | 1 | Initial position of actuator |
| Assumptions |
| Boolean | allowFlowReversal | true | Set to false to simplify equations, assuming, but not enforcing, no flow reversal |
| Advanced |
| Boolean | from_dp | true | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized | false | = true, use linear relation between m_flow and dp for any flow rate |
Connectors
| Type | Name | Description |
| replaceable package Medium | Medium model |
| FluidPort_b | port_bChiWat | CHW supply (to primary loop) |
| FluidPort_a | port_aChiWat | CHW return (from primary loop) |
| FluidPort_b | port_bHeaWat | HW supply (to primary loop) |
| FluidPort_a | port_aHeaWat | HW return (from primary loop) |
| FluidPorts_b | ports_bChiHeaWatHp[nHp] | CHW/HW return – HP entering |
| FluidPorts_a | ports_aChiHeaWatHp[nHp] | CHW/HW supply – HP leaving |
| FluidPorts_a | ports_aHeaWatHp[nHp] | HW supply – HP leaving |
| FluidPorts_a | ports_aChiWatHp[nHp] | CHW supply – HP leaving |
| Bus | bus | Plant control bus |
| FluidPorts_b | ports_bChiWatPhp[nPhp] | CHW return – Polyvalent heat pump entering |
| FluidPorts_b | ports_bHeaWatPhp[nPhp] | HW return – Polyvalent heat pump entering |
| FluidPorts_a | ports_aHeaWatPhp[nPhp] | HW supply – Polyvalent heat pump leaving |
| FluidPorts_a | ports_aChiWatPhp[nPhp] | CHW supply – Polyvalent heat pump leaving |
Modelica definition
model ValvesIsolation
replaceable package Medium =
Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
;
final parameter Buildings.Templates.Components.Types.Valve typValHpInlIso =
if have_valHpInlIso
then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition
else Buildings.Templates.Components.Types.Valve.None
;
final parameter Buildings.Templates.Components.Types.Valve typValHpOutIso =
if have_valHpOutIso
then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition
else Buildings.Templates.Components.Types.Valve.None
;
final parameter Buildings.Templates.Components.Types.Valve typValPhpInlIso =
if have_valPhpInlIso
then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition
else Buildings.Templates.Components.Types.Valve.None
;
final parameter Buildings.Templates.Components.Types.Valve typValPhpOutIso =
if have_valPhpOutIso
then Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition
else Buildings.Templates.Components.Types.Valve.None
;
parameter Boolean have_chiWat = true
;
parameter Boolean have_hp = true
;
parameter Boolean have_php = false
;
parameter Integer nHp
;
parameter Integer nPhp = 0
;
parameter Boolean have_valHpInlIso = false
;
parameter Boolean have_valHpOutIso = false
;
parameter Boolean have_valPhpInlIso = false
;
parameter Boolean have_valPhpOutIso = false
;
parameter Boolean have_pumChiWatDedHp = false
;
parameter Modelica.Units.SI.MassFlowRate mHeaWatUni_flow_nominal[nHp + nPhp](
each final min=0)
;
parameter Modelica.Units.SI.PressureDifference dpHeaWatUni_nominal[nHp +
nPhp](
each final min=0,
each start=Buildings.Templates.Data.Defaults.dpHeaWatHp)
;
parameter Modelica.Units.SI.PressureDifference dpBalHeaWatUni_nominal[nHp +
nPhp](
each final min=0) =
fill(0, nHp + nPhp)
;
parameter Modelica.Units.SI.MassFlowRate mChiWatUni_flow_nominal[nHp + nPhp](
each final min=0,
each start=0)
;
parameter Modelica.Units.SI.PressureDifference dpChiWatPhp_nominal[nPhp](
each final min=0,
each start=0)
;
final parameter Modelica.Units.SI.PressureDifference dpChiWatUni_nominal[nHp +
nPhp] =
if 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_nominal
;
parameter Modelica.Units.SI.PressureDifference dpBalChiWatUni_nominal[nHp +
nPhp](
each final min=0,
each start=0) =
fill(0, nHp + nPhp)
;
parameter Modelica.Units.SI.PressureDifference dpValveHeaWat_nominal[nHp +
nPhp](
each final min=0) =
fill(
Buildings.Templates.Data.Defaults.dpValIso, nHp + nPhp)
;
final parameter Modelica.Units.SI.PressureDifference dpFixedHeaWat_nominal[nHp +
nPhp] = dpHeaWatUni_nominal + dpBalHeaWatUni_nominal
;
final parameter Modelica.Units.SI.PressureDifference dpHeaWatVal_nominal[nHp +
nPhp] =
if 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))
;
final parameter Modelica.Units.SI.PressureDifference dpHeaWat_nominal[nHp +
nPhp] = dpFixedHeaWat_nominal .+ dpHeaWatVal_nominal
;
parameter Modelica.Units.SI.PressureDifference dpValveChiWat_nominal[nHp +
nPhp](
each final min=0,
each start=0) =
if have_chiWat
then fill(Buildings.Templates.Data.Defaults.dpValIso, nHp + nPhp)
else fill(0, nHp + nPhp)
;
final parameter Modelica.Units.SI.PressureDifference dpFixedChiWat_nominal[nHp +
nPhp] =
if have_chiWat
then dpBalChiWatUni_nominal + dpChiWatUni_nominal
else fill(0, nHp + nPhp)
;
final parameter Modelica.Units.SI.PressureDifference dpChiWatVal_nominal[nHp +
nPhp] =
if 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))
;
final parameter Modelica.Units.SI.PressureDifference dpChiWat_nominal[nHp +
nPhp] =
if have_chiWat
then dpFixedChiWat_nominal .+ dpChiWatVal_nominal
else fill(0, nHp + nPhp)
;
final parameter Buildings.Templates.Components.Data.Valve datValHeaWatUniOutIso[nHp +
nPhp](
typ=
cat(1,
fill(typValHpOutIso, nHp),
fill(typValPhpOutIso, nPhp)),
m_flow_nominal=mHeaWatUni_flow_nominal,
dpValve_nominal=dpValveHeaWat_nominal,
dpFixed_nominal=dpFixedHeaWat_nominal .*
cat(
1,
fill(
if have_hp
and (have_valHpOutIso
or not have_valHpOutIso
and not have_valHpInlIso)
then 1
else 0,
nHp),
fill(
if have_php
and (have_valPhpOutIso
or not have_valPhpOutIso
and not have_valPhpInlIso)
then 1
else 0,
nPhp)))
;
final parameter Buildings.Templates.Components.Data.Valve datValHeaWatUniInlIso[nHp +
nPhp](
typ=
cat(1,
fill(typValHpInlIso, nHp),
fill(typValPhpInlIso, nPhp)),
m_flow_nominal=mHeaWatUni_flow_nominal,
dpValve_nominal=dpValveHeaWat_nominal,
dpFixed_nominal=dpFixedHeaWat_nominal .*
cat(
1,
fill(
if have_hp
and not have_valHpOutIso
and have_valHpInlIso
then 1
else 0,
nHp),
fill(
if have_php
and not have_valPhpOutIso
and have_valPhpInlIso
then 1
else 0,
nPhp)))
;
final parameter Buildings.Templates.Components.Data.Valve datValChiWatUniOutIso[nHp +
nPhp](
typ=
cat(1,
fill(typValHpOutIso, nHp),
fill(typValPhpOutIso, nPhp)),
m_flow_nominal=mChiWatUni_flow_nominal,
dpValve_nominal=dpValveChiWat_nominal,
dpFixed_nominal=dpFixedChiWat_nominal .*
cat(
1,
fill(
if have_hp
and (have_valHpOutIso
or not have_valHpOutIso
and not have_valHpInlIso)
then 1
else 0,
nHp),
fill(
if have_php
and (have_valPhpOutIso
or not have_valPhpOutIso
and not have_valPhpInlIso)
then 1
else 0,
nPhp)))
;
final parameter Buildings.Templates.Components.Data.Valve datValChiWatUniInlIso[nHp +
nPhp](
typ=
cat(1,
fill(typValHpInlIso, nHp),
fill(typValPhpInlIso, nPhp)),
m_flow_nominal=mChiWatUni_flow_nominal,
dpValve_nominal=dpValveChiWat_nominal,
dpFixed_nominal=dpFixedChiWat_nominal .*
cat(
1,
fill(
if have_hp
and not have_valHpOutIso
and have_valHpInlIso
then 1
else 0,
nHp),
fill(
if have_php
and not have_valPhpOutIso
and have_valPhpInlIso
then 1
else 0,
nPhp)))
;
parameter Modelica.Fluid.Types.Dynamics energyDynamics =
Modelica.Fluid.Types.Dynamics.DynamicFreeInitial
;
parameter Modelica.Units.SI.Time tau = 10
;
parameter Boolean allowFlowReversal = true
;
parameter Boolean use_strokeTime = energyDynamics <>
Modelica.Fluid.Types.Dynamics.SteadyState
;
parameter Modelica.Units.SI.Time strokeTime = 120
;
parameter Modelica.Blocks.Types.Init init =
Modelica.Blocks.Types.Init.InitialOutput
;
parameter Real y_start = 1
;
parameter Boolean from_dp = true
;
parameter Boolean linearized = false
;
Modelica.Fluid.Interfaces.FluidPort_b port_bChiWat(
redeclare final package Medium=
Medium,
m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_chiWat
;
Modelica.Fluid.Interfaces.FluidPort_a port_aChiWat(
redeclare final package Medium=
Medium,
m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_chiWat
;
Modelica.Fluid.Interfaces.FluidPort_b port_bHeaWat(
redeclare final package Medium=
Medium,
m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
h_outflow(start=Medium.h_default, nominal=Medium.h_default))
;
Modelica.Fluid.Interfaces.FluidPort_a port_aHeaWat(
redeclare final package Medium=
Medium,
m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
h_outflow(start=Medium.h_default, nominal=Medium.h_default))
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiHeaWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiHeaWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
and not have_pumChiWatDedHp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
and have_pumChiWatDedHp
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWatHp[nHp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_hp
and have_chiWat
and have_pumChiWatDedHp
;
Buildings.Templates.Plants.HeatPumps.Interfaces.Bus bus
;
Buildings.Templates.Components.Actuators.Valve valHeaWatUniOutIso[nHp + nPhp](
redeclare each final package Medium=
Medium,
each chaTwo=Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Linear,
final dat=datValHeaWatUniOutIso,
final typ=
cat(1,
fill(typValHpOutIso, nHp),
fill(typValPhpOutIso, nPhp)),
each final use_strokeTime=use_strokeTime,
each final strokeTime=strokeTime,
each final init=init,
each final y_start=y_start,
each final from_dp=from_dp,
each final linearized=linearized)
;
Buildings.Templates.Components.Actuators.Valve valChiWatUniOutIso[nHp + nPhp](
redeclare each final package Medium=
Medium,
each chaTwo=Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Linear,
final dat=datValChiWatUniOutIso,
final typ=
cat(1,
fill(typValHpOutIso, nHp),
fill(typValPhpOutIso, nPhp)),
each final use_strokeTime=use_strokeTime,
each final strokeTime=strokeTime,
each final init=init,
each final y_start=y_start,
each final from_dp=from_dp,
each final linearized=linearized)
if have_chiWat
;
Buildings.Templates.Components.Actuators.Valve valHeaWatUniInlIso[nHp + nPhp](
redeclare each final package Medium=
Medium,
each chaTwo=Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Linear,
final dat=datValHeaWatUniInlIso,
final typ=
cat(1,
fill(typValHpInlIso, nHp),
fill(typValPhpInlIso, nPhp)),
each final use_strokeTime=use_strokeTime,
each final strokeTime=strokeTime,
each final init=init,
each final y_start=y_start,
each final from_dp=from_dp,
each final linearized=linearized)
;
Buildings.Templates.Components.Actuators.Valve valChiWatUniInlIso[nHp + nPhp](
redeclare each final package Medium=
Medium,
each chaTwo=Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Linear,
final dat=datValChiWatUniInlIso,
final typ=
cat(1,
fill(typValHpInlIso, nHp),
fill(typValPhpInlIso, nPhp)),
each final use_strokeTime=use_strokeTime,
each final strokeTime=strokeTime,
each final init=init,
each final y_start=y_start,
each final from_dp=from_dp,
each final linearized=linearized)
if have_chiWat
;
Fluid.Delays.DelayFirstOrder junHeaWatSup(
redeclare final package Medium=
Medium,
final tau=tau,
final m_flow_nominal=
sum(mHeaWatUni_flow_nominal),
final energyDynamics=energyDynamics,
final allowFlowReversal=allowFlowReversal,
final prescribedHeatFlowRate=false,
final nPorts=nHp + 1 + (
if have_php
then nPhp
else 0))
;
Fluid.Delays.DelayFirstOrder junChiWatSup(
redeclare final package Medium=
Medium,
final tau=tau,
final m_flow_nominal=
sum(mChiWatUni_flow_nominal),
final energyDynamics=energyDynamics,
final allowFlowReversal=allowFlowReversal,
final prescribedHeatFlowRate=false,
final nPorts=nHp + 1 + (
if have_php
then nPhp
else 0))
if have_chiWat
;
Fluid.Delays.DelayFirstOrder junHeaWatRet(
redeclare final package Medium=
Medium,
final tau=tau,
final m_flow_nominal=
sum(mHeaWatUni_flow_nominal),
final energyDynamics=energyDynamics,
final allowFlowReversal=allowFlowReversal,
final prescribedHeatFlowRate=false,
final nPorts=nHp + 1 + (
if have_php
then nPhp
else 0))
;
Fluid.Delays.DelayFirstOrder junChiWatRet(
redeclare final package Medium=
Medium,
final tau=tau,
final m_flow_nominal=
sum(mChiWatUni_flow_nominal),
final energyDynamics=energyDynamics,
final allowFlowReversal=allowFlowReversal,
final prescribedHeatFlowRate=false,
final nPorts=nHp + 1 + (
if have_php
then nPhp
else 0))
if have_chiWat
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(max=
if allowFlowReversal
then +Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWatPhp[nPhp](
redeclare each final package Medium=
Medium,
each m_flow(min=
if allowFlowReversal
then -Modelica.Constants.inf
else 0),
each h_outflow(start=Medium.h_default, nominal=Medium.h_default))
if have_php
;
protected
Buildings.Templates.Components.Interfaces.Bus busValHeaWatHpInlIso[nHp]
if have_valHpInlIso
;
Buildings.Templates.Components.Interfaces.Bus busValHeaWatHpOutIso[nHp]
if have_valHpOutIso
;
Buildings.Templates.Components.Interfaces.Bus busValChiWatHpInlIso[nHp]
if have_chiWat
and have_valHpInlIso
;
Buildings.Templates.Components.Interfaces.Bus busValChiWatHpOutIso[nHp]
if have_chiWat
and have_valHpOutIso
;
Buildings.Templates.Components.Interfaces.Bus busValHeaWatPhpOutIso[nPhp]
if have_php
and have_valPhpOutIso
;
Buildings.Templates.Components.Interfaces.Bus busValChiWatPhpOutIso[nPhp]
if have_php
and have_valPhpOutIso
;
protected
Buildings.Templates.Components.Interfaces.Bus busValHeaWatPhpInlIso[nPhp]
if have_php
and have_valPhpInlIso
;
Buildings.Templates.Components.Interfaces.Bus busValChiWatPhpInlIso[nPhp]
if have_php
and have_valPhpInlIso
;
equation
if have_hp
then
for i
in 1:nHp
loop
connect(busValHeaWatHpInlIso[i], valHeaWatUniInlIso[i].bus);
connect(busValChiWatHpInlIso[i], valChiWatUniInlIso[i].bus);
connect(busValHeaWatHpOutIso[i], valHeaWatUniOutIso[i].bus);
connect(busValChiWatHpOutIso[i], valChiWatUniOutIso[i].bus);
end for;
end if;
if have_php
then
for i
in 1:nPhp
loop
connect(busValChiWatPhpOutIso[i], valChiWatUniOutIso[nHp + i].bus);
connect(busValChiWatPhpInlIso[i], valChiWatUniInlIso[nHp + i].bus);
connect(busValHeaWatPhpInlIso[i], valHeaWatUniInlIso[nHp + i].bus);
connect(busValHeaWatPhpOutIso[i], valHeaWatUniOutIso[nHp + i].bus);
end for;
end if;
connect(bus.valHeaWatHpInlIso, busValHeaWatHpInlIso);
connect(bus.valHeaWatHpOutIso, busValHeaWatHpOutIso);
connect(bus.valChiWatHpInlIso, busValChiWatHpInlIso);
connect(bus.valChiWatHpOutIso, busValChiWatHpOutIso);
connect(valHeaWatUniOutIso.port_b, junHeaWatSup.ports[1:nHp + nPhp]);
connect(junHeaWatSup.ports[nHp + nPhp + 1], port_bHeaWat);
connect(valChiWatUniOutIso.port_b, junChiWatSup.ports[1:nHp + nPhp]);
connect(port_bChiWat, junChiWatSup.ports[nHp + nPhp + 1]);
connect(port_aHeaWat, junHeaWatRet.ports[nHp + nPhp + 1]);
connect(port_aChiWat, junChiWatRet.ports[nHp + nPhp + 1]);
connect(junHeaWatRet.ports[1:nHp + nPhp], valHeaWatUniInlIso.port_a);
connect(valChiWatUniInlIso.port_a, junChiWatRet.ports[1:nHp + nPhp]);
connect(valChiWatUniInlIso[nHp + 1:nHp + nPhp].port_b, ports_bChiWatPhp);
connect(valHeaWatUniInlIso[nHp + 1:nHp + nPhp].port_b, ports_bHeaWatPhp);
connect(bus.valHeaWatPhpOutIso, busValHeaWatPhpOutIso);
connect(bus.valHeaWatPhpInlIso, busValHeaWatPhpInlIso);
connect(bus.valChiWatPhpOutIso, busValChiWatPhpOutIso);
connect(bus.valChiWatPhpInlIso, busValChiWatPhpInlIso);
connect(ports_aChiWatHp, valChiWatUniOutIso[1:nHp].port_a);
connect(ports_aHeaWatHp, valHeaWatUniOutIso[1:nHp].port_a);
connect(ports_aChiWatPhp, valChiWatUniOutIso[nHp + 1:nHp + nPhp].port_a);
connect(ports_aHeaWatPhp, valHeaWatUniOutIso[nHp + 1:nHp + nPhp].port_a);
connect(ports_aChiHeaWatHp, valChiWatUniOutIso[1:nHp].port_a);
connect(ports_aChiHeaWatHp, valHeaWatUniOutIso[1:nHp].port_a);
connect(valHeaWatUniInlIso[1:nHp].port_b, ports_bChiHeaWatHp);
connect(valChiWatUniInlIso[1:nHp].port_b, ports_bChiHeaWatHp);
end ValvesIsolation;