modelBuildingTimeSeriesAtETS

Steam heating building interconnection with the district piping only and the load at the ETS provided as a time series.

Information

This model is intended for existing steam district heating systems where the heating load at the energy transfer station (ETS) is availble as a time series data input. Thus, the building-side piping and equipement is not included in this model, as depicted below.

steamBuilding.

Implementation

With the time series input, this model is configured such that the control volume (representing the steam side of the heat exchanger) has steady state energy and mass balances. The steam trap also has steady state balances by design. Meanwhile, the condensate return pump allows either dynamic or steady state balances. The mass flow rate at the pump is prescribed ideally such that the heat flow rate input from the time series is rejected at the control volume based on the physical laws.

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

Parameters

TypeNameDefaultDescription
Booleanhave_prvfalseSet to true if the building has a pressure reducing valve (PRV) station
Modelica.Units.SI.VolumeV1Total volume of the steam side of the heat exchanger
Assumptions
BooleanallowFlowReversalfalse= false to simplify equations, assuming, but not enforcing, no flow reversal. Set to false because the flow rate is prescribed.
Nominal condition
Modelica.Units.SI.PowerQ_flow_nominalNominal heat flow rate
Modelica.Units.SI.PressureDifferencedp_nominalPressure drop at nominal mass flow rate
Modelica.Units.SI.AbsolutePressurepSte_nominalMediumSte.p_defaultNominal pressure of steam entering the building
Modelica.Units.SI.AbsolutePressurepLow_nominal0.8*MediumSte.p_defaultNominal low pressure setpoint, downstream of PRV (if present)
Modelica.Units.SI.TemperatureTSte_nominalMediumSte.saturationTemperature(pSte_nominal)Nominal temperature of steam entering the building
Modelica.Units.SI.TemperatureTLow_nominalMediumSte.temperature(MediumSte.setState_phX(p = pLow_nominal, h = MediumSte.specificEnthalpy(MediumSte.setState_pTX(p = pSte_nominal, T = TSte_nominal, X = MediumSte.X_default)), X = MediumSte.X_default))Nominal temperature of steam entering heat exchanger, if PRV present
Modelica.Units.SI.SpecificEnthalpydh_nominalMediumSte.specificEnthalpy(MediumSte.setState_pTX(p = if have_prv then pLow_nominal else pSte_nominal, T = if have_prv then TLow_nominal else TSte_nominal, X = MediumSte.X_default)) - MediumWat.specificEnthalpy(MediumWat.setState_pTX(p = if have_prv then pLow_nominal else pSte_nominal, T = if have_prv then TLow_nominal else TSte_nominal, X = MediumWat.X_default))Nominal change in enthalpy across the heat exchanger
Modelica.Units.SI.MassFlowRatem_flow_nominalQ_flow_nominal/dh_nominalNominal mass flow rate
Dynamics › Equations
Modelica.Fluid.Types.DynamicsenergyDynamicsModelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization
MediumSte.AbsolutePressurep_startMediumSte.p_defaultStart value of pressure
MediumSte.TemperatureT_startMediumSte.T_defaultStart value of temperature
Modelica.Units.SI.MassFlowRatem_flow_start0Initial value of mass flow rate
Load Profile › Table data definition
BooleantableOnFilefalse= true, if table is defined on file or in function usertab
Real[:,:]QHeaLoafill(0.0, 0, 2)Table matrix (time = first column; e.g., table=[0, 0; 1, 1; 2, 4])
StringtableName"NoName"Table name on file or in function usertab (see docu)
StringfileName"NoName"File where matrix is stored
Load Profile › Table data interpretation
Integer[:]columns2:size(QHeaLoa, 2)Columns of table to be interpolated
Modelica.Blocks.Types.SmoothnesssmoothnessModelica.Blocks.Types.Smoothness.LinearSegmentsSmoothness of table interpolation
Modelica.Units.SI.TimetimeScale1Time scale of first table column
Advanced › Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Advanced › Nominal condition
Modelica.Units.SI.Densityrho_a_defaultMediumSte.density(MediumSte.setState_pTX(p = pSte_nominal, T = TSte_nominal, X = MediumSte.X_default))Default steam density
Modelica.Units.SI.Densityrho_b_defaultMediumWat.density(MediumWat.setState_pTX(p = 101325, T = 273.15 + 90, X = MediumWat.X_default))Default water density

Connectors

TypeNameDefaultDescription
Modelica.Blocks.Interfaces.RealOutputQ_flowTotal heat transfer rate
Modelica.Blocks.Interfaces.RealOutputEHeaTotal heating energy
Modelica.Fluid.Interfaces.FluidPort_aport_aInlet port
Modelica.Fluid.Interfaces.FluidPort_bport_bOutlet port

Components

TypeNameDefaultDescription
MediumSte.ThermodynamicStatesta_aMediumSte.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow)))Medium properties in port_a
MediumWat.ThermodynamicStatesta_bMediumWat.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow)))Medium properties in port_b
Modelica.Blocks.Sources.CombiTimeTableQHeaHeating demand
Modelica.Blocks.Continuous.IntegratorIntEHeaIntegrator for heating energy of building
Buildings.Fluid.Movers.FlowControlled_m_flowpumCNRCondensate return pump
Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensationvolSteam side of the heat exchanger, modeled as a steady state control volume
Buildings.DHC.Loads.Steam.BaseClasses.SteamTrapsteTraSteam trap
Buildings.Fluid.Sensors.SpecificEnthalpyTwoPorthInEnthalpy in
Buildings.Fluid.Sensors.SpecificEnthalpyTwoPorthOutEnthalpy out
Modelica.Blocks.Math.AdddhChange in enthalpy with building-side fluid
Modelica.Blocks.Math.Divisionm_flowMass flow
Buildings.DHC.Loads.Steam.BaseClasses.ValveSelfActingprvOptional pressure reducing valve

Contents

NameDescription
MediumSte
MediumWat

Revisions

  • May 8, 2024, by Michael Wetter:
    Removed connection to itself.
  • September 15, 2023, by Kathryn Hinkelman:
    Added publication references.
  • March 28, 2022, by Kathryn Hinkelman:
    Removed massDynamics.
    This is for issue 1542.
  • March 2, 2022, by Kathryn Hinkelman:
    First implementation.