$$\newcommand{\dt}{\Delta t} \newcommand{\tp}{\thinspace .} \newcommand{\uex}{{u_{\small\mbox{e}}}} \newcommand{\x}{\boldsymbol{x}} \newcommand{\dx}{\, \mathrm{d}x} \newcommand{\ds}{\, \mathrm{d}s} \newcommand{\Real}{\mathbb{R}} \newcommand{\uI}{u_{_0}} \newcommand{\ub}{u_{_\mathrm{D}}} \newcommand{\GD}{\Gamma_{_\mathrm{D}}} \newcommand{\GN}{\Gamma_{_\mathrm{N}}} \newcommand{\GR}{\Gamma_{_\mathrm{R}}} \newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

# Solving PDEs in Python - The FEniCS Tutorial Volume I

Hans Petter Langtangen [1, 2]
Anders Logg [3, 1, 4] (logg at chalmers.se)

[1] Center for Biomedical Computing, Simula Research Laboratory
[2] Department of Informatics, University of Oslo
[3] Department of Mathematical Sciences, Chalmers University of Technology
[4] Computational Engineering and Design, Fraunhofer-Chalmers Centre

This book gives a concise and gentle introduction to finite element programming in Python based on the popular FEniCS software library. Through a series of examples, including among others the Poisson equation, the equations of linear elasticity, the incompressible Navier–Stokes equations, and systems of nonlinear advection–diffusion–reaction equations, the reader is guided through the essential steps of how to quickly solve a PDE in FEniCS, including how to define a finite variational problem, how to set boundary conditions, how to solve linear and nonlinear systems, and how to visualize solutions and structure finite element Python programs.

This document is also available in PDF and Sphinx formats.