112 lines
3.2 KiB
Python
Executable File
112 lines
3.2 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import string, sys
|
|
sys.path.append('../src/')
|
|
import H5Part
|
|
|
|
def ReadFile(fn):
|
|
print "Open " , fn
|
|
|
|
file = H5Part.H5PartOpenFile(fn, H5Part.H5PART_READ)
|
|
|
|
nt = H5Part.H5PartGetNumSteps(file)
|
|
H5Part.H5PartSetStep(file,0)
|
|
nds = H5Part.H5PartGetNumDatasets(file)
|
|
|
|
print "Timesteps = " , nt , " dataSets per timestep = " , nds
|
|
|
|
print "\n===============================\n"
|
|
|
|
for i in range(0, nds):
|
|
value, name = H5Part.H5PartGetDatasetName(file, i, 64)
|
|
#print name
|
|
print "\tDataset[%u] name=[%s]\n" % (i, name)
|
|
|
|
print "\n===============================\n"
|
|
|
|
for steps in range (0, nt):
|
|
H5Part.H5PartSetStep(file,steps)
|
|
n = H5Part.H5PartGetNumParticles(file)
|
|
print "number of particles in %d step =" % steps , n , "\n"
|
|
x=H5Part.doubleArray(n)
|
|
y=H5Part.doubleArray(n)
|
|
z=H5Part.doubleArray(n)
|
|
px=H5Part.doubleArray(n)
|
|
py=H5Part.doubleArray(n)
|
|
pz=H5Part.doubleArray(n)
|
|
id=H5Part.longArray(n)
|
|
|
|
H5Part.H5PartReadParticleStep(file,steps,x,y,z,px,py,pz,id)
|
|
|
|
sumx = 0.0
|
|
sumpz = 0.0
|
|
|
|
for i in range (0,n):
|
|
sumx += x[i]
|
|
sumpz += pz[i]
|
|
|
|
print "\t================================================="
|
|
print "\tstep= " , steps , " sum(x)= " , sumx , " sum(pz)= " , sumpz
|
|
print "\tfirst x is " , x[0] , "\tlast x is " , x[n-1]
|
|
print "\tFor fake data, expect sumx to be =" , x[0]*n
|
|
print "\t=================================================\n"
|
|
|
|
H5Part.H5PartCloseFile(file)
|
|
return 1
|
|
|
|
def WriteFile(fn):
|
|
nt = 5
|
|
np = 1024*1024
|
|
print "Open " , fn
|
|
|
|
file= H5Part.H5PartOpenFile(fn,H5Part.H5PART_WRITE)
|
|
|
|
H5Part.H5PartWriteFileAttribString(file,"File Description", "This file is created by H5test.py. Simple H5Part file for testing purpose...")
|
|
#fileA = 2000
|
|
#H5Part.H5PartWriteFileAttrib(file,"File Number will be 2000", H5Part.H5T_NATIVE_INT64, fileA, 1) #201326626 H5T_NATIVE_INT64
|
|
|
|
x=H5Part.doubleArray(np)
|
|
y=H5Part.doubleArray(np)
|
|
z=H5Part.doubleArray(np)
|
|
px=H5Part.doubleArray(np)
|
|
py=H5Part.doubleArray(np)
|
|
pz=H5Part.doubleArray(np)
|
|
id=H5Part.longArray(np)
|
|
|
|
H5Part.H5PartSetNumParticles(file,np)
|
|
|
|
for n in range(0,np):
|
|
id[n]=n
|
|
x[n]=1.0
|
|
y[n]=2.0
|
|
z[n]=3.0
|
|
px[n]=1.0*n*(n%10)
|
|
py[n]=2.0*n*(n%10)
|
|
pz[n]=3.0*n*(n%10)
|
|
|
|
for t in range(0,nt):
|
|
H5Part.H5PartSetStep(file,t)
|
|
print "Write Step %u\n" % t
|
|
H5Part.H5PartWriteDataFloat64(file,"x",x)
|
|
H5Part.H5PartWriteDataFloat64(file,"y",y)
|
|
H5Part.H5PartWriteDataFloat64(file,"z",z)
|
|
H5Part.H5PartWriteDataFloat64(file,"px",px)
|
|
H5Part.H5PartWriteDataFloat64(file,"py",py)
|
|
H5Part.H5PartWriteDataFloat64(file,"pz",pz)
|
|
H5Part.H5PartWriteDataInt64(file,"id",id)
|
|
|
|
H5Part.H5PartCloseFile(file)
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fn ="H5test_py.h5"
|
|
|
|
if WriteFile(fn) == 0:
|
|
print "Failed to write file " , fn
|
|
sys.exit(0)
|
|
|
|
if ReadFile(fn) == 0:
|
|
print "Failed to read file " , fn
|
|
sys.exit(0)
|