modelPlugFlowPipe

Pipe model using spatialDistribution for temperature delay

Extends from Buildings.Fluid.FixedResistances.BaseClasses.PlugFlowPipe (Pipe model using spatialDistribution for temperature delay).

Information

Pipe with heat loss using the time delay based heat losses and transport of the fluid using a plug flow model, applicable for simulation of long pipes such as in district heating and cooling systems.

This model takes into account transport delay along the pipe length idealized as a plug flow. The model also includes thermal inertia of the pipe wall.

Implementation

The spatialDistribution operator is used for the temperature wave propagation through the length of the pipe. This operator is contained in Buildings.Fluid.FixedResistances.BaseClasses.PlugFlow.

The model Buildings.Fluid.FixedResistances.BaseClasses.PlugFlowHeatLoss implements a heat loss in design direction, but leaves the enthalpy unchanged in opposite flow direction. Therefore it is used in front of and behind the time delay.

The pressure drop is implemented using Buildings.Fluid.FixedResistances.HydraulicDiameter.

The thermal capacity of the pipe wall is implemented as a mixing volume of the fluid in the pipe, of which the thermal capacity is equal to that of the pipe wall material. In addition, this mixing volume allows the hydraulic separation of subsequent pipes.
The mixing volume is either split between the inlet and outlet ports (port_a and port_b) or lumped in at the outlet (port_b) if have_symmetry is set to false. This mixing volume can be removed from this model with the Boolean parameter have_pipCap, in cases where the pipe wall heat capacity is negligible and a state is not needed at the pipe outlet (see the note below about numerical Jacobians).

Note that in order to model a branched network it is recommended to use Buildings.Fluid.FixedResistances.Junction at each junction and to configure that junction model with a state (energyDynamics <> Modelica.Fluid.Types.Dynamics.SteadyState), see for instance Buildings.Fluid.FixedResistances.Validation.PlugFlowPipes.PlugFlowAIT. This will avoid the numerical Jacobian that is otherwise created when the inlet ports of two instances of the plug flow model are connected together.

Assumptions

  • Heat losses are for steady-state operation.
  • The axial heat diffusion in the fluid, the pipe wall and the ground are neglected.
  • The boundary temperature is uniform.
  • The thermal inertia of the pipe wall material is lumped on the side of the pipe that is connected to port_b.

References

Full details on the model implementation and experimental validation can be found in:

van der Heijde, B., Fuchs, M., Ribas Tugores, C., Schweiger, G., Sartor, K., Basciotti, D., Müller, D., Nytsch-Geusen, C., Wetter, M. and Helsen, L. (2017).
Dynamic equation-based thermo-hydraulic pipe model for district heating and cooling systems.
Energy Conversion and Management, vol. 151, p. 158-169. doi: 10.1016/j.enconman.2017.08.072.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PlugFlowPipe)true= true, use homotopy method
RealReC (from PlugFlowPipe)4000Reynolds number where transition to turbulence starts
Realfac (from PlugFlowPipe)1Factor to take into account flow resistance of bends etc., fac=dp_nominal/dpStraightPipe_nominal
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.Velocityv_nominal (from PlugFlowPipe)1.5Velocity at m_flow_nominal (used to compute default value for hydraulic diameter dh)
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Booleanfrom_dp (from PlugFlowPipe)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn (from PlugFlowPipe)2Flow exponent, n=1 for laminar, n=2 for turbulent
Booleanhave_pipCap (from PlugFlowPipe)true= true, a mixing volume is added that corresponds to the heat capacity of the pipe wall
Booleanhave_symmetry (from PlugFlowPipe)true= false, the mixing volume is only on port_b, which improve performances, but reduces dynamic accuracy.
Booleanlinearized (from PlugFlowPipe)false= true, use linear relation between m_flow and dp for any flow rate
BooleandisableComputeFlowResistancefalse=false to disable computation of flow resistance
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Material
Modelica.Units.SI.Lengthdh (from PlugFlowPipe)sqrt(4*m_flow_nominal/rho_default/v_nominal/Modelica.Constants.pi)Hydraulic diameter (assuming a round cross section area)
Modelica.Units.SI.Heightroughness (from PlugFlowPipe)2.5e-5Average height of surface asperities (default: smooth steel pipe)
Modelica.Units.SI.Lengthlength (from PlugFlowPipe)Pipe length
Modelica.Units.SI.SpecificHeatCapacitycPip (from PlugFlowPipe)2300Specific heat of pipe wall material. 2300 for PE, 500 for steel
Modelica.Units.SI.DensityrhoPip (from PlugFlowPipe)930Density of pipe wall material. 930 for PE, 8000 for steel
Modelica.Units.SI.Lengththickness (from PlugFlowPipe)0.0035Pipe wall thickness
Thermal resistance
Modelica.Units.SI.LengthdIns (from PlugFlowPipe)Thickness of pipe insulation, used to compute R
Modelica.Units.SI.ThermalConductivitykIns (from PlugFlowPipe)Heat conductivity of pipe insulation, used to compute R
RealR (from PlugFlowPipe)1/(kIns*2*Modelica.Constants.pi/Modelica.Math.log((dh/2 + thickness + dIns)/(dh/2 + thickness)))Thermal resistance per unit length from fluid to boundary temperature
Initialization
Modelica.Units.SI.TemperatureT_start_in (from PlugFlowPipe)Medium.T_defaultInitialization temperature at pipe inlet
Modelica.Units.SI.TemperatureT_start_out (from PlugFlowPipe)T_start_inInitialization temperature at pipe outlet
BooleaninitDelay (from PlugFlowPipe)falseInitialize delay for a constant mass flow rate if true, otherwise start from 0
Modelica.Units.SI.MassFlowRatem_flow_start (from PlugFlowPipe)0Initial value of mass flow rate through pipe

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPort (from PlugFlowPipe)Heat transfer to or from surroundings (positive if pipe is colder than surrounding)

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
Modelica.Units.SI.HeatFlowRateQEnv_flow (from PlugFlowPipe)heatPort.Q_flowHeat transfer to or from surroundings (positive if pipe is colder than surrounding)
Modelica.Units.SI.Velocityv (from PlugFlowPipe)del.vFlow velocity of medium in pipe
Buildings.Fluid.FixedResistances.HydraulicDiameterres (from PlugFlowPipe)

Revisions