# Devito tutorials¶

Listed below are several sets of tutorials that will help you get started with Devito. They are grouped around individual scientific computing topics and gradually introduce the key concepts of the Devito API through IPython notebooks. All notebooks can be found by checking out our the repository on github

## Computational Fluid Dynamics¶

A tutorial series that introduces the core features of Devito through a set of classic examples from Computational Fluid Dynamics (CFD). The series is based on the excellent tutorial blog CFD Python: 12 steps to Navier-Stokes by the Lorena A. Barba Group and focusses on the implementation with Devito rather than pure CFD or finite difference theory.

- 01 - Linear convection - Building a linear operator with simple zero BCs.
- 01b - Linear convection, revisited - The above example, with a different initial condition.
- 02 - Nonlinear convection - Building an operator with coupled equations and simple BCs.
- 03a - Diffusion - Building an second-order operator with simple BCs.
- 03b - Diffusion (Non uniform) - Building an second-order operator with simple BCs (Non uniform).
- 04 - Burgers’ equation - Coupled operator with mixed discretizations and simple BCs.
- 05 - Laplace equation - Steady-state example with Python convergence loop and Neumann BCs.
- 06 - Poisson equation - Pseudo-timestepping example with kernel-driven diffusion loop.

## Seismic Modelling and Inversion¶

A set of tutorials that introduces some basic concepts of seismic modelling and highlights how to use Devito operators to solve seismic inversion problems.

- 01 - Introduction to seismic modelling
- 02 - Reverse Time Migration
- 03 - Full-Waveform Inversion (FWI)
- 04 - Distributed FWI with Dask
- 05 - FWI with total variation (TV) minimisation
- 06 - Acoustic modeling (2D) on a staggerd grid with the first-order wave equation
- 07 - Elastic modeling (2D) on a staggerd grid with the first-order wave equation