PMss format: The whole computational volume is split into equal-sized cubic domains with the number of domains typically 125 (5x5x5) or 512 (8x8x8). Each domain is surrounded by a buffer of width typically 2-5 Mpc. All particles in each domain plus its buffer are written into a separate file. In addition to coordinates and velocities, we also write particles ids to allow identification of each particle. Each file also starts with a header that has information on the simulation, the snapshot and on the domain. Each domain and its immediate environment can be analyzed separately from other domains. Thus, one does not need to load all particles of the simulation into RAM. There are different small variations of the PMss format. Those variations were implemented to speedup the reading and to make more portable the reading routines.
PM format for Bolshoi:
all particles are sorted by their lagranian (initial) positions. Thus, a particle number i at one snapshot will be the same particle number i at any other snapshot. All particles are organized in records of the same length. The records are written/read as direct-access fortran files to the disk. All the particles are split into many files which names start with PMcrs. The code reads one record after another. If the IO fails, the code closes the current file and open the next one. Each snapshot has a short header file with name starting with PMcrd. The file file provides all information needed to setup the reading code: there is no reason to provide additional information on the format of files. The PM format provides the smallest possible files. However, if one needs to have information on neighboring particles, all particles must be read into RAM.