Divergence Benchmark
This benchmark tests the implementation of the divergence term in equation [eq:divergence]. In 2D, a constant divergence is applied to a square domain, and the velocity on the corners is set to enforce a spreading from the center of the square. Figure 1 shows the velocity and strain rate invariant for a numerical solution. For a constant divergence [;d;], the analytic solution for this setup is
[;\begin{align*} v_x &= x \cdot d/2 \\ v_y &= y \cdot d/2 \end{align*}. ;]
In 3D, the analytic solution is
[;\begin{align*} v_x &= x \cdot d/3 \\ v_y &= y \cdot d/3 \\ v_z &= z \cdot d/3 \end{align*}.;]
In both cases, the strain rate invariant equals [;\sqrt{d/2};]. As shown in Figure 2, the main source of error in 2D comes from inaccuracies in the solver. Figure 3 paints a different picture in 3D, where the main source of error comes from having a finite number of particles.
Figure 1: Velocity and Strain Rate Invariant solution for the 2D Divergence benchmark. The variation in the strain rate invariant is uniformly small.
Figure 2: Maximum error in the strain rate invariant for the 2D Divergence benchmark vs. tolerance in the linear solver. The resolution is kept at 32 × 32, and the number of particles per cell is kept at 30.
Figure 3: Maximum error in the strain rate invariant for the 3D Divergence benchmark vs. the number of particles in each cell. The resolution is kept at 16 × 16 × 16, and the tolerance in the linear solver is kept at 10-7.
