modelResistanceVolumeFlowReversal

System demonstrating impact of allowFlowReversal on number/size of non-linear systems

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

Information

This model demonstrates the impact of the allowFlowReversal parameter on the size of nonlinear systems of equations. The user can change the parameter value in the allowFlowReversal block and rerun the simulation. The results are also demonstrated below for nRes.k = 10, which is the number of parallel branches containing one pressure drop element and one mixing volume each.

This model was created to demonstrate the influence of a new implementation of Buildings.Fluid.Interfaces.ConservationEquation. The old implementation used the actualStream() function whereas the new implementation uses the semiLinear() function. This change allows Dymola to exploit knowledge about the min and max attributes of m_flow. When Dymola knows in which way the medium will flow, nonlinear systems can be simplified or completely removed. This is illustrated by the results below. See issue 216 for a discussion.

Note that Dymola 2015FD01 can only reliably solve the last case. For the other two cases the Newton solver of the nonlinear system does not converge.

These results were generated using Dymola 2015FD01 64 bit on Ubuntu 14.04 and with Evaluate=false.

ResistanceVolumeFlowReversal = true

Sizes of nonlinear systems of equations: {6, 11, 56}
Sizes after manipulation of the nonlinear systems: {1, 9, 12}

ResistanceVolumeFlowReversal = false

Old implementation

Sizes of nonlinear systems of equations: {6, 11, 44}
Sizes after manipulation of the nonlinear systems: {1, 9, 11}

New implementation

Sizes of nonlinear systems of equations: {6, 11, 4}
Sizes after manipulation of the nonlinear systems: {1, 9, 1}

Parameters

TypeNameDefaultDescription
Realm_flow_nominal0.1Gain value multiplied with input signal

Components

TypeNameDefaultDescription
Buildings.Fluid.Sources.Boundary_pTbouBoundary for pressure boundary condition
Movers.FlowControlled_m_flowpumpPump model with unidirectional flow
Buildings.Fluid.HeatExchangers.Heater_TheaHeater
Modelica.Blocks.Sources.PulsepulsePulse input
Modelica.Blocks.Math.GaingainGain for m_flow_nominal
Buildings.Fluid.Actuators.Valves.ThreeWayLinearvalThree way valve with constant input
Modelica.Blocks.Sources.ConstantconstConstant valve set point
Modelica.Blocks.Sources.BooleanConstantallowFlowReversalBlock for setting allowFlowReversal in components
Buildings.Fluid.FixedResistances.PressureDropresFluid resistance for splitting flow
Modelica.Blocks.Sources.IntegerConstantnResNumber of parallel branches
Delays.DelayFirstOrdervolMixing volumes for enthalpy circuit
Buildings.Fluid.Sensors.TemperatureTwoPort[nRes.k]senTemTemperature sensor

Contents

NameDescription
Medium

Revisions

  • March 31, 2026, by Michael Wetter:
    Corrected unit propagation error that causes Dymola 2026x to not show certain units.
    See #2100.
  • July 18, 2025, by Hongxiang Fu:
    Added two-port temperature sensors to replace vol[:].T from reference results.
    This is for #4276.
  • September 21, 2017, by Michael Wetter:
    Corrected parameterization to be independent of k.
    This is for Buildings, #825.
  • May 8, 2017, by Michael Wetter:
    Updated heater model.
    This is for Buildings, #763.
  • April 11, 2016 by Michael Wetter:
    Corrected wrong hyperlink in documentation for issue 450.
  • February 22, 2016, by Michael Wetter:
    Removed parameter dynamicBalance for issue 411.
  • April 17, 2015, by Filip Jorissen:
    First implementation.