# Getting started¶

The first step is to download and install Firedrake and its dependencies. For full instructions, see obtaining Firedrake.

# Introductory Tutorials¶

Once you’ve built Firedrake, you’ll want to actually solve some PDEs. Below are a few tutorial examples to get you started.

- A basic Helmholtz equation.
- The Burgers equation, a non-linear, unsteady example.
- A mixed formulation of the Poisson equation.
- A time-dependent DG advection equation using upwinding.
- An extruded mesh example, using a steady-state continuity equation.
- A linear wave equation with optional mass lumping.
- Creating Firedrake-compatible meshes in Gmsh.

## Jupyter notebooks¶

In addition to the documented tutorials, we also have some Jupyter notebooks that are a more interactive way of getting to know Firedrake. They are described in more detail on their own page.

## Youtube Channel¶

Firedrake has a youtube channel where recorded tutorials are occasionally uploaded.

# API documentation¶

The complete list of all the classes and methods in Firedrake is available at the firedrake package page. The same information is indexed in alphabetical order. Another very effective mechanism is the site search engine.

# Manual¶

Once you have worked through the tutorials, the user manual is the next step. It goes in to more detail on how to set up and solve finite element problems in Firedrake.

- Defining variational problems
- Solving PDEs
- Dirichlet boundary conditions
- The \(R\) space
- Extruded Meshes in Firedrake
- Changing mesh coordinates
- Interpolation
- Point evaluation
- External operators
- Visualising the results of simulations
- Checkpointing state
- Matrix-free operators
- Preconditioning infrastructure
- Interfacing directly with PETSc
- Parallelism in Firedrake
- Firedrake Zenodo integration: tools for reproducible science
- Optimising Firedrake Performance

# Advanced tutorials¶

These tutorials demonstrate some more advanced features of Firedrake’s PDE solving capabilities, such as block-preconditioning mixed finite element systems.

- Printing in parallel.
- Benney-Luke nonlinear wave equation.
- Solving the one-layer Quasi-Geostrophic equations.
- Computing eigenmodes of the Quasi-Geostrophic equations using SLEPc.
- A Quasi-Geostrophic wind driven gyre.
- Preconditioning saddle-point systems, using the mixed Poisson problem as an example.
- The Camassa-Holm equation, a nonlinear integrable PDE.
- The Monge-Ampère equation, a nonlinear PDE, demonstrating fieldsplit preconditioning.
- Preconditioning using geometric multigrid.
- Linear mixed fluid-structure interaction system.
- Mass lumping for a high order spectral wave equation.
- Block preconditioning for the Stokes equation.
- A pressure-convection-diffusion preconditioner for the Navier-Stokes equations.
- Rayleigh-Benard convection.
- Netgen support.
- Full-waveform inversion: spatial and wave sources parallelism.