-
Matthieu Schaller authoredMatthieu Schaller authored
make_gadget_ic.py 1.31 KiB
import h5py
import numpy as np
import sys
inputName = "particle_dump.dat"
outputName = "particle_dump.hdf5"
boxSize = 1.
if len(sys.argv) > 1:
inputName = sys.argv[1]
outputName = sys.argv[2]
print "Reading", inputName
data = np.loadtxt(inputName)
IDs = data[:,0]
mass = data[:,1]
pos = data[:,2:5]
numPart = np.size(IDs)
print "Found", numPart, "particles"
# Create file
print "Writing", outputName
f = h5py.File("particle_dump.hdf5", "w")
# Write particles
grp = f.create_group("PartType1")
grp.create_dataset("Coordinates", (numPart, 3), data=pos)
grp.create_dataset("Velocities", (numPart, 3), data=np.zeros(np.shape(pos)))
grp.create_dataset("Masses", (numPart, 1), data=mass)
grp.create_dataset("ParticleIDs", (numPart, 1), data=IDs, dtype='i')
#Write header
grp = f.create_group("Header")
grp.attrs.create("BoxSize", boxSize, dtype='d')
grp.attrs.create("Flag_Entropy_ICs", np.array([0,0,0,0,0,0]), dtype='i')
grp.attrs.create("MassTable", np.array([0.,0.,0.,0.,0.,0.]), dtype='d')
grp.attrs.create("NumFilesPerSnapshot", 1., dtype='i')
grp.attrs.create("NumPart_ThisFile", np.array([0,numPart,0,0,0,0]), dtype='i')
grp.attrs.create("NumPart_Total", np.array([0,numPart,0,0,0,0]), dtype='i')
grp.attrs.create("NumPart_Total_HighWord", np.array([0,0,0,0,0,0]), dtype='i')
grp.attrs.create("Time", 0., dtype='d')