You're not currently signed in.

# Numerical Methods for Partial Differential Equations

## CS555 :: Spring 2024

Are you interested in the numerical approximation of solutions to partial differential equations? Then this course is for you!

The course covers roughly three topics: the fundamentals of finite difference approximations, an introduction to finite volume schemes, and comprehensive look at finite element methods.

The course involves several assignments (usually bi-weekly) and a final project that we develop over the semester, culminating in a presentation. There is also a strong participation grade based on handouts and other in-class tasks. The tentative grade breakdown is:

• Homework 50
• Final Project 40
• Handouts/in-class activities 10 (we will be clear about these -- not all will be handed in)

This will be finalized in the first week of class.

The course assignments and examples in class will be in Python.

## Lectures

Recorded Lectures: mediaspace.illinois.edu

Lecture Date Topic
01-17 About the course, classifying PDEs, survey of methods
• Book Chapter 1
01-22 Finite differencing for time dependent problems
01-24 Convergence theory, Stability
01-29 Stabilty, dispersion, and dissipation
01-31 Dispersion, and dissipation
02-05 Conservation laws, finite volume methods
02-07 Finite Volume Methods
02-12 Godunov Schemes
02-14 Higher resolution and slope limiting
02-19 Weak derivatives
02-21 Projections and weak problems
02-26 Weak forms, Ritz-Galerkin, existence and uniqueness
02-28 Finite element assembly
03-04 Finite element interpolant, approximation property
03-06 Various FE methods, from least-squares to Galerkin
03-11
• Spring Break
03-13
• Spring Break
03-18 Finite element assembly in 2D
03-20 Finite element assembly in 2D
03-25 Introduction to Functional Anaylsis
03-27 An outline of theory, Lax-Milgram, and more
04-01 Back to DG
04-03 more DG
04-08 Least-squares finite elements
04-10
• Least-squares FE
04-15
• Mixed order FE
04-17
04-22 Presentations, day 0
04-24
• Presentations, day 1
04-29
• Presentations, day 2
05-01
• Presentations, day 3
05-02

## Homework

• Homework 1, Due Wednesday February 7, 6pm.
• Homework 2, Due Friday February 23, 6pm.
• Homework 3, Released Wednesday February 28. Due Friday March 8, 6pm.
• Homework 4, Released Wednesday February March 20. Due Monday April 1st, 11am.

Guidelines and files:

• Homework Submission: All homework must be typeset using LaTeX. Use the provided templates to get started, available at homework-netid-N.tex or overleaf project.
• Figures: Make sure all figures are clearly labeled with axes, titles, legends, and captions. Each figure must be referenced and discussed within your text for full credit.
• Originality: Your submitted code and figures must be your own. If you use someone else's work, you must cite it.
• Code-Based Problems: To receive points for problems involving code, your code must reproduce the reported figures and data. No points will be awarded for the Codes that do not generate the reported results.
• Debugging Efforts: If you encounter issues that prevent your code from working as expected, detailed descriptions of your debugging attempts can earn you partial credit.

## Final Project

The goal of the final project is to develop your own mini app -- a short computational example of some phenomenon in numerical PDEs. This can be related to any of the topics covered, from finite differencing to finite volume methods to finite element methods. An overarching goal of your mini app is to educate your peers on some nuanced aspect of the topics we have covered (or have skipped).

Your deliverables for the project will be a functioning Jupyter notebook, with an embeddeed description, discussion, and guide for the audience. In addition, you will present an overview of up to five minutes (with slides).

The mini app should rely only on standard Python, along with numpy, scipy, and matplotlib. If you strongly feel that you should use additional packages, please obtain prior approval.

The rubrics for the mini app are as follows.

SP, Statement of problem

• What is the problem that you are looking at? What is the is point of the the mini app? What interesting aspect of numerical PDEs does your mini app highlight?
• Is the problem clear? Have you provided enough background information for the audience to follow?

ID, Implementation details

• Is your example well documented?
• Is your mini app reproducible with minimal effort?
• What details are needed to understand the implementation?
• Is your Python code style clean and Pythonic? (see for example, The Zen of Pytyhon, https://peps.python.org/pep-0020/)

R, Results

• Do your results highlight the overarching goal of your mini app?
• What do you observe for this problem and discretization, for example?
• Are your results clear? Do you label important details? Do you use relevant and consistent color schemes?
• Carefully select which visualizations to show. We do not need to see everything, only figures that highlight some aspect of the goal of your mini app.

C, Reflections

• What did you learn? What worked, what needs improvement, what are the next steps or future directions?
• Provide a list of future directions at the end of your app -- what could be looked at next and what are some of the limitations of your implementation?

Slides should focus on

• (3) Do you have a clear summary and goals of your miniapp?
• (2) Do you provide a sufficient level of detail in showing off your mini app?
• (2) Do you highlight a few (but not all) of the results in your mini app?
• (3) Is your presentation practiced and on time? Is your slide deck of high quality?
project step description points due
project 0 idea 2 3/20 6pm
project 1 outline 2 3/22 6pm
project 2 results 2 4/2 11am
project 3 results 3 4/8 11am
project 4 mini app (notebook) 20 4/15 11am F 4/19 5pm
project 5 slides 10 4/21 6pm 4/21 10pm
project 6 pick a license 1 Sunday 5/5 6pm
total 40

Code details.

• The code should be your own. If you use someone else's function or module, then it should be clearly attributed and the license should conform to your license.
• License. Ideally it would be useful if your mini app is released as open source.
• Your notebook should be named miniapp_topic.ipynb. No spaces or dashes.

# COVID and Attendance

While face coverings are not required in classrooms (current as of 12/20/2023) we fully support your decision to wear one if you wish.

If you test positive for COVID, then you should not attend class.

If you have any cold-like symptoms or do not feel well, then you should not attend class, regardless of testing negative or positive for COVID.

In either case, your missed attendance due to illness will not impact your grade in the course and we will work with you to cover the material missed in class (via Zoom).