Numerical Methods for Partial Differential Equations (CS 555) Spring 2020
|Time/place||Wed/Fri 11:00am-12:15pm 1304 Siebel / Catalog|
|Live lecture||Participate » (requires password) · Backup: Twitch Stream|
|Class recordings||Watch » · Alternate, prior to spring break: Echo 360|
|Office Hours||Participate » (Please use Chrome/Chromium to connect for now)|
- Homework 1 (due Feb 7)
- Homework 2 (due Feb 26)
- Homework 3 (due March 13)
- Homework 4 (due April 15)
- Homework 5 (due May 6)
Quizzes and Feedback Form
Why you should take this class
This course covers the basics of finite difference schemes, finite volume schemes, and finite element methods (majority). In addition, we'll cover some advanced topics such as discontinuous Galerkin and spectral methods.
One of the goals of this course is to build intuition for these methods. We'll be using Python and will be providing background for many of the computational and mathematical concepts in the course. As such, you do not need to be an expert in PDEs or in coding. But you should have a course in numerical analysis as your background (CS450 or equivalent), be comfortable with differential equations, and have some coding experience.
The course is divided in roughly two parts: hyperbolic and elliptic. This is of course a generalization, but it does allow us to focus on finite difference/finite volume methods for one part of the course and finite elements for another part. In addition to model problems we'll look at Stokes and other equations in order to develop a full understanding of the methods.
The course involves several homeworks (usually bi-weekly) and two projects: a midsemester project and a final project. There is also a participation grade based on quizzes.
The course homeworks and examples in class will be in Python. In particular, we'll use numpy and scipy.
Office: 3401 Siebel
Note: the section headings in this tree are clickable to reveal more detail.
- Notes (unfilled, with empty boxes)
- About the Class
- Classifcation of PDEs
- Preliminaries: Differencing
- Interpolation Error Estimates (reference)
- Demo: Elliptic PDE Illustrating the Maximum Principle
- Demo: Elliptic PDE Radially Symmetric Singular Solution
- Demo: Finite Differences vs Noise
- Demo: Finite Differences
- Demo: Floating point vs Finite Differences
- Demo: Hyperbolic PDE
- Demo: Interpolation Error
- Demo: Parabolic PDE
- Demo: Taking Derivatives with Vandermonde Matrices
Finite Difference Methods for Time-Dependent Problems
- 1D Advection
- Stability and Convergence
- Von Neumann Stability
- Dispersion and Dissipation
- A Glimpse of Parabolic PDEs
- Demo: Crank-Nicolson Scheme
- Demo: Dispersion and Dissipation
- Demo: Experimenting with Dispersion and Dissipation
- Demo: Methods for 1D Advection
- Demo: Truncation Error Analysis via sympy
- Demo: Waves and Stability
- Finite Volume Methods for Hyperbolic Conservation Laws
Finite Element Methods for Elliptic Problems
- tl;dr: Functional Analysis
- Back to Elliptic PDEs
- Galerkin Approximation
- Finite Elements: A 1D Cartoon
- Finite Elements in 2D
- Approximation Theory in Sobolev Spaces
- Saddle Point Problems, Stokes, and Mixed FEM
- Non-symmetric Bilinear Forms
- Demo: 2D FEM Using Firedrake
- Demo: 2D Stokes Using Firedrake
- Demo: Bad Discretizations for 2D Stokes
- Demo: Developing FEM in 1D
- Demo: Developing FEM in 2D
- Demo: Rates of Convergence
- Discontinuous Galerkin Methods for Hyperbolic Problems
These scribbled PDFs are an unedited reflection of what we wrote during class. They need to be viewed in the context of the class discussion that led to them. See the lecture videos for that.
If you would like actual, self-contained class notes, look in the outline above.
These scribbles are provided here to provide a record of our class discussion, to be used in perhaps the following ways:
- as a way to cross-check your own notes
- to look up a formula that you know was shown in a certain class
- to remind yourself of what exactly was covered on a given day
By continuing to read them, you acknowledge that these files are provided as supplementary material on an as-is basis.
We will be using Python with the libraries numpy, scipy and matplotlib for assignments. No other languages are permitted. Python has a very gentle learning curve, so you should feel at home even if you've never done any work in Python.
Virtual Machine Image
While you are free to install Python and Numpy on your own computer to do homework, the only supported way to do so is using the supplied virtual machine image.
Books and Source Material
Once you sign in and complete your enrollment in RELATE, you will gain access to a draft textbook that was made available by Luke Olson.
Supplementary Text Books
Previous editions of this class
- Python tutorial
- Facts and myths about Python names and values
- Dive into Python 3
- Learn Python the hard way
- Project Euler (Lots of practice problems)
- Introduction to Python for Science
- The SciPy lectures
- The Numpy MedKit by Stéfan van der Walt
- The Numpy User Guide by Travis Oliphant
- Numpy/Scipy documentation
- More in this reddit thread
- Spyder (a Python IDE, like Matlab) is installed in the virtual machine. (Applications Menu > Development > Spyder)
- An introduction to Numpy and SciPy
- 100 Numpy exercises