-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathstatistics.py
33 lines (29 loc) · 1.2 KB
/
statistics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import mpi4py as MPI
class IonStatistics:
"""
A datastore for ion data
"""
def __init__(self):
self.ids = []
self.positions = []
self.velocities = []
def saveIonState(self, ion):
self.ids.append(ion.id)
self.positions.append(ion.position)
self.velocities.append(ion.velocity)
def consolidate(self, comm):
comm.Barrier()
self.ids = comm.gather(self.ids, root=0)
self.positions = comm.gather(self.positions, root=0)
self.velocities = comm.gather(self.velocities, root=0)
def to_csv(self, filename = 'tmp.csv'):
outputFile = open(filename, 'w')
outputFile.write('id,x,y,z,u,v,w\n')
for job in range(len(self.ids)):
for i in range(len(self.ids[job])):
outputFile.write('%d,%2.3f,%2.3f,%2.3f,%2.3f,%2.3f,%2.3f\n' %
(self.ids[job][i], self.positions[job][i][0],
self.positions[job][i][1], self.positions[job][i][2],
self.velocities[job][i][0], self.velocities[job][i][1],
self.velocities[job][i][2]))
outputFile.close()