modelFlowMachineInterface

Partial model with performance curves for fans or pumps

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Information

This is an interface that implements the functions to compute the head, power draw and efficiency of fans and pumps.

The nominal hydraulic characteristic (volume flow rate versus total pressure) 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 fan or pump energy balance can be specified in two alternative ways:

  • If per.use_powerCharacteristic = false, then the data points for normalized volume flow rate versus efficiency is used to determine the efficiency, and then the power consumption. The default is a constant efficiency of 0.7.
  • If per.use_powerCharacteristic = true, then the data points for normalized volume flow rate versus power consumption is used to determine the power consumption, and then the efficiency is computed based on the actual power consumption and the flow work.

For exceptions to this general rule, check the User's Guide for more information.

Implementation

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.

Parameters

TypeNameDefaultDescription
IBPSA.Fluid.Movers.Data.GenericperRecord with performance data
IBPSA.Fluid.Movers.BaseClasses.Types.PrescribedVariablepreVarIBPSA.Fluid.Movers.BaseClasses.Types.PrescribedVariable.SpeedType of prescribed variable
BooleancomputePowerUsingSimilarityLaws= true, compute power exactly, using similarity laws. Otherwise approximate.
Modelica.SIunits.VolumeFlowRateV_flow_nominalper.pressure.V_flow[nOri]Nominal volume flow rate, used for homotopy
Modelica.SIunits.Densityrho_defaultFluid density at medium default state
BooleanhaveVMaxFlag, true if user specified data that contain V_flow_max
Modelica.SIunits.VolumeFlowRateV_flow_maxMaximum volume flow rate, used for smoothing
IntegernOriNumber of data points for pressure curve
Advanced
BooleanhomotopyInitializationtrue= true, use homotopy method

Connectors

TypeNameDefaultDescription
Modelica.Blocks.Interfaces.RealInputy_inPrescribed mover speed
Modelica.Blocks.Interfaces.RealOutputy_outMover speed (prescribed or computed)
Modelica.Blocks.Interfaces.RealInputm_flowMass flow rate
Modelica.Blocks.Interfaces.RealInputrhoMedium density
Modelica.Blocks.Interfaces.RealOutputV_flowVolume flow rate
Modelica.Blocks.Interfaces.RealInputdp_inPrescribed pressure increase
Modelica.Blocks.Interfaces.RealOutputdpPressure increase (computed or prescribed)
Modelica.Blocks.Interfaces.RealOutputWFloFlow work
Modelica.Blocks.Interfaces.RealOutputPEleElectrical power consumed
Modelica.Blocks.Interfaces.RealOutputetaOverall efficiency
Modelica.Blocks.Interfaces.RealOutputetaHydHydraulic efficiency
Modelica.Blocks.Interfaces.RealOutputetaMotMotor efficiency
Modelica.Blocks.Interfaces.RealOutputr_NRatio N_actual/N_nominal

Components

TypeNameDefaultDescription
Realr_VRatio V_flow/V_flow_max

Contents

NameDescription
getPerformanceDataAsStringprotected
getArrayAsStringprotected

Revisions

  • December 2, 2016, by Michael Wetter:
    Removed min attribute as otherwise numerical noise can cause the assertion on the limit to fail.
    This is for #606.
  • February 19, 2016, by Michael Wetter and Filip Jorissen:
    Refactored model to make implementation clearer. This is for #417.
  • January 22, 2016, by Michael Wetter:
    Corrected type declaration of pressure difference and reformatted code. This is for #404.
  • September 2, 2015, by Michael Wetter:
    Corrected computation of 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.
  • January 6, 2015, by Michael Wetter:
    Revised model for OpenModelica.
  • November 22, 2014, by Michael Wetter:
    Removed in N_actual and N_filtered the max attribute to avoid a translation warning.
  • April 21, 2014, by Filip Jorissen and Michael Wetter:
    Changed model to use IBPSA.Fluid.Movers.Data.Generic. April 19, 2014, by Filip Jorissen:
    Passed extra parameters to power() and efficiency() to be able to properly evaluate the scaling law. See #202 for a discussion and validation.
  • September 27, 2013, by Michael Wetter:
    Reformulated 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.
  • September 17, 2013, by Michael Wetter:
    Added missing each keyword in declaration of parameters that are an array.
  • March 20, 2013, by Michael Wetter:
    Removed assignment in declaration of pCur?.V_flow as these parameters have the attribute fixed=false set.
  • October 11, 2012, by Michael Wetter:
    Added implementation of 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.
  • February 20, 2012, by Michael Wetter:
    Assigned value to nominal attribute of V_flow.
  • February 14, 2012, by Michael Wetter:
    Added filter for start-up and shut-down transient.
  • October 4 2011, by Michael Wetter:
    Revised the implementation of the pressure drop computation as a function of speed and volume flow rate. The new implementation avoids a singularity near zero volume flow rate and zero speed.
  • March 28 2011, by Michael Wetter:
    Added homotopy operator.
  • March 23 2010, by Michael Wetter:
    First implementation.