Buildings.DHC.ETS.Combined.Examples

Package of example models of energy transfer stations for combined heating and cooling

Information

This package contains examples illustrating the use of the models in Buildings.DHC.ETS.Combined.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.DHC.ETS.Combined.Examples.HeatRecoveryHeatPump HeatRecoveryHeatPump Example of the ETS model with heat recovery heat pump

Buildings.DHC.ETS.Combined.Examples.HeatRecoveryHeatPump Buildings.DHC.ETS.Combined.Examples.HeatRecoveryHeatPump

Example of the ETS model with heat recovery heat pump

Buildings.DHC.ETS.Combined.Examples.HeatRecoveryHeatPump

Information

This model validates Buildings.DHC.ETS.Combined.HeatRecoveryHeatPump in a system configuration with no geothermal borefield.

A load profile based on a whole building energy simulation is used to represent realistic operating conditions. The district water supply temperature varies on a monthly basis, with a minimum in January and a maximum in August.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
StringfilNam"modelica://Buildings/Resour...File name with thermal loads as time series
MassFlowRatemHeaWat_flow_nominal0.9*datHeaPum.mCon_flow_nomi...Nominal heating water mass flow rate [kg/s]
MassFlowRatemChiWat_flow_nominal0.9*datHeaPum.mEva_flow_nomi...Nominal chilled water mass flow rate [kg/s]
WAMAK_220kWdatHeaPumdatHeaPum(PLRMin=0.2, QHeaDe...Heat recovery heat pump parameters
GenericDomesticHotWaterWithHeatExchangerdatDhwdatDhw(VTan=datHeaPum.mCon_f...Performance data of the domestic hot water component
Design parameter
HeatFlowRateQCoo_flow_nominalBuildings.DHC.Loads.BaseClas...Design cooling heat flow rate (<=0) [W]
HeatFlowRateQHea_flow_nominalBuildings.DHC.Loads.BaseClas...Design heat heating flow rate (>=0) [W]
Chilled water
ThermodynamicTemperatureTChiWatSup_nominal7 + 273.15Nominal chilled water supply temperature [K]
TemperatureDifferencedTChiWat_nominal5Nominal chilled water temperature difference [K]
Heating hot water
ThermodynamicTemperatureTHeaWatSup_nominal45 + 273.15Nominal heating hot water supply temperature [K]
TemperatureDifferencedTHeaWat_nominal10Nominal heating hot water temperature difference [K]

Modelica definition

model HeatRecoveryHeatPump "Example of the ETS model with heat recovery heat pump" extends Modelica.Icons.Example; package Medium=Buildings.Media.Water "Medium model"; parameter String filNam="modelica://Buildings/Resources/Data/DHC/Loads/Examples/MediumOffice-90.1-2010-5A.mos" "File name with thermal loads as time series"; parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal=0.9*datHeaPum.mCon_flow_nominal "Nominal heating water mass flow rate"; parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal=0.9*datHeaPum.mEva_flow_nominal "Nominal chilled water mass flow rate"; parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal(max=-Modelica.Constants.eps)= Buildings.DHC.Loads.BaseClasses.getPeakLoad( string="#Peak space cooling load", filNam=Modelica.Utilities.Files.loadResource(filNam)) "Design cooling heat flow rate (<=0)"; parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal(min=Modelica.Constants.eps)= Buildings.DHC.Loads.BaseClasses.getPeakLoad( string="#Peak space heating load", filNam=Modelica.Utilities.Files.loadResource(filNam)) "Design heat heating flow rate (>=0)"; parameter Modelica.Units.SI.ThermodynamicTemperature TChiWatSup_nominal( displayUnit="degC") = 7+273.15 "Nominal chilled water supply temperature"; parameter Modelica.Units.SI.TemperatureDifference dTChiWat_nominal = 5 "Nominal chilled water temperature difference"; parameter Modelica.Units.SI.ThermodynamicTemperature THeaWatSup_nominal( displayUnit="degC") = 45+273.15 "Nominal heating hot water supply temperature"; parameter Modelica.Units.SI.TemperatureDifference dTHeaWat_nominal = 10 "Nominal heating hot water temperature difference"; parameter Buildings.DHC.ETS.Combined.Data.WAMAK_220kW datHeaPum( PLRMin=0.2, QHeaDes_flow_nominal=max(QHea_flow_nominal, abs(QCoo_flow_nominal)*1.2), QCooDes_flow_nominal=QCoo_flow_nominal, dTCon_nominal=dTHeaWat_nominal, dTEva_nominal=dTChiWat_nominal, THeaConLvg_nominal=THeaWatSup_nominal, THeaEvaLvg_nominal=TChiWatSup_nominal, TCooConLvg_nominal=273.15 + 31, TCooEvaLvg_nominal=TChiWatSup_nominal) "Heat recovery heat pump parameters"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupSet( k=THeaWatSup_nominal, y(final unit="K", displayUnit="degC")) "Heating water supply temperature set point"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet( k=TChiWatSup_nominal, y(final unit="K", displayUnit="degC")) "Chilled water supply temperature set point"; Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package Medium = Medium, m_flow_nominal=datHeaPum.mCon_flow_nominal) "Heating water supply temperature"; Buildings.Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package Medium = Medium, m_flow_nominal=datHeaPum.mEva_flow_nominal) "Chilled water supply temperature"; Buildings.DHC.ETS.Combined.HeatRecoveryHeatPump ets( have_hotWat=false, QChiWat_flow_nominal=QCoo_flow_nominal, QHeaWat_flow_nominal=QHea_flow_nominal, QHotWat_flow_nominal=0, dp1Hex_nominal=40E3, dp2Hex_nominal=40E3, QHex_flow_nominal=QHea_flow_nominal, T_a1Hex_nominal=283.65, T_b1Hex_nominal=279.65, T_a2Hex_nominal=276.65, T_b2Hex_nominal=282.65, QWSE_flow_nominal=QCoo_flow_nominal, VTanHeaWat=datHeaPum.mCon_flow_nominal*dTHeaWat_nominal*5*60/1000, VTanChiWat=datHeaPum.mEva_flow_nominal*dTChiWat_nominal*5*60/1000, datDhw=datDhw, TCon_start=THeaWatSup_nominal, TEva_start=TChiWatSup_nominal, datHeaPum=datHeaPum) "ETS"; Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatRet( redeclare final package Medium = Medium, m_flow_nominal=datHeaPum.mCon_flow_nominal) "Heating water return temperature"; Buildings.Fluid.Sensors.TemperatureTwoPort senTChiWatRet( redeclare final package Medium = Medium, m_flow_nominal=datHeaPum.mEva_flow_nominal) "Chilled water return temperature"; Buildings.Fluid.Sources.Boundary_pT disWat( redeclare package Medium = Medium, use_T_in=true, nPorts=2) "District water boundary conditions"; DHC.ETS.BaseClasses.Pump_m_flow pumChiWat( redeclare package Medium = Medium, final m_flow_nominal=mChiWat_flow_nominal, dp_nominal=100E3) "Chilled water distribution pump"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= mChiWat_flow_nominal) "Scale to nominal mass flow rate"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(final k= mHeaWat_flow_nominal) "Scale to nominal mass flow rate"; DHC.ETS.BaseClasses.Pump_m_flow pumHeaWat( redeclare package Medium = Medium, final m_flow_nominal=mHeaWat_flow_nominal, dp_nominal=100E3) "Heating water distribution pump"; Buildings.Fluid.MixingVolumes.MixingVolume volHeaWat( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, T_start=45 + 273.15, final prescribedHeatFlowRate=true, redeclare package Medium = Medium, V=10, final mSenFac=1, final m_flow_nominal=mHeaWat_flow_nominal, nPorts=2) "Volume for heating water distribution circuit"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai3(final k=-ets.QHeaWat_flow_nominal) "Scale to nominal heat flow rate"; Buildings.HeatTransfer.Sources.PrescribedHeatFlow loaHea "Heating load as prescribed heat flow rate"; Buildings.Fluid.MixingVolumes.MixingVolume volChiWat( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, T_start=7 + 273.15, final prescribedHeatFlowRate=true, redeclare package Medium = Medium, V=10, final mSenFac=1, final m_flow_nominal=mChiWat_flow_nominal, nPorts=2) "Volume for chilled water distribution circuit"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai4(final k=-ets.QChiWat_flow_nominal) "Scale to nominal heat flow rate"; Buildings.HeatTransfer.Sources.PrescribedHeatFlow loaCoo "Cooling load as prescribed heat flow rate"; Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( tableName="tab1", table=[ 0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10,16; 11,13; 12,11], timeScale=2592000, offset={273.15}, columns={2}, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) "District water supply temperature"; Modelica.Blocks.Sources.CombiTimeTable loa( tableOnFile=true, tableName="tab1", fileName=Modelica.Utilities.Files.loadResource(filNam), timeScale=1, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, offset={0,0}, columns={2,3}, smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) "Thermal loads (y[1] is cooling load, y[2] is heating load)"; Buildings.Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) "District water supply temperature"; Modelica.Blocks.Continuous.Integrator EChi( y(unit="J")) "Chiller electricity use"; Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) "District water return temperature"; parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datDhw( VTan=datHeaPum.mCon_flow_nominal*dTHeaWat_nominal*5*60/1000, mDom_flow_nominal=datDhw.QHex_flow_nominal/4200/(datDhw.TDom_nominal - datDhw.TCol_nominal), QHex_flow_nominal=if ets.have_hotWat then ets.QHotWat_flow_nominal else ets.QHeaWat_flow_nominal, TDom_nominal=323.15) "Performance data of the domestic hot water component"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaNorHea( k=1/ets.QHeaWat_flow_nominal) "Normalize by nominal"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaNorCoo( k=1/ets.QChiWat_flow_nominal) "Normalize by nominal"; equation connect(TChiWatSupSet.y,ets.TChiWatSupSet); connect(THeaWatSupSet.y,ets.THeaWatSupSet); connect(pumChiWat.port_a,senTChiWatSup.port_b); connect(gai2.y,pumChiWat.m_flow_in); connect(pumHeaWat.port_b,senTHeaWatSup.port_a); connect(gai1.y,pumHeaWat.m_flow_in); connect(gai3.y,loaHea.Q_flow); connect(loaHea.port,volHeaWat.heatPort); connect(pumChiWat.port_b,volChiWat.ports[1]); connect(volChiWat.ports[2],senTChiWatRet.port_a); connect(senTHeaWatSup.port_b,volHeaWat.ports[1]); connect(gai4.y,loaCoo.Q_flow); connect(loaCoo.port,volChiWat.heatPort); connect(volHeaWat.ports[2],senTHeaWatRet.port_a); connect(TDisWatSup.y[1],disWat.T_in); connect(disWat.ports[1],senTDisWatSup.port_a); connect(senTDisWatSup.port_b, ets.port_aSerAmb); connect(ets.ports_bChiWat[1],senTChiWatSup.port_a); connect(ets.ports_bHeaWat[1],pumHeaWat.port_a); connect(senTHeaWatRet.port_b,ets.ports_aHeaWat[1]); connect(senTChiWatRet.port_b,ets.ports_aChiWat[1]); connect(ets.PCoo, EChi.u); connect(ets.port_bSerAmb, senTDisWatRet.port_a); connect(senTDisWatRet.port_b, disWat.ports[2]); connect(loa.y[2],loaNorHea.u); connect(loa.y[1],loaNorCoo.u); connect(loaNorHea.y, gai3.u); connect(loaNorHea.y, gai1.u); connect(loaNorCoo.y, gai4.u); connect(loaNorCoo.y, gai2.u); end HeatRecoveryHeatPump;