modelPartialMultiplePumps
Extends from Buildings.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).
Information
This base class represents multiple identical pumps that are piped in parallel. An optional check valve in series with each pump is included. This class is used to construct the various multiple-pump models within Buildings.DHC.Plants.Combined.Subsystems.
Details
In a parallel arrangement, all operating units have the same operating point. This allows modeling the multiple pumps with a single instance of any class derived from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine. Hydronics are resolved with mass flow rate multiplier components.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | nPum | Number of pumps | |
| Boolean | have_var | true | Set to true for variable speed pumps, false for constant speed |
| Boolean | have_valve | true | Set to true for inline check valve |
| Fluid.Movers.Data.Generic | per | ||
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start value of mass fractions m_i/m |
| Medium.ExtraProperty[Medium.nC] | C_start (from LumpedVolumeDeclarations) | fill(0, Medium.nC) | Start value of trace substances |
| Medium.ExtraProperty[Medium.nC] | C_nominal (from LumpedVolumeDeclarations) | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Dynamics | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mPum_flow_nominal | Design mass flow rate (each pump) | |
| Modelica.Units.SI.PressureDifference | dpPum_nominal | Design head (each pump) | |
| Modelica.Units.SI.PressureDifference | dpValve_nominal | 10000 | Pressure drop of check valve fully open |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tau | 1 | Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic |
| Dynamics › Motor speed | |||
| Boolean | use_riseTime | true | Set to true to continuously change motor speed |
| Modelica.Units.SI.Time | riseTime | 30 | Time needed to change motor speed between zero and full speed |
| Modelica.Blocks.Types.Init | init | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPum] | y1 | Start signal (VFD Run or motor starter contact) | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | P | Total power (all pumps) | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPum] | y1_actual | Pump status |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow)) | Medium properties in port_b |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulOut | Flow rate multiplier | |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulInl | Flow rate multiplier | |
| Fluid.Movers.SpeedControlled_y | pum | ||
| Buildings.Templates.Components.Controls.MultipleCommands | com | Convert command signal | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToReal | booToRea | Convert to real | |
| Buildings.Controls.OBC.CDL.Reals.Multiply | mul | Compute total power | |
| Buildings.Controls.OBC.CDL.Reals.Multiply | inp | Compute pump input signal | |
| Buildings.Controls.OBC.CDL.Reals.Sources.Constant | cst | Constant setpoint | |
| Buildings.Controls.OBC.CDL.Reals.GreaterThreshold | isOpe | Evaluate if pump is operating | |
| Fluid.FixedResistances.CheckValve | cheVal | Check valve (optional) | |
| Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.PassThroughFluid | pas | Direct fluid pass-through (case without check valve) | |
| Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator | rep | Replicate | |
| Buildings.Controls.OBC.CDL.Logical.Pre[nPum] | preY1 | Left limit of signal avoiding direct feedback of status to controller |
Revisions
-
February 24, 2023, by Antoine Gautier:
First implementation.