Lettuce: PyTorch-based Lattice Boltzmann Framework
  The lattice Boltzmann method (LBM) is an efficient simulation technique for
computational fluid mechanics and beyond. It is based on a simple
stream-and-collide algorithm on Cartesian grids, which is easily compatible
with modern machine learning architectures. While it is becoming increasingly
clear that deep learning can provide a decisive stimulus for classical
simulation techniques, recent studies have not addressed possible connections
between machine learning and LBM. Here, we introduce Lettuce, a PyTorch-based
LBM code with a threefold aim. Lettuce enables GPU accelerated calculations
with minimal source code, facilitates rapid prototyping of LBM models, and
enables integrating LBM simulations with PyTorch's deep learning and automatic
differentiation facility. As a proof of concept for combining machine learning
with the LBM, a neural collision model is developed, trained on a doubly
periodic shear layer and then transferred to a different flow, a decaying
turbulence. We also exemplify the added benefit of PyTorch's automatic
differentiation framework in flow control and optimization. To this end, the
spectrum of a forced isotropic turbulence is maintained without further
constraining the velocity field. The source code is freely available from
https://github.com/lettucecfd/lettuce.
