Course

Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python

Ludwig-Maximilians-Universität München (LMU)

Explore the practical application of numerical methods in solving partial differential equations using Python with this comprehensive course. Delve into finite-difference, pseudospectral, and linear finite-element methods, and gain insights into the mathematical derivations, computational algorithms, and visualization of results. The course emphasizes the fundamental mathematical components of the various numerical methods, including Taylor series, Fourier series, differentiation, function interpolation, and numerical integration, and provides strategies for ensuring the correctness of solutions through benchmarking and convergence tests.

Throughout the course, you will be introduced to wave physics, discretization, meshes, parallel programming, and computing models, offering a broad understanding of the methodologies widely used in natural sciences, engineering, economics, and other fields.

  • Discover how to solve partial differential equations using the finite-difference, pseudospectral, or linear (spectral) finite-element method.
  • Understand the limitations of explicit space-time simulations and learn about spatial and temporal sampling requirements.
  • Gain strategies for planning and setting up sophisticated simulation tasks and avoiding errors in simulation results.

Certificate Available ✔

Get Started / More Info
Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python
Course Modules

This course spans nine modules, covering practical numerical methods using Python to solve partial differential equations. It includes detailed explorations of finite-difference, pseudospectral, and linear finite-element methods, as well as strategies for accurate simulations.

Week 01 - Discrete World, Wave Physics, Computers

Week 01 of the course provides a general introduction to the discrete world, wave physics, and computers. You will gain insights into spatial scales, meshing, and the basics of waves in a discrete world. The module also covers parallel simulations and offers an overview of wave physics and Python usage in Jupyter notebooks.

Week 02 The Finite-Difference Method - Taylor Operators

Week 02 focuses on the finite-difference method and Taylor operators. You will delve into the definitions and applications of Taylor series, and explore Python implementation for first and high-order derivatives. The module emphasizes the use of Taylor series and finite differences in numerical methods.

Week 03 The Finite-Difference Method - 1D Wave Equation - von Neumann Analysis

Week 03 delves into the finite-difference method applied to the 1D wave equation, accompanied by von Neumann analysis. The module covers the algorithm, boundaries, sources, and initialization, along with analytical solutions and von Neumann analysis. It also includes practical exercises for acoustic waves in 1D.

Week 04 The Finite-Difference Method in 2D - Numerical Anisotropy, Heterogeneous Media

Week 04 extends the finite-difference method to 2D, exploring numerical anisotropy and heterogeneous media. You will learn about finite-difference algorithms, von Neumann analysis, and the application of staggered grids for improving numerical accuracy in 2D acoustic wave equations.

Week 05 The Pseudospectral Method, Function Interpolation

Week 05 introduces the pseudospectral method and function interpolation. You will explore Fourier series, the discrete Fourier transform, and solving the 1D/2D wave equation with Python. The module also covers convolutional operators, Chebyshev polynomials, and their applications in numerical methods.

Week 06 The Linear Finite-Element Method - Static Elasticity

Week 06 focuses on the linear finite-element method and its application to static elasticity problems. You will delve into the weak form, Galerkin principle, solution schemes, boundary conditions, and relaxation methods for solving static elasticity using Python.

Week 07 The Linear Finite-Element Method - Dynamic Elasticity

Week 07 extends the linear finite-element method to dynamic elasticity problems. The module covers solution algorithms, differentiation matrices, Python implementation for 1D elastic wave equations, h-adaptivity, and shape functions. It provides a comprehensive exploration of finite elements in dynamic elasticity.

Week 08 The Spectral-Element Method - Lagrange Interpolation, Numerical Integration

Week 08 introduces the spectral-element method, focusing on Lagrange interpolation and numerical integration. You will gain insights into weak form, matrix formulation, element level operations, Lagrange interpolation, and numerical integration using Python. The module provides a deep understanding of the spectral-element method.

Week 09 The Spectral Element Method - 1D Elastic Wave Equation, Convergence Test

Week 09 concludes the course with an in-depth exploration of the spectral-element method, covering Lagrange derivative, legendre polynomials, system of equations, and global assembly. The module also includes practical exercises for 1D homogeneous and heterogeneous cases, and convergence testing for the spectral-element method.

More Research Methods Courses

Lean Six Sigma

Tecnológico de Monterrey

This Lean Six Sigma course equips participants with the skills to tackle quality issues and process inefficiencies using a blend of statistical tools and Lean principles....

Introducing Cellular Automata

Coursera Project Network

Introducing Cellular Automata: Explore the wonders of Cellular Automata through hands-on guided projects using Golly and NetLogo for modeling and simulations.

Plant Bioinformatics Capstone

University of Toronto

Plant Bioinformatics Capstone is a comprehensive course that delves into using online tools to hypothesize the biological role of genes in plants, culminating in...

Storytelling with Kumu

Coursera Project Network

Storytelling with Kumu allows you to create an interactive relationship map about physicist and philosopher David Bohm using Kumu's Advanced Editor and Presentation...