recordGeneric
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 other variable
The element modification of e.g. V_flow will be ignored.
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
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.VolumeFlowRate | V_flow_max | if 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 0 | Volume flow rate on the curve when pressure rise is zero |
| Modelica.Units.SI.PressureDifference | dpMax | if havePressureCurve then (pressure.dp[1] - (pressure.dp[1] - pressure.dp[2])/(pressure.V_flow[1] - pressure.V_flow[2])*pressure.V_flow[1]) else 0 | Pressure rise on the curve when flow rate is zero |
| Buildings.Fluid.Movers.BaseClasses.Euler.peak | peak_internal | if 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_yMot | motorEfficiency_yMot_generic | Buildings.Fluid.Movers.BaseClasses.Characteristics.motorEfficiencyCurve(P_nominal = WMot_nominal, eta_max = etaMot_max) | Motor efficiency vs. part load ratio |
| Boolean | haveWMot_nominal | WMot_nominal > Modelica.Constants.eps | = true, if the rated motor power is provided |
| Boolean | havePressureCurve | sum(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.flowParameters | pressure | Volume flow rate vs. total pressure rise | |
| Power computation | |||
| Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod | etaHydMet | if havePressureCurve then Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber else Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.NotProvided | Efficiency computation method for the hydraulic efficiency etaHyd |
| Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod | etaMotMet | if powerOrEfficiencyIsHydraulic and havePressureCurve then Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.GenericCurve else Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.NotProvided | Efficiency computation method for the motor efficiency etaMot |
| Boolean | powerOrEfficiencyIsHydraulic | true | =true if hydraulic power or efficiency is provided, instead of total |
| Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters | efficiency | Total or hydraulic efficiency vs. volumetric flow rate | |
| Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters | motorEfficiency | Motor efficiency vs. volumetric flow rate | |
| Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot | motorEfficiency_yMot | Motor efficiency vs. part load ratio yMot, where yMot = WHyd/WMot_nominal | |
| Buildings.Fluid.Movers.BaseClasses.Characteristics.powerParameters | power | Power (either consumed or hydraulic) vs. volumetric flow rate | |
| Buildings.Fluid.Movers.BaseClasses.Euler.peak | peak | Volume flow rate, pressure rise, and efficiency (either total or hydraulic) at peak condition | |
| Modelica.Units.SI.Power | WMot_nominal | if 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 0 | Rated motor power |
| Modelica.Units.SI.Efficiency | etaMot_max | 0.7 | Maximum motor efficiency |
| Motor heat rejection | |||
| Boolean | motorCooledByFluid | true | If true, then motor heat is added to fluid stream |
| Normalized speeds | |||
| Real | speed_nominal | 1 | Nominal rotational speed for flow characteristic |
| Real | constantSpeed | 1 | Normalized speed set point, used if inputType = Buildings.Fluid.Types.InputType.Constant |
| Real | speeds | {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:
- Modified the record to allow separate specifications of different efficiency variables.
- Added parameters for computation using Euler number.
- Added parameters for providing the motor efficiency as an array vs. motor part load ratio.
-
Moved the computation of
V_flow_maxhere from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine anddpMaxhere from Buildings.Fluid.Movers.BaseClasses.FlowMachineInterface
-
February 19, 2016, by Filip Jorissen:
Refactored model such thatSpeedControlled_Nrpm,SpeedControlled_yandFlowControlledare integrated into one record. This is for #417. -
February 17, 2016, by Michael Wetter:
Changed parameterN_nominaltospeed_rpm_nominalas it is the same quantity asspeeds_rmp. This is for #396. -
January 19, 2016, by Filip Jorissen:
Added parameterspeeds_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.