The Unified Form Language (UFL) is a domain specific language for the
declaration of finite element discretizations of variational forms and
functionals. More precisely, the language defines a flexible user
interface for defining finite element spaces and expressions for weak
forms in a notation close to mathematical notation.

The FEniCS project provides a framework for building applications for
solving partial differential equations (PDEs). UFL is one of the core
components of this framework. It defines the language you express your
PDEs in. It is the input language and front-end of the form compilers
FFC and SFC. The UFL implementation provides algorithms that the form
compilers can use to simplify the compilation process. The output from
these form compilers is UFC conforming C++ code. This code can be used
with the C++ library DOLFIN to to efficiently assemble linear systems
and compute solution to PDEs.

In particular, note the automated differentiation of both the
constitutive law and the residual equation.

Time stepping
