This is the base model for fans and pumps. It provides an interface between the equations that compute head and power consumption, and the implementation of the energy and pressure balance of the fluid.
Optionally, the fluid volume is computed using a dynamic balance or a steady-state balance.
The parameter addPowerToMedium determines whether
any power is added to the fluid. The default is
addPowerToMedium=true, and hence the outlet enthalpy
is higher than the inlet enthalpy if the flow device is operating.
The setting addPowerToMedium=false is physically
incorrect (since the flow work, the flow friction and the fan heat
do not increase the enthalpy of the medium), but this setting does
in some cases lead to simpler equations and more robust simulation,
in particular if the mass flow is equal to zero.
In the previous implementation, this model extends from
BuildingSystems.Fluid.Interfaces.PartialTwoPortInterface. Now
it copies much of the code instead. This is to resolve a potential
circular parameter binding that occurs when
BuildingSystems.Fluid.Movers.Preconfigured.SpeedControlled_y
extends from BuildingSystems.Fluid.Movers.SpeedControlled_y.
The former uses the nominal flow rate provided by user to construct
the pressure curve, whilst the latter uses the user-provided
pressure curve to determine the nominal flow rate. The new
implementation removes the original declaration of nominal flow
rate from
BuildingSystems.Fluid.Interfaces.PartialTwoPortInterface and
hides it (protected _m_flow_nominal) from the user.
This way, A higher-level model (e.g. BuildingSystems.Fluid.Movers.FlowControlled_dp),
can still provide a default but not the other way around. See
discussions in #1705.
m_flow_nominal as protected
_m_flow_nominal.haveVMax from here to
BuildingSystems.Fluid.Movers.BaseClasses.FlowMachineInterface
and V_flow_max from here to BuildingSystems.Fluid.Movers.Data.Generic.per.peak, per.totalEfficiency,,
per.motorEfficiency_yMotto be also passed down to
eff.per at instantiation.assert() warning when the model has to
make an unreliable guess for efficiency computation using
.EulerNumber.assert() warning when the model has to
override per.etaMotMet.m_flow_nominal.filteredSpeed to
use_inputFilter.min attribute as otherwise numerical noise can
cause the assertion on the limit to fail.VMachine_flow to avoid a warning
in BuildingSystems.Fluid.Movers.Examples.MoverContinuous.Extractor protected so that it can be removed
later with a backwards compatible change.dp
and m_flow when having compressible flow. This is for
#458.dynamicBalance. This is for
#411.showDesignFlowDirection in extends
statement. This is for #349.
Removed assignment of min and max
attributes of the port mass flow rate as this is already done in
the base class. Removed import statement.m_flow_small of instance vol
and made all its parameters final.