Buildings.Obsolete.DHC.ETS.Combined

Package with obsolete models for district heating and cooling systems

Information

Package with obsolete models for district heating and cooling systems.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Obsolete.DHC.ETS.Combined.ChillerBorefield ChillerBorefield ETS model for 5GDHC systems with heat recovery chiller and optional borefield
Buildings.Obsolete.DHC.ETS.Combined.Controls Controls Package with control models
Buildings.Obsolete.DHC.ETS.Combined.Subsystems Subsystems Package with obsolete models for district heating and cooling sub-systems
Buildings.Obsolete.DHC.ETS.Combined.Examples Examples Collection of models that illustrate model use and test models
Buildings.Obsolete.DHC.ETS.Combined.Validation Validation Collection of validation models
Buildings.Obsolete.DHC.ETS.Combined.BaseClasses BaseClasses Package with base classes for Buildings.Obsolete.DHC.ETS.Combined

Buildings.Obsolete.DHC.ETS.Combined.ChillerBorefield Buildings.Obsolete.DHC.ETS.Combined.ChillerBorefield

ETS model for 5GDHC systems with heat recovery chiller and optional borefield

Buildings.Obsolete.DHC.ETS.Combined.ChillerBorefield

Information

This model represents an energy transfer station as illustrated in the schematics below.

Note that the heating and cooling enable signals (uHea and uCoo) connected to this model should be switched to false when the building has no corresponding demand (e.g., based on the requests yielded by the terminal unit controllers, in conjunction with a schedule). This will significantly improve the system performance as it is a necessary condition for the chiller to be operated at a lower lift, see Buildings.DHC.ETS.Combined.Controls.Reset.

System schematics

Extends from Buildings.Obsolete.DHC.ETS.Combined.BaseClasses.PartialParallel (Partial ETS model with district heat exchanger and parallel connection of production systems).

Parameters

