Buildings.Fluid.Movers.BaseClasses.Characteristics

Functions for fan or pump characteristics

Information

This package implements performance curves for fans and pumps, and records for parameter that can be used with these performance curves.

See the User's Guide for information about these performance curves.

Package Content

Name Description
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency efficiency Flow vs. efficiency characteristics for fan or pump
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency_yMot efficiency_yMot Efficiency vs. motor PLR characteristics for fan or pump
Buildings.Fluid.Movers.BaseClasses.Characteristics.motorEfficiencyCurve motorEfficiencyCurve This function generates the generic curve for motor efficiency based on rated motor power
Buildings.Fluid.Movers.BaseClasses.Characteristics.power power Flow vs. electrical power characteristics for fan or pump
Buildings.Fluid.Movers.BaseClasses.Characteristics.pressure pressure Pump or fan head away from the origin without correction for mover flow resistance
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters efficiencyParameters Record for efficiency parameters vs. volumetric flow rate
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot efficiencyParameters_yMot Record for efficiency parameters vs. motor part load ratio
Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters flowParameters Record for flow parameters
Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal flowParametersInternal Record for flow parameters with prescribed size
Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameters powerParameters Record for electrical power parameters

Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency

Flow vs. efficiency characteristics for fan or pump

Information

This function computes the fan or pump efficiency for given normalized volume flow rate and performance data. The efficiency is

η = s(V̇/rN, d),

where η is the efficiency, rN is the normalized fan speed, is the volume flow rate, and d are performance data for fan or pump efficiency.

Implementation

The function s(·, ·) is a cubic hermite spline. If the data d define a monotone decreasing sequence, then s(·, d) is a monotone decreasing function.

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

TypeNameDefaultDescription
efficiencyParametersper Efficiency performance data
VolumeFlowRateV_flow Volumetric flow rate [m3/s]
Reald[:] Derivatives at support points for spline interpolation
Realr_N Relative speed [1]
Realdelta Small value for switching implementation around zero speed

Outputs

TypeNameDescription
RealetaEfficiency [1]

Modelica definition

function efficiency "Flow vs. efficiency characteristics for fan or pump" extends Modelica.Icons.Function; input Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters per "Efficiency performance data"; input Modelica.Units.SI.VolumeFlowRate V_flow "Volumetric flow rate"; input Real d[:] "Derivatives at support points for spline interpolation"; input Real r_N(unit="1") "Relative speed"; input Real delta "Small value for switching implementation around zero speed"; output Real eta(unit="1", final quantity="Efficiency") "Efficiency"; protected Integer n = size(per.V_flow, 1) "Number of data points"; Real rat "Ratio of V_flow/r_N"; Integer i "Integer to select data interval"; algorithm if n == 1 then eta := per.eta[1]; else // The use of the max function avoids problems with low speeds // and turned-off pumps rat:=V_flow/ Buildings.Utilities.Math.Functions.smoothMax( x1=r_N, x2=0.1, deltaX=delta); i :=1; for j in 1:n-1 loop if rat > per.V_flow[j] then i := j; end if; end for; // Extrapolate or interpolate the data eta:=Buildings.Utilities.Math.Functions.cubicHermiteLinearExtrapolation( x=rat, x1=per.V_flow[i], x2=per.V_flow[i + 1], y1=per.eta[i], y2=per.eta[i + 1], y1d=d[i], y2d=d[i+1]); end if; end efficiency;

Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency_yMot Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency_yMot

Efficiency vs. motor PLR characteristics for fan or pump

Information

This function is similar to Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiency, but takes the motor part load ratio y=Pele ⁄ Pele,nominal instead of volumetric flow rate as input and does not consider the speed of the mover.

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

TypeNameDefaultDescription
efficiencyParameters_yMotper Efficiency performance data
Realy Motor part load ratio, y = PEle/PEle_nominal
Reald[:] Derivatives at support points for spline interpolation

Outputs

TypeNameDescription
RealetaEfficiency [1]

Modelica definition

function efficiency_yMot "Efficiency vs. motor PLR characteristics for fan or pump" extends Modelica.Icons.Function; input Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot per "Efficiency performance data"; input Real y "Motor part load ratio, y = PEle/PEle_nominal"; input Real d[:] "Derivatives at support points for spline interpolation"; output Real eta(unit="1", final quantity="Efficiency") "Efficiency"; protected Integer n = size(per.y, 1) "Number of data points"; Integer i "Integer to select data interval"; algorithm if n == 1 then eta := per.eta[1]; else i :=1; for j in 1:n-1 loop if y > per.y[j] then i := j; end if; end for; // Extrapolate or interpolate the data eta:=Buildings.Utilities.Math.Functions.cubicHermiteLinearExtrapolation( x=y, x1=per.y[i], x2=per.y[i + 1], y1=per.eta[i], y2=per.eta[i + 1], y1d=d[i], y2d=d[i+1]); end if; end efficiency_yMot;

