BuildingSystems.Fluid.FixedResistances.BaseClasses.PlugFlowPipe

# .BuildingSystems.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 BuildingSystems.Fluid.FixedResistances.BaseClasses.PlugFlow.

The model BuildingSystems.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 BuildingSystems.Fluid.FixedResistances.HydraulicDiameter. This instance is replaceable to allow BuildingSystems.Fluid.FixedResistances.PlugFlowPipeDiscretized to compute the pressure drop only once rather than for each segment.

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 BuildingSystems.Fluid.FixedResistances.Junction at each junction and to configure that junction model with a state (`energyDynamics <> Modelica.Fluid.Types.Dynamics.SteadyState`), see for instance BuildingSystems.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.

## Revisions

- October 15, 2021, by Michael Wetter:
  Moved model to `BaseClasses`. This allows BuildingSystems.Fluid.FixedResistances.PlugFlowPipe to redeclare the resistance as final, thereby avoiding that a GUI presents this instance to users as a replaceable class.
- October 05, 2021, by Baptiste Ravache:
  Made model symmetrical and extends from BuildingSystems.Fluid.Interfaces.PartialTwoPortInterface.
- September 14, 2021, by Michael Wetter:
  Made most instances protected and exposed main variables of interest.
- July 9, 2021, by Baptiste Ravache:
  Replaced the vectorized outlet port `ports_b` with a single outlet port `port_b`.
  Expanded the core pipe model that was previously a component. This is for IBPSA, #1494.
  This change is not backward compatible.
  The previous classes definitions were moved to BuildingSystems.Obsolete.Fluid.FixedResistances.PlugFlowPipe. BuildingSystems.Obsolete.Fluid.FixedResistances.BaseClasses.PlugFlowCore.
- April 14, 2020, by Michael Wetter:
  Changed `homotopyInitialization` to a constant.
  This is for IBPSA, #1341.
- March 6, 2020, by Jelger Jansen:
  Revised calculation of thermal resistance `R` by using correct radiuses. See #1310.
- October 23, 2017, by Michael Wetter:
  Revised variable names and documentation to follow guidelines. Corrected malformed hyperlinks.
- July 4, 2016 by Bram van der Heijde:
  Introduce `pipVol`.
- October 10, 2015 by Marcus Fuchs:
  Copy Icon from KUL implementation and rename model. Replace resistance and temperature delay by an adiabatic pipe.
- September, 2015 by Marcus Fuchs:
  First implementation.

Generated at 2026-05-12T20:19:03Z by OpenModelicaOpenModelica 1.26.7 using GenerateDoc.mos