Physics 420/580 – Fall 2010

Previous iterations of this course: [ Fall 2008 : Fall 2009 ]

Course outline

Computational Physics / Advanced Topics in Computational Physics
Lecture: CEB 123 MWF 13:00-13:50
Lab: CEB 114 R 14:00-16:50
Syllabus: pdf
Schedule: pdf

Learning resources

Exercises

These optional, ungraded problems touch on important issues that aren't addressed explicitly in the labs and assignments.

  1. Floating-point numbers
    instructions [ pdf ], source [ tar.gz ]

Lectures

Class starts on Wednesday, September 8.

  1. Wednesday, September 8 — Computational physics
  2. Friday, September 10 — C++ language review
  3. Monday, September 13 — Discretization
  4. Wednesday, September 15 — Cellular automata
  5. Friday, September 17 — Self-organized criticality
  6. Monday, September 20 — Floating-point numbers
  7. Wednesday, September 22 — Integration, differentiation, and root finding
  8. Friday, September 24 — Ordinary differential equations
  9. Monday, September 27 — Boundary-value problems
  10. Wednesday, September 29 — Chaotic motion
  11. Friday, October 1N-body simulations
  12. Monday, October 4 — Multiple time scales
  13. Wednesday, October 6 — Holonomic constraints and the SHAKE algorithm
    see also:
  14. Friday, October 8 — Wave motion and spectral methods
  15. Wednesday, October 13 — Finite difference methods for PDEs
    relevant Wikipedia entries:
  16. Friday, October 15 — Quantum mechanics
  17. Monday, October 18 — Solving for eigenfunctions in one dimension, stability of finite difference schemes for the time-dependent Schrödinger equation
  18. Wednesday, October 20 — Schrödinger equation in higher dimensions, many-body quantum problems, matrix mechanics, ground state projection via the power method, variational principle
  19. Friday, October 22 — Matrices, linking to the BLAS and LAPACK libraries
    see also: Linking to the LAPACK libraries from C++
  20. Monday, October 25 — Random processes, probability distributions
  21. Wednesday, October 27 — Random walks, enumeration of self-avoiding random walks
    see also:
    • this tutorial courtesy of the Boston University Center for Polymer Studies
    and these articles from Wolfram Mathworld:
  22. Friday, October 29 — Monte Carlo integration, Markov chains
  23. Monday, November 1 — Monte Carlo dynamics, detailed balance, measurement taking, thermalization and autocorrelation times
  24. Wednesday, November 3 — Ising model
  25. Friday, November 5 — Duality of (site) clusters and (link) loops for the 2D Ising model, non-local updates, Wolff algorithm
  26. Monday, November 8 — Geometric disorder, continuum and lattice percolation
  27. Wednesday, November 10 — Global optimization, steepest descent, stochastic optimization, simulated annealing, parallel tempering
  28. Monday, November 15 — Genetic and swarm algorithms
  29. Wednesday, November 17 — Linear inverse problems, X-ray tomography, recommendation engines
  30. Friday, November 19 — Renormalization group, glassy energy landscapes, machine learning
  31. Monday, November 22 — Term project presentations (Chris Polachic, Andrew Karamaoun)
  32. Wednesday, November 24 — Term project presentations (Saeed Ur Rehman, Nadia Imtiaz)
  33. Friday, November 26 — Term project presentations (Burkhard Ritter)

Labs

The first lab is on Thursday, September 16 at 14:00 in CEB 114. Unfortunately, this time conflicts with the Distinguished Guest Speaker lectures by Werner Israel and David Mermin, scheduled as part of TPI's 50th anniversary celebrations. So if you like, drop by CEB 114 at 14:00 on Tuesday or Wednesday instead, and I'll be available to give you your account login.

  1. Lissajous figures, Mandelbrot set
    instructions [ pdf ], source code [ tar.gz ]
  2. Cellular automata
    instructions [ pdf ], source [ tar.gz ]
  3. Numerical integration, particle dynamics
    instructions [ pdf ], source [ tar.gz ]
  4. Lorentz attractor, chaos
    instructions [ pdf ], source code [ tar.gz ]
  5. Laplace and Poisson equations, relaxation methods
    instructions [ pdf ], source code [ tar.gz ]
  6. Wave equation, stability of finite-difference methods for PDEs
    instructions [ pdf ], source code [ tar.gz ]
  7. Matrix mechanics with LAPACK
    instructions [ pdf ], source code [ tar.gz ]
  8. Enumeration of self-avoiding walks
    instructions [ pdf ], source code [ tar.gz ]
  9. Percolation
    instructions [ pdf ], source code [ tar.gz ]
  10. Monte Carlo simulation of the Ising model
    instructions [ pdf ], source code [ tar.gz ]