Buildings.Fluid.Movers.BaseClasses.Characteristics.motorEfficiencyCurve Buildings.Fluid.Movers.BaseClasses.Characteristics.motorEfficiencyCurve

This function generates the generic curve for motor efficiency based on rated motor power

Information

This function generates a generic motor efficiency curve based on the rated motor power input and maximum motor efficiency according to U.S. DOE (2014) (shown below). It returns a constant array if the rated power is unavailable.

image

References

U.S. DOE (2014). Determining Electric Motor Load and Efficiency. URL: https://www.energy.gov/sites/prod/files/2014/04/f15/10097517.pdf

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

TypeNameDefaultDescription
PowerP_nominal Rated input power of the motor [W]
Efficiencyeta_max Maximum motor efficiency [1]

Outputs

TypeNameDescription
efficiencyParameters_yMotmotorEfficiency_yMotMotor efficiency vs. motor part load ratio

Modelica definition

function motorEfficiencyCurve "This function generates the generic curve for motor efficiency based on rated motor power" extends Modelica.Icons.Function; input Modelica.Units.SI.Power P_nominal "Rated input power of the motor"; input Modelica.Units.SI.Efficiency eta_max "Maximum motor efficiency"; // Below, default values are assigned so that that dimensions are known. output Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot motorEfficiency_yMot( y={0, 0.1, 0.2, 0.3, 0.4, 0.6, 0.8, 1, 1.2}, eta=zeros(nPoi)) "Motor efficiency vs. motor part load ratio"; protected constant Modelica.Units.SI.Power u2[nSiz]={700, 2500, 7500, 15000, 35000, 70000, 80000, 90000} "Rated motor input power"; constant Integer nSiz=8 "Number of motor sizes"; constant Integer nPoi=9 "Size"; // Two rows and two columns of 1 are added to the ends of the table in order to // prevent the lookup table from producing values larger than 1. constant Real[nPoi, nSiz] tab= [ 1E-6, 1E-6, 1E-6, 1E-6, 1E-6, 1E-6, 1E-6, 1E-6; 0.319836509737628, 0.329886760993909, 0.458027464511497, 0.576112127457564, 0.643957112752703, 0.724359122802955, 1, 1; 0.551721742352314, 0.613279531297038, 0.752726767477942, 0.843179028784475, 0.903480536322164, 0.962525762452817, 1, 1; 0.716480140443274, 0.804199438688888, 0.886622050343885, 0.936873306625292, 0.956973809137855, 0.987124562906699, 1, 1; 0.816999745270129, 0.922527383461084, 0.950165574415858, 0.980316328184702, 1, 1, 1, 1; 0.906409929833499, 1, 1, 1, 1, 1, 1, 1; 0.956863812148299, 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1, 1] "Generic motor efficiency table (eta / eta_max)"; algorithm if P_nominal>1E-6 then for j in 1:nPoi loop motorEfficiency_yMot.eta[j]:=eta_max * Buildings.Utilities.Math.Functions.smoothInterpolation( x=P_nominal, xSup=u2, ySup=tab[j, :], ensureMonotonicity=true); end for; else motorEfficiency_yMot.eta := 0.7*ones(nPoi); end if; end motorEfficiencyCurve;

Buildings.Fluid.Movers.BaseClasses.Characteristics.power Buildings.Fluid.Movers.BaseClasses.Characteristics.power

Flow vs. electrical power characteristics for fan or pump

Information

This function computes the fan power consumption for given volume flow rate, speed and performance data. The power consumption is

P = rN3   s(V̇/rN, d),

where P is the power consumption, rN is the normalized fan speed, is the volume flow rate and d are performance data for fan or pump power consumption at rN=1.

Implementation

The function s(·, ·) is a cubic hermite spline. If the data d define a monotone decreasing sequence, then s(·, d) is a monotone decreasing function.

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

TypeNameDefaultDescription
powerParametersper Pressure performance data
VolumeFlowRateV_flow Volumetric flow rate [m3/s]
Realr_N Relative speed [1]
Reald[:] Derivatives at support points for spline interpolation
Realdelta Small value for switching implementation around zero speed

Outputs

TypeNameDescription
PowerPPower consumption [W]

Modelica definition

