Description: "Functions for fan or pump characteristics"

- Home > Modelica

## 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
--- | ---
efficiency | Flow vs. efficiency characteristics for fan or pump
flowApproximationAtOrigin | Approximation for fan or pump pressure raise at origin
power | Flow vs. electrical power characteristics for fan or pump
pressure | Flow vs. head characteristics for fan or pump pressure raise
efficiencyParameters | Record for efficiency parameters
flowParameters | Record for flow parameters
flowParametersInternal | Record for flow parameters with prescribed size
powerParameters | Record for electrical power parameters

## 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, V̇ 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

Type | Name | Default | Description
--- | --- | --- | ---
efficiencyParameters | per |  | Efficiency performance data
VolumeFlowRate | V_flow |  | Volumetric flow rate [m3/s]
Real | d[:] |  | Derivatives at support points for spline interpolation
Real | r_N |  | Relative revolution, r_N=N/N_nominal [1]
Real | delta |  | Small value for switching implementation around zero rpm

### Outputs

Type | Name | Description
--- | --- | ---
Real | eta | Efficiency [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(min=0, unit="1") "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

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

Type | Name | Default | Description
--- | --- | --- | ---
VolumeFlowRate | V_flow |  | Volumetric flow rate [m3/s]
Real | r_N |  | Relative revolution, r_N=N/N_nominal [1]
VolumeFlowRate | VDelta_flow |  | Small volume flow rate [m3/s]
Pressure | dpDelta |  | Small pressure [Pa]
Real | delta |  | Small value used to transition to other fan curve
Real | cBar[2] |  | Coefficients for linear approximation of pressure vs. flow rate

### Outputs

Type | Name | Description
--- | --- | ---
Pressure | dp | Pressure 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.Pressure dpDelta "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.Pressure 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

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, V̇ 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

Type | Name | Default | Description
--- | --- | --- | ---
powerParameters | per |  | Pressure performance data
VolumeFlowRate | V_flow |  | Volumetric flow rate [m3/s]
Real | r_N |  | Relative revolution, r_N=N/N_nominal [1]
Real | d[:] |  | Derivatives at support points for spline interpolation
Real | delta |  | Small value for switching implementation around zero rpm

### Outputs

Type | Name | Description
--- | --- | ---
Power | P | Power 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

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, V̇ 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

Type | Name | Default | Description
--- | --- | --- | ---
flowParametersInternal | per |  | Pressure performance data
VolumeFlowRate | V_flow |  | Volumetric flow rate [m3/s]
Real | r_N |  | Relative revolution, r_N=N/N_nominal [1]
VolumeFlowRate | VDelta_flow |  | Small volume flow rate [m3/s]
Pressure | dpDelta |  | Small pressure [Pa]
VolumeFlowRate | V_flow_max |  | Maximum volume flow rate at r_N=1 and dp=0 [m3/s]
Pressure | dpMax |  | Maximum pressure at r_N=1 and V_flow=0 [Pa]
Real | d[:] |  | Derivatives at support points for spline interpolation
Real | delta |  | Small value used to transition to other fan curve
Real | cBar[2] |  | Coefficients for linear approximation of pressure vs. flow rate
Real | kRes |  | Linear coefficient for fan-internal pressure drop [kg/(s.m4)]

### Outputs

Type | Name | Description
--- | --- | ---
Pressure | dp | Pressure 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.Pressure dpDelta "Small pressure"; input Modelica.SIunits.VolumeFlowRate V_flow_max "Maximum volume flow rate at r_N=1 and dp=0"; input Modelica.SIunits.Pressure dpMax(min=0) "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.Pressure dp "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.Pressure dp "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

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

Type | Name | Default | Description
--- | --- | --- | ---
VolumeFlowRate | V_flow[:] |  | Volumetric flow rate at user-selected operating points [m3/s]
Real | eta[size(V_flow, 1)] |  | Fan or pump efficiency at these flow rates

### 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 Real eta[size(V_flow,1)]( each min=0, each max=1, each displayUnit="1") "Fan or pump efficiency at these flow rates"; end efficiencyParameters;

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

Type | Name | Default | Description
--- | --- | --- | ---
VolumeFlowRate | V_flow[:] |  | Volume flow rate at user-selected operating points [m3/s]
Pressure | dp[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.Pressure 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

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

Type | Name | Default | Description
--- | --- | --- | ---
Integer | n |  | Number of elements in each array
VolumeFlowRate | V_flow[n] |  | Volume flow rate at user-selected operating points [m3/s]
Pressure | dp[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.Pressure 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

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

Type | Name | Default | Description
--- | --- | --- | ---
VolumeFlowRate | V_flow[:] |  | Volume flow rate at user-selected operating points [m3/s]
Power | P[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;