Course syllabus

Course syllabus

TIF330 / FYM330 Computational continuum physics lp4 (7.5 hp)

The course is offered by the department of Physics

Contact details

Lecturers and examiners:

Teaching assistants:

Course purpose

The course is devoted to computational methods for continuum systems, such as fluids and gases, electromagnetic fields, and plasmas. The methods in question concern the possibilities of determining dynamics and properties of such systems. The course includes lectures and exercises for reaching understanding of the methods themselves, the underlying principles and ideas, as well as the limitations and subtleties needed for successful use and further development of numerical approaches. The course includes the practice of using Python, Matlab and basic elements of C++.

Schedule

TimeEdit

Course literature

The main course literature is provided through the course lecture notes.

The following literature may be found useful.

Programming practice:

  • Introduction to Numerical Programming, A Practical Guide for Scientists and Engineers Using Python and C/C++, Titus Adrian Beu
  • A Primer on Scientific Programming with Python by Langtangen, Hans Petter
  • The C Programming Language, by Brian W. Kernighan and Dennis M. Ritchie
  • C++ Primer by Stanley B. Lippman  (Author), Josée Lajoie  (Author), Barbara E. Moo

Finite difference methods:

  • Computational physics, Richard Fitzpatrick
  • Computational Physics, Mark Newman

Spectral methods:

  • Spectral methods and their applications, Guo Ben-Yu
  • Chebyshev and Fourier Spectral Methods, John P. Boyd

Compound methods:

  • Computational physics, J. M. Thijssen
  • Plasma Physics via computer simulation, C. K. Birdsall, A. B. Langdon
  • Computational physics, Richard Fitzpatrick

Course design

The course is divided into three main blocks, each containing activities and examination: (1) finite difference methods, (2) spectral/compound methods and (3) solving large systems of linear and non-linear equations. The lectures are focused on deriving the methods from basic ideas, which is followed by the analysis of practical limitations and of the further improvements. The students get training by applying the presented theory elements in exercises and homework problems. An important part is practical training of carrying out computations using a set of given problems within projects throughout the course.

The exercises will include programming practice in Python, C++ and Matlab. The guidance for arranging workflows will be given during the course. The students are welcome to communicate with teachers via Canvas, e-mails and discussions during lectures and practical sessions.

Learning objectives and syllabus

Learning objectives:

  • Explain and use finite-difference methods (FDMs) for discretization of partial differential equations
  • Assess time and space step requirements, accuracy order, stability conditions, as well as identify and combat numerical artefacts, such as numerical dispersion and violation of conservation laws
  • Analyze, construct and use FDMs for solving evolutionary and stationary problems in continuum physics
  • Explain and use finite-integral techniques for discontinuous systems, such as those permitting shock waves
  • Explain and use the times step splitting technique, as well as concepts of spectral methods, including the Ritz method, the Galerkin method, Fourier-based methods and the finite-element methods
  • Understand and deal with advanced computational concepts for multi-physics problems in plasma, quantum and nuclear physics
  • Able to plan and conduct numerical studies, including the development and validation of computational schemes in Python/C/C++

Examination form

For each of the first two blocks of the course the examination is arranged via a single problem set that includes two analytical problems and one practical assignment on implementing and applying numerical methods using Python and C++. Students are allowed to work in groups of up to two students that they are encourage to form by themselves. The formed groups are to be reported via Canvas. For each problem set each group is required to submit a single report (pdf file) that includes solutions of analytical problems, the results of practical assignments and the implemented computer programs. For the practical assignments the students will receive individual feedback and a possibility of one optional resubmission in the end of the course (the due date will be announced). The grades for each of the first two problem sets will be released 15 working days after the respective due date. An extra point can be earned during some of the labs for computing the correct answer on the first try. The examination for third block is arranged via a set of assignments using Matlab grader. The students need to attend all the activities to get particular instructions. All examination parts will be graded in order to achieve the final grade.

The final grade is determined according to the following table:

percent of points ECTS scale Chalmers scale GU scale
LaTeX: \ge80 A 5 VG
70 - 79 B 4 VG
60 - 69 C 4 G
50 - 59 D 3 G
40 - 49 E 3 G
< 40 F U U

Links to the course page on student portals

Course summary:

Date Details Due