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:
- Arkady Gonoskov, arkady.gonoskov@physics.gu.se, +46702085694, visiting address: Origovägen 6 B, floor 3, room 3046
-
Christophe Demaziere, demaz@chalmers.se, +46317723082
Teaching assistant:
- Christoffer Olofsson, christoffer.olofsson@physics.gu.se
Course purpose
The course concerns computational methods applied to determining dynamics and properties of continuous systems, such as fluids, gases, electromagnetic fields, and plasmas. 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
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
On successful completion of the course the student will be able to:
Knowledge and understanding
- Explain and use finite-difference methods (FDMs) for discretization of partial differential equations.
- Explain and use finite-integral techniques for discontinuous systems, such as those permitting shock waves.
- Explain and use the time 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.
- Explain and deal with advanced computational concepts for multi-physics problems in plasma, quantum and nuclear physics.
Competence and skills
- Able to plan and conduct numerical studies for continuous systems using Python/C/C++.
- Analyze, construct and use FDMs for solving evolutionary and stationary problems in continuum physics.
Judgement and approach
- Assess time and space step requirements, accuracy order, stability conditions, as well as identify and combat numerical artifacts, such as numerical dispersion and violation of conservation laws.
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. Extra points 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. To pass the course students are required to get at least 10 points for each of three modules.
The final grade is determined according to the following table:
percent of points | ECTS scale | Chalmers scale | GU scale |
80 | 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 |
---|---|---|