1D and 2D moving mesh algorithm
I have added a new hydro scheme, SHADOWFAX_SPH
, that uses a finite volume method on a moving mesh. The scheme is very similar to GIZMO_SPH
, except that during the density loop an actual Voronoi cell is constructed for every particle, which is then used to get a volume to update the primitive quantities, and faces through which fluxes are exchanged. There are also some small changes in the way gradients are computed, and in the way the velocity of the particles is set.
The Voronoi cell construction is completely different for 1D, 2D, and 3D, and currently only 1D and 2D have a stable implementation. 3D should compile, but does not produce reliable results (yet). However, I think it would be good to merge this in already, to prevent it from drifting too far apart from master
.
The current implementation is hydro only, but it should be very straightforward to add gravity, similarly to the way it is done in GIZMO_SPH
.
Below the results for the 2D Sod shock and Sedov blast test (the noise on the density is caused by the fact that the initial conditions contain mass and not density). The 2D Noh test crashes because of time stepping issues; I think we really need a time step limiter to make it work properly.