Project Instructions#
The project component of the course will make up 30% of your grade. The due date will be the last day of class (Dec 5).
Working in a group of 2 or 3, you should solve a physics problem of interest to you using computational methods. You can write your own code, use existing code and libraries, or a combination of the two. The project can involve a theory calculation or modelling data or both.
The topic must be approved by the instructor by Friday Oct 6. Before this date, you should send a short (couple of paragraphs) abstract to the instructor in a Slack message with all group members included. The abstract should describe the topic and the numerical approach that you plan to take.
What you should submit
Each group should submit one Github repository containing the code and a write up of the project which explains the physics problem you are looking at, the methods you used to tackle it, your results and conclusions.
The write up should be a PDF file of no more than 10 pages. A suggested structure for the write up is
Introduction
Problem Description
Code Description
Code Tests
Results and Analysis
Discussion and Further Improvements
Conclusion
A statement of contributions that describes the contributions of each group member to the project.
Your report should be prepared in LaTeX and for any code snippets that you include you should use code formatting as described here: https://www.overleaf.com/learn/latex/Code_listing
The code you submit in your repository should be clearly commented and in a state where it is ready to run to reproduce the results you show in your write up. Note however that the write up should include all your key results (e.g. important plots that you make) – we should be able to understand and see your results without having to run the code.
Grading
The grade for the project will be based on how well you
explain the physics problem that you are trying to solve, why it is interesting and why computational techniques are needed to solve it
used appropriate numerical tools to tackle your problem, whether this is to implement an algorithm yourself or apply an existing code to your problem
explain what you have done and how the code works so that another student in the course could understand what you did and reproduce your work.
demonstrate critical thinking while carrying out the project. For example, by checking whether your code was producing the right answer by comparing with analytic solutions in appropriate limits or comparing with previous published results, or by discussing whether the results make sense physically.
Project topic
There are many places to look to get ideas. For example, you can look at the projects that have been done at the McGill Physics Hackathon, or Gezerlis’ book has some interesting projects at the end of each chapter that could be good starting points.
To give you a sense of an appropriate scope for the project, here are a few specific project ideas:
Use molecular dynamics to simulate particles interacting with a Lennard-Jones potential and investigate for example the transition from liquid to solid, or the response of a solid lattice to impurities.
Integrate the geodesic equations in the Schwarzschild metric and produce an image of a black hole surrounded by an accretion disk (as in the movie Interstellar).
(This one is from last year’s course) Write an N-body code that calculates the forces by computing the gradient of the potential. The potential should be found by gridding the particle positions into a density, and convolving that density with the (softened) potential from a single particle. The acceleration is then found by taking the gradient of the potential. You will probably wish to use a leapfrog solver with fixed timestep. Use it to investigate a situation with at least hundreds of thousands of particles.
Here is a list of project topics from the Fall 2023 course:
N-body problems in our Solar System: various numerical computing approaches
Calculating transit timing variation curves for exoplanets using N-body simulations
Spinodal decomposition: solving the Cahn-Hilliard equation
Numerical solutions for the swinging Atwood’s machine
Semiclassical simulation of muon pair production
Classical molecular dynamics of a two-dimensional electron gas
Simulating the dynamics of gas molecules
How many particles does it take to make a plasma? A Particle-in-Cell plasma simulation project
Numerical solutions to the Schrödinger equation
A 2D numerical simulation of Rayleigh-Bénard convection at varying Rayleigh Numbers with the Dedalus project
Fitting Fermi-LAT pulsar lightcurves using a two-pole caustic emission model
Finding a missing planet from its gravitational effect on surrounding bodies
Characterizing exoplanetary systems using radial velocity curves: MCMCs and dynamic stability
Swarm modelling using dynamic mode decomposition
Solving the Gross–Pitaevskii equation in a spherically-symmetric harmonic trap
Make it pop: the physics of popping popcorn
Predictive modelling for hockey