Drag through the water. The dye does not know where it is going; it is carried by a velocity field that gets solved back to incompressible sixty times a second. Switch the view to watch the pressure the solver invents to do it.
Dye is three scalar fields, red green and blue, each one carried along by the water. They are passive: nothing about the colour affects the flow. Velocity colours each cell by the direction the water is going, with brightness for speed. Pressure is the scalar the solver computes each frame whose gradient, subtracted off, makes the velocity divergence free. Divergence is what is left of that after the sweeps run out, so it is a picture of the solver's unfinished work.
The stats strip reads div in and div out: peak divergence before and after
the projection. Advection puts divergence in, projection takes it out, and with the sweep count low it
never quite finishes. Drag the Solver sweeps slider and watch div out move.
The default of twenty is the number the method is famous for, and on a smooth field it drops peak divergence by 1.247x. Two hundred sweeps gets 15.53x and two thousand gets 222.9x. So twenty is not a converged solve of anything; it is a look. The tank still reads as water because being slightly compressible is not very visible, which is a different claim from being correct.
Each step asks, for every cell, where the water in it came from, then reads the old field at that point. That point almost never lands on a cell centre, so the answer is a blend of four of them, and a blend is a blur. Run with Dye fade at zero and a sharp edge still dissolves. Carrying a test blob once around a rotation costs 75.9 percent of its peak to that blur alone.
A second, separate thing happens at the same time and looks identical on screen. The step back is a straight line, but the water is going round a curve, so every trace lands a touch outside the circle and the whole pattern gets pulled inward. That cost the same blob 15.164 percent of its mass, against a closed form that says 15.165. It is not evaporating, it is spiralling in. Swirl fights the first of those by finding where the curl is and pushing it back up; nothing here fights the second.
Single precision would be faster and this uses doubles, because the verification needs them. The walls are solid and reflect, so nothing enters or leaves. There is no gravity, no buoyancy and no temperature, so the smoke preset is smoke-coloured rather than smoke-shaped. Chromium is the only browser it has been checked in.