The Carver Media Group is planning the launch of a new communications satellite. Elliot Carver (head of Carver Media Group) is concerned about the launch. This is a $200,000,000 endeavor. In particular, he is worried about the orbital speed necessary to maintain the satellite's geostationary orbit (and if that depends on the launch mass). You were hired as an engineer on the launch team. Carver has asked that you allay his concerns.
Compared to the previous two problems that students have solved, this problem is a bit more straightforward. However, it deals with a critical concept that is well-documented that students struggle to understand: the “centripetal” force. One reason this problem is so short is to give tutors a lot of space to help students build their understanding of this concept, its relationship to the momentum principle (acceleration), the net force, the gravitational force, and the associated tools to develop that understanding (i.e., free-body diagrams).
To that end, give students plenty of time to come up with their own ideas of what they need to do and how to do it. Do not tell them what a geosynchronous/geostationary orbit is; they should research this.
Through this research students might decide to use the circumference of the orbit to find the speed. That's fine, but they should be pushed to show that the same result can be obtained using the forces. The learning issues slide is meant to prompt them to do this, so use that as leverage to encourage them to solve the problem that way.
Additional questioning that you engage groups with should push hard on their understanding of the relationship between the net force, the centripetal force, and the gravitational force.
We want uniform circular motion, so we know that the magnitude of the inward radial force, given by $mv^{2}/r$ (from Uniform Circular Motion notes) has to be equal to the magnitude of the net force due to gravity, $GM_{\oplus}m/r^{2}$ (from Non-Constant Force: Newtonian Gravitation notes): $$\frac{mv^{2}}{r}=G\frac{M_{\oplus}m}{r^{2}}\quad\longrightarrow\quad r=G\frac{M_{\oplus}}{v^{2}}\quad\mbox{and}\quad v=\sqrt{G\frac{M_{\oplus}}{r}}.$$
Now, we don't know the velocity of the satellite OR the radius of orbit. So, we need to use the additional formula $\Delta t=r\theta/v$ to fix this problem (this formula can also be found in Uniform Circular Motion notes). Rearranging to $v=r\theta/\Delta t$, we see: $$r=G\frac{M_{\oplus}}{\big(r\theta/\Delta t)^{2}}.$$ Solving this again for $r$ gives $$r=\bigg(G\frac{M_{\oplus}}{(\theta/\Delta t)^{2}}\bigg)^{1/3}\approx 4.22\times 10^{7}\,{\rm m},$$ Where we have used the fact that the change in time $\Delta t$ is $1\,{\rm day}$ and the angle of rotation $\theta$ is $2\pi\,{\rm rad}$.
With this radius, we can go back and solve for the velocity $$v\approx 3073\,{\rm m/s}$$
This is a short(er) problem than the last two.
Carver is impressed with your work, but remains unconvinced by your predictions. He has asked you to write a simulation that models the orbit of the satellite. To truly convince Carver, the simulation should include representations of the net force acting on the spacecraft, which has a mass of $15\times10^3$ kg. Your simulation should be generalized enough to model other types of orbits including elliptical ones.
starter code:
Conceptual questions:
This programming problem requires students to put in the correct initial conditions from Tuesday, but also to model the gravitational force appropriately (i.e., translate the equation to code). This is tough for some groups because vector calculations can be challenging.
There's lots to play with once they get a working code. Ask them to demonstrate how they know it's circular. See what they come up with, but you can push them to think about plotting the separation between the Earth and the satellite. Make sure you have them test different time steps when they do that. You can have them check it works for an elliptical orbit.
Also, asking them to create an arrow for the momentum and net force would be worthwhile from a conceptual standpoint.
We want to input our radius of a geostationary orbit and the necessary velocity, as well as any constants:
#Objects Satellite = sphere(pos=vector(42164e3,0,0), radius=1e6, color=color.red, make_trail=True) #Parameters and Initial Conditions mSatellite = 15e3 pSatellite = mSatellite*vector(0,3073,0) G = 6.67e-11 mEarth = 5.97e24
Next, we want to incorporate the force due to gravity. Change the given null vector to the required gravitational force:
#Calculation Loop Fgrav = -G*mSatellite*mEarth*Satellite.pos/(mag(Satellite.pos)**3) Fnet = Fgrav
The representation of the force is given through a motion map, as follows:
#MotionMap/Graph FnetMotionMap = MotionMap(Satellite, tf, 20, markerScale=2000, labelMarkerOrder=False) #Calculation Loop FnetMotionMap.update(t, Fnet)
The addition of the non-constant Newtonian force is challenging for students. If the group is struggling to correctly model it, do not push them to add a graph. Rather, focus on correctly completing the previous tasks and ask any remaining tutor questions.
* Question: How can you prove that the orbit is actually circular?
Part C includes adding this graph:
#MotionMap/Graph separationGraph = PhysGraph(numPlots=1) #Calculation Loop separationGraph.plot(t,mag(Satellite.pos))
Working code for part B:
GlowScript 2.9 VPython
get_library('https://cdn.rawgit.com/PERLMSU/physutil/master/js/physutil.js')
#Window setup
scene.range=7e7
scene.width = 1024
scene.height = 760
#Objects
Earth = sphere(pos=vector(0,0,0), radius=6.4e6, color=color.blue)
Satellite = sphere(pos=vector(42164e3, 0,0), radius=1e6, color=color.red, make_trail=True) #modify position of satellite
#Parameters and Initial Conditions
mSatellite = 15e3 # edit mass of the satellite
pSatellite = mSatellite*vector(0,3073,0) #edit momentum of the satellite
G = 6.67e-11 # add universal gravitational constant
mEarth = 5.97e24 # add mass of Earth
#Time and time step
t = 0
tf = 60*60*24
dt = 1
#MotionMap/Graph
SatelliteMotionMap = MotionMap(Satellite, tf, 20, markerScale=2000, labelMarkerOrder=False)
FnetMotionMap = MotionMap(Satellite, tf, 20, markerScale=2000, labelMarkerOrder=False) # add Fnet force arrows - also need to add in loop)
#Calculation Loop
while t < tf:
rate(10000)
Fgrav = -G*mSatellite*mEarth*Satellite.pos/(mag(Satellite.pos)**3) # Add Fgrav change Fnet
Fnet = Fgrav # change Fnet from zero
pSatellite = pSatellite + Fnet*dt
Satellite.pos = Satellite.pos + (pSatellite/mSatellite)*dt
SatelliteMotionMap.update(t, pSatellite/mSatellite)
FnetMotionMap.update(t, Fnet) # Add Fnet vector arrows
t = t + dt
#Earth Rotation (IGNORE)
theta = 7.29e-5*dt
Earth.rotate(angle=theta, axis=vector(0,0,1), origin=Earth.pos)
Changes made to the given code:
While you have continued to impress Carver, he remains unsure about the size of the force acting on the satellite and its distance from Earth. He seems particularly concerned the distance of the satellite from Earth not very more than $\pm$ 1%. Graphs of its distance from Earth and the magnitude of the net force acting on it may convince him.
The syntax you need to work with in order to include a graph involves two lines of code(mass of Earth vs time is given as an example). One outside the while loop and the second inside as the variable being plotted on the vertical axis changes with time:
Outside the while loop, add: graphExample = PhysGraph(numPlots=1)
Inside the while loop, add: graphExample.plot(t, mEarth)
On a single graph, plot both the x-component of the satellite's momentum and the x-component of the net force acting on the satellite.
Solution code for parts C and D
GlowScript 2.9 VPython
get_library('https://cdn.rawgit.com/PERLMSU/physutil/master/js/physutil.js')
#Window setup
scene.range=7e7
scene.width = 1024
scene.height = 760
#Objects
Earth = sphere(pos=vector(0,0,0), radius=6.4e6, color=color.blue)
Satellite = sphere(pos=vector(42164e3, 0,0), radius=1e6, color=color.red, make_trail=True) #modify position of satellite
#Parameters and Initial Conditions
mSatellite = 15e3 # edit mass of the satellite
pSatellite = mSatellite*vector(0,3073,0) #edit momentum of the satellite
G = 6.67e-11 # add universal gravitational constant
mEarth = 5.97e24 # add mass of Earth
#Time and time step
t = 0
tf = 60*60*24
dt = 1
#MotionMap/Graph
SatelliteMotionMap = MotionMap(Satellite, tf, 20, markerScale=2000, labelMarkerOrder=False)
FnetMotionMap = MotionMap(Satellite, tf, 20, markerScale=2000, labelMarkerOrder=False) # add Fnet force arrows - also need to add in loop)
graphSeparation = PhysGraph(numPlot=1) # initialize the magnitude of the separation vector vs time plot
graphFnet = PhysGraph(numPlots=1) # initialize the magnitude of the net force vs time plot
graphpF = PhysGraph(numPlots=2) # initialize the x componets of p and Fnet vs time plot
#Calculation Loop
while t < tf:
rate(10000)
Fgrav = -G*mSatellite*mEarth*Satellite.pos/(mag(Satellite.pos)**3) # Add Fgrav change Fnet
Fnet = Fgrav # change Fnet from zero
pSatellite = pSatellite + Fnet*dt
Satellite.pos = Satellite.pos + (pSatellite/mSatellite)*dt
SatelliteMotionMap.update(t, pSatellite/mSatellite)
FnetMotionMap.update(t, Fnet) # Add Fnet vector arrows
#separationGraph.plot(t,mag(mSatellite))
graphSeparation.plot(t,mag(Satellite.pos)) # update magnitude of sep vector vs time plot
graphFnet.plot(t,mag(Fnet)) # update magnitude of Fnet vs time plot
scale=1.0E4 # add scale to make fluctuations in Fx visible (units of 10^-4 N)
graphpF.plot(t,pSatellite.x,scale*Fnet.x) # update x-components of Fnet and p vs time
t = t + dt
#Earth Rotation (IGNORE)
theta = 7.29e-5*dt
Earth.rotate(angle=theta, axis=vector(0,0,1), origin=Earth.pos)
Modification of solution to part B to get |r| vs t, |Fnet| vs t and Fnet,x and P,x vs t: