Overview of course material: Computational Physics

Morten Hjorth-Jensen [1, 2]

[1] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University, USA
[2] Department of Physics, University of Oslo, Norway

The teaching material is produced in various formats for printing and on-screen reading.

Warning.

The PDF files are based on LaTeX and have seldom technical failures that cannot be easily corrected. The HTML-based files, called "HTML" and "ipynb" below, apply MathJax for rendering LaTeX formulas and sometimes this technology gives rise to unexpected failures (e.g., incorrect rendering in a web page despite correct LaTeX syntax in the formula). Consult the corresponding PDF files if you find missing or incorrectly rendered formulas in HTML or ipython notebook files.

Computational Physics Notes

Introduction to computational physics

Introduction to programming

How to write scientific reports

Matrices and linear algebra

Diagonalization and eigenvalue problems

How to optimize your code, from compiler flags to vectorization and parallelization

Object orientation

Numerical integration

Introduction to Monte Carlo methods

Brownian motion and randow walks

Statistical physics

Quantum mechanical systems

Ordinary differential equations

Partial differential equations

Summary of course

Teach yourself C++

Projects Spring 2018

Project 1, deadline February 5

Project 2, deadline March 5

Project 3, deadline April 2

Project 4 Variational Monte Carlo, deadline May 2

Project 4 Molecular Dynamics and statistical physics, deadline May 2

Project 4 Monte Carlo Modeling of Financial Transactions, deadline May 2

Project 4 Ising Model and Statistical Physics, deadline May 2

Teaching schedule Spring 2018

Week Topics to be covered Projects and deadlines Reading assignments Lab activities
Week 2 Introduction to programming Warm-up exercise Chapters 2 and 3.1 and 3.2 presentation of Git and github
Numerical derivation From lecture notes Installing c++
Week 3 Linear algebra, Gaussian elemination, LU decomposition Project 1, deadline February 5 Sections 2.5, 3.1, 6.3, 6.4 Installing and using Qt
Discussion of pointers and arrays Work on project 1
Week 4 Linear algebra, Gaussian elimination Sections 6.4, 6.5 and 6.6 How to write a good report and more git and Qt stuff
Spline interpolation and iterative methods Discussed during lab sessions Read slides on how to write a report
Week 5 Eigenvalue problems, Jacobi's method Sections 7.1-7.4 Object orientation with examples
Week 6 Jacobi's method and project 2 Project 2, deadline March 5 Finalize project 1
Week 7 Eigenvalue problems and project 2 Sections 7.4-7.5 Work on project 2
Week 8 Eigenvalue problems, Householder's method and power methods Sections 7.4-7.7 Object orientation
Read slides on object orientation and section 3.3 Work on project 2
Week 9 Ordinary differential equations (ODE) Project 3, deadline April 2 Sections 8.1-8.4 Object orientation (OO)
Week 10 Spring break
Week 11 ODE with Runge Kutta methods and object orientation of project 3 Read Sections 8.3-8.6 Work on project 3 and Object orientation (OO)
Week 12 Finalize ODE part. Introduction to Monte Carlo methods Work on project 3
Week 13 Random walks and the Metropolis algorithm Sections 12.1-12.5 Finalize project 3
Discussion of project 4 and statistical mechanics Sections 13.1-13.3 More OO
Week 14 Project 4 and statistical mechanics Project 4, deadline April 27 Sections 13.4-13.7
Week 15 Partial differential equations Parallelization and high-performance computing Sections 10.1-10.2 Work on project 4
Week 16 Partial differential equations Sections 10.1-10.2 Finalize project 4
Week 17 Partial differential equations Sections 10.3-10.4
Summary of course and discussions
Week 18 Finals, Oral exam Thursday May 2, BPS1420

Take the survey

Here are some simple questions about your computing competences, your background and your interests. Hopefully this information will allow us to tailor the course to your interests and background.

Basic Syllabus

The syllabus for this course consists of the lecture notes on the webpage (chapters 2-15) and 4 compulsory projects. The last three projects are graded and count 25% each of the final mark. A final oral exam with a presentation of a chosen project makes up the final 25% of the total grade.

A good text that can be used (with more math plus much material on parallelization) is Parallel Scientific Computing in C++ and MPI, of Karniadakis and Kirby III.

Additional literature

In addition we recommend highly the texts on Numerical Recipes in C++ or Fortran90 by Press et al. The C, F77 and Fortran90 can be downloaded down for free, follow the links at Numerical Recipes.

The program library in C++ and Fortran2008 used in this course is a rewritten version of the Numerical Recipes codes.

Programs in C++, Fortran and Python discussed in lecture notes

All programs are available at the github address of the course