This is an interface that implements the functions to compute the head, power draw and efficiency of fans and pumps.
The nominal hydraulic characteristic (total pressure rise versus volume flow rate)
is given by a set of data points
using the data record per
, which is an instance of
IBPSA.Fluid.Movers.Data.Generic.
A cubic hermite spline with linear extrapolation is used to compute
the performance at other operating points.
The model computes the power and efficiency items in the list below.
See IBPSA.Fluid.Movers.UsersGuide for how the user can provide power and efficiency information to the model.
For numerical reasons, the user-provided data points for volume flow rate versus pressure rise are modified to add a fan internal flow resistance. Because this flow resistance is subtracted during the simulation when computing the fan pressure rise, the model reproduces the exact points that were provided by the user.
Also for numerical reasons, the pressure rise at zero flow rate and
the flow rate at zero pressure rise is added to the user-provided data,
unless the user already provides these data points.
Since Modelica 3.2 does not allow dynamic memory allocation, this
implementation required the use of three different arrays for the
situation where no additional point is added, where one additional
point is added and where two additional points are added.
The parameter curve
causes the correct data record
to be used during the simulation.
In order to prevent the model from producing negative mover power when either the flow rate or pressure rise is forced to be negative, the flow work Ẇflo is constrained to be non-negative. The regularisation starts around 0.01% of the characteristic maximum power Ẇmax = V̇max Δpmax. See discussions and an example of this situation in IBPSA, #1621.
etaHyd
and
the motor efficiency etaMot
separately;
eta
or the hydraulic efficiency etaHyd
using the Euler number.
etaMot
as a function of part load ratio y. Also allowed generic
curves to be used.
haveVMax
here from
IBPSA.Fluid.Movers.BaseClasses.PartialFlowMachine.
WHyd
instead of etaHyd
to
IBPSA.Fluid.Movers.BaseClasses.PowerInterface.
WFlo
is bounded to be non-negative.
homotopyInitialization
to a constant.min
attribute as otherwise numerical noise can cause
the assertion on the limit to fail.etaMot = cha.efficiency(per=per.motorEfficiency, V_flow=V_flow, d=motDer, r_N=r_N, delta=1E-4)
which previously used V_flow_max
instead of V_flow
.
N_actual
and N_filtered
the max
attribute to
avoid a translation warning.
per=if (curve == 1) then pCur1 elseif (curve == 2) then pCur2 else pCur3
by moving the computation into the idividual logical branches because OpenModelica generates an
error when assign the statement to data
as pCur1
, pCur2
and pCur3
have different dimensions.
each
keyword in declaration of parameters
that are an array.
pCur?.V_flow
as
these parameters have the attribute fixed=false
set.
WFlo = eta * P
with
guard against division by zero.
Changed implementation of etaMot=sqrt(eta)
to
etaHyd = 1
to avoid infinite derivative as eta
converges to zero.
V_flow
.
homotopy
operator.