recordGeneric

Generic data record for movers

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

Information

Record containing parameters for pumps or fans.

Typical use

This record may be used to assign for example fan performance data using declaration such as

  Buildings.Fluid.Movers.SpeedControlled_y fan(
    redeclare package Medium = Medium,
      per(pressure(V_flow={0,m_flow_nominal,2*m_flow_nominal}/1.2,
                   dp={2*dp_nominal,dp_nominal,0}))) "Fan";

This data record can be used with Buildings.Fluid.Movers.SpeedControlled_y, Buildings.Fluid.Movers.FlowControlled_dp, Buildings.Fluid.Movers.FlowControlled_m_flow.

An example that uses manufacturer data can be found in Buildings.Fluid.Movers.Validation.Pump_y_stratos.

Declaration of the peak condition

The variable peak is intentionally declared in a way that each of its element is declared individually. If it was delcared the same way as does peak_internal, Modelica would prevent the modification of its specific elements with the following error message:
Record has a value, and attempt to modify specific elements.
The element modification of e.g. V_flow will be ignored.
The other variable peak_internal uses a function call to compute its default values. By passing them to peak one by one, the model can both have default values and also allow the user to override them easily. See Modelica Specification issue #791.

Parameters

TypeNameDefaultDescription
Modelica.Units.SI.VolumeFlowRateV_flow_maxif havePressureCurve then (pressure.V_flow[end] - (pressure.V_flow[end] - pressure.V_flow[end - 1])/(pressure.dp[end] - pressure.dp[end - 1])*pressure.dp[end]) else 0Volume flow rate on the curve when pressure rise is zero
Modelica.Units.SI.PressureDifferencedpMaxif havePressureCurve then (pressure.dp[1] - (pressure.dp[1] - pressure.dp[2])/(pressure.V_flow[1] - pressure.V_flow[2])*pressure.V_flow[1]) else 0Pressure rise on the curve when flow rate is zero
Buildings.Fluid.Movers.BaseClasses.Euler.peakpeak_internalif etaHydMet == Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber then Buildings.Fluid.Movers.BaseClasses.Euler.getPeak(pressure = pressure, power = power) else Buildings.Fluid.Movers.BaseClasses.Euler.peak(V_flow = V_flow_max/2, dp = dpMax/2, eta = max(efficiency.eta))Internal peak variable
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMotmotorEfficiency_yMot_genericBuildings.Fluid.Movers.BaseClasses.Characteristics.motorEfficiencyCurve(P_nominal = WMot_nominal, eta_max = etaMot_max)Motor efficiency vs. part load ratio
BooleanhaveWMot_nominalWMot_nominal > Modelica.Constants.eps= true, if the rated motor power is provided
BooleanhavePressureCurvesum(pressure.V_flow) > Modelica.Constants.eps and sum(pressure.dp) > Modelica.Constants.eps= true, if default record values are being used
Pressure curve
Buildings.Fluid.Movers.BaseClasses.Characteristics.flowParameterspressureVolume flow rate vs. total pressure rise
Power computation
Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethodetaHydMetif havePressureCurve then Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber else Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.NotProvidedEfficiency computation method for the hydraulic efficiency etaHyd
Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethodetaMotMetif powerOrEfficiencyIsHydraulic and havePressureCurve then Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.GenericCurve else Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.NotProvidedEfficiency computation method for the motor efficiency etaMot
BooleanpowerOrEfficiencyIsHydraulictrue=true if hydraulic power or efficiency is provided, instead of total
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParametersefficiencyTotal or hydraulic efficiency vs. volumetric flow rate
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParametersmotorEfficiencyMotor efficiency vs. volumetric flow rate
Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMotmotorEfficiency_yMotMotor efficiency vs. part load ratio yMot, where yMot = WHyd/WMot_nominal
Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameterspowerPower (either consumed or hydraulic) vs. volumetric flow rate
Buildings.Fluid.Movers.BaseClasses.Euler.peakpeakVolume flow rate, pressure rise, and efficiency (either total or hydraulic) at peak condition
Modelica.Units.SI.PowerWMot_nominalif max(power.P) > Modelica.Constants.eps then if powerOrEfficiencyIsHydraulic then max(power.P)*1.2 else max(power.P) else if havePressureCurve then if powerOrEfficiencyIsHydraulic then V_flow_max/2*dpMax/2/peak.eta*1.2 else V_flow_max/2*dpMax/2/0.7*1.2 else 0Rated motor power
Modelica.Units.SI.EfficiencyetaMot_max0.7Maximum motor efficiency
Motor heat rejection
BooleanmotorCooledByFluidtrueIf true, then motor heat is added to fluid stream
Normalized speeds
Realspeed_nominal1Nominal rotational speed for flow characteristic
RealconstantSpeed1Normalized speed set point, used if inputType = Buildings.Fluid.Types.InputType.Constant
Realspeeds{1}Vector of normalized speed set points, used if inputType = Buildings.Fluid.Types.InputType.Stages

Revisions

  • August 20, 2024, by Hongxiang Fu:
    Now the function Buildings.Fluid.Movers.BaseClasses.Euler.getPeak is not called unless the Euler number method is selected. This is for IBPSA, #1912.
  • April 8, 2024, by Hongxiang Fu:
    Default efficiency methods now depend on whether a pressure curve is available. This is for #3819.
  • March 29, 2023, by Hongxiang Fu:
    Deleted angular speed parameters with the unit rpm. This is for IBPSA, #1704.
  • March 1, 2022, by Hongxiang Fu:
    These are for #2668.
  • February 19, 2016, by Filip Jorissen:
    Refactored model such that SpeedControlled_Nrpm, SpeedControlled_y and FlowControlled are integrated into one record. This is for #417.
  • February 17, 2016, by Michael Wetter:
    Changed parameter N_nominal to speed_rpm_nominal as it is the same quantity as speeds_rmp. This is for #396.
  • January 19, 2016, by Filip Jorissen:
    Added parameter speeds_rpm. This is for #396.
  • February 13, 2015, by Michael Wetter:
    Updated documentation.
  • January 6, 2015, by Michael Wetter:
    Revised record for OpenModelica.
  • November 22, 2014 by Michael Wetter:
    First implementation.