LBL logo

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.flowApproximationAtOrigin flowApproximationAtOrigin Approximation for fan or pump pressure raise at origin
Buildings.Fluid.Movers.BaseClasses.Characteristics.power power Flow vs. electrical power characteristics for fan or pump
Buildings.Fluid.Movers.BaseClasses.Characteristics.pressure pressure Flow vs. head characteristics for fan or pump pressure raise
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_N Relative revolution, r_N=N/N_nominal [1]
Realdelta Small value for switching implementation around zero rpm

Outputs

TypeNameDescription
EfficiencyetaEfficiency [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 Modelica.SIunits.Efficiency eta "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.flowApproximationAtOrigin Buildings.Fluid.Movers.BaseClasses.Characteristics.flowApproximationAtOrigin

Approximation for fan or pump pressure raise at origin

Information

This function computes the fan static pressure raise as a function of volume flow rate and revolution near the origin. It is used to avoid a singularity in the pump or fan curve if the revolution approaches 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]
VolumeFlowRateVDelta_flow Small volume flow rate [m3/s]
PressureDifferencedpDelta Small pressure [Pa]
Realdelta Small value used to transition to other fan curve
RealcBar[2] Coefficients for linear approximation of pressure vs. flow rate

Outputs

TypeNameDescription
PressureDifferencedpPressure raise [Pa]

Modelica definition

function flowApproximationAtOrigin "Approximation for fan or pump pressure raise at origin" 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 Modelica.SIunits.VolumeFlowRate VDelta_flow "Small volume flow rate"; input Modelica.SIunits.PressureDifference dpDelta(displayUnit="Pa") "Small pressure"; input Real delta "Small value used to transition to other fan curve"; input Real cBar[2] "Coefficients for linear approximation of pressure vs. flow rate"; output Modelica.SIunits.PressureDifference dp "Pressure raise"; algorithm // see equation 20 in Buildings/Resources/Images/Fluid/Movers/UsersGuide/2013-IBPSA-Wetter.pdf // this equation satisfies the constraints detailed in the paper // the first term is added for having a faster convergence // the last term in the paper is absent here because it can be found in // Buildings.Fluid.Movers.BaseClasses.Characteristics.pressure dp := r_N * dpDelta + r_N^2 * (cBar[1] + cBar[2]*V_flow); end flowApproximationAtOrigin;

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 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

Flow vs. head characteristics for fan or pump pressure raise

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) - Δpr ,

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. The term

Δpr = V̇   Δpmax ⁄ V̇max   δ

where δ > 0 is a pressure that is small compared to pressure raise of the fan at the nominal conditions, models the flow resistance of the fan, approximated using a linear equation. This is done for numerical reasons to avoid a singularity at rN=0. Since δ is small, the contribution of this term is small. The fan and pump models in Buildings.Fluid.Movers modify the user-supplied performance data to add the term Δpr prior to computing the performance curve. Thus, at full speed, the fan or pump can operate exactly at the user-supplied performance data.

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.

For rN < δ, the polynomial is replaced with an other model to avoid a singularity at the origin. The composite model is once continuously differentiable in all input variables.

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

Inputs

TypeNameDefaultDescription
flowParametersInternalper Pressure performance data
VolumeFlowRateV_flow Volumetric flow rate [m3/s]
Realr_N Relative revolution, r_N=N/N_nominal [1]
VolumeFlowRateVDelta_flow Small volume flow rate [m3/s]
PressureDifferencedpDelta Small pressure [Pa]
VolumeFlowRateV_flow_max Maximum volume flow rate at r_N=1 and dp=0 [m3/s]
PressureDifferencedpMax Maximum pressure at r_N=1 and V_flow=0 [Pa]
Reald[:] Derivatives at support points for spline interpolation
Realdelta Small value used to transition to other fan curve
RealcBar[2] Coefficients for linear approximation of pressure vs. flow rate
RealkRes Linear coefficient for fan-internal pressure drop [kg/(s.m4)]

Outputs

TypeNameDescription
PressureDifferencedpPressure raise [Pa]

Modelica definition

function pressure "Flow vs. head characteristics for fan or pump pressure raise" extends Modelica.Icons.Function; input Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal 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 Modelica.SIunits.VolumeFlowRate VDelta_flow "Small volume flow rate"; input Modelica.SIunits.PressureDifference dpDelta(displayUnit="Pa") "Small pressure"; input Modelica.SIunits.VolumeFlowRate V_flow_max "Maximum volume flow rate at r_N=1 and dp=0"; input Modelica.SIunits.PressureDifference dpMax(min=0, displayUnit="Pa") "Maximum pressure at r_N=1 and V_flow=0"; input Real d[:] "Derivatives at support points for spline interpolation"; input Real delta "Small value used to transition to other fan curve"; input Real cBar[2] "Coefficients for linear approximation of pressure vs. flow rate"; input Real kRes(unit="kg/(s.m4)") "Linear coefficient for fan-internal pressure drop"; output Modelica.SIunits.PressureDifference dp(displayUnit="Pa") "Pressure raise"; protected Integer dimD(min=2)=size(per.V_flow, 1) "Dimension of data vector"; function performanceCurve "Performance curve away from the origin" 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[dimD] "Coefficients for polynomial of pressure vs. flow rate"; input Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParametersInternal per "Pressure performance data"; input Integer dimD "Dimension of data vector"; output Modelica.SIunits.PressureDifference dp(displayUnit="Pa") "Pressure raise"; protected Modelica.SIunits.VolumeFlowRate rat "Ratio of V_flow/r_N"; Integer i "Integer to select data interval"; algorithm rat := V_flow/r_N; i :=1; // Since the coefficients for the spline were evaluated for // rat_nominal = V_flow_nominal/r_N_nominal = V_flow_nominal/1, we use // V_flow_nominal below for j in 1:dimD-1 loop if rat > per.V_flow[j] then i := j; end if; end for; // Extrapolate or interpolate the data 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]); end performanceCurve; algorithm if r_N >= delta then dp := performanceCurve(V_flow=V_flow, r_N=r_N, d=d, per=per, dimD=dimD); elseif r_N <= delta/2 then dp := flowApproximationAtOrigin(r_N=r_N, V_flow=V_flow, VDelta_flow= VDelta_flow, dpDelta=dpDelta, delta=delta, cBar=cBar); else dp := Modelica.Fluid.Utilities.regStep(x=r_N-0.75*delta, y1=performanceCurve(V_flow=V_flow, r_N=r_N, d=d, per=per, dimD=dimD), y2=flowApproximationAtOrigin(r_N=r_N, V_flow=V_flow, VDelta_flow=VDelta_flow, dpDelta=dpDelta, delta=delta, cBar=cBar), x_small=delta/4); end if; // linear equation for being able to handle r_N=0, see // Buildings/Resources/Images/Fluid/Movers/UsersGuide/2013-IBPSA-Wetter.pdf dp := dp - V_flow*kRes; 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[:] 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" 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[:] 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.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.Characteristic.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.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[:] 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.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;

http://simulationresearch.lbl.gov/modelica