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.