The FEniCS Project develops both fundamental software components and end-user codes to automate numerical solution of partial differential equations (PDEs). FEniCS enables users to translate scientific models quickly into efficient finite element code and also offers powerful capabilities for more experienced programmers. FEniCS and other automated software are catalyzing a change for PDEs similar to the one that Matlab did for linear algebra.
FEniCS uses the variational formulation of PDEs as a language to define models. We will explain the variational formulations for simple problems and then show how they can be extended to simulate fluid flow. The variational formulation also provides a firm theoretical foundation for understanding PDEs. We argue that combining the theory with practical coding provides a way to teach PDEs, their numerical solution, and associated modeling without requiring extensive mathematical prerequisites. We demonstrate that this approach requires no background in PDEs or finite elements, only multi-variate calculus.
FEniCS also provides a productive platform for research. We will present examples where it has been used to answer questions that would have required months of programming using traditional techniques. We will include topics related to mesh generation.