Activity Information

Learning Goals

  • $\Sigma F = 0$ does not mean no motion
  • Relationship between terminal velocity and net force
  • Use a computer simulation to model the impact of proposed solutions to a complex real-world problem with numerous criteria and constraints on interactions within and between systems relevant to the problem HS-ETS1-4
  • Analyze data to support the claim that Newton's second law of motion describes the mathematical relationship among the net force on a macroscopic object, its mass, and its accelerations HS-PS2-1
    • Assessment Boundary: limited to one-dimensional motion and to macroscopic objects moving at non-relativistic speeds

Prior Knowledge Required

  • Newton's second law of motion
  • Drag equation
    • $D=\dfrac{1}{2}C\rho v^2A$
  • Terminal velocity
    • $v=\sqrt{\dfrac{2W}{C\rho A}}$
  • Gravitational force

Code Manipulation

  • Copying/pasting code
  • Creating code from scratch
    • Translating equations into code
  • While loops and if statements

—-

Activity

Handout

Terminal Velocity

A coin is being dropped from the top of a building. When will it reach terminal velocity? How does the force of gravity compare to the force of air resistance? Take a look at the unfinished code and answer the following questions:

Pre-coding Questions
  1. Create a graph showing how you think the velocity of the coin will change over time
  2. Create a graph showing how you think the forces of gravity, air resistance, and net force change as the coin approaches the ground.
  3. Using information provided by the code, calculate the terminal velocity of the falling coin. Label each part of the terminal equation, including units.

Now with your group, complete the provided code. Be sure to include arrows showing the magnitude of forces acting on the coin. As well, create a velocity vs. time graph and a forces vs. time graph (Pre-coding Questions 1 and 2). When your code is complete, answer the following questions:

Post-coding Questions/Reflection
  1. Describe your contributions to the coding process within your group.
  2. What did you find the terminal velocity to be based on the graph produced by the code? Does this agree with your calculations?
  3. Reflect on your predicted graphs. Explain how they were similar/different than your coding graphs. Revise your graphs as needed.

Code

Link

  1. GlowScript 2.8 VPython
  2. #Window Setup
  3. scene.width = 500
  4. scene.height = 400
  5.  
  6. #Objects
  7. ground = box(pos=vec(0,-250,0), size=vec(700,100,2), texture="https://images.pexels.com/photos/207204/pexels-photo-207204.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" )
  8. coin = cylinder(pos=vector(0,0,0), axis=vector(0.5,0,0), radius=15.305, textures=textures.metal)
  9. coin.rotate(angle=90, axis=vector(1,1,1))
  10.  
  11. #Initial Object Properties and Constants (time and time step)
  12. g = vec(0,-9.81,0) #Acceleration due to Gravity
  13. coin_m = 0.01135 #mass of the object
  14. drag_co = 1.15 #Drag Coefficient of
  15. t = 0 #Initial Time
  16. dt = 0.01 #Time Step
  17. tf = 0 #Final Time
  18. air_density = 1.2754 #Density of the air
  19. coin_r = .015305
  20. Fgrav = vec(0,0,0)
  21. Fdrag = vec(0,0,0)
  22.  
  23. #Initial Velocity (coin_v) and Momentum Vectors (coin_p)
  24. #coin_v =
  25. #coin_p =
  26.  
  27. #Create an arrow to visualize the particle's forces
  28.  
  29.  
  30. #Set up the graphs
  31. force_comparison_graph = graph(title='Comparison of Forces on a Coin Reaching Terminal Velocity',xtitle='time (s)',ytitle='Force (N)',fast=False,width=1000)
  32. velocity_graph = graph(title='Velocity of a Coin in Freefall Over Time',xtitle='time (s)', ytitle='Velocity (m/s)',fast=False,width=1000)
  33. #Drag and Fgrav and Fnet on the same plot
  34. Fdrag_f = gcurve(graph=force_comparison_graph,color=color.red,width=4,markers=False,label='Drag Force')
  35. Fgrav_f = gcurve(graph=force_comparison_graph,color=color.blue,width=4,markers=False,label='Fgrav')
  36. Fnet_f = gcurve(graph=force_comparison_graph,color=color.purple,width=4,markers=False,label='Fnet')
  37. #Velocity on its own plot
  38. velocity_f = gcurve(graph=velocity_graph,color=color.green,width=4,markers=False,label='Coin Velocity')
  39.  
  40. #Calculation Loop
  41. while True: #Change this so the coin stops when it hits the ground
  42. rate(100)
  43. #Make the coin move
  44.  
  45.  
  46. #Keep the arrows representing the particle's velocity and acceleration
  47.  
  48.  
  49. #Plot on the graphs
  50. velocity_f.plot(t,coin_v.y)
  51. Fdrag_f.plot(t,Fdrag.y)
  52. Fgrav_f.plot(t,Fgrav.y)
  53. Fnet_f.plot(t,Fnet.y)
  54.  
  55. t += dt #Advance the time by 1 time step