function power "Flow vs. electrical power characteristics for fan or pump" extends Modelica.Icons.Function; input Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameters per "Pressure performance data"; input Modelica.Units.SI.VolumeFlowRate V_flow "Volumetric flow rate"; input Real r_N(unit="1") "Relative speed"; input Real d[:] "Derivatives at support points for spline interpolation"; input Real delta "Small value for switching implementation around zero speed"; output Modelica.Units.SI.Power P "Power consumption"; protected Integer n=size(per.V_flow, 1) "Dimension of data vector"; Modelica.Units.SI.VolumeFlowRate rat "Ratio of V_flow/r_N"; Integer i "Integer to select data interval"; algorithm if n == 1 then P := r_N^3*per.P[1]; else i :=1; // The use of the max function to avoids problems for low speeds // and turned off pumps rat:=V_flow/ Buildings.Utilities.Math.Functions.smoothMax( x1=r_N, x2=0.1, deltaX=delta); for j in 1:n-1 loop if rat > per.V_flow[j] then i := j; end if; end for; // Extrapolate or interpolate the data P:=r_N^3*Buildings.Utilities.Math.Functions.cubicHermiteLinearExtrapolation( x=rat, x1=per.V_flow[i], x2=per.V_flow[i + 1], y1=per.P[i], y2=per.P[i + 1], y1d=d[i], y2d=d[i+1]); end if; end power;

Buildings.Fluid.Movers.BaseClasses.Characteristics.pressure Buildings.Fluid.Movers.BaseClasses.Characteristics.pressure

Pump or fan head away from the origin without correction for mover flow resistance

Information

This function computes the fan static pressure raise as a function of volume flow rate and revolution in the form

Δp = rN2   s(V̇/rN, d),

where Δp is the pressure rise, rN is the normalized fan speed, is the volume flow rate and d are performance data for fan or pump power consumption at rN=1.

Implementation

The function s(·, ·) is a cubic hermite spline. If the data d define a monotone decreasing sequence, then s(·, d) is a monotone decreasing function.

The function allows rN to be zero.

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

TypeNameDefaultDescription
VolumeFlowRateV_flow Volumetric flow rate [m3/s]
Realr_N Relative revolution, r_N=N/N_nominal [1]
Reald[:] Derivatives of flow rate vs. pressure at the support points
PressureDifferencedpMax Maximum pressure drop at nominal speed, for regularisation [Pa]
VolumeFlowRateV_flow_max Maximum flow rate at nominal speed, for regularisation [m3/s]
flowParametersInternalper Pressure performance data

Outputs

TypeNameDescription
PressureDifferencedpPressure raise [Pa]

Modelica definition

function pressure "Pump or fan head away from the origin without correction for mover flow resistance" extends Modelica.Icons.Function; input Modelica.Units.SI.VolumeFlowRate V_flow "Volumetric flow rate"; input Real r_N(unit="1") "Relative revolution, r_N=N/N_nominal"; input Real d[:] "Derivatives of flow rate vs. pressure at the support points"; input Modelica.Units.SI.PressureDifference dpMax(displayUnit="Pa") "Maximum pressure drop at nominal speed, for regularisation"; input Modelica.Units.SI.VolumeFlowRate V_flow_max "Maximum flow rate at nominal speed, for regularisation"; input Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal per "Pressure performance data"; output Modelica.Units.SI.PressureDifference dp(displayUnit="Pa") "Pressure raise"; protected constant Real delta = 0.05 "Small number for r_N below which we don't care about the affinity laws"; constant Real delta2 = delta/2 "= delta/2"; Real r_R(unit="1") "Relative revolution, bounded below by delta"; Integer i "Integer to select data interval"; Modelica.Units.SI.VolumeFlowRate rat "Ratio of V_flow/r_R"; algorithm // For r_N < delta, we restrict r_N in the term V_flow/r_N. // This is done using a cubic spline in a region 0.75*delta < r_N < 1.25*r_N // We call this restricted value r_R if r_N > delta then r_R :=r_N; elseif r_N < 0 then r_R := delta2; else // Restrict r_N using a spline r_R :=Modelica.Fluid.Utilities.cubicHermite( x=r_N, x1=0, x2=delta, y1=delta2, y2=delta, y1d=0, y2d=1); end if; i :=1; rat := V_flow/r_R; for j in 1:size(d, 1)-1 loop if rat > per.V_flow[j] then i := j; end if; end for; // In the assignment below, // dp -> 0 as r_N -> 0 quadratically, because rat is bounded // by the above regularization if r_N>=0 then dp:=r_N^2*Buildings.Utilities.Math.Functions.cubicHermiteLinearExtrapolation( x=rat, x1=per.V_flow[i], x2=per.V_flow[i + 1], y1=per.dp[i], y2=per.dp[i + 1], y1d=d[i], y2d=d[i+1]); else dp:=-r_N^2*(dpMax-dpMax/V_flow_max*V_flow); end if; end pressure;

Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters

