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.