This package contains models that can be used for fans and pumps.
The models with names FlowMachine_* are similar to the pump models in the package Modelica.Fluid.Machines. However, the models in this package differ primarily in the following points:
port_b
.
medium.d
. Therefore, for fans, head would be converted to pressure using the density of air. However, for fans, manufacturers typically publish the head in millimeters water (mmH20). Therefore, to avoid confusion when using these models with media other than water, they have been changed to use total pressure in Pascals instead of head in meters.
For a detailed description of the models with names FlowMachine_*
,
see their base class
Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine.
Name | Description |
---|---|
FlowMachine_dp | Pump or fan with ideally controlled pressure difference |
FlowMachine_m_flow | Pump or fan with ideally controlled mass flow rate |
FlowMachine_Nrpm | Centrifugal pump with ideally controlled speed |
FlowMachine_y | Pump or fan with ideally controlled normalized speed |
FlowMachinePolynomial | Pump or fan with head and efficiency declared by a non-dimensional polynomial |
Examples | Collection of models that illustrate model use and test models |
BaseClasses | Base classes used in the Machines package (only of interest to build new component models) |
This model describes a centrifugal pump (or a group of nParallel pumps)
with prescribed pressure difference across the ports, either fixed or provided by an external signal.
The model is identical to
Modelica:Modelica.Fluid.Machines.ControlledPump
but it defines parameters for easier configuration, and input is the pressure
port_b
.
Extends from Buildings.Fluid.Movers.BaseClasses.FlowMachine (Fan or pump with ideally controlled mass flow rate or pressure difference).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
AbsolutePressure | p_a_nominal | system.p_start | Nominal inlet pressure for predefined fan or pump characteristics [Pa] |
AbsolutePressure | dp_set_nominal | 1000 | Nominal total pressure difference, fixed if not control_m_flow and not use_dp_set [Pa] |
MassFlowRate | m_flow_nominal | Nominal mass flow rate, fixed if control_m_flow and not use_m_flow_set [kg/s] | |
Boolean | control_m_flow | false | = false to control outlet pressure port_b.p instead of m_flow |
Boolean | use_m_flow_set | false | = true to use input signal m_flow_set instead of m_flow_nominal |
Boolean | use_dp_set | true | = true to use input signal dp_set instead of dp_set_nominal |
Characteristics | |||
Integer | nParallel | 1 | Number of fans or pumps in parallel |
replaceable function flowCharacteristic | Characteristics.quadraticFlo... | Total pressure vs. V_flow characteristic at nominal speed | |
AngularVelocity_rpm | N_nominal | 1500 | Nominal rotational speed for flow characteristic [1/min] |
Density | rho_nominal | Medium.density_pTX(Medium.p_... | Nominal fluid density [kg/m3] |
Boolean | use_powerCharacteristic | false | Use powerCharacteristic (vs. efficiencyCharacteristic) |
replaceable function powerCharacteristic | Characteristics.quadraticPow... | Power consumption vs. V_flow at nominal speed and density | |
replaceable function efficiencyCharacteristic | Characteristics.constantEffi... | Efficiency vs. V_flow at nominal speed and density | |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Boolean | checkValve | false | = true to prevent reverse flow |
Volume | V | 0 | Volume inside the pump [m3] |
Dynamics | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance |
Dynamics | massDynamics | energyDynamics | Formulation of mass balance |
Heat transfer | |||
Boolean | use_HeatTransfer | false | = true to use a HeatTransfer model, e.g. for a housing |
replaceable model HeatTransfer | IdealHeatTransfer | Wall heat transfer | |
Initialization | |||
AbsolutePressure | p_a_start | system.p_start | Guess value for inlet pressure [Pa] |
AbsolutePressure | p_b_start | p_a_start | Guess value for outlet pressure [Pa] |
MassFlowRate | m_flow_start | 1 | Guess value of m_flow = port_a.m_flow [kg/s] |
Boolean | use_T_start | true | = true, use T_start, otherwise h_start |
Temperature | T_start | if use_T_start then system.T... | Start value of temperature [K] |
SpecificEnthalpy | h_start | if use_T_start then Medium.s... | Start value of specific enthalpy [J/kg] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
Advanced | |||
Diagnostics | |||
Boolean | show_NPSHa | false | = true to compute Net Positive Suction Head available |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
HeatPort_a | heatPort | |
input RealInput | m_flow_set | Prescribed mass flow rate |
input RealInput | dp_set | Prescribed outlet pressure |
model FlowMachine_dp "Pump or fan with ideally controlled pressure difference" extends Buildings.Fluid.Movers.BaseClasses.FlowMachine( final control_m_flow = false, final use_dp_set=true, final use_m_flow_set=false);end FlowMachine_dp;
This model describes a centrifugal pump (or a group of nParallel pumps) with prescribed mass flow rate, either fixed or provided by an external signal. The model is identical to Modelica.Fluid.Machines.ControlledPump but it defines parameters for easier configuration.
Extends from Buildings.Fluid.Movers.BaseClasses.FlowMachine (Fan or pump with ideally controlled mass flow rate or pressure difference).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
AbsolutePressure | p_a_nominal | system.p_start | Nominal inlet pressure for predefined fan or pump characteristics [Pa] |
AbsolutePressure | dp_set_nominal | 1000 | Nominal total pressure difference, fixed if not control_m_flow and not use_dp_set [Pa] |
MassFlowRate | m_flow_nominal | Nominal mass flow rate, fixed if control_m_flow and not use_m_flow_set [kg/s] | |
Boolean | control_m_flow | true | = false to control outlet pressure port_b.p instead of m_flow |
Boolean | use_m_flow_set | true | = true to use input signal m_flow_set instead of m_flow_nominal |
Boolean | use_dp_set | false | = true to use input signal dp_set instead of dp_set_nominal |
Characteristics | |||
Integer | nParallel | 1 | Number of fans or pumps in parallel |
replaceable function flowCharacteristic | Characteristics.quadraticFlo... | Total pressure vs. V_flow characteristic at nominal speed | |
AngularVelocity_rpm | N_nominal | 1500 | Nominal rotational speed for flow characteristic [1/min] |
Density | rho_nominal | Medium.density_pTX(Medium.p_... | Nominal fluid density [kg/m3] |
Boolean | use_powerCharacteristic | false | Use powerCharacteristic (vs. efficiencyCharacteristic) |
replaceable function powerCharacteristic | Characteristics.quadraticPow... | Power consumption vs. V_flow at nominal speed and density | |
replaceable function efficiencyCharacteristic | Characteristics.constantEffi... | Efficiency vs. V_flow at nominal speed and density | |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Boolean | checkValve | false | = true to prevent reverse flow |
Volume | V | 0 | Volume inside the pump [m3] |
Dynamics | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance |
Dynamics | massDynamics | energyDynamics | Formulation of mass balance |
Heat transfer | |||
Boolean | use_HeatTransfer | false | = true to use a HeatTransfer model, e.g. for a housing |
replaceable model HeatTransfer | IdealHeatTransfer | Wall heat transfer | |
Initialization | |||
AbsolutePressure | p_a_start | system.p_start | Guess value for inlet pressure [Pa] |
AbsolutePressure | p_b_start | p_a_start | Guess value for outlet pressure [Pa] |
MassFlowRate | m_flow_start | 1 | Guess value of m_flow = port_a.m_flow [kg/s] |
Boolean | use_T_start | true | = true, use T_start, otherwise h_start |
Temperature | T_start | if use_T_start then system.T... | Start value of temperature [K] |
SpecificEnthalpy | h_start | if use_T_start then Medium.s... | Start value of specific enthalpy [J/kg] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
Advanced | |||
Diagnostics | |||
Boolean | show_NPSHa | false | = true to compute Net Positive Suction Head available |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
HeatPort_a | heatPort | |
input RealInput | m_flow_set | Prescribed mass flow rate |
input RealInput | dp_set | Prescribed outlet pressure |
model FlowMachine_m_flow "Pump or fan with ideally controlled mass flow rate" extends Buildings.Fluid.Movers.BaseClasses.FlowMachine( final control_m_flow=true, final use_m_flow_set=true, final use_dp_set=false);end FlowMachine_m_flow;
This model describes a centrifugal pump (or a group of nParallel pumps) with prescribed speed, either fixed or provided by an external signal.
The model extends PartialPump
If the N_in input connector is wired, it provides rotational speed of the pumps (rpm); otherwise, a constant rotational speed equal to N_const (which can be different from N_nominal) is assumed.
Extends from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine (Base model for fans or pumps).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Boolean | use_N_in | true | Get the rotational speed from the input connector |
AngularVelocity_rpm | N_const | N_nominal | Constant rotational speed [1/min] |
Characteristics | |||
Integer | nParallel | 1 | Number of fans or pumps in parallel |
replaceable function flowCharacteristic | Characteristics.baseFlow | Total pressure vs. V_flow characteristic at nominal speed | |
AngularVelocity_rpm | N_nominal | 1500 | Nominal rotational speed for flow characteristic [1/min] |
Density | rho_nominal | Medium.density_pTX(Medium.p_... | Nominal fluid density [kg/m3] |
Boolean | use_powerCharacteristic | false | Use powerCharacteristic (vs. efficiencyCharacteristic) |
replaceable function powerCharacteristic | Characteristics.quadraticPow... | Power consumption vs. V_flow at nominal speed and density | |
replaceable function efficiencyCharacteristic | Characteristics.constantEffi... | Efficiency vs. V_flow at nominal speed and density | |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Boolean | checkValve | false | = true to prevent reverse flow |
Volume | V | 0 | Volume inside the pump [m3] |
Dynamics | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance |
Dynamics | massDynamics | energyDynamics | Formulation of mass balance |
Heat transfer | |||
Boolean | use_HeatTransfer | false | = true to use a HeatTransfer model, e.g. for a housing |
replaceable model HeatTransfer | IdealHeatTransfer | Wall heat transfer | |
Initialization | |||
AbsolutePressure | p_a_start | system.p_start | Guess value for inlet pressure [Pa] |
AbsolutePressure | p_b_start | p_a_start | Guess value for outlet pressure [Pa] |
MassFlowRate | m_flow_start | 1 | Guess value of m_flow = port_a.m_flow [kg/s] |
Boolean | use_T_start | true | = true, use T_start, otherwise h_start |
Temperature | T_start | if use_T_start then system.T... | Start value of temperature [K] |
SpecificEnthalpy | h_start | if use_T_start then Medium.s... | Start value of specific enthalpy [J/kg] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
Advanced | |||
Diagnostics | |||
Boolean | show_NPSHa | false | = true to compute Net Positive Suction Head available |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
HeatPort_a | heatPort | |
input RealInput | N_in | Prescribed rotational speed [1/min] |
model FlowMachine_Nrpm "Centrifugal pump with ideally controlled speed" extends Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine; parameter Boolean use_N_in = true "Get the rotational speed from the input connector"; parameter Modelica.SIunits.Conversions.NonSIunits.AngularVelocity_rpm N_const = N_nominal "Constant rotational speed";Modelica.Blocks.Interfaces.RealInput N_in(unit="1/min") if use_N_in "Prescribed rotational speed"; protected Modelica.Blocks.Interfaces.RealInput N_in_internal(unit="1/min") "Needed to connect to conditional connector"; equation // Connect statement active only if use_p_in = true connect(N_in, N_in_internal); // Internal connector value when use_p_in = false if not use_N_in then N_in_internal = N_const; end if; // Set N with a lower limit to avoid singularities at zero speed N = max(N_in_internal,1e-3) "Rotational speed"; end FlowMachine_Nrpm;
This model describes a centrifugal pump (or a group of nParallel pumps) with prescribed speed, either fixed or provided by an external signal.
If the y_in input connector is wired, it provides the normalized rotational speed of the pumps (between 0 and 1); otherwise, a constant rotational speed equal to y_const is assumed.
Extends from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine (Base model for fans or pumps).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Boolean | use_y_in | true | Get the rotational speed from the input connector |
Real | y_const | 1 | Constant normalized rotational speed |
Characteristics | |||
Integer | nParallel | 1 | Number of fans or pumps in parallel |
replaceable function flowCharacteristic | Buildings.Fluid.Movers.BaseC... | Total pressure vs. V_flow characteristic at nominal speed | |
AngularVelocity_rpm | N_nominal | 1500 | Nominal rotational speed for flow characteristic [1/min] |
Density | rho_nominal | Medium.density_pTX(Medium.p_... | Nominal fluid density [kg/m3] |
Boolean | use_powerCharacteristic | false | Use powerCharacteristic (vs. efficiencyCharacteristic) |
replaceable function powerCharacteristic | Characteristics.quadraticPow... | Power consumption vs. V_flow at nominal speed and density | |
replaceable function efficiencyCharacteristic | Characteristics.constantEffi... | Efficiency vs. V_flow at nominal speed and density | |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Boolean | checkValve | false | = true to prevent reverse flow |
Volume | V | 0 | Volume inside the pump [m3] |
Dynamics | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance |
Dynamics | massDynamics | energyDynamics | Formulation of mass balance |
Heat transfer | |||
Boolean | use_HeatTransfer | false | = true to use a HeatTransfer model, e.g. for a housing |
replaceable model HeatTransfer | IdealHeatTransfer | Wall heat transfer | |
Initialization | |||
AbsolutePressure | p_a_start | system.p_start | Guess value for inlet pressure [Pa] |
AbsolutePressure | p_b_start | p_a_start | Guess value for outlet pressure [Pa] |
MassFlowRate | m_flow_start | 1 | Guess value of m_flow = port_a.m_flow [kg/s] |
Boolean | use_T_start | true | = true, use T_start, otherwise h_start |
Temperature | T_start | if use_T_start then system.T... | Start value of temperature [K] |
SpecificEnthalpy | h_start | if use_T_start then Medium.s... | Start value of specific enthalpy [J/kg] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
Advanced | |||
Diagnostics | |||
Boolean | show_NPSHa | false | = true to compute Net Positive Suction Head available |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
HeatPort_a | heatPort | |
input RealInput | y_in | Constant normalized rotational speed |
Characteristics | ||
replaceable function flowCharacteristic | Total pressure vs. V_flow characteristic at nominal speed |
model FlowMachine_y "Pump or fan with ideally controlled normalized speed" extends Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine( final N_nominal=1500 "fix N_nominal as it is used only for scaling", redeclare replaceable function flowCharacteristic = Buildings.Fluid.Movers.BaseClasses.Characteristics.baseFlow); parameter Boolean use_y_in = true "Get the rotational speed from the input connector"; parameter Real y_const(min=0, max=1) = 1 "Constant normalized rotational speed";Modelica.Blocks.Interfaces.RealInput y_in(min=0, max=1) if use_y_in "Constant normalized rotational speed"; protected Modelica.Blocks.Interfaces.RealInput y_in_internal(min=0, max=1) "Needed to connect to conditional connector"; equation // Connect statement active only if use_y_in = true connect(y_in, y_in_internal); // Internal connector value when use_p_in = false if not use_y_in then y_in_internal = y_const; end if; // Set N with a lower limit to avoid singularities at zero speed N = max(y_in_internal*N_nominal,1e-3) "Rotational speed"; end FlowMachine_y;
This is a model of a flow machine (pump or fan).
The normalized pressure difference is computed using a function of the normalized mass flow rate. The function is a polynomial for which a user needs to supply the coefficients and two values that determine for what flow rate the polynomial is linearly extended.
Note: This model is here for compatibility with older versions of this library. For new models, use instead Buildings.Fluid.Movers.FlowMachine_y.
Extends from Buildings.Fluid.Interfaces.PartialStaticTwoPortInterface (Partial model transporting fluid between two ports without storing mass or energy).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Length | D | Diameter [m] | |
Real | a[:] | Polynomial coefficients for pressure=p(mNor_flow) | |
Real | b[:] | Polynomial coefficients for etaSha=p(mNor_flow) | |
Real | mNorMin_flow | Lowest valid normalized mass flow rate | |
Real | mNorMax_flow | Highest valid normalized mass flow rate | |
Real | scaM_flow | 1 | Factor used to scale the mass flow rate of the fan (used for quickly adjusting fan size) |
Real | scaDp | 1 | Factor used to scale the pressure increase of the fan (used for quickly adjusting fan size) |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
Initialization | |||
MassFlowRate | m_flow.start | 0 | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) [kg/s] |
Pressure | dp.start | 0 | Pressure difference between port_a and port_b [Pa] |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*m_flow_nominal | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_V_flow | false | = true, if volume flow rate at inflowing port is computed |
Initialization | |||
AbsolutePressure | p_a_start | system.p_start | Guess value for inlet pressure [Pa] |
AbsolutePressure | p_b_start | p_a_start | Guess value for outlet pressure [Pa] |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | N_in | Prescribed rotational speed |
model FlowMachinePolynomial "Pump or fan with head and efficiency declared by a non-dimensional polynomial" extends Buildings.Fluid.Interfaces.PartialStaticTwoPortInterface;Modelica.Blocks.Interfaces.RealInput N_in "Prescribed rotational speed"; parameter Modelica.SIunits.Length D "Diameter"; parameter Real[:] a "Polynomial coefficients for pressure=p(mNor_flow)"; parameter Real[:] b "Polynomial coefficients for etaSha=p(mNor_flow)"; parameter Real mNorMin_flow "Lowest valid normalized mass flow rate"; parameter Real mNorMax_flow "Highest valid normalized mass flow rate"; parameter Real scaM_flow = 1 "Factor used to scale the mass flow rate of the fan (used for quickly adjusting fan size)"; parameter Real scaDp = 1 "Factor used to scale the pressure increase of the fan (used for quickly adjusting fan size)"; Real pNor(min=0) "Normalized pressure"; Real mNor_flow(start=mNorMax_flow) "Normalized mass flow rate"; Real etaSha(min=0, max=1) "Efficiency, flow work divided by shaft power"; Modelica.SIunits.Power PSha "Power input at shaft"; Medium.Density den "Medium density"; protected parameter Real pNorMin1(fixed=false) "Normalized pressure, used to test slope of polynomial outside [xMin, xMax]"; parameter Real pNorMin2(fixed=false) "Normalized pressure, used to test slope of polynomial outside [xMin, xMax]"; parameter Real pNorMax1(fixed=false) "Normalized pressure, used to test slope of polynomial outside [xMin, xMax]"; parameter Real pNorMax2(fixed=false) "Normalized pressure, used to test slope of polynomial outside [xMin, xMax]"; initial equation // check slope of polynomial outside the domain [mNorMin_flow, mNorMax_flow] pNorMin1 = Buildings.Fluid.Utilities.extendedPolynomial( c=a, x=mNorMin_flow/2, xMin=mNorMin_flow, xMax=mNorMax_flow); pNorMin2 = Buildings.Fluid.Utilities.extendedPolynomial( c=a, x=mNorMin_flow, xMin=mNorMin_flow, xMax=mNorMax_flow); pNorMax1 = Buildings.Fluid.Utilities.extendedPolynomial( c=a, x=mNorMax_flow, xMin=mNorMin_flow, xMax=mNorMax_flow); pNorMax2 = Buildings.Fluid.Utilities.extendedPolynomial( c=a, x=mNorMax_flow*2, xMin=mNorMin_flow, xMax=mNorMax_flow); assert(pNorMin1>pNorMin2, "Slope of pump pressure polynomial is non-negative for mNor_flow < mNorMin_flow. Check parameter a."); assert(pNorMax1>pNorMax2, "Slope of pump pressure polynomial is non-negative for mNorMax_flow < mNor_flow. Check parameter a."); equation den = Medium.density(sta_a); -dp = scaDp * pNor * den * D*D * N_in * N_in; m_flow = scaM_flow * mNor_flow * den * D*D*D * N_in; pNor = Buildings.Fluid.Utilities.extendedPolynomial( c=a, x=mNor_flow, xMin=mNorMin_flow, xMax=mNorMax_flow); etaSha = max(0.1, Buildings.Fluid.Utilities.polynomial( c=b, x=mNor_flow)); etaSha * PSha = -dp * m_flow / den; // dp<0 and m_flow>0 for normal operation // Energy balance (no storage, no heat loss/gain) PSha = -m_flow*(port_a.h_outflow-inStream(port_b.h_outflow)); PSha = m_flow*(port_b.h_outflow-inStream(port_a.h_outflow)); // Mass balance (no storage) port_a.m_flow + port_b.m_flow = 0; // Transport of substances port_a.Xi_outflow = inStream(port_b.Xi_outflow); port_b.Xi_outflow = inStream(port_a.Xi_outflow); port_a.C_outflow = inStream(port_b.C_outflow); port_b.C_outflow = inStream(port_a.C_outflow); end FlowMachinePolynomial;