Record for efficiency parameters vs. volumetric flow rate

Information

Data record for performance data that describe efficiency versus volumetric flow rate. The volume flow rate r_V must be increasing, i.e., V_flow[i] < V_flow[i+1]. Both vectors, V_flow and eta must have the same size.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
VolumeFlowRateV_flow[:] Volumetric flow rate at user-selected operating points [m3/s]
Efficiencyeta[size(V_flow, 1)] Fan or pump efficiency at these flow rates [1]

Modelica definition

record efficiencyParameters "Record for efficiency parameters vs. volumetric flow rate" extends Modelica.Icons.Record; parameter Modelica.Units.SI.VolumeFlowRate V_flow[:](each min=0) "Volumetric flow rate at user-selected operating points"; parameter Modelica.Units.SI.Efficiency eta[size(V_flow, 1)](each max=1) "Fan or pump efficiency at these flow rates"; end efficiencyParameters;

Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot

Record for efficiency parameters vs. motor part load ratio

Information

Data record for performance data that describe efficiency versus part load ratio. This is used a method to describe the motor efficiency etaMot. The PLR y must be increasing, i.e., y[i] < y[i+1]. Both vectors, y and eta must have the same size.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
Realy[:] Part load ratio, y = PEle/PEle_nominal
Efficiencyeta[size(y, 1)] Fan or pump efficiency at these part load ratios [1]

Modelica definition

record efficiencyParameters_yMot "Record for efficiency parameters vs. motor part load ratio" extends Modelica.Icons.Record; parameter Real y[:](each min=0) "Part load ratio, y = PEle/PEle_nominal"; parameter Modelica.Units.SI.Efficiency eta[size(y, 1)](each max=1) "Fan or pump efficiency at these part load ratios"; end efficiencyParameters_yMot;

Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters

Record for flow parameters

Information

Data record for performance data that describe volume flow rate versus pressure rise. The volume flow rate V_flow must be increasing, i.e., V_flow[i] < V_flow[i+1]. Both vectors, V_flow and dp must have the same size.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
VolumeFlowRateV_flow[:] Volume flow rate at user-selected operating points [m3/s]
PressureDifferencedp[size(V_flow, 1)] Fan or pump total pressure at these flow rates [Pa]

Modelica definition

record flowParameters "Record for flow parameters" extends Modelica.Icons.Record; parameter Modelica.Units.SI.VolumeFlowRate V_flow[:](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.Units.SI.PressureDifference dp[size(V_flow, 1)](each min=0, each displayUnit="Pa") "Fan or pump total pressure at these flow rates"; end flowParameters;

Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal

Record for flow parameters with prescribed size

Information

Data record for performance data that describe volume flow rate versus pressure rise. The volume flow rate V_flow must be increasing, i.e., V_flow[i] < V_flow[i+1]. Both vectors, V_flow and dp must have the same size.

This record is identical to Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameters, except that it takes the size of the array as a parameter. This is required in Dymola 2014. Otherwise, the array size would need to be computed in Buildings.Fluid.Movers.BaseClasses.FlowMachineInterface in the initial algorithm section, which is not supported.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
Integern Number of elements in each array
VolumeFlowRateV_flow[n] Volume flow rate at user-selected operating points [m3/s]
PressureDifferencedp[n] Fan or pump total pressure at these flow rates [Pa]

Modelica definition

record flowParametersInternal "Record for flow parameters with prescribed size" extends Modelica.Icons.Record; parameter Integer n "Number of elements in each array"; parameter Modelica.Units.SI.VolumeFlowRate V_flow[n](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.Units.SI.PressureDifference dp[n](each min=0, each displayUnit="Pa") "Fan or pump total pressure at these flow rates"; end flowParametersInternal;

Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameters Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameters

Record for electrical power parameters

Information

Data record for performance data that describe volume flow rate versus electrical power. The volume flow rate V_flow must be increasing, i.e., V_flow[i] < V_flow[i+1]. Both vectors, V_flow and P must have the same size.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
VolumeFlowRateV_flow[:] Volume flow rate at user-selected operating points [m3/s]
PowerP[size(V_flow, 1)] Fan or pump electrical power at these flow rates [W]

Modelica definition

record powerParameters "Record for electrical power parameters" extends Modelica.Icons.Record; parameter Modelica.Units.SI.VolumeFlowRate V_flow[:](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.Units.SI.Power P[size(V_flow, 1)](each min=0) "Fan or pump electrical power at these flow rates"; end powerParameters;