modelStorageTankHex

Extends from BaseClasses.BaseStation.

Information

This is a model for a district heating substation storage tank with an internal heat exchanger. Its main components are the storage tank with internal heat exchanger, a flow regulating valve/pump, an expansion vessel and a controller that maintains the temperature in the selected tank layer by setting the position of the flow regulating valve/pump to open or closed.

A mismatch between the setpoint and the actual value of the secondary supply temperature can have different reasons:

  • The differential pressure at the station is too low, resulting in a too low mass flow at the primary side even if the valve is completely open.
  • The nominal mass flow rate at the primary side is too low, leading to a too low secondary supply temperature even with a fully opend valve.
  • The supply temperature at the primary side is too low, i.e., lower than the tank temperature setpoint, leading to a fully opened valve

Parameters

TypeNameDefaultDescription
Assumptions
BooleanallowFlowReversal1 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Nominal condition
Modelica.SIunits.MassFlowRatem1_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.SIunits.MassFlowRatem2_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Advanced
Medium1.MassFlowRatem1_flow_small (from PartialFourPortInterface)1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow
Medium2.MassFlowRatem2_flow_small (from PartialFourPortInterface)1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
Flow resistance › Primary side
Booleanfrom_dp (from BaseStation)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance (from BaseStation)false= true, use linear relation between m_flow and dp for any flow rate
Primary side
Modelica.SIunits.PowerQ1_flow_nominal (from BaseStation)m1_flow_nominal*(TemSup1_nominal - TemRet1_nominal)*cp_defaultNominal heat flow rate at primary side
Modelica.SIunits.TemperatureTemSup1_nominal (from BaseStation)80.0 + 273.15Nominal supply temperature
Modelica.SIunits.TemperatureTemRet1_nominal (from BaseStation)45.0 + 273.15Nominal return temperature
Modelica.SIunits.PressureDifferencedp1_nominal (from BaseStation)Nominal pressure difference
Secondary side
Modelica.SIunits.PowerQ2_flow_nominal (from BaseStation)m2_flow_nominal*(TemSup2_nominal - TemRet2_nominal)*cp_defaultNominal heat flow rate at primary side
Modelica.SIunits.TemperatureTemSup2_nominal (from BaseStation)60.0 + 273.15Nominal supply temperature
Modelica.SIunits.TemperatureTemRet2_nominal (from BaseStation)35.0 + 273.15Nominal return temperature
BooleanOutsideDependent (from BaseStation)falseOutside temperature dependent secondary supply temperature
Storage tank
Modelica.SIunits.VolumeVTanTank volume
Modelica.SIunits.LengthhTanHeight of tank (without insulation)
Modelica.SIunits.LengthdIns0.2Thickness of insulation
Modelica.SIunits.ThermalConductivitykIns0.04Specific heat conductivity of insulation
IntegernSeg4Number of volume segments
Modelica.SIunits.TemperatureTemRoom20.0 + 273.15Constant temperature surrounding the storage tank
IntegernInitnSegNumber of volume segments initialized with TemSup2_nominal
Modelica.SIunits.PressureDifferencedp_hex_nominal0Nominal pressure difference at the heat exchanger at primary side
Modelica.SIunits.HeighthHex_astorageTankHex.hTan/2Height of portHex_a of the heat exchanger, measured from tank bottom
Modelica.SIunits.HeighthHex_b0Height of portHex_b of the heat exchanger, measured from tank bottom
IntegerhexSegMult2Number of heat exchanger segments in each tank segment
Modelica.SIunits.DiameterdExtHex0.025Exterior diameter of the heat exchanger pipe
Realr_nominal0.5Ratio between coil inside and outside convective heat transfer at nominal heat transfer conditions
Flow controller
Modelica.SIunits.TemperatureT_constTemSup2_nominalConstant temperature setpoint
Modelica.SIunits.TimeTi120Time constant of Integrator block
Realk0.01Gain of controller
IntegernSegMeasure1Volume segment to take temperature from

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialFourPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialFourPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialFourPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialFourPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aport_ht (from BaseStation)Outside temperature port
Modelica.Blocks.Interfaces.RealOutputP (from BaseStation)Electric power

Components

TypeNameDefaultDescription
Medium1.MassFlowRatem1_flow (from PartialFourPortInterface)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.SIunits.PressureDifferencedp1 (from PartialFourPortInterface)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium2.MassFlowRatem2_flow (from PartialFourPortInterface)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.SIunits.PressureDifferencedp2 (from PartialFourPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium1.ThermodynamicStatesta_a1 (from PartialFourPortInterface)Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow)))Medium properties in port_a1
Medium1.ThermodynamicStatesta_b1 (from PartialFourPortInterface)Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow)))Medium properties in port_b1
Medium2.ThermodynamicStatesta_a2 (from PartialFourPortInterface)Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow)))Medium properties in port_a2
Medium2.ThermodynamicStatesta_b2 (from PartialFourPortInterface)Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow)))Medium properties in port_b2
Modelica.Blocks.Sources.RealExpressiontotal_power (from BaseStation)sum of all power consumption/generation in component
Storage.StorageTankHexstorageTankHex
DisHeatLib.Controls.flow_controlstorage_control
DisHeatLib.BaseClasses.FlowUnitflowUnit
Storage.BaseClasses.ThermostatMixerthermostatMixer