This will be the most visible part of the implementation. Datasets with different kinds of particles which have different attributes. It would not be very efficient to tag along such unneeded data attributes. A more obvious solution is to store them in separate FITS extensions. This is clearly a much simpler and easier to understand implementation, but requires FITS readers to look ahead.
Some variables are global variables.
There may be more efficient ways to store these values. Another example is TIME . Although, in principle, each particle may have it's own variable time, a snapshot has, by definition, a single time shared by all particles. The format needs to allow for both. For certain complex situations, extra data structures may be needed to fully describe an experimental situation.