Course 18.336: Numerical Methods for Partial Differential Equations
(Spring 2009)

Department of Mathematics
Massachusetts Institute of Technology

Information


Policy

The grading will be based on homework exercises and a project. There are no exams in this course.


Outline

This course addresses graduate students of all fields who are interested in numerical methods for partial differential equations, with focus on a rigorous mathematical basis. Many modern and efficient approaches are presented, after fundamentals of numerical approximation are established. Of particular focus are a qualitative understanding of the considered partial differential equation, fundamentals of finite difference, finite volume, finite element, and spectral methods, and important concepts such as stability, convergence, and error analysis.

Schedule

DayDateLecturesHomework
NrTopicReadingOutDue
Tue02/03 1Fundamental concepts & examplesEvans
Thu02/05 2Well-posedness & Fourier methods for linear initial value problemsEvans
Tue02/10 3Laplace and Poisson equationEvans
Thu02/12 4Heat equation, transport equation, wave equationEvans1project proposal
Thu02/19 5General finite difference approach & Poisson equationLeVeque2007
Tue02/24 6Elliptic equations & errors, stability, Lax equivalence theoremLeVeque2007
Thu02/26 7Spectral methodsTrefethen21
Tue03/03 8Fast Fourier transform (guest lecture by Stephen Johnson)
Thu03/05 9Spectral methodsTrefethen
Tue03/1010Elliptic equations and linear systemsLeVeque2007
Thu03/1211Efficient methods for sparse linear systems: MultigridLeVeque200732
Tue03/1712Efficient methods for sparse linear systems: Krylov methodsLeVeque2007
Thu03/1913Ordinary differential equationsLeVeque2007 midterm report
03/23-03/27Spring break
Tue03/3114Stability for ODE & von Neumann stability analysisLeVeque2007
Thu04/0215Advection equation & modified equationLeVeque200243
Tue04/0716Advection equation & ENO/WENOLeVeque2002
Thu04/0917Conservation laws: theoryLeVeque2002
Tue04/1418Conservation laws: numerical methodsLeVeque2002
Thu04/1619Conservation laws: high resolution methodsLeVeque200254
04/20-04/21Patriot's vacation
Thu04/2320Operator splitting, fractional steps
Tue04/2821Systems of IVP, wave equation, leapfrog, staggered gridsnotes (below)
Thu04/3022Level set methodnotes (below)
Tue05/0523Navier-Stokes equation: finite difference methodsFletcher, Canuto
Thu05/0724Navier-Stokes equation: pseudospectral methodsFletcher, Canuto 5
Tue05/1225Particle methods
Thu05/1426Project presentations final report
Sat05/16 Project presentations

Additional Materials


Matlab Programs