TypeNameDefaultDescription
replaceable package MediumSerWaterService side medium
replaceable package MediumSerHea_aWaterService side medium at heating inlet
replaceable package MediumBuiWaterBuilding side medium
Genericfue[nFue] Fuel type
ConnectionConfigurationconConBuildings.DHC.ETS.Types.Conn...District connection configuration
IntegernSysHea1Number of heating systems
IntegernSysCoonSysHeaNumber of cooling systems
IntegernSouAmbif have_borFie then 2 else 1Number of ambient sources
Booleanhave_borFiefalseSet to true in case a borefield is used in addition of the district HX
Booleanhave_WSEfalseSet to true in case a waterside economizer is used
Configuration
Booleanhave_hotWatfalseSet to true if the ETS supplies hot water
Booleanhave_fanfalseSet to true if fan power is computed
Booleanhave_eleHeafalseSet to true if the ETS has electric heating system
IntegernFue0Number of fuel types (0 means no combustion system)
Booleanhave_eleCootrueSet to true if the ETS has electric cooling system
Booleanhave_weaBusfalseSet to true to use a weather bus
Nominal condition
HeatFlowRateQHeaWat_flow_nominal0Nominal capacity of heating system (>=0) [W]
HeatFlowRateQHotWat_flow_nominal0Nominal capacity of hot water production system (>=0) [W]
HeatFlowRateQChiWat_flow_nominal0Nominal capacity of cooling system (<=0) [W]
PressureDifferencedpValIso_nominal2E3Nominal pressure drop of ambient circuit isolation valves [Pa]
District heat exchanger
PressureDifferencedp1Hex_nominal Nominal pressure drop across heat exchanger on district side [Pa]
PressureDifferencedp2Hex_nominal Nominal pressure drop across heat exchanger on building side [Pa]
HeatFlowRateQHex_flow_nominal Nominal heat flow rate through heat exchanger (from district to building) [W]
TemperatureT_a1Hex_nominal Nominal water inlet temperature on district side [K]
TemperatureT_b1Hex_nominal Nominal water outlet temperature on district side [K]
TemperatureT_a2Hex_nominal Nominal water inlet temperature on building side [K]
TemperatureT_b2Hex_nominal Nominal water outlet temperature on building side [K]
RealspePum1HexMin0.1Heat exchanger primary pump minimum speed (fractional) [1]
RealspePum2HexMin0.1Heat exchanger secondary pump minimum speed (fractional) [1]
Buffer Tank
VolumeVTanHeaWatdatChi.PLRMin*datChi.mCon_fl...Heating water tank volume [m3]
LengthhTanHeaWat(VTanHeaWat*16/Modelica.Cons...Heating water tank height (assuming twice the diameter) [m]
LengthdInsTanHeaWat0.1Heating water tank insulation thickness [m]
VolumeVTanChiWatdatChi.PLRMin*datChi.mEva_fl...Chilled water tank volume [m3]
LengthhTanChiWat(VTanChiWat*16/Modelica.Cons...Chilled water tank height (without insulation) [m]
LengthdInsTanChiWat0.1Chilled water tank insulation thickness [m]
IntegernSegTan3Number of volume segments for tanks
Chiller
PressureDifferencedpCon_nominal Nominal pressure drop accross condenser [Pa]
PressureDifferencedpEva_nominal Nominal pressure drop accross evaporator [Pa]
GenericdatChiredeclare parameter Building...Chiller performance data
Chillerchichi(redeclare final package ...Chiller
Waterside economizer
PressureDifferencedp1WSE_nominal40E3Nominal pressure drop across heat exchanger on district side [Pa]
PressureDifferencedp2WSE_nominal40E3Nominal pressure drop across heat exchanger on building side [Pa]
HeatFlowRateQWSE_flow_nominal0Nominal heat flow rate through heat exchanger (<=0) [W]
TemperatureT_a1WSE_nominal279.15Nominal water inlet temperature on district side [K]
TemperatureT_b1WSE_nominal284.15Nominal water outlet temperature on district side [K]
TemperatureT_a2WSE_nominal288.15Nominal water inlet temperature on building side [K]
TemperatureT_b2WSE_nominal281.15Nominal water outlet temperature on building side [K]
Realy1WSEMin0.05Minimum pump flow rate or valve opening for temperature measurement (fractional) [1]
Borefield
TemperatureTBorWatEntMax313.15Maximum value of borefield water entering temperature [K]
RealspePumBorMin0.1Borefield pump minimum speed [1]
PressuredpBorFie_nominal5E4Pressure losses for the entire borefield (control valve excluded) [Pa]
ExampledatBorFieredeclare parameter Building...Borefield parameters
BorefieldborFieborFie(redeclare final packa...Borefield
Supervisory controller
SimpleControllercontrollerTypeBuildings.Controls.OBC.CDL.T...Type of controller
RealkHot0.05Gain of controller on hot side
RealkCol0.1Gain of controller on cold side
TimeTiHot300Time constant of integrator block on hot side [s]
TimeTiCol120Time constant of integrator block on cold side [s]
TemperatureTHeaWatSupSetMindatChi.TConEntMin + 5Minimum value of heating water supply temperature set point [K]
TemperatureTChiWatSupSetMindatChi.TEvaLvgMinMinimum value of chilled water supply temperature set point [K]
TemperatureTChiWatSupSetMaxdatChi.TEvaLvgMaxMinimum value of chilled water supply temperature set point [K]
Assumptions
BooleanallowFlowReversalSerfalseSet to true to allow flow reversal on service side
BooleanallowFlowReversalBuifalseSet to true to allow flow reversal on building side

Connectors

TypeNameDescription
FluidPorts_aports_aHeaWat[nPorts_aHeaWat]Fluid connectors for heating water return (from building)
FluidPorts_bports_bHeaWat[nPorts_bHeaWat]Fluid connectors for heating water supply (to building)
FluidPorts_aports_aChiWat[nPorts_aChiWat]Fluid connectors for chilled water return (from building)
FluidPorts_bports_bChiWat[nPorts_bChiWat]Fluid connectors for chilled water supply (to building)
FluidPort_aport_aSerAmbFluid connector for ambient water service supply line
FluidPort_bport_bSerAmbFluid connector for ambient water service return line
FluidPort_aport_aSerHeaFluid connector for heating service supply line
FluidPort_bport_bSerHeaFluid connector for heating service return line
FluidPort_aport_aSerCooFluid connector for cooling service supply line
FluidPort_bport_bSerCooFluid connector for cooling service return line
output RealOutputPHeaPower drawn by heating system [W]
output RealOutputPCooPower drawn by cooling system [W]
output RealOutputPFanPower drawn by fan motors [W]
output RealOutputPPumPower drawn by pump motors [W]
output RealOutputQFue_flow[nFue]Fuel energy input rate [W]
BusweaBusWeather data bus
input BooleanInputuHeaHeating enable signal
input BooleanInputuCooCooling enable signal
input RealInputTHeaWatSupSetHeating water supply temperature set point [K]
input RealInputTChiWatSupSetChilled water supply temperature set point [K]
output RealOutputdHHeaWat_flowHeating water distributed energy flow rate [W]
output RealOutputdHChiWat_flowChilled water distributed energy flow rate [W]

Modelica definition

model ChillerBorefield "ETS model for 5GDHC systems with heat recovery chiller and optional borefield" extends Buildings.Obsolete.DHC.ETS.Combined.BaseClasses.PartialParallel( final have_eleCoo=true, final have_fan=false, redeclare replaceable Buildings.Obsolete.DHC.ETS.Combined.Controls.Supervisory conSup constrainedby Buildings.Obsolete.DHC.ETS.Combined.Controls.Supervisory( final controllerType=controllerType, final kHot=kHot, final kCol=kCol, final TiHot=TiHot, final TiCol=TiCol, final THeaWatSupSetMin=THeaWatSupSetMin, final TChiWatSupSetMin=TChiWatSupSetMin, final TChiWatSupSetMax=TChiWatSupSetMax), nSysHea=1, nSouAmb= if have_borFie then 2 else 1, VTanHeaWat=datChi.PLRMin*datChi.mCon_flow_nominal*5*60/1000, VTanChiWat=datChi.PLRMin*datChi.mEva_flow_nominal*5*60/1000, colChiWat( mCon_flow_nominal={colAmbWat.mDis_flow_nominal,datChi.mEva_flow_nominal}), colHeaWat( mCon_flow_nominal={colAmbWat.mDis_flow_nominal,datChi.mCon_flow_nominal}), colAmbWat( mCon_flow_nominal= if have_borFie then {hex.m2_flow_nominal,datBorFie.conDat.mBorFie_flow_nominal} else {hex.m2_flow_nominal}), totPPum( nin=3), totPHea( nin=1), totPCoo( nin=1), nPorts_bChiWat=1, nPorts_aHeaWat=1, nPorts_aChiWat=1, nPorts_bHeaWat=1); parameter Boolean have_borFie=false "Set to true in case a borefield is used in addition of the district HX"; parameter Boolean have_WSE=false "Set to true in case a waterside economizer is used"; parameter Modelica.Units.SI.PressureDifference dpCon_nominal(displayUnit="Pa") "Nominal pressure drop accross condenser"; parameter Modelica.Units.SI.PressureDifference dpEva_nominal(displayUnit="Pa") "Nominal pressure drop accross evaporator"; replaceable parameter Buildings.Fluid.Chillers.Data.ElectricEIR.Generic datChi "Chiller performance data"; parameter Modelica.Units.SI.PressureDifference dp1WSE_nominal(displayUnit= "Pa") = 40E3 "Nominal pressure drop across heat exchanger on district side"; parameter Modelica.Units.SI.PressureDifference dp2WSE_nominal(displayUnit= "Pa") = 40E3 "Nominal pressure drop across heat exchanger on building side"; parameter Modelica.Units.SI.HeatFlowRate QWSE_flow_nominal=0 "Nominal heat flow rate through heat exchanger (<=0)"; parameter Modelica.Units.SI.Temperature T_a1WSE_nominal=279.15 "Nominal water inlet temperature on district side"; parameter Modelica.Units.SI.Temperature T_b1WSE_nominal=284.15 "Nominal water outlet temperature on district side"; parameter Modelica.Units.SI.Temperature T_a2WSE_nominal=288.15 "Nominal water inlet temperature on building side"; parameter Modelica.Units.SI.Temperature T_b2WSE_nominal=281.15 "Nominal water outlet temperature on building side"; parameter Real y1WSEMin(unit="1")=0.05 "Minimum pump flow rate or valve opening for temperature measurement (fractional)"; final parameter Modelica.Units.SI.MassFlowRate m1WSE_flow_nominal=abs( QWSE_flow_nominal/4200/(T_b1WSE_nominal - T_a1WSE_nominal)) "WSE primary mass flow rate"; parameter Modelica.Units.SI.Temperature TBorWatEntMax=313.15 "Maximum value of borefield water entering temperature"; parameter Real spePumBorMin(unit="1")=0.1 "Borefield pump minimum speed"; parameter Modelica.Units.SI.Pressure dpBorFie_nominal(displayUnit="Pa") = 5E4 "Pressure losses for the entire borefield (control valve excluded)"; replaceable parameter Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Example datBorFie constrainedby Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Template "Borefield parameters"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType= Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real kHot( min=0)=0.05 "Gain of controller on hot side"; parameter Real kCol( min=0)=0.1 "Gain of controller on cold side"; parameter Modelica.Units.SI.Time TiHot(min=Buildings.Controls.OBC.CDL.Constants.small) = 300 "Time constant of integrator block on hot side"; parameter Modelica.Units.SI.Time TiCol(min=Buildings.Controls.OBC.CDL.Constants.small) = 120 "Time constant of integrator block on cold side"; parameter Modelica.Units.SI.Temperature THeaWatSupSetMin(displayUnit="degC") = datChi.TConEntMin + 5 "Minimum value of heating water supply temperature set point"; parameter Modelica.Units.SI.Temperature TChiWatSupSetMin(displayUnit="degC") = datChi.TEvaLvgMin "Minimum value of chilled water supply temperature set point"; parameter Modelica.Units.SI.Temperature TChiWatSupSetMax(displayUnit="degC") = datChi.TEvaLvgMax "Minimum value of chilled water supply temperature set point"; replaceable Buildings.Obsolete.DHC.ETS.Combined.Subsystems.Chiller chi( redeclare final package Medium = MediumBui, final dpCon_nominal=dpCon_nominal, final dpEva_nominal=dpEva_nominal, final dat=datChi) "Chiller"; replaceable Buildings.Obsolete.DHC.ETS.Combined.Subsystems.Borefield borFie( redeclare final package Medium = MediumBui, final datBorFie=datBorFie, final TBorWatEntMax=TBorWatEntMax, final spePumBorMin=spePumBorMin, final dp_nominal=dpBorFie_nominal) if have_borFie "Borefield"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zerPPum( final k=0) if not have_borFie "Zero power"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zerPHea( final k=0) "Zero power"; Buildings.DHC.Networks.BaseClasses.DifferenceEnthalpyFlowRate dHFloHeaWat( redeclare final package Medium1 = MediumBui, final m_flow_nominal=colHeaWat.mDis_flow_nominal) "Variation of enthalpy flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput dHHeaWat_flow(final unit="W") "Heating water distributed energy flow rate"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput dHChiWat_flow(final unit="W") "Chilled water distributed energy flow rate"; Buildings.DHC.Networks.BaseClasses.DifferenceEnthalpyFlowRate dHFloChiWat( redeclare final package Medium1 = MediumBui, final m_flow_nominal=colChiWat.mDis_flow_nominal) "Variation of enthalpy flow rate"; Buildings.DHC.ETS.Combined.Subsystems.WatersideEconomizer WSE( redeclare final package Medium1 = MediumSer, redeclare final package Medium2 = MediumBui, final allowFlowReversal1=allowFlowReversalSer, final allowFlowReversal2=allowFlowReversalBui, final conCon=conCon, final dp1Hex_nominal=dp1WSE_nominal, final dp2Hex_nominal=dp2WSE_nominal, final Q_flow_nominal=QWSE_flow_nominal, final T_a1_nominal=T_a1WSE_nominal, final T_b1_nominal=T_b1WSE_nominal, final T_a2_nominal=T_a2WSE_nominal, final T_b2_nominal=T_b2WSE_nominal, final y1Min=y1WSEMin) if have_WSE "Waterside economizer"; Buildings.DHC.ETS.BaseClasses.Junction splWSE( redeclare final package Medium = MediumSer, final m_flow_nominal={ hex.m1_flow_nominal + m1WSE_flow_nominal, -hex.m1_flow_nominal, -m1WSE_flow_nominal}) "Flow splitter for WSE"; Buildings.DHC.ETS.BaseClasses.Junction mixWSE( redeclare final package Medium = MediumSer, final m_flow_nominal={ hex.m1_flow_nominal, -hex.m1_flow_nominal - m1WSE_flow_nominal, m1WSE_flow_nominal}) "Flow mixer for WSE"; equation if not have_WSE then connect(tanChiWat.port_aTop, dHFloChiWat.port_b2); end if; connect(chi.port_bHeaWat,colHeaWat.ports_aCon[2]); connect(chi.port_aHeaWat,colHeaWat.ports_bCon[2]); connect(chi.port_bChiWat,colChiWat.ports_aCon[2]); connect(colChiWat.ports_bCon[2],chi.port_aChiWat); connect(conSup.TChiWatSupSet,chi.TChiWatSupSet); connect(chi.PPum,totPPum.u[2]); connect(colAmbWat.ports_aCon[2],borFie.port_b); connect(colAmbWat.ports_bCon[2],borFie.port_a); connect(conSup.yAmb[1],borFie.u); connect(valIsoCon.y_actual,borFie.yValIso_actual[1]); connect(valIsoEva.y_actual,borFie.yValIso_actual[2]); connect(borFie.PPum,totPPum.u[3]); connect(zerPPum.y,totPPum.u[3]); connect(zerPHea.y,totPHea.u[1]); connect(chi.PChi,totPCoo.u[1]); connect(uHea,conSup.uHea); connect(conSup.yHea,chi.uHea); connect(conSup.yCoo,chi.uCoo); connect(valIsoCon.y_actual,conSup.yValIsoCon_actual); connect(valIsoEva.y_actual,conSup.yValIsoEva_actual); connect(dHFloHeaWat.dH_flow,dHHeaWat_flow); connect(dHFloChiWat.dH_flow,dHChiWat_flow); connect(dHFloChiWat.port_a1, tanChiWat.port_bBot); connect(dHFloChiWat.port_b1, ports_bChiWat[1]); connect(tanHeaWat.port_bTop, dHFloHeaWat.port_a1); connect(tanHeaWat.port_aBot, dHFloHeaWat.port_b2); connect(dHFloHeaWat.port_a2, ports_aHeaWat[1]); connect(ports_aChiWat[1], dHFloChiWat.port_a2); connect(dHFloHeaWat.port_b1, ports_bHeaWat[1]); connect(splWSE.port_2, hex.port_a1); connect(dHFloChiWat.port_b2, WSE.port_a2); connect(WSE.port_b2, tanChiWat.port_aTop); connect(mixWSE.port_2, port_bSerAmb); connect(splWSE.port_3, WSE.port_a1); connect(WSE.port_b1, mixWSE.port_3); connect(hex.port_b1, mixWSE.port_1); connect(conSup.yCoo, WSE.uCoo); connect(valIsoEva.y_actual, WSE.yValIsoEva_actual); connect(port_aSerAmb, splWSE.port_1); end ChillerBorefield;