Data reads and command line options

Requesting a customised data reader

The splash binary will read many formats. The default format is ascii or csv any ascii or csv data file where columns correspond to different quantities and rows correspond to each particle (actually I use splash to plot graphs for nearly all data in this form, whether SPH or not) – it will also sensibly skip header lines which do not have the same number of columns.

However, it is ultimately desirable to use SPLASH to directly visualise the (binary) output of your code. If your format is not amongst those distributed:

splash -f

then BEFORE you start writing your own routine, please consider whether or not a routine to read your format would be of more general use (e.g. to other users of your code). If so, PLEASE email me to request a new read_data routine for your format, by sending an email attaching:

  1. an example dump

and

  1. the source code from the routine which wrote the dump file.

Then I can write a read for your format that can be added to the SPLASH repository and distributed in all future versions. Whilst I aim never to change the interface to the read_data routines, it is not impossible that some changes may occur somewhere down the line (or enhanced functionality – for example the more advanced data reads are able to read only the required columns for a given plot from the file, rather than the whole file). It doesn’t matter if your code only has one user, we are still happy to do this as it makes splash more widely useable and saves trouble later.

Writing your own data read

If you really want to hack one yourself it is best to look at some of the other examples and change the necessary parts to suit your data files. Note that reading directly from unformatted data files is much faster than reading from formatted (ascii) data.

If you do end up writing your own, again, please email me the end result so I can add it to the officially supported data reads. This also makes it much easier for you to upgrade to newer versions as you do not require a locally customised version.

The second best way is to attempt to modify one of the existing data reads. Even then, there are some things to note: Most important is that, for the rendering routines to work, the density, particle masses and smoothing lengths for all of the (gas) particles must be read in from the data file and their locations in the main data array labelled using the integer parameters irho, ipmass and ih. Labelling of the location of other particle quantities (e.g. iutherm for the thermal energy) is used in order to plot the exact solutions on the appropriate graphs and also for calculating additional quantities (e.g. calculation of the pressure uses iutherm and irho).

The positions of vector components in the data columns are indicated by setting the variable iamvec of that column equal to the first component of the vector of which this component is a part. So if column 4 is a vector quantity (say \({\bf v}\) in 3D), then iamvec(4) = 4, iamvec(5) = 4 and iamvec(6) = 4. Similarly the string labelvec should be set, i.e., labelvec = 'v' for these columns.