+
Pascal’s Law and the Origin of Buoyancy
Developed by Deva O'Neil  Published July 12, 2017
These exercises are intended to supplement a lab or class discussion on fluid pressure / buoyancy in an introductory mechanics course. In the first two exercises, students develop a program that visualizes the variation of pressure with depth in water and in air.
In Exercises 3 and 4, a simulation is developed that features a block submerged in water. The pressure on the block is used to calculate the buoyant force. The net force on the block (neglecting dissipative forces / viscosity) is calculated. The program allows students to simulate the motion of the block as it rises or sinks through the fluid and compare the buoyant force to the weight of the displaced fluid.
Subject Area  Mechanics 

Level  First Year 
Available Implementation  Glowscript 
Learning Objectives 
Students who complete this exercise set will be able to....
* develop physical insight into the variation of pressure with depth by applying Pascal’s law to water (**Exercise 1**) and air (**Exercise 2**).
* determine the pressure difference on a partially submerged block, and identify this difference as the physical origin of buoyancy. The model is evaluated for plausibility by checking limiting cases. (**Exercise 3**)
* apply Newton’s 2nd Law to a submerged block to model its motion under the influence of gravity and buoyancy. (**Exercise 4**)
* observe that the weight of displaced fluid is equal to the buoyant force. (**Exercise 4**)

Time to Complete  120 min 
These exercises are not tied to a specific programming language. Example implementations are provided under the Code tab, but the Exercises can be implemented in whatever platform you wish to use (e.g., Excel, Python, MATLAB, etc.).
# **Exercise 1**
In this exercise, we will write a program to display how fluid pressure varies with depth. Start with the template provided for Exercises 1 and 2, which sets up a scene displaying a blue box (rectangular container) of water with its surface at y = 0.
Run the program. It should show a container of water with atmospheric pressure labeled at the surface. By the time you are finished with these exercises, other points (selected by the user by clicking on the scene) will also display correct pressure.
Define the following physical constants. The first is provided for you in the template, so you can mimic the formatting.
 Physical Constants  Values Suggested Variable Name
   
 $P_0$  $1.01*10^5~Pa$  P0 
$\rho_{water}$  $1000~ kg/m^3$  densityW 
${\rho}_{air}$  $1.20~ kg/m^3$  densityA 
 $g$  $9.81 ~m/s^2$ g
Locate the line of code that labels atmospheric pressure at the surface of the water. Note that the position of the dot ($<0,0,0>$) and the pressure at that point ($P_0$) had to be specified. You'll need to do something similar in the while loop. The while loop creates a new dot every time the user clicks on the scene. Fill in the correct calculation of pressure in the while loop, assuming that the user is going to click in the water region.
__Testing__
Test the program when the user clicks in the water region.
* Does the pressure in the water change in a physically realistic way?
As a plausibility check, use the following (approximate) rule of thumb used in scuba diving: Pressure changes by about one atmosphere for every 10 meters of water depth. # **Exercise 2** * What happens when the user clicks in the air region (above the water)?
* What is implausible about this result?
The density of air is different than water, so the while loop should be modified to test whether the user clicked in the air region. The following two lines of code will change the density to the air density if the value of y is greater than zero: density = densityW if(h < 0): density = densityA Type this into your while loop before you do the pressure calculation.This code assumes you have a variable $h$ that represents the height of the point where the user clicked, and a variable $density$ that represents density in your pressure calculation. Check to make sure that your pressure calculation uses the variable $density,$ not $densityW$. __Testing__ Test the program by clicking in the air or water region. * Are the results in the air region realistic? * Does the pressure in the water still change in the correct way? __Analysis__ * Predict what will happen to the air pressure near the top of the scene if you expand the scale from $L = 20 ~m$ to $L = 200~m$.
* Change L to 200 m. What is the air pressure near the top ($y = 200~ m$)? * In writing this program, what parameters are we assuming to be constant, that in real life would not be constant?
* In real life, how would you expect the density of air to vary with altitude?
# **Exercise 3** Open the template for Exercise 3, creating a new file rather than overwriting your previous one. In this program, we will be calculating the net force on a block submerged in water, based on the amount of fluid pressure acting on the block. Arrows will show the direction of the forces due to fluid pressure. The effect of this fluid pressure is known as **buoyancy**, or the **buoyant force.** Recall that the force on a surface of area $A$ resulting from a certain amount of fluid pressure $P$ is $F = P*A$. In Pascal's law, $P = P_0\rho g y$, the parameter $\rho$ stands for density. * Which density is used to calculate the pressure that exerts a force on the submerged block: The density of the block, or the density of water? * For a water density of $\rho_{water} = 1000~ kg/m^3$, predict a value of $\rho_{block}$ that would cause the block to float (in other words, give it an upward net force), and record it here: ______________________(or in a comment in your program if you are not using pencil and paper). In the program, fill in this value for the density of the block. Then, fill in the formula for the mass of the block. This formula will allow the program to recalculate mass every time a different value of density is chosen, so make you have expressed mass in terms of variables, not numbers. Continue filling in the blanks in the program: Calculate the pressures on the top, bottom, right and left sides of the block, and then calculate the forces due to those pressures. Fill in gravity, so that the net force can be printed. Hint: $g$ is not a force; it has units of acceleration. __Testing__ * What is the overall direction of the net force? Is it correct, based on the density that you are using? Try a different value of density  one that should cause the block to experience a net downward force. Record your new value of density here: ____________________(or in a comment in your program). Test this value and check that the program displays the correct behavior. * What could you change to make the net force zero?
Try it and verify that you get zero net force in this case. Once it works as expected, change back to the situation of a net downward force. __Analysis__ * Which of the 4 sides of the block are responsible for producing a nonzero buoyant force?
* This simulation does not include calculations of the forces on the front and back sides of the block. Would it make any difference if it did? If so, how? If not, why not?
* Looking at the arrows (which represent the forces due to fluid pressure acting on the block), how would you characterize the difference between the upward fluid force (Fbottom) and the downward fluid force (Ftop)? Are they equal in magnitude? Radically different in magnitude? Print out the two forces individually to get numerical values.
* Use your answer above to explain the physical origin of the buoyant force. *Why* is there a net upward force on the block?
Quantify your answer by having the program calculate and print a percent difference between the magnitudes of the 2 forces: * percent difference = $\frac{F_{bottom}F_{top} *100\%}{F_{top}}$ =______________ . Note: this is not a "percent error;" these two quantities are measuring two different things. A percent difference is a way of quantifying how far apart two numbers are. Since both of these numbers will appear large (when measured in Newtons), it makes sense to divide the difference by their overall value (chosen to be $F_{top}$ here). * In theory, should this percent difference be zero? If so, why? If not, why not?
# **Exercise 4** Open the template for Exercise 4, creating a new file rather than overwriting your previous one. This program will show the motion of a submerged block, assuming the fluid has no viscosity (ie, no friction). Locate in the code where the density of water is defined. Using this variable name, set the density of the block to equal 0.8 times the density of water. * Predict the direction of $F_{net}$ for a block of this density, when it is entirely submerged in water.
Fill in the blanks at the end of the while loop that update momentum and position for the block. Run the program. * What do the green arrows represent?
__Testing__ Does the block move in agreement with your prediction above? Consider the special case $\rho_{block} = \rho_{water}$. * Record your predictions for what the motion should be and then test your program. If it behaves in accordance with your prediction, continue. Reset the density of the block to $0.8*\rho_{water}$. __Analysis__ * What relationship do you observe between the weight of the displaced fluid and the buoyant force on an object?
* How does the behavior of the block change as its density decreases?
* Explain the physical reason for this change in motion as the block density decreases.
Imagine a lightweight wooden block that is deeply submerged in water  we'll observe it for some time. During this time, it will move through the water, remaining completely submerged. (Eventually it will break the surface, but that doesn't happen during the window of observation time.) 1. Describe the net force on the block during this time. (Is it constant? Increasing? Decreasing?) Justify your answer:
2. Describe the acceleration of the block during this time. Justify your answer:
3. Describe the velocity of the block during this time. Justify your answer:
Model this situation by changing the starting position of the block to be lower than the original value by an amount $L/5$. (The position vector of the block is defined in the beginning of the program, when the block is first created.) Add a line to your while loop that prints the velocity and acceleration of the block. Use the output of your program to check your three predictions above. * Explain any discrepancies between the output of your program and your predictions.
As a plausibility check, use the following (approximate) rule of thumb used in scuba diving: Pressure changes by about one atmosphere for every 10 meters of water depth. # **Exercise 2** * What happens when the user clicks in the air region (above the water)?
* What is implausible about this result?
The density of air is different than water, so the while loop should be modified to test whether the user clicked in the air region. The following two lines of code will change the density to the air density if the value of y is greater than zero: density = densityW if(h < 0): density = densityA Type this into your while loop before you do the pressure calculation.This code assumes you have a variable $h$ that represents the height of the point where the user clicked, and a variable $density$ that represents density in your pressure calculation. Check to make sure that your pressure calculation uses the variable $density,$ not $densityW$. __Testing__ Test the program by clicking in the air or water region. * Are the results in the air region realistic? * Does the pressure in the water still change in the correct way? __Analysis__ * Predict what will happen to the air pressure near the top of the scene if you expand the scale from $L = 20 ~m$ to $L = 200~m$.
* Change L to 200 m. What is the air pressure near the top ($y = 200~ m$)? * In writing this program, what parameters are we assuming to be constant, that in real life would not be constant?
* In real life, how would you expect the density of air to vary with altitude?
# **Exercise 3** Open the template for Exercise 3, creating a new file rather than overwriting your previous one. In this program, we will be calculating the net force on a block submerged in water, based on the amount of fluid pressure acting on the block. Arrows will show the direction of the forces due to fluid pressure. The effect of this fluid pressure is known as **buoyancy**, or the **buoyant force.** Recall that the force on a surface of area $A$ resulting from a certain amount of fluid pressure $P$ is $F = P*A$. In Pascal's law, $P = P_0\rho g y$, the parameter $\rho$ stands for density. * Which density is used to calculate the pressure that exerts a force on the submerged block: The density of the block, or the density of water? * For a water density of $\rho_{water} = 1000~ kg/m^3$, predict a value of $\rho_{block}$ that would cause the block to float (in other words, give it an upward net force), and record it here: ______________________(or in a comment in your program if you are not using pencil and paper). In the program, fill in this value for the density of the block. Then, fill in the formula for the mass of the block. This formula will allow the program to recalculate mass every time a different value of density is chosen, so make you have expressed mass in terms of variables, not numbers. Continue filling in the blanks in the program: Calculate the pressures on the top, bottom, right and left sides of the block, and then calculate the forces due to those pressures. Fill in gravity, so that the net force can be printed. Hint: $g$ is not a force; it has units of acceleration. __Testing__ * What is the overall direction of the net force? Is it correct, based on the density that you are using? Try a different value of density  one that should cause the block to experience a net downward force. Record your new value of density here: ____________________(or in a comment in your program). Test this value and check that the program displays the correct behavior. * What could you change to make the net force zero?
Try it and verify that you get zero net force in this case. Once it works as expected, change back to the situation of a net downward force. __Analysis__ * Which of the 4 sides of the block are responsible for producing a nonzero buoyant force?
* This simulation does not include calculations of the forces on the front and back sides of the block. Would it make any difference if it did? If so, how? If not, why not?
* Looking at the arrows (which represent the forces due to fluid pressure acting on the block), how would you characterize the difference between the upward fluid force (Fbottom) and the downward fluid force (Ftop)? Are they equal in magnitude? Radically different in magnitude? Print out the two forces individually to get numerical values.
* Use your answer above to explain the physical origin of the buoyant force. *Why* is there a net upward force on the block?
Quantify your answer by having the program calculate and print a percent difference between the magnitudes of the 2 forces: * percent difference = $\frac{F_{bottom}F_{top} *100\%}{F_{top}}$ =______________ . Note: this is not a "percent error;" these two quantities are measuring two different things. A percent difference is a way of quantifying how far apart two numbers are. Since both of these numbers will appear large (when measured in Newtons), it makes sense to divide the difference by their overall value (chosen to be $F_{top}$ here). * In theory, should this percent difference be zero? If so, why? If not, why not?
# **Exercise 4** Open the template for Exercise 4, creating a new file rather than overwriting your previous one. This program will show the motion of a submerged block, assuming the fluid has no viscosity (ie, no friction). Locate in the code where the density of water is defined. Using this variable name, set the density of the block to equal 0.8 times the density of water. * Predict the direction of $F_{net}$ for a block of this density, when it is entirely submerged in water.
Fill in the blanks at the end of the while loop that update momentum and position for the block. Run the program. * What do the green arrows represent?
__Testing__ Does the block move in agreement with your prediction above? Consider the special case $\rho_{block} = \rho_{water}$. * Record your predictions for what the motion should be and then test your program. If it behaves in accordance with your prediction, continue. Reset the density of the block to $0.8*\rho_{water}$. __Analysis__ * What relationship do you observe between the weight of the displaced fluid and the buoyant force on an object?
* How does the behavior of the block change as its density decreases?
* Explain the physical reason for this change in motion as the block density decreases.
Imagine a lightweight wooden block that is deeply submerged in water  we'll observe it for some time. During this time, it will move through the water, remaining completely submerged. (Eventually it will break the surface, but that doesn't happen during the window of observation time.) 1. Describe the net force on the block during this time. (Is it constant? Increasing? Decreasing?) Justify your answer:
2. Describe the acceleration of the block during this time. Justify your answer:
3. Describe the velocity of the block during this time. Justify your answer:
Model this situation by changing the starting position of the block to be lower than the original value by an amount $L/5$. (The position vector of the block is defined in the beginning of the program, when the block is first created.) Add a line to your while loop that prints the velocity and acceleration of the block. Use the output of your program to check your three predictions above. * Explain any discrepancies between the output of your program and your predictions.
Download Options
Share a Variation
Did you have to edit this material to fit your needs? Share your changes by
Creating a Variation
Credits and Licensing
Deva O'Neil, "Pascal’s Law and the Origin of Buoyancy," Published in the PICUP Collection, July 2017.
The instructor materials are ©2017 Deva O'Neil.
The exercises are released under a Creative Commons AttributionNonCommercialShareAlike 4.0 license