MATH 578: Numerical Partial Differential Equations



Time and Place: MWF 1400 - 1450, DSH-318
Instructor: Jehanzeb H. Chaudhry (Zeb), jehanzeb@unm.edu, www.math.unm.edu/~jehanzeb
Office Hours: Tuesday: 1100 - 1200, Thursday: 1100 - 1300 (SMLC 310)


Texts Recommended (not required):

Other recommended texts:

* Finite Difference Methods

* Finite Volume Methods

* Finite Element Methods


Prerequisites: Math 463/513, Math 504, Math 505

Course Description:   This course covers the basics of finite difference schemes, finite volume schemes, and finite element methods. Additional topics (e.g. a posteriori error estimation, discontinuous Galerkin methods, etc) may be covered based on student interest and time constraints. 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, be comfortable with differential equations, and have some coding experience. We'll be covering numerical methods for parabolic, hyperbolic and elliptic equations. We'll discuss the mathematical background of the numerical methods as well as its implementation.


Computation

*Programming Languages

Python is the preferred programming language for this course. You may also use C++. If you want to use another programming language, please talk to me to figure out its utility for completeing the homeworks. While theoretically, any programming language (or a computing environment like MATLAB) may be used for this course, however some of the later finite element homeworks will be much easier in Python (or C++). Python has a very gentle learning curve, so you should feel at home even if you've never done any work in Python.

*Jupyter Notebooks and Python

I'll be using Jupyter Notebook with Python for the examples in class. The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. The in-class examples will use the Matplotlib library for plotting and displaying graphics.

Jupyter Noteboook, though sufficient for this course, does not have the best interface. The recently developed JupyterLab enables you to work with documents and activities such as Jupyter notebooks, text editors, terminals, and custom components in a flexible, integrated, and extensible manner.

*Jupyter Notebooks, Python and Numpy Help


*FEniCS

We'll be using the Finite Element package Dolfin from the FEniCS Project for the second half of the course.


*Computing Environment and Virtual Machine

I expect all of you to be able to setup a working python envrionment with Jupyter Notebook and be able to run FEniCS using the instrustions on the project websites. However, if you run into difficulty, the following virtualbox VM image will work out of the box. Virtual Box Image Username: mathgeeks Password: abc123

Grading:  
45% Homework
45% Projects
10% Participation

Homeworks:


Projects:

Midterm Project has been posted on UNM Learn
Final Project has been posted on UNM Learn

Syllabus PDF   Syllabus Jupyter Notebook   (View using nbviewer or downloading it locally on your machine and running Jupyter notebooks)


Sample files/ Class Examples

Numpy matplotlib notebook  
1D Poisson Finite Difference Example  
Heat equation using Finite Difference  
Heat equation using Method of Lines  
1D Poisson's equation using FEM  
1D Poisson's equation using Fenics. Download the mesh file and run as: python3 1d_fem_dolfin.py.   1D Mesh.   Use this software to view the output.