Notebook Setup:¶
Press the 'Restart Kernel and Run All Cells' button to setup the notebook. Do this only once before starting, since this will delete any data that you have entered in the tables below!
Write your name, section, and today's date in the cell below:¶
Name - Section - Date -
1. INTRODUCTION¶
Energy presents in the form of pressure, velocity, and elevation in fluids with no energy exchange due to viscous dissipation, heat transfer, or shaft work (pump or some other device). The relationship among these three forms of energy was first stated by Daniel Bernoulli (1700-1782), based upon the conservation of energy principle. Bernoulli’s theorem pertaining to a flow streamline is based on three assumptions: steady flow, incompressible fluid, and no losses from the fluid friction. The validity of Bernoulli’s equation will be examined in this experiment.
2. PRACTICAL APPLICATION¶
Bernoulli’s theorem provides a mathematical means to understanding the mechanics of fluids. It has many real-world applications, ranging from understanding the aerodynamics of an airplane; calculating wind load on buildings; designing water supply and sewer networks; measuring flow using devices such as weirs, Parshall flumes, and venturimeters; and estimating seepage through soil, etc. Although the expression for Bernoulli’s theorem is simple, the principle involved in the equation plays vital roles in the technological advancements designed to improve the quality of human life.
3. OBJECTIVE¶
The objective of this experiment is to investigate the validity of the Bernoulli equation when it is applied to a steady flow of water through a tapered duct.
4. METHOD¶
In this experiment, the validity of Bernoulli’s equation will be verified with the use of a tapered duct (venturi system) connected with manometers to measure the pressure head and total head at known points along the flow.
5. EQUIPMENT¶
The following equipment is required to complete the demonstration of the Bernoulli equation experiment:
- F1-10 hydraulics bench,
- F1-15 Bernoulli’s apparatus test equipment, and
- A stopwatch for timing the flow measurement.
6. EQUIPMENT DESCRIPTION¶
The Bernoulli test apparatus consists of a tapered duct (venturi), a series of manometers tapped into the venturi to measure the pressure head, and a hypodermic probe that can be traversed along the center of the test section to measure the total head. The test section is a circular duct of varying diameter with a 14° inclined angle on one side and a 21° inclined angle on other side. Series of side hole pressure tappings are provided to connect manometers to the test section (Figure 1).
Figure 1: Armfield F1-15 Bernoulli’s apparatus test equipment
Manometers allow the simultaneous measurement of the pressure heads at all of the six sections along the duct. The dimensions of the test section, the tapping positions, and the test section diameters are shown in Figure 2.2. The test section incorporates two unions, one at either end, to facilitate reversal for convergent or divergent testing. A probe is provided to measure the total pressure head along the test section by positioning it at any section of the duct. This probe may be moved after slackening the gland nut, which should be re-tightened by hand. To prevent damage, the probe should be fully inserted during transport/storage. The pressure tappings are connected to manometers that are mounted on a baseboard. The flow through the test section can be adjusted by the apparatus control valve or the bench control valve [2].
Figure 2: Test sections, manometer positions, and diameters of the duct along the test section
7. THEORY¶
Bernoulli’s theorem assumes that the flow is frictionless, steady, and incompressible. These assumptions are also based on the laws of conservation of mass and energy. Thus, the input mass and energy for a given control volume are equal to the output mass and energy:
These two laws and the definition of work and pressure are the basis for Bernoulli’s theorem and can be expressed as follows for any two points located on the same streamline in the flow:
where:
P: pressure,
g: acceleration due to gravity,
v: fluid velocity, and
z: vertical elevation of the fluid.
In this experiment, since the duct is horizontal, the difference in height can be disregarded, i.e., z_1=z_2
The hydrostatic pressure (P) along the flow is measured by manometers tapped into the duct. The pressure head (h), thus, is calculated as:
Therefore, Bernoulli’s equation for the test section can be written as:
in which \frac{v^2}{2g} is called the velocity head (h_d).
The total head (h_t) may be measured by the traversing hypodermic probe. This probe is inserted into the duct with its end-hole facing the flow so that the flow becomes stagnant locally at this end; thus:
The conservation of energy or the Bernoulli’s equation can be expressed as:
The flow velocity is measured by collecting a volume of the fluid (V) over a time period (t). The flow rate is calculated as:
The velocity of flow at any section of the duct with a cross-sectional area of is determined as:
For an incompressible fluid, conservation of mass through the test section should be also satisfied (Equation 1a), i.e.:
8. EXPERIMENTAL PROCEDURE¶
```python jupyter={"source_hidden": true} %%HTML
<!-- #region -->
- Place the apparatus on the hydraulics bench, and ensure that the outflow tube is positioned above the volumetric tank to facilitate timed volume collections.
- Level the apparatus base by adjusting its feet. (A sprit level is attached to the base for this purpose.) For accurate height measurement from the manometers, the apparatus must be horizontal.
- Install the test section with the **14° tapered section** converging in the flow direction. If the test section needs to be reversed, the total head probe must be retracted before releasing the mounting couplings.
- Connect the apparatus inlet to the bench flow supply, close the bench valve and the apparatus flow control valve, and start the pump. Gradually open the bench valve to fill the test section with water.
- The following steps should be taken to purge air from the pressure tapping points and manometers:
- Close both the bench valve and the apparatus flow control valve.
- Remove the cap from the air valve, connect a small tube from the air valve to the volumetric tank, and open the air bleed screw.
- Open the bench valve and allow flow through the manometers to purge all air from them, then tighten the air bleed screw and partly open the bench valve and the apparatus flow control valve.
- Open the air bleed screw slightly to allow air to enter the top of the manometers (you may need to adjust both valves to achieve this), and re-tighten the screw when the manometer levels reach a convenient height. The maximum flow will be determined by having a maximum (h1) and minimum (h5) manometer readings on the baseboard.
If needed, the manometer levels can be adjusted by using an air pump to pressurize them. This can be accomplished by attaching the hand pump tube to the air bleed valve, opening the screw, and pumping air into the manometers. Close the screw, after pumping, to retain the pressure in the system.
- Take readings of manometers $h_1$ to $h_6$ when the water level in the manometers is steady. The total pressure probe should be retracted from the test section during this reading.
- Measure the total head by traversing the total pressure probe along the test section from $h_1$ to $h_6$.
- Measure the flow rate by a timed volume collection. To do that, close the ball valve and use a stopwatch to measure the time it takes to accumulate a known volume of fluid in the tank, which is read from the sight glass. You should collect fluid for at least **one minute** to minimize timing errors. You may repeat the flow measurement twice to check for repeatability. Be sure that the total pressure probe is retracted from the test section during this measurement.
- Reduce the flow rate to give the head difference of about 50 mm between manometers 1 and 5 ($h_1-h_5$). This is the minimum flow experiment. Measure the pressure head, total head, and flow.
- Repeat the process for one more flow rate, with the ($h_1-h_5$) difference approximately halfway between those obtained for the minimum and maximum flows. This is the average flow experiment.
- Reverse the test section (with the **21° tapered section** converging in the flow direction) in order to observe the effects of a more rapidly converging section. Ensure that the total pressure probe is fully withdrawn from the test section, but not pulled out of its guide in the downstream coupling. Unscrew the two couplings, remove the test section and reverse it, then re-assemble it by tightening the couplings.
- Perform three sets of flow, and conduct pressure and flow measurements as above.
<!-- #endregion -->
# 9. RESULTS AND CALCULATIONS
## 9.1. RESULTS
Enter the test results into the Raw Data Tables.
### Position 1: Tapering 14° to 21°
```python jupyter={"source_hidden": true}
from ipydatagrid import DataGrid
import pandas as pd
rd_1_1 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Total Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Volume (Liter)": [0., "-", "-", "-", "-", "-"], \
"Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_1_1 = DataGrid(rd_1_1, \
editable = True, \
layout={"height": "180px"})
raw_data_1_1.auto_fit_columns = True
print("Test #1")
raw_data_1_1
```python jupyter={"source_hidden": true} rd_1_2 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Total Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Volume (Liter)": [0., "-", "-", "-", "-", "-"], \ "Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_1_2 = DataGrid(rd_1_2, \ editable = True, \ layout={"height": "180px"}) raw_data_1_2.auto_fit_columns = True
print("Test #2") raw_data_1_2
```python jupyter={"source_hidden": true}
rd_1_3 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Total Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Volume (Liter)": [0., "-", "-", "-", "-", "-"], \
"Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_1_3 = DataGrid(rd_1_3, \
editable = True, \
layout={"height": "180px"})
raw_data_1_3.auto_fit_columns = True
print("Test #3")
raw_data_1_3
Position 2: Tapering 21° to 14°¶
```python jupyter={"source_hidden": true} rd_2_1 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Total Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Volume (Liter)": [0., "-", "-", "-", "-", "-"], \ "Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_2_1 = DataGrid(rd_2_1, \ editable = True, \ layout={"height": "180px"}) raw_data_2_1.auto_fit_columns = True
print("Test #1") raw_data_2_1
```python jupyter={"source_hidden": true}
rd_2_2 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Total Head (mm)": [0.,0.,0.,0.,0.,0.], \
"Volume (Liter)": [0., "-", "-", "-", "-", "-"], \
"Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_2_2 = DataGrid(rd_2_2, \
editable = True, \
layout={"height": "180px"})
raw_data_2_2.auto_fit_columns = True
print("Test #2")
raw_data_2_2
```python jupyter={"source_hidden": true} rd_2_3 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Pressure Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Total Head (mm)": [0.,0.,0.,0.,0.,0.], \ "Volume (Liter)": [0., "-", "-", "-", "-", "-"], \ "Time (sec)": [0., "-", "-", "-", "-", "-"]})
raw_data_2_3 = DataGrid(rd_2_3, \ editable = True, \ layout={"height": "180px"}) raw_data_2_3.auto_fit_columns = True
print("Test #3") raw_data_2_3
## 9.2 CALCULATIONS
For each set of measurements, calculate the flow rate; flow velocity, velocity head, and total head, (pressure head + velocity head). Record your calculations in the Result Table.
### Position 1: Tapering 14° to 21°
```python jupyter={"source_hidden": true}
r_1_1 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \
"Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \
"Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \
"Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \
"Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \
"Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \
"Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \
"Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_1_1 = DataGrid(r_1_1, \
editable = True, \
layout={"height": "180px"})
results_1_1.auto_fit_columns = True
print("Test #1 \n(results_1_1)")
results_1_1
```python jupyter={"source_hidden": true} r_1_2 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \ "Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \ "Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \ "Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \ "Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \ "Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \ "Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \ "Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_1_2 = DataGrid(r_1_2, \ editable = True, \ layout={"height": "180px"}) results_1_2.auto_fit_columns = True
print("Test #1 \n(results_1_2)") results_1_2
```python jupyter={"source_hidden": true}
r_1_3 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \
"Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \
"Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \
"Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \
"Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \
"Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \
"Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \
"Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_1_3 = DataGrid(r_1_3, \
editable = True, \
layout={"height": "180px"})
results_1_3.auto_fit_columns = True
print("Test #1 \n(results_1_3)")
results_1_3
Position 2: Tapering 21° to 14°¶
```python jupyter={"source_hidden": true} r_2_1 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \ "Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \ "Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \ "Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \ "Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \ "Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \ "Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \ "Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_2_1 = DataGrid(r_2_1, \ editable = True, \ layout={"height": "180px"}) results_2_1.auto_fit_columns = True
print("Test #1 \n(results_2_1)") results_2_1
```python jupyter={"source_hidden": true}
r_2_2 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \
"Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \
"Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \
"Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \
"Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \
"Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \
"Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \
"Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \
"Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_2_2 = DataGrid(r_2_2, \
editable = True, \
layout={"height": "180px"})
results_2_2.auto_fit_columns = True
print("Test #1 \n(results_2_2)")
results_2_2
```python jupyter={"source_hidden": true} r_2_3 = pd.DataFrame({"Test Section": r"h_1 h_2 h_3 h_4 h_5 h_6".split(), \ "Distance Into Duct (m)": [0.,0.06028,0.06868,0.07318,0.08108,0.14154], \ "Flow Area (m^2)": [0.00049,0.00015,0.00011,0.00009,0.000079,0.00049], \ "Flow Rate (m^3/s)": [0., 0., 0., 0., 0., 0.], \ "Velocity (m/s)": [0., 0., 0., 0., 0., 0.], \ "Pressure Head (m)": [0., 0., 0., 0., 0., 0.], \ "Velocity Head (m)": [0., 0., 0., 0., 0., 0.], \ "Calculated Total Head (m)": [0., 0., 0., 0., 0., 0.], \ "Measured Total Head (m)": [0., 0., 0., 0., 0., 0.]})
results_2_3 = DataGrid(r_2_3, \ editable = True, \ layout={"height": "180px"}) results_2_3.auto_fit_columns = True
print("Test #1 \n(results_2_3)") results_2_3
# 10. REPORT
Prepare your lab report for this experiment directly in this Jupyter notebook, using the cells below. Your report should include the following:
- Table(s) of raw data
- Table(s) of results
- For each test, plot the total head (calculated and measured), pressure head, and velocity head (y-axis) vs. distance into duct (x-axis) from manometer 1 to 6, a total of six graphs. Connect the data points to observe the trend in each graph. Note that the flow direction in duct Position 1 is from manometer 1 to 6; in Position 2, it is from manometer 6 to 1. Be sure to label your axes and include units on your plots.
- Comment on the validity of Bernoulli’s equation when the flow converges and diverges along the duct.
- Comment on the comparison of the calculated and measured total heads in this experiment.
- Discuss your results, referring, in particular, to the following:
- energy loss and how it is shown by the results of this experiment, and
- the components of Bernoulli’s equation ($\frac{P}{\rho g}$, $\frac{v^2}{2g}$, $z$) and how they vary along the length of the test section. Indicate the points of maximum velocity and minimum pressure.
```python
## Please run this cell after filling out the tables above to produce convenient copies of tables for your report
print("Raw Data 1-1:\n", rd_1_1, "\n")
print("Raw Data 1-2:\n", rd_1_2, "\n")
print("Raw Data 1-3:\n", rd_1_3, "\n")
print("Raw Data 2-1:\n", rd_2_1, "\n")
print("Raw Data 2-2:\n", rd_2_2, "\n")
print("Raw Data 2-3:\n", rd_2_3, "\n")
print("Results 1-1:\n", r_1_1, "\n")
print("Results 1-2:\n", r_1_2, "\n")
print("Results 1-3:\n", r_1_3, "\n")
print("Results 2-1:\n", r_2_1, "\n")
print("Results 2-2:\n", r_2_2, "\n")
print("Results 2-3:\n", r_2_3, "\n")
10.1 Helpful Hints¶
Plotting¶
## You will create your plots in the notebook using the cells below
## Below is sample code for creating a basic plot using Matplotlib
## See more examples and documentation at https://matplotlib.org/stable/users/index.html
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
c = 0.5 + 0.5*np.cos(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s, label = 'sin')
ax.plot(t, c, label = 'cos')
ax.set(xlabel='time (s)', ylabel='voltage (mV)',
title='Sample plot for demonstration')
ax.legend()
ax.grid()
#fig.savefig("test.png") #This allows you to save the plot to a file
plt.show()
Accessing Data from Tables¶
# In order to avoid re-typing the data you entered above,
# you can access the data you entered into the tables above as follows:
# Select the cells you want to read
# The name of the data object is listed in parentheses just above the table above
results_1_1.clear_selection()
results_1_1.select(row1=0, column1=1, row2=5, column2=1)
# row1 refers to the top of the selection (indexing starts from 0, so the first row is 0, second row is 1, etc.)
# column1 refers to the left of the selection
# row2 refers to the bottom of the selection
# column2 refers to the right of the selection
# executing the above command selects
# Now store the values of the selected cells with a convenient variable name
# It is often useful to store data as numpy arrays to make calculations easy
distances = np.array(results_1_1.selected_cell_values)
# You can confirm that you copied the correct values by printing the values
print("Distances (m):", distances)
results_1_1.clear_selection()
# To get the Flow area from the third test in position 2:
results_2_3.clear_selection()
results_2_3.select(row1=0, column1=2, row2=5, column2=2)
flow_areas = np.array(results_2_3.selected_cell_values)
print(r"Flow Areas (m^2):", flow_areas)
results_2_3.clear_selection()
10.2 Results Plots¶
## Position 1, Test 1
## Your plotting code here ##
## Position 1, Test 2
## Your plotting code here ##
## Position 1, Test 3
## Your plotting code here ##
## Position 2, Test 1
## Your plotting code here ##
## Position 2, Test 2
## Your plotting code here ##
## Position 2, Test 3
## Your plotting code here ##
- Comment on the validity of Bernoulli’s equation when the flow converges and diverges along the duct. (Type your comments in the cell below.)
Type your comments here¶
- Comment on the comparison of the calculated and measured total heads in this experiment.
Type your comments here¶
- Discuss your results, referring, in particular, to the following:
- energy loss and how it is shown by the results of this experiment, and
- the components of Bernoulli’s equation (\frac{P}{\rho g}, \frac{v^2}{2g}, z) and how they vary along the length of the test section. Indicate the points of maximum velocity and minimum pressure.
Type your comments here¶
A. Acknowledgments¶
This notebook was developed from:
Applied Fluid Mechanics Lab Manual Copyright © 2019 by Habib Ahmari and Shah Md Imran Kabir is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.