Answer Key

Handout

Pre-coding Answers
  1. The equation for terminal velocity is $v=\sqrt{\dfrac{2W}{C\rho A}}$, where
    • $W$ is the weight of the coin (N)
      • this is calculated by multiplying the mass of the coin by the acceleration of gravity: $W= 0.01135 \text{kg} * 9.81 \text{m/s/s} = 0.111 \text{N}$
    • $C$ is the drag coefficient (1.15, no units)
    • $\rho$ is the density of air (1.2754 kg/m³)
    • $A$ is the area of the coin
      • this is calculated by squaring the radius of the coin and multiplying it by pi: $A= (0.015305 \text{m})^2 * \pi = 0.000736 \text{m²}$
    • $v=\sqrt{\dfrac{2*0.111}{1.15*1.275*0.000736}}=14.3 \text{m/s}$
Post-coding Answers

Use the previous answers and the completed code below to guide your reflection.

Code

Link

  1. GlowScript 2.8 VPython
  2. #Window Setup
  3. scene.width = 500
  4. scene.height = 400
  5.  
  6. #Objects
  7. ground = box(pos=vec(0,-250,0), size=vec(700,100,2), texture="https://images.pexels.com/photos/207204/pexels-photo-207204.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260" )
  8. coin = cylinder(pos=vector(0,0,0), axis=vector(0.5,0,0), radius=15.305, textures=textures.metal)
  9. coin.rotate(angle=90, axis=vector(1,1,1))
  10.  
  11. #Initial Object Properties and Constants (time and time step)
  12. g = vec(0,-9.81,0) #Acceleration due to Gravity
  13. coin_m = 0.01135 #mass of the object
  14. drag_co = 1.15 #Drag Coefficient of
  15. t = 0 #Initial Time
  16. dt = 0.05 #Time Step
  17. tf = 0 #Final Time
  18. air_density = 1.2754 #Density of the air
  19. coin_r = .015305
  20. Fgrav = vector(0,coin_m*g.y,0)
  21. Fdrag = vec(0,0,0)
  22.  
  23. #Velocity and Momentum Vectors
  24. coin_v = vec(0,0,0) #Initial Velocity
  25. coin_p = coin_m*coin_v #Initial Momentum
  26.  
  27. #Create an arrow to visualize the particle's forces
  28. FdragArrow = arrow(pos=coin.pos, axis = Fdrag*1000, color = color.green)
  29. FgravArrow = arrow(pos=coin.pos, axis = Fgrav*1000, color = color.red)
  30.  
  31. #Set up the graphs
  32. force_comparison_graph = graph(title='Comparison of Forces on a Coin Reaching Terminal Velocity',xtitle='time (s)',ytitle='Force (N)',fast=False,width=1000)
  33. velocity_graph = graph(title='Velocity of a Coin in Freefall Over Time',xtitle='time (s)', ytitle='Velocity (m/s)',fast=False,width=1000)
  34. #Drag and Fgrav and Fnet on the same plot
  35.  
  36. Fdrag_f = gcurve(graph=force_comparison_graph,color=color.red,width=4,markers=False,label='Drag Force')
  37. Fgrav_f = gcurve(graph=force_comparison_graph,color=color.blue,width=4,markers=False,label='Fgrav')
  38. Fnet_f = gcurve(graph=force_comparison_graph,color=color.purple,width=4,markers=False,label='Fnet')
  39.  
  40. #Velocity on its own plot
  41. velocity_f = gcurve(graph=velocity_graph,color=color.green,width=4,markers=False,label='Coin Velocity')
  42.  
  43. #Calculation Loop
  44. while coin.pos.y > -200: #Makes the coin stop when it hits the ground
  45. rate(100)
  46. Fgrav = vector(0,coin_m*g.y,0)
  47. Fdrag = vec(0,air_density*drag_co*pi*coin_r**2*coin_v.y**2/2,0)
  48. Fnet = Fgrav+Fdrag
  49. coin_p += Fnet*dt
  50. coin.pos += (coin_p/coin_m)*dt
  51. coin_v = coin_p/coin_m
  52.  
  53. #Keep the arrow representing the particle's velocity and acceleration
  54. FdragArrow.pos = coin.pos
  55. FdragArrow.axis = Fdrag*1000
  56. FgravArrow.pos = coin.pos
  57. FgravArrow.axis = Fgrav*1000
  58.  
  59. #Plot on the graphs
  60. velocity_f.plot(t,coin_v.y)
  61. Fdrag_f.plot(t,Fdrag.y)
  62. Fgrav_f.plot(t,Fgrav.y)
  63. Fnet_f.plot(t,Fnet.y)
  64.  
  65. t += dt #Advance the time by 1 time step

See Also

  • repository/terminal_velocity.txt
  • Last modified: 2021/02/18 14:17
  • by porcaro1