1 Updated Project
Below is an updated description of the final project for Computer Simulation for 2023. The updated project requirements will allow students to optionally make use of the solutions to the original project, which appear in the Course Book. Before reading this, please read the description of the project that appears in the Course Book.
1.1 Project Task: Simulation
Your code should be capable of performing all the tasks described in Section 1.3 of the original project description in the Course Book. You may write your own code entirely from scratch, start with the posted solution code and modify it, or use the solution code as a guide for writing yours. The final two scenarios are frequently encountered in research.
Quite often, we are given a code and tasked with optimizing it or adding new functionality.
Understanding and modifying code written by someone else is harder than it seems. As well, the posted solution code is only one way doing things, and not necessarily even the best way.
In addition to simulating the orbits of Mercury, Venus, Earth, and Mars, your simulation must also include Jupiter.
1.2 Project Task: Experiments
Work through all three of the experiments given in Section 1.4 of the original project description in the Course Book. You are free to use whatever information appears in the solutions as posted in the Course Book. However, the code you submit should be capable of demonstrating the tasks associated with the experiments. For example, you must submit code that shows the satellite making its trip to Mars (experiment 3).
In addition to the original three experiments, you must choose two of the three experiments below and work through them as well.
1.2.1 Additional Experiment 1: Integrating with Direct Euler
Your simulation code implements the Beeman scheme to solve for the motions in the solar system. We use this method because it conserves total energy with time. A much simpler method, known as Direct Euler or Forward Euler, is used to solve many systems of ordinary differential equations. In the Direct Euler method, the position and velocity are updated as follows:
r(t + ∆t) = ⃗r(t) + ⃗v(t)∆t (1)
v(t + ∆t) = ⃗v(t) + ⃗a(t)∆t (2)
Modify your simulation code to use the Direct Euler method for updating position and velocity. This can be done through inheritance, but is not necessary. Run this version of yourcode for a few hundred years with the same timestep and compare graphically the evolution of total energy vs. time with the Beeman method.
1.2.2 Doomsday Planetary Alignment
How often do planetary alignments occur? Modify your code to detect planetary alignments based on all planets being within some threshold (say 5◦ ) of the mean angle. Do this for the five innermost planets (i.e., out to and including Jupiter). You may optionally add some or all of the three outermost planets.
1.2.3 Jupiter’s Influence on Planetary Orbits
Modify your code such that the planets only feel the gravity of the Sun and not any of the other planets. How does this affect the periods of the four inner planets?
1.3 Project Report
Write up the work you have done following the guidelines for the project report in the Course Book. When discussing the code, mention whether you wrote your code from scratch or started with the posted solution code. If your code was inspired by the solution code,you should still briefly describe how it works as well as any modifications you made for the experiments.