Buildings.DHC.Examples.Steam

Package of example models for steam district heating systems

Information

This package contains example models for steam-based district heating systems.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.DHC.Examples.Steam.SingleBoiler SingleBoiler Example model for a complete steam district heating system with a central plant that contains a single boiler

Buildings.DHC.Examples.Steam.SingleBoiler Buildings.DHC.Examples.Steam.SingleBoiler

Example model for a complete steam district heating system with a central plant that contains a single boiler

Buildings.DHC.Examples.Steam.SingleBoiler

Information

This example model demonstrates a complete system simulation for steam district heating systems. The central plant features a single boiler. For the distribution network, pressure losses on the condensate return pipes are included, while the steam pipes are assumed to be lossless.

References

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Wangda Zuo. 2022. “A Fast and Accurate Modeling Approach for Water and Steam Thermodynamics with Practical Applications in District Heating System Simulation,” Energy, 254(A), pp. 124227. 10.1016/j.energy.2022.124227

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Baptiste Ravache, Wangda Zuo 2022. “Towards Open-Source Modelica Models For Steam-Based District Heating Systems.” Proc. of the 1st International Workshop On Open Source Modelling And Simulation Of Energy Systems (OSMSES 2022), Aachen, German, April 4-5, 2022. 10.1109/OSMSES54027.2022.9769121

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

Parameters

TypeNameDefaultDescription
AbsolutePressurepSat400000Saturation pressure, high pressure [Pa]
AbsolutePressurepLow200000Reduced pressure, after PRV [Pa]
TemperatureTSatMediumSte.saturationTemperat...Saturation temperature, at high pressure [K]
IntegerN3Number of buildings
MassFlowRatemDis_flow_nominalsum(bld.m_flow_nominal)*1.2Nominal mass flow rate of entire district [kg/s]
HeatFlowRateQDis_flow_nominalQBui_flow_nominal*NNominal heat flow rate of entire district [W]
HeatFlowRateQBui_flow_nominal20000Nominal heat flow rate of each building [W]
PressureDifferencedpPip6000Pressure drop in the condensate return pipe [Pa]
GenericperPumFWperPumFW(pressure(V_flow=(mD...Performance data for feedwater pump at the plant
PressureDifferencedp_nominal6000Pressure drop of distribution at nominal mass flow rate [Pa]

Modelica definition

model SingleBoiler "Example model for a complete steam district heating system with a central plant that contains a single boiler" extends Modelica.Icons.Example; package MediumSte = Buildings.Media.Steam (p_default=400000, T_default=273.15+143.61, h_default=2738100) "Steam medium"; package MediumWat = Buildings.Media.Specialized.Water.TemperatureDependentDensity ( p_default=101325, T_default=100+273.15, h_default=2738100) "Water medium"; parameter Modelica.Units.SI.AbsolutePressure pSat=400000 "Saturation pressure, high pressure"; parameter Modelica.Units.SI.AbsolutePressure pLow=200000 "Reduced pressure, after PRV"; parameter Modelica.Units.SI.Temperature TSat= MediumSte.saturationTemperature(pSat) "Saturation temperature, at high pressure"; parameter Integer N = 3 "Number of buildings"; parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal=sum(bld.m_flow_nominal)*1.2 "Nominal mass flow rate of entire district"; parameter Modelica.Units.SI.HeatFlowRate QDis_flow_nominal=QBui_flow_nominal*N "Nominal heat flow rate of entire district"; parameter Modelica.Units.SI.HeatFlowRate QBui_flow_nominal=20000 "Nominal heat flow rate of each building"; parameter Modelica.Units.SI.PressureDifference dpPip=6000 "Pressure drop in the condensate return pipe"; parameter Buildings.Fluid.Movers.Data.Generic perPumFW( pressure(V_flow=(mDis_flow_nominal/1000)*{0,1,2}, dp=(pSat-101325)*{2,1,0})) "Performance data for feedwater pump at the plant"; parameter Modelica.Units.SI.PressureDifference dp_nominal=6000 "Pressure drop of distribution at nominal mass flow rate"; Buildings.DHC.Loads.Steam.BuildingTimeSeriesAtETS bld[N]( redeclare final package MediumSte = MediumSte, redeclare final package MediumWat = MediumWat, each have_prv=true, each dp_nominal=dpPip/2, each final pSte_nominal=pSat, each final Q_flow_nominal=QBui_flow_nominal, each pLow_nominal=pLow, each energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, each tableOnFile=false, each QHeaLoa= [0,0.8; 2,1; 10,1; 12,0.5; 20,0.5; 24,0.8]*[1,0;0,QBui_flow_nominal], each smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1, each timeScale(displayUnit="s") = 3600, each show_T=true) "Buildings"; Buildings.DHC.Networks.Steam.DistributionCondensatePipe dis( redeclare final package MediumSup = MediumSte, redeclare final package MediumRet = MediumWat, final dp_nominal=dp_nominal, final nCon=N, final mDis_flow_nominal=mDis_flow_nominal, final mCon_flow_nominal=bld.m_flow_nominal) "Distribution network"; Buildings.DHC.Plants.Steam.SingleBoiler pla( redeclare final package Medium = MediumWat, redeclare final package MediumHea_b = MediumSte, final m_flow_nominal=mDis_flow_nominal, final pSteSet=pSat, final Q_flow_nominal=QDis_flow_nominal, final per=perPumFW, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, kBoi=600, TiBoi(displayUnit="min") = 120, kPum=200, TiPum=1000) "Plant"; equation connect(dis.ports_bCon, bld.port_a); connect(bld.port_b, dis.ports_aCon); connect(pla.port_bSerHea, dis.port_aDisSup); connect(dis.port_bDisRet, pla.port_aSerHea); end SingleBoiler;