This course starts in the second quartile and continues in the third quartile.
During the course you will have the satisfying experience of writing serious programs and to define and solve relevant and larger mechanical and physical-mechanical problems by yourself. You will be able to compose and develop a variety of advanced algorithms for a number of recurrent problems in engineering, learn to understand and modify bigger programs as well as get first-hand experience in writing efficient, well-documented code. An integral part of the exercises is to apply your codes and to draw conclusions from the numerical results regarding their implications for the problem under study. After this course, the student is able to:
- Develop and write serious computer programs
- Identify and define problems to be solved
- Compose and develop advanced algorithms
- Independently solve complex mechanical and physical problems
- Describe / explain and modify larger programs
- Write efficient and well-documented code
This course explains the basics of various numerical algorithms and methods (such as finite elements, molecular dynamics and image analysis) used every day in mechanical engineering, civil engineering, and physics. The goal is not to use commercial software packages, but to gain a deeper understanding of the methods by implementing them by yourself in Matlab, C or C++. Hence this course will teach you to fully understand all elements of each method and you will gain the essential coding experience. Best practices for debugging and good coding style are also extensively treated in this course. The course consists of both classroom-lectures to explain the basic theory and exercises where the acquired knowledge will be implemented directly on the computer. Several examples will be treated, some of which are related or build upon each other, while others can be done as independent modules. You will have the unique opportunity to treat the same problem using different methods (for example, diffusion can be dealt with by finite differences, finite elements, particle methods and stochastic methods). The ultimate goal is that you are able to compare the different methods and hence become familiar with the strengths and weaknesses of a wide range of numerical methods and approaches. Solution hints, instructions and numerical codes are provided whenever necessary. The course consists of classes lectures spread over the 1B and 2A quarters, with following interactive practice hours. The largest and most time-intensive part of the course is solving the assignments, i.e., the programming part, running the codes, interpreting the output and reporting the results back to the instructors. During interactive solution/seminar hours, the instructors are available for help and questions.
- Motivation and Introduction
- Harmonic Oscillator and Pendulum (ODE)
- Linear Finite Element Method (FEM)
- Non-Linear finite element method
- Linear Molecular Dynamics (MD) for Solids
- Molecular Dynamics (non-linear) for Fluids
- Random numbers and Applications
- Finite Volume Method (FV)
- Smoothed Particle Hydrodynamics (SPH)
- Image analysis
- Using an Arduino (a small computer)
- Further modules on selected topics, depending on the interests of the attending students and the availability of (guest) teachers.
For every assignment, the students hands in his/her code and a report describing the code, the simulation results and their interpretation. The number of ECTS awarded depends on the completed assignments. The final grade is a weighted average of the grades earned for the assignments.