Simulation Methods in Physics I WS 2016/2017

From ICPWiki
Jump to navigation Jump to search


Lecture (2 SWS) and Tutorials (2 SWS)
Prof. Dr. Christian Holm
Course language
Location and Time
Lecture: Thu, 14:00 - 15:30; ICP, Allmandring 3, Seminar Room (room 01.079)
Tutorials: tba.
We expect the participants to have basic knowledge in classical and statistical mechanics, thermodynamics, and partial differential equations, as well as knowledge of a programming language (Python and C).

The lecture is accompanied by hands-on tutorials which will take place in the CIP-Pool of the ICP, Allmandring 3 (room 01.033). They consist of practical exercises at the computer such as small programming tasks, simulations, visualization and data analysis. The tutorials build upon each other, therefore continuous attendance is expected.



The first part of the course intends to give an overview about modern simulation methods used in physics today. The focus of the lecture will be to introduce different approaches to simulating a problem, hence we will not go too to deep into specific details but rather try to cover a broad range of methods. In more detail, the lecture will consist of:

Molecular Dynamics
The first problem that comes to mind when thinking about simulating physics is solving Newtons equations of motion for particles with given interactions. From that perspective, we first introduce the most common numerical integrators. This approach quickly leads us to Molecular Dynamics (MD) simulations. Many of the complex problems of practical importance require us to take a closer look at statistical properties, ensembles and the macroscopic observables.
The goal is to be able to set up and run real MD simulations for different ensembles and understand and interpret the output.
Error Analysis
Autocorrelation, Jackknifing, Bootstrapping
Monte Carlo Simulations
Since their invention, the importance of Monte Carlo (MC) sampling has grown constantly. Nowadays it is applied to a wide class of problems in modern computational physics. We want to present the general idea and theory behind MC simulations and show some more properties using simple toy models such as the Ising model.
Critical exponents
Finite-size scaling, universality concept, how to determine critical exponent with lattice spin models

Course Material

Date Subject Resources Remarks
2016-10-20 Course Content, Organization, Introduction
2016-10-27 MD: Integrators
2016-11-03 Basics of Statistical Mechanics
2016-11-10 MD: Potentials, Units
2016-11-17 MD - continued
2016-11-24 PBC, cell-lists, Observables
2016-12-01 RDF, D, Brownian motion
2016-12-08 Green-Kubo, Langevin Dynamics, Thermostats
2016-12-15 Error Analysis
2016-12-22 B.Sc. / M.Sc. thesis @ ICP: information & research topics Slides
2017-01-12 Thermostats, Barostats
2017-01-19 Monte-Carlo Method
2017-01-26 Monte-Carlo and Critical Phenomena
2017-02-02 Finite Size Scaling
2017-02-09 Binder Parameters


A preliminary version of the script can be downloaded here (929 kB).

If you find any kind of mistake / error / typo / bad formatting / etc. in the script (you surely will!), please send an email to Johannes Zeman.

Recommended literature

Useful online resources

From Theory to Algorithms, Lecture Notes, (2002).

  • Be careful when using Wikipedia as a resource. It may contain a lot of useful information, but also a lot of nonsense, because anyone can write it.


Location and Time

  • The tutorials take place in the CIP-Pool on the first floor of the ICP (Room 01.033, Allmandring 3) on
  • Michael Kuron's tutorial on 2017-01-26 is cancelled. His tutorial on 2017-02-09 is moved to 2017-02-20 at 10:30.


Topic Deadline Worksheet Further Resources
0. First steps with Linux, Python, and C no submission required pdf.pngWorksheet 0 (269 KB)Info circle.png ipynb.pngPythonTutorial.ipynb (33 KB)Info circle.png (nbviewer), ipynb.pngNumPyTutorial.ipynb (120 KB)Info circle.png (nbviewer).
1. Integrators 2016-11-14 12:00 pdf.pngWorksheet 1 (288 KB)Info circle.png tgz.pngsolar_system.pkl.gz (496 bytes)Info circle.png image_png.pngcannonball_template.png (70 KB)Info circle.png

2. Statistical mechanics and Molecular Dynamics 2016-11-28 12:00 pdf.pngWorksheet 2 (333 KB)Info circle.png tgz.pngTemplates.tar.gz (6 KB)Info circle.png application_pdf.pngCython Introduction (398 KB)Info circle.png

3. Molecular Dynamics and Observables 2016-12-12 12:00 application_pdf.pngWorksheet 3 (326 KB)Info circle.png tgz.pngtemplates.tar.gz (4 KB)Info circle.png

4. Error Analysis, Langevin Thermostat 2017-01-09 12:00 application_pdf.pngWorksheet 4 (233 KB)Info circle.png tgz.pngtemplates.tar.gz (8.63 MB)Info circle.png

5. Other Thermostats, Monte-Carlo extended: 2017-01-30 12:00 application_pdf.pngWorksheet 5 (223 KB)Info circle.png

6. Ising Model and Finite Size Scaling 2017-02-06 12:00 application_pdf.pngWorksheet 6 (226 KB)Info circle.png tgz.pngtemplates.tar.gz (4 KB)Info circle.png

General Remarks

  • For the tutorials, you will get a personal account for the ICP machines.
  • For the reports, we have a nice txt.pnglatex-template.tex (7 KB)Info circle.png.
  • You can do the exercises in the CIP-Pool when it is not occupied by another course. The pool is accessible on all days, except weekends and late evenings.
  • If you do the exercises in the CIP-Pool, all required software and tools are available.
  • If you want to do the exercises on your own computer, the following tools are required. All of these packages should be readily available from your OS distribution, if it is not Windows.
    • Python
    • The following Python packages:
      • IPython
      • NumPy
      • SciPy
      • matplotlib
    • A C compiler (e.g. GCC)
  • We only have experience with Unix/Linux machines. Although most tools will probably also work on Windows, we cannot guarantee it, and we can also not help you to get it running there.


  • The worksheets are to be solved in groups of two or three people. We will not accept hand-in-exercises that only have a single name on it.
  • A written report (between 5 and 10 pages) has to be handed in for each worksheet. We recommend using LaTeX to prepare the report.
  • You have two weeks to prepare the report for each worksheet.
  • The report has to be sent to your tutor via email.
  • Most participants need 50% of the points in the hands-in exercises to be admitted to the oral examination (see Examination for details).

What happens in a tutorial

  • The tutorials take place every week.
  • The new worksheet will be available for download on the days before the tutorial.
  • In the first tutorial after you received a worksheet, the solutions of the previous worksheet will be presented (see below) and the new worksheet will be discussed.
  • In the second tutorial after you received the worksheet, there is time to work on the exercises and to ask questions.
  • You will have to hand in the reports on Monday after the second tutorial.
  • In the third tutorial after you received the worksheet, the solutions will be discussed:
    • The tutor will ask a team to present their solution.
    • The tutor will choose one of the members of the team to present each task.
    • This means that each team member should be able to present any task.
    • At the end of the term, everybody should have presented at least once.




  • Use the existing documentation of Python itself! To get help on the command print, use
 pydoc print
  • Or use the Web browser to read it. Start
 pydoc -p 4242
and visit the page http://localhost:4242


  • first of all, try to use
 pydoc numpy


Running Python on your own computer

If you want to solve the problems on your own computer, you need to install Python along with a few extensions. This works differently depending on your operating system.

Debian und Ubuntu Linux

sudo apt-get update
sudo apt-get install python python-numpy python-scipy \
    python-matplotlib ipython ipython-notebook gcc g++ \
mkdir -p ~/.config/matplotlib
echo 'backend: TkAgg' > ~/.config/matplotlib/matplotlibrc

OpenSUSE Linux

sudo zypper install python python-numpy python-scipy \
    python-matplotlib IPython gcc python-Cython
mkdir -p ~/.config/matplotlib
echo 'backend: TkAgg' > ~/.config/matplotlib/matplotlibrc

Mac OS X

First, install the C compiler:

xcode-select --install
xcodebuild -license accept

Now download and install MacPorts. Next, you can install the Python packages.

sudo port selfupdate
sudo port install python27 py27-numpy py27-scipy \
    py27-matplotlib py27-ipython py27-jupyter py27-cython
sudo port select python python27
sudo port select ipython py27-ipython
sudo port select cython cython27


For Windows, we recommend Anaconda Python, an all-in-one package that includes all required Python modules. You will also need to install a compatible C compiler (Visual Studio 2008 Express Edition and, if you are running 64-bit Windows, Windows SDK 2008 (select "Installation Options", "Developer Tools", "Visual C++ Compilers", "Install the Visual C++ 9.0 Compilers)).


Depending on the module that this lecture is part of, there are differences on how to get the credits for the module:

BSc/MSc Physik, Modul "Simulationsmethoden in der Physik" (36010) and Erasmus Mundus International Master FUSION-EP
  • Obtain 50% of the possible points in the hand-in excercises of this lecture and the second part of the lecture as a prerequisite for the examination (USL-V)
  • 60 min of oral examination (PL)
    • After the lecture "Simulation Methods in Physics II" in summer term (i.e. Summer 2016)
    • Contents: both lectures and the excercises of "Simulation Methods in Physics I"
International MSc Physics, Elective Module "Simulation Techniques in Physics I, II" (240918-005)
  • Obtain 50% of the possible points in the hand-in excercises of this lecture as a prerequisite for the examination
  • 30 min of oral examination (PL) about the lecture and the excercises
BSc/MSc SimTech, Modul "Simulationsmethoden in der Physik für SimTech I" (40520)
  • Obtain 50% of the possible points in the hand-in excercises of this lecture as a prerequisite for the examination (USL-V)
  • 40 min of oral examination (PL) about the lecture and the excercises
MSc Chemie, Modul "Simulationsmethoden in der Physik für Chemiker I" (35840)
  • The marks for the module are the marks obtained in the excercises (BSL)

C++ Course

The Computer Science department is offering a week-long C++ course at the end of this semester. We recommend all students that plan on participating the Advanced Simulation Methods lecture in summer semester 2018 to take this course. We also recommend it to all students that are considering doing a master's or bachelor's thesis at the ICP. Current bachelor students might be able to take this course as Schlüsselqualifikation -- but please contact the organizing Professor beforehand to ensure that this is actually the case. Master students will be able to take this course as One Course (2 SWS) in an Application Field of Simulation Methods as part of the Fortgeschrittene Simulationsmethoden (Schwerpunkt) module, pending a change of the Modulhandbuch. Note that even current bachelor students can already take the course in 2017 if they intend to enroll in the master programme (starting in fall 2017) and take Advanced Simulation Methods (in summer 2018). All students will need to present their _Schein_ at the Advanced Simulation Methods exam in order to prove that they successfully participated in the C++ course and completed all required exercises.