Many more great Matlab programs can be found on the Computational Science and Engineering web site.
  • Four linear PDE solved by Fourier series: mit18086_linpde_fourier.m
    Shows the solution to the IVPs u_t=u_x, u_t=u_xx, u_t=u_xxx, and u_t=u_xxxx, with periodic b.c., computed using Fourier series. The initial condition is given by its Fourier coefficients. In the example a box function is approximated.
  • Compute stencil approximating a derivative given a set of points and plot von Neumann growth factor: mit18086_stencil_stability.m
    Computes the stencil weights which approximate the n-th derivative for a given set of points. Also plots the von Neumann growth factor of an explicit time step method (with Courant number r), solving the initial value problem u_t = u_nx.
    Example for third derivative of four points to the left:
    >> mit18086_stencil_stability(-3:0,3,.1)
  • Error convergence for the 1d Poisson equation: mit18336_poisson1d_error.m (CSE)
    Sets up a sequence of 1d Poisson problems, and plots the error convergence on log-log scale.
  • Chebyshev differentiation matrix and grid: cheb.m
    [D,x] = cheb(N)
    (from Spectral Methods in MATLAB by Nick Trefethen).
  • Spectral differentiation on a periodic domain: p4.m (using matrices), p5.m (using FFT)
    (from Spectral Methods in MATLAB by Nick Trefethen).
  • Sets up and solves a sparse system for the 1d, 2d and 3d Poisson equation: mit18086_poisson.m (CSE)
    Sets up a sparse system by finite differences for the 1d Poisson equation, and uses Kronecker products to set up 2d and 3d Poisson matrices from it. The systems are solved by the backslash operator, and the solutions plotted for 1d and 2d.
  • Computes the LU decomposition of a 2d Poisson matrix with different node ordering: mit18086_fillin.m (CSE)
    Sets up a 2d Poisson problem and computes the LU decomposition of the system matrix, firstly with lexicographic ordering, then with red-black ordering and then with symamd ordering.
  • Demo for elimination with reordering: moe.m
    Visulizes elimination with various reordering methods for a 2d Poisson problem. Reordering methods are reverse Cuthill-McKee, minimum degree, symamd, and nested dissection.
  • Computes the incomplete LU factorization of a 2d Poisson matrix for different tolerances: mit18086_ilu.m (CSE)
    Sets up a 2d Poisson problem and computes the LU factorization and the incomplete LU factorization for different tolerances. Run times, condition numbers and nonzero pattern are plotted for comparison.
  • Smoothing and convergence for Jacobi and Gauss-Seidel iteration: mit18086_smoothing.m (CSE)
    Sets up a 1d Poisson problem with an oscillatory right hand side and applies Jacobi and Gauss-Seidel iteration to it. One can observe how the error gets smoothed very quickly, but the actual convergence to the correct solution is very slow.
  • Multigrid solver for 1d Poisson problem: mit18086_multigrid.m (CSE)
    Sets up a 1d Poisson test problem and solves it by multigrid. The method uses twogrid recursively using Gauss-Seidel for smoothing and elimination to solve at coarsest level. The number of pre- and postsmoothing and coarse grid iteration steps can be prescribed.
  • Conjugate gradient method for 2d Poisson problem: mit18086_cg.m (CSE)
    Sets up a 2d Poisson problem and solves the arising linear system by a conjugate gradient method. The error over iteration steps is plotted.
  • Finite differences for the one-way wave equation, additionally plots von Neumann growth factor: mit18086_fd_transport_growth.m (CSE)
    Approximates solution to u_t=u_x, which is a pulse travelling to the left. The methods of choice are upwind, downwind, centered, Lax-Friedrichs, Lax-Wendroff, and Crank-Nicolson. For each method, the corresponding growth factor for von Neumann stability analysis is shown.
  • Nonlinear finite differences for the one-way wave equation with discontinuous initial conditions: mit18086_fd_transport_limiter.m (CSE)
    Solves u_t+cu_x=0 by finite difference methods. Of interest are discontinuous initial conditions. The methods of choice are upwind, Lax-Friedrichs and Lax-Wendroff as linear methods, and as a nonlinear method Lax-Wendroff-upwind with van Leer and Superbee flux limiter.
  • Finite differences for the wave equation: mit18086_fd_waveeqn.m (CSE)
    Solves the wave equation u_tt=u_xx by the Leapfrog method. The example has a fixed end on the left, and a loose end on the right.
  • Level set method for front propagation under a given front velocity field: mit18086_levelset_front.m (CSE)
    Uses the level set method with reinitialization to compute the movement of fronts under a given velocity field.
  • Finite differences for the incompressible Navier-Stokes equations in a box: mit18086_navierstokes.m (CSE)
    Solves the 2D incompressible Navier-Stokes equations in a rectangular domain with prescribed velocities along the boundary. The standard setup solves a lid driven cavity problem.
    This Matlab code is compact and fast, and can be modified for more general fluid computations. You can download a Documentation for the program.
  • Spectral methods for the incompressible Navier-Stokes equations on a torus: mit18336_spectral_ns2d.m (CSE)
    Solves the 2D incompressible Navier-Stokes equations in vorticity/stream function formulation on the torus, using spectral methods.

Homework Problem Sets

How to submit your solutions:

Course projects

Every student works on a project over the course of the semester.
List of projects:

Project Presentations

The projects will be presented on the Computational Saturday, May 16th, 2009, from 9:40am to 2:35pm, in 2-142.
The Program for the Computational Saturday can be downloaded here.
MIT Copyright © 2009 Massachusetts Institute of Technology