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.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
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_Nr_N( unit="1")Relative revolution, r_N=N/N_nominal [1]
Realdelta Small value for switching implementation around zero rpm

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.SIunits.VolumeFlowRate V_flow "Volumetric flow rate"; input Real d[:] "Derivatives at support points for spline interpolation"; input Real r_N(unit="1") "Relative revolution, r_N=N/N_nominal"; input Real delta "Small value for switching implementation around zero rpm"; 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 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); 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.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_Nr_N( unit="1")Relative revolution, r_N=N/N_nominal [1]
Reald[:] Derivatives at support points for spline interpolation
Realdelta Small value for switching implementation around zero rpm

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.SIunits.VolumeFlowRate V_flow "Volumetric flow rate"; input Real r_N(unit="1") "Relative revolution, r_N=N/N_nominal"; input Real d[:] "Derivatives at support points for spline interpolation"; input Real delta "Small value for switching implementation around zero rpm"; output Modelica.SIunits.Power P "Power consumption"; protected Integer n=size(per.V_flow, 1) "Dimension of data vector"; Modelica.SIunits.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_Nr_N( unit="1")Relative revolution, r_N=N/N_nominal [1]
Reald[:] Derivatives of flow rate vs. pressure at the support points
PressureDifferencedpMaxdpMax( ...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.SIunits.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.SIunits.PressureDifference dpMax(displayUnit="Pa") "Maximum pressure drop at nominal speed, for regularisation"; input Modelica.SIunits.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.SIunits.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.SIunits.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

Information

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

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

Parameters

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

Modelica definition

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

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[:]V_flow( ...Volume flow rate at user-selected operating points [m3/s]
PressureDifferencedp[size(V_flow, 1)]dp( each min=0, each disp...Fan or pump total pressure at these flow rates [Pa]

Modelica definition

record flowParameters "Record for flow parameters" extends Modelica.Icons.Record; parameter Modelica.SIunits.VolumeFlowRate V_flow[:](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.SIunits.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]V_flow( ...Volume flow rate at user-selected operating points [m3/s]
PressureDifferencedp[n]dp( each min=0, each disp...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.SIunits.VolumeFlowRate V_flow[n](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.SIunits.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[:]V_flow( ...Volume flow rate at user-selected operating points [m3/s]
PowerP[size(V_flow, 1)]P( ...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.SIunits.VolumeFlowRate V_flow[:](each min=0) "Volume flow rate at user-selected operating points"; parameter Modelica.SIunits.Power P[size(V_flow,1)](each min=0) "Fan or pump electrical power at these flow rates"; end powerParameters;