Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
course_planning:183_projects:s23_week_3_geostationary_orbit [2023/01/25 17:40] – hallstein | course_planning:183_projects:s23_week_3_geostationary_orbit [2023/01/25 20:10] – hallstein | ||
---|---|---|---|
Line 1: | Line 1: | ||
~~NOTOC~~ | ~~NOTOC~~ | ||
- | [[:183_projects: | + | [[183_projects: |
- | [[course_planning: | + | |
<WRAP info> | <WRAP info> | ||
Line 103: | Line 102: | ||
* **Tutor Question: | * **Tutor Question: | ||
* **Expected Answer: | * **Expected Answer: | ||
- | |||
- | {{course_planning: | ||
</ | </ | ||
Line 186: | Line 183: | ||
<WRAP alert> | <WRAP alert> | ||
- | The addition of the non-constant Newtonian force is challenging for students. | + | The addition of the non-constant Newtonian force is challenging for students. |
</ | </ | ||
<WRAP tip> | <WRAP tip> | ||
==Tutor Questions: | ==Tutor Questions: | ||
- | * **Question: | + | * **Question: |
- | * **Expected Answer: | + | |
- | Aside from just eyeballing it, we can add in a graph of the distance from the center of Earth! | + | |
- | <code python> | + | |
- | # | + | |
- | separationGraph = PhysGraph(numPlots=1) | + | |
- | + | ||
- | # | + | |
- | separationGraph.plot(t, | + | |
- | </ | + | |
- | + | ||
- | | + | |
* **Expected Answer: | * **Expected Answer: | ||
Line 211: | Line 197: | ||
* **Expected Answer: | * **Expected Answer: | ||
- | {{course_planning:georobitconceptualq2.png}} | + | * **Question:** How can you prove that the orbit is actually circular? |
+ | * **Expected Answer: | ||
+ | Aside from just eyeballing it, we can add in a graph of the distance from the center of Earth! | ||
+ | Part C includes adding this graph: | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | separationGraph = PhysGraph(numPlots=1) | ||
+ | |||
+ | # | ||
+ | separationGraph.plot(t, | ||
+ | </ | ||
</ | </ | ||
Line 233: | Line 230: | ||
</ | </ | ||
- | < | + | Working code for part B: |
+ | < | ||
GlowScript 2.9 VPython | GlowScript 2.9 VPython | ||
+ | |||
get_library(' | get_library(' | ||
+ | |||
#Window setup | #Window setup | ||
scene.range=7e7 | scene.range=7e7 | ||
scene.width = 1024 | scene.width = 1024 | ||
scene.height = 760 | scene.height = 760 | ||
+ | |||
#Objects | #Objects | ||
Earth = sphere(pos=vector(0, | Earth = sphere(pos=vector(0, | ||
- | Satellite = sphere(pos=vector(42164e3, | + | Satellite = sphere(pos=vector(42164e3, |
+ | |||
#Parameters and Initial Conditions | #Parameters and Initial Conditions | ||
- | mSatellite = 15e3 | + | mSatellite = 15e3 # edit mass of the satellite |
- | pSatellite = mSatellite*vector(0, | + | pSatellite = mSatellite*vector(0, |
- | G = 6.67e-11 | + | G = 6.67e-11 |
- | mEarth = 5.97e24 | + | mEarth = 5.97e24 |
+ | |||
#Time and time step | #Time and time step | ||
t = 0 | t = 0 | ||
tf = 60*60*24 | tf = 60*60*24 | ||
dt = 1 | dt = 1 | ||
+ | |||
+ | # | ||
+ | SatelliteMotionMap = MotionMap(Satellite, | ||
+ | FnetMotionMap = MotionMap(Satellite, | ||
+ | |||
+ | |||
+ | # | ||
+ | while t < tf: | ||
+ | rate(10000) | ||
+ | |||
+ | Fgrav = -G*mSatellite*mEarth*Satellite.pos/ | ||
+ | Fnet = Fgrav # change Fnet from zero | ||
+ | |||
+ | pSatellite = pSatellite + Fnet*dt | ||
+ | Satellite.pos = Satellite.pos + (pSatellite/ | ||
+ | |||
+ | SatelliteMotionMap.update(t, | ||
+ | |||
+ | FnetMotionMap.update(t, | ||
+ | t = t + dt | ||
+ | |||
+ | #Earth Rotation (IGNORE) | ||
+ | theta = 7.29e-5*dt | ||
+ | Earth.rotate(angle=theta, | ||
+ | </ | ||
+ | Changes made to the given code: | ||
+ | {{course_planning: | ||
+ | |||
+ | ====== Project 3: Part C: Geostationary orbit ====== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | 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). | ||
+ | |||
+ | Outside the while loop, add: graphExample = PhysGraph(numPlots=1) | ||
+ | |||
+ | Inside the while loop, add: graphExample.plot(t, | ||
+ | |||
+ | ====== Project 3: Part D: Geostationary orbit ====== | ||
+ | |||
+ | On a single graph, plot both the x-component of the satellite' | ||
+ | |||
+ | |||
+ | Solution code for parts C and D | ||
+ | |||
+ | < | ||
+ | GlowScript 2.9 VPython | ||
+ | |||
+ | get_library(' | ||
+ | |||
+ | #Window setup | ||
+ | scene.range=7e7 | ||
+ | scene.width = 1024 | ||
+ | scene.height = 760 | ||
+ | |||
+ | #Objects | ||
+ | Earth = sphere(pos=vector(0, | ||
+ | Satellite = sphere(pos=vector(42164e3, | ||
+ | |||
+ | #Parameters and Initial Conditions | ||
+ | mSatellite = 15e3 # edit mass of the satellite | ||
+ | pSatellite = mSatellite*vector(0, | ||
+ | G = 6.67e-11 | ||
+ | mEarth = 5.97e24 | ||
+ | |||
+ | #Time and time step | ||
+ | t = 0 | ||
+ | tf = 60*60*24 | ||
+ | dt = 1 | ||
+ | |||
# | # | ||
SatelliteMotionMap = MotionMap(Satellite, | SatelliteMotionMap = MotionMap(Satellite, | ||
- | FnetMotionMap = MotionMap(Satellite, | + | FnetMotionMap = MotionMap(Satellite, |
- | #separationGraph | + | |
- | f1=series() | + | graphSeparation |
+ | graphFnet | ||
+ | graphpF = PhysGraph(numPlots=2) | ||
+ | |||
+ | |||
# | # | ||
while t < tf: | while t < tf: | ||
rate(10000) | rate(10000) | ||
- | + | ||
- | Fgrav = -G*mSatellite*mEarth*Satellite.pos/ | + | Fgrav = -G*mSatellite*mEarth*Satellite.pos/ |
- | Fnet = Fgrav | + | Fnet = Fgrav # change Fnet from zero |
+ | |||
pSatellite = pSatellite + Fnet*dt | pSatellite = pSatellite + Fnet*dt | ||
Satellite.pos = Satellite.pos + (pSatellite/ | Satellite.pos = Satellite.pos + (pSatellite/ | ||
+ | |||
SatelliteMotionMap.update(t, | SatelliteMotionMap.update(t, | ||
- | | + | |
- | FnetMotionMap.update(t, | + | FnetMotionMap.update(t, |
# | # | ||
- | | + | |
+ | graphFnet.plot(t, | ||
+ | scale=1.0E4 | ||
+ | graphpF.plot(t, | ||
+ | |||
t = t + dt | t = t + dt | ||
+ | |||
#Earth Rotation (IGNORE) | #Earth Rotation (IGNORE) | ||
theta = 7.29e-5*dt | theta = 7.29e-5*dt | ||
Earth.rotate(angle=theta, | Earth.rotate(angle=theta, | ||
- | </ | + | </ |
+ | |||
+ | Modification of solution to part B to get |r| vs t, |Fnet| vs t and Fnet,x and P,x vs t: | ||
+ | |||
+ | {{course_planning: |