  Integrating computational fluid dynamics (CFD) software into optimization and
machine-learning frameworks is hampered by the rigidity of classic
computational languages and the slow performance of more flexible high-level
languages. WaterLily.jl is an open-source incompressible viscous flow solver
written in the Julia language. The small code base is multi-dimensional,
multi-platform and backend-agnostic (serial CPU, multi-threaded, & GPU
execution). The simulator is differentiable and uses automatic-differentiation
internally to immerse solid geometries and optimize the pressure solver. The
computational time per time step scales linearly with the number of degrees of
freedom on CPUs, and we see up to a 182x speed-up using CUDA kernels. This
leads to comparable performance with Fortran solvers on many research-scale
problems opening up exciting possible future applications on the cutting edge
of machine-learning research.
