GSnap is Usable
The GSnap GUI workflow is now much more streamlined. Clicking on any point in the preview window now shifts the selected point to the center of the frame and rotates the snapshot so that the current viewing direction becomes the new z-axis. A context menu and keyboard shortcuts have been added to the preview window as well. A particularly useful shortcut allows the user to compute for stars appearing in the slit by simply pressing "s" while the preview window is active. There is little need to switch back and forth between the main window and the preview window.
GSnap now has a simple logo. It will eventually have its own web page and a built-in help browser / user manual. At this point, I need to work on other aspects of my research project. Before I begin the other work though, I thought it would be good to summarize GSnap's current capabilities.
- Read and write GADGET type 1 (Springel) snapshot files.
- Compute the mass-weighted velocity dispersion () of any particle type using a diffraction slit (mask) of arbitrary dimensions from an arbitrary direction.
- Compute the mean, maximum, minimum, and standard deviation of for a set of random viewing directions (1000 directions, by default).
- Arbitrarily shift particle positions and velocities (i.e., shift the origin and drift velocity of the coordinate system independently for each type of particle).
- Rotate the particle positions and velocities (i.e., rotate the coordinate system independently for each type of particle).
- Compute the center of mass of any particle type or any combination of particle types.
- Measure for different stellar age groups.
- Create simple visualizations of a snapshot. Images can be saved to disk as PNG or JPEG images. The system can also be viewed interactively.
- Compute the stellar velocity dispersion by focusing measurements on the center of mass of the system (the default) or focusing the measurements on the progenitor nuclei.
- Create fairly high quality visualizations of the gas component using a simple ray casting algorithm and SPH smoothing kernel. The simulation smoothing lengths are not used in this process; the code computes smoothing lengths itself. So technically, any particle type could be visualized using the volume rendering technique (dark matter halos, for instance).
- Interpolate particle positions between snapshot files using a 3rd-order interpolation scheme. This is primarily for the purpose of creating movies of the merger simulations. An arbitrary number of intermediate snapshots can be generated.
- Create plots of stellar velocity dispersion vs. time (if provided with a directory full of snapshots).
- Create plots of black hole accretion rate vs. time (if provided with a directory full of snapshots).
More features are planned.
GSnap is written in C++. Its only dependency is the Qt Framework. The automation scripts are written in Python. Since the Qt Framework and Python are available for GNU/Linux, MacOS, and Windows, GSnap can be used on all three major platforms without modification. When I finish my Ph.D. research, GSnap will be made publicly available (GPL licenced).
Adding new features is fairly straightforward. In particular, it would be easy to add the ability to read more file formats—including file formats from other astrophysical simulation programs. Most of the current features deal with measuring because my dissertation work primarily deals with the evolution of during galaxy mergers. GSnap is not intended to compete with other codes such as Matt Turk's yt, Klaus Dolag's Splotch, Patrik Jonsson's Sunrise, Nick Gnedin's IFrIT, Daniel Price's Splash, or any other analysis + visualization code; it is simply designed to help me with my particular research project.