Lab Access

Detailed instructions can be found here.

Assignments

There will be five assignments (four for students who undertake a term project) with one due roughly every two weeks.

  1. Lattice gas automata: due Wednesday, September 29
    instructions [ pdf ], source [ tar.gz ]
  2. Classical N-body simulations: due Wednesday, October 13 (extended to October 20)
    instructions [ pdf ], source code [ tar.gz ]
  3. Dynamics of a quantum wave packet: due Wednesday, October 27 (extended to November 1)
    instructions [ pdf ], source code [ tar.gz ]
  4. Monte Carlo simulation of a polymer chain: due Wednesday, November 10
    instructions [ pdf ], source code [ tar.gz ]
  5. Optimal packing of granular material: due Wednesday, November 24
    instructions [ pdf ], source code [ tar.gz ]

I would appreciate having your work for assignment n=1…5 submitted as a single tarball named studentLastName_n.tar.gz, sent to as an email attachment. When unpacked, your directory should contain your source code, compilation instructions (or, even better, a makefile), and a short written explanation of what you have done.

$ WEBPATH=http://www.ualberta.ca/~kbeach/phys420_580/src
$ curl $WEBPATH/Assignment1.tar.gz -O
$ tar xzf Assignment1.tar.gz
$ ls -F
Assignment1/
$ cd Assignment1
[edit / compile / test]
$ cd ..
$ mv Assignment1 beach_1
$ tar czf beach_1.tar.gz beach_1
$ ls -F
beach_1/   beach_1.tar.gz

I encourage students to write up their assignments in LaTeX. I have provided a template file for that purpose. (If you are not already familiar with it, LaTeX is a typesetting language that is widely used in the mathematics and physics communities. There is a brief introduction in the notes.) You are certainly not required to use LaTeX. A plain text file will do nicely. I do, however, want to avoid paper submissions.

Term project

Choosing a topic

You are welcome to develop a project idea on your own, but please consult with me to see if I think it's appropriate and feasible. I'll want to know that you've identified (i) an interesting physical phenemonon, (i) the model you'll use to study it, and (iii) the simulation algorithm you intend to implement. Keep in mind also that the project must be well-defined and something that can realistically be completed in three months.

If you're having trouble coming up with a good direction. I suggest that you take a look at these books, both of which contain many interesting project ideas:

Or just come talk to me. I can suggest something.

Project proposal

A single typed page should be sufficient. Commit to a particular topic, and flesh out how you intend to proceed. I want to get a sense of the scope of your project and what numerical techniques you intend to employ. Be sure to discuss what scientific question(s) your numerical study will attempt to answer.

Oral presentations

The final oral presentation should last no more than 20 minutes. Outline the problem of interest, the goals for the project, and the numerical strategies you've employed. Show us some of your numerical results, even if they are prelimary. Try to give the audience a meaningful interpretation of the data and a sense of how your results do or do not resolve the physics propblem you set out to investigate.

Final report

The final report should be type-written (in LaTeX, prefereably) and 15 to 25 pages in length, including figures and references. I have provided a template file that lays out the following structure:

These section headings are just a suggestion. You are free to organize your report as you see fit, so long as it adequately addresses each of these key areas: the motivation and background to the problem, the assumptions underlying the physical modelling, the choice and suitability of the numerical technique(s), the details of the C++ implementation, what tests were carried out to verify the code, and what the final results mean.

The report will be judged in part on the clarity of writing and presentation of data. I will also be looking for evidence that the numerical work was carried out carefully and that the reported results are reliable. In other words, I expect to see something along these line: benchmark results matched against solvable cases, a systematic characterization of the errors, a stability analysis, etc.

The report and the program(s) you've written should be made available to me in the public_html directory of your AICT-provided storage space. (The projects are generally too big to send as an email attachment.) Please bundle everything in a single archive named project580.tar.gz. Along with the report (in pdf format), be sure to submit your C++ code (either well-commented or accompanied by an explanatory document). And be absolutely certain that I will be able to compile and run it.

If you haven't yet activated your AICT home page, follow the instructions below, replacing kbeach with your own CCID.

$ ssh kbeach@gpu.srv.ualberta.ca
> mkdir public_html
> fs setacl ~kbeach system:anyuser l
> fs setacl public_html system:anyuser read
> exit
Connection to gpu.srv.ualberta.ca closed.
$ scp project580.tar.gz kbeach@gpu.srv.ualberta.ca:public_html/

The last step, copying your file to public_html, can also be accomplished via sambda or ftp. See here for details. Simply notify me when the file is online.