Part 3—Pump Example
Part 3—Pump Example
This is part 3 of a 5 part series on modeling a fluid circuit using the Modelica Fluid library. Please go through the previous part, if you have not done it already:
In this post, we will model transport of fluid through an inclined pipe using a pump. Using this model we will understand how to instantiate a pump and understand the impact of pipe inclination on the pump performance.
Model to determine the head vs flow rate characteristics of the pump.
Steps
Steps
◼
Select the pump that you want to model
◼
A pump manufacturer usually provides a pump curve like the following:
◼
◼
Ref: https://www.csidesigns.com/blog/articles/how-to-read-a-pump-curve
◼
Let’s use a pump that has a nominal speed of 1480 RPM. We can get the following information from the pump curve:
◼
power for a given flow rate (right axis)
◼
head for a given flow rate (left axis)
◼
efficiency for a given flow rate (check the iso-efficiency lines)
◼
Create a new model
◼
Drag the following components from the Modelica standard library:
◼
Fluid.Sources.FixedBoundary: 2 num
◼
Fluid.Machines.Pump
◼
Fluid.Pipes.StaticPipe
◼
Fluid.System
◼
Mechanics.Rotational.Sources.ConstantSpeed
◼
Define the parameters of the pump:
◼
Medium (This parameter cannot be left blank)
◼
Select a fluid from the drop-down. Eg: “Extension of the standard water package”
◼
efficiencyCharacteristic
◼
Using this parameter we define the efficiency of the pump
◼
It takes a function as an argument.
◼
Let’s provide a constant efficiency function: Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.constantEfficiency()
◼
You can open the function (type the name in the search field in the Class Browser) and check the inputs
◼
◼
Let’s use a constant efficiency of 80% and define it as follows:
◼
Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.constantEfficiency(eta_nominal = 0.8)
◼
flowCharacteristic
◼
Using this parameter we define the total head vs flow rate curve
◼
It takes a function as an argument. You can select a linear, quadratic or a polynomial function.
◼
Let’s use a quadratic flow function: Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticFlow()
◼
You can open the function (type the name in the search field in the Class Browser) and check the inputs
◼
◼
It takes two lists (arrays) of volume flow rate and pump head
◼
For a nominal speed of 1480 RPM, we get the following values from the curve:
Out[]//MatrixForm=
point | V_flow (m3/h) | head(m) |
1 | 200 | 60 |
2 | 400 | 57 |
3 | 800 | 48 |
◼
After converting from m3/h to m3/s, we get the following
Out[]//MatrixForm=
point | V_flow (m3/s) | head(m) |
1 | 0.0555 | 60 |
2 | 0.1111 | 57 |
3 | 0.2222 | 48 |
◼
Let’s define it as follows:
◼
Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticFlow(V_flow_nominal = {0.0555,0.1111,0.2222}, head_nominal = {60,57,48})
◼
powerCharacteristic
◼
Using this parameter we define the power consumption vs flow rate curve
◼
It takes a function as an argument.
◼
Let’s use the quadratic power characteristic function: Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticPower()
◼
You can open the function (type the name in the search field in the Class Browser) and check the inputs
◼
◼
It takes two lists (arrays) of volume flow rate and power consumption
◼
For a nominal speed of 1480 RPM, we get the following values from the curve:
◼
After converting from m3/h to m3/s and kW to W, we get the following
◼
Let’s define it as follows:
◼
Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticPower(V_flow_nominal = {0.0555,0.1111,0.2222}, W_nominal = {70000, 80000, 120000})
◼
N_nominal
◼
Set it to 1480 rev/min
◼
use_powerCharacteristic
◼
Set it to true
◼
Define the parameters of the pipe:
◼
Medium (This parameter cannot be left blank)
◼
Select a fluid from the drop-down. Eg: “Extension of the standard water package”
◼
length
◼
Total length of the pipe
◼
isCircular
◼
You can chose between circular and non-circular
◼
If isCircular is set to false then crossArea and perimeter parameter have to be defined. Note that it is assumed that the cross-sectional area is constant throughout the length.
◼
diameter
◼
Diameter of the circular pipe
◼
roughness
◼
Roughness of the inner pipe surface
◼
This is a pipe material property, so common materials and their roughness values are listed below:
◼
PVC: 0.0015—0.007 mm
◼
Stainless steel: 0.001—0.006 mm
◼
Ordinary concrete: 0.3-1 mm
◼
Data was taken from this reference: https://www.engineeringtoolbox.com/surface-roughness-ventilation-ducts-d_209.html
◼
height_ab
◼
Let’s say that the pipe is inclined at an angle of 30 degree, so height_ab will be length * sin (30 deg)
◼
Difference in height between the outlet (port_b) and inlet (port_a). Check the arrow direction of the pipe to determine inlet and outlet.
◼
Define the parameters of the ambient:
◼
Medium
◼
Select a fluid from the drop-down. Eg: “Extension of the standard water package”
◼
nPorts
◼
As the ambient is only connected to the pipe, set this value to 1
◼
Define the parameters of the suctionPressure:
◼
Medium
◼
Select a fluid from the drop-down. Eg: “Extension of the standard water package”
◼
nPorts
◼
As the suctionPressure is only connected to the pump, set this value to 1
◼
Define the parameters of the nominalSpeed:
◼
w_fixed
◼
Fixed speed
◼
Initialize the system
◼
Go to initialization tab under system
◼
m_flow_start = 1 kg/s
◼
This would make the model numerically stable
◼
Connect the components:
◼
Provide a simulation time in the Experiment Setup and simulate:
◼
Plot the pump head and volume flow rate
◼
pump head and volume flow rate can be obtained from the following variable: pump.head and pump.V_flow
◼
Compare the pump response for three different values of pipe.height_ab
◼
Duplicate and rerun the experiment 5, 10 and 15 m height_ab
◼
As the pipe is tilted, more work (more head) has to be done by the pump and it also leads to less flow rate.
In this post, we saw how we can use pump curve to initialize a pump component and analyzed the impact of head on the pump performance. In the next post, we will learn about valves and use it to control the flow between two tanks..
Other posts in this series can be found here: