-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParticlesTimeStep.py
More file actions
113 lines (96 loc) · 3.35 KB
/
ParticlesTimeStep.py
File metadata and controls
113 lines (96 loc) · 3.35 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import sys
import os
import glob
import pandas as pd
def writeTimeStepFile(time, X, Y, Z, U, V, W, Fx, Fy, Fz):
with open('IBPartilce' + str(time) + '.vtk','w') as out:
particleNum = len(X)
X_m = []
Y_m = []
Z_m = []
U_m = []
V_m = []
W_m = []
Fx_m = []
Fy_m = []
Fz_m = []
for i in range(0, particleNum, 1):
X_m.append(X[i][time])
Y_m.append(Y[i][time])
Z_m.append(Z[i][time])
U_m.append(U[i][time])
V_m.append(V[i][time])
W_m.append(W[i][time])
Fx_m.append(Fx[i][time])
Fy_m.append(Fy[i][time])
Fz_m.append(Fz[i][time])
out.write('# vtk DataFile Version 4.0\n'
'Generated by LXZ-pycode\n'
'ASCII\n'
'DATASET POLYDATA\n')
# write location
out.write('POINTS ' + str(particleNum) + ' double\n')
for i in range(0, particleNum, 1):
out.write(str(X_m[i]) + ' ' + str(Y_m[i]) + ' ' + str(Z_m[i]) + '\n')
# write VERTICES
out.write('VERTICES ' + str(particleNum) + ' ' + str(particleNum * 2) + '\n')
for i in range(0, particleNum, 1):
out.write('1 ' + str(i) + '\n')
## particle porperties
out.write('\nPOINT_DATA '+ str(particleNum) + '\nFIELD FieldData 3\n')
# write particle's id
out.write('id 1 '+ str(particleNum) + 'int\n')
for i in range(0, particleNum, 1):
out.write(str(i) + '\n')
out.write('v 3 ' + str(particleNum) + ' double\n')
for i in range(0, particleNum, 1):
out.write(str(U_m[i]) + ' ' + str(V_m[i]) + ' ' + str(W_m[i]) + '\n')
# write ib force
out.write('ib_f 3 ' + str(particleNum) + ' double\n')
for i in range(0, particleNum, 1):
out.write(str(Fx_m[i]) + ' ' + str(Fy_m[i]) + ' ' + str(Fz_m[i]) + '\n')
out.close()
print('generate particle vtk file done , time : ', time)
def doGenerate():
particleFiles = glob.glob(sys.argv[1]+'*')
print('detecting exits file : \n')
for particle in particleFiles:
print('\t',particle)
result = input('\nis your needed file ?[y/n]')
result = result.lower()
if result == 'n':
print('\nending...\n')
return
X = []
Y = []
Z = []
U = []
V = []
W = []
Fx = []
Fy = []
Fz = []
for particle in particleFiles:
data = pd.read_csv(particle)
X.append(data['X'])
Y.append(data['Y'])
Z.append(data['Z'])
U.append(data['Vx'])
V.append(data['Vy'])
W.append(data['Vz'])
Fx.append(data['Fx'])
Fy.append(data['Fy'])
Fz.append(data['Fz'])
totSteps = X[0].size
for i in range(0, totSteps, int(sys.argv[2])):
writeTimeStepFile(i, X, Y, Z, U, V, W, Fx, Fy, Fz)
if __name__ == '__main__':
argv1 = sys.argv[1]
if argv1 == 'help' :
print('run with Particle IB file name , sunch as :\n\n'
'/{your python env}/python ParticleTimeStep.py IB_*.csv 10\n\n'
'will be generate VTK data file , you can open it(*.vtk) with paraview\n'
'*** but run this file, need pandas to deal data ***\n'
'*** written by LXZ , 2024/5 ***\n')
exit()
doGenerate()