2 import matplotlib.pyplot
as plt
10 with open(fname)
as f:
11 for i, l
in enumerate(f):
17 if item.endswith(
".pvd")
or item.endswith(
".vtp"): os.remove(os.path.join(
"./",item))
19 parser = argparse.ArgumentParser(description=
'Tracer_conversion')
20 parser.add_argument(
"-if",
"--input-file", dest=
"file_name", required=
"True", type=str, help=
"input csv file name (and directory)" )
21 parser.add_argument(
"-dt",
"--delta-time", dest=
"dt", default=-1, type=float, help=
"time interval between two snapshot, default is to print every timestep" )
22 parser.add_argument(
"-of",
"--output-file", dest=
"output_name", default=
" ", type=str, help=
"output file name, extension and number will be add automatically" )
23 args = parser.parse_args()
27 file_name=args.file_name
28 if args.output_name==
" ":
29 output_name=
"TracerData"
31 output_name=args.output_name
36 print(
"Read in datafile: "+file_name)
45 tem=list(map(float,line.split(
', ')))
53 number_of_data=len(tem)-6
55 print(
"number of data entries: "+
str(number_of_data))
56 print(
"total timesteps: "+
str(tstep))
63 tem=list(map(float,line.split(
', ')))
64 if (
not tem[1]==ID1)
or (
not tem[2]==ID2)
and (
not tem[6]==0):
65 ID1=tem[1]; ID2=tem[2]
67 coor=[tem[3],tem[4],tem[5]]
71 print(
"valid tracers: "+
str(len(coors)))
74 data_set=np.zeros((N_tracer,tstep,4+number_of_data))
76 ID1=list(map(float,dat[0].split(
', ')))[1]; ID2=list(map(float,dat[0].split(
', ')))[2]
80 tem=list(map(float,line.split(
', ')))
81 if (tem[1]==ID1)
and (tem[2]==ID2):
82 data_set[N_count][t_count][0]=tem[0];
83 data_set[N_count][t_count][1]=tem[3]; data_set[N_count][t_count][2]=tem[4]; data_set[N_count][t_count][3]=tem[5]
84 for i
in range(number_of_data):
85 data_set[N_count][t_count][4+i]=tem[6+i];
88 ID1=tem[1]; ID2=tem[2]
91 data_set[N_count][t_count][0]=tem[0];
92 data_set[N_count][t_count][1]=tem[3]; data_set[N_count][t_count][2]=tem[4]; data_set[N_count][t_count][3]=tem[5]
93 for i
in range(number_of_data):
94 data_set[N_count][t_count][4+i]=tem[6+i];
100 print(
"----------------------------------------------------------------")
105 for t_id
in range(tstep-1,-1,-1):
106 t_new=data_set[0][t_id][0]
110 print(
"writing vtp file "+output_name+
"-"+
str(snapshot_count)+
".vtp"+
", t= "+
str(t_new))
111 f=open(output_name+
"-"+
str(snapshot_count)+
".vtp",
"w")
112 f.write(
"<!-- Generated from CSV file of Tracer, Peano4 ExaHyPE 2-->\n\n")
113 f.write(
"<VTKFile type=\"PolyData\">\n")
114 f.write(
"<PolyData>\n")
115 f.write(
"<Piece NumberOfPoints=\""+
str(N_tracer)+
"\">\n")
116 f.write(
"<Points><DataArray type=\"Float64\" NumberOfComponents=\"3\" format=\"ascii\">\n")
117 for tra_index
in range(N_tracer):
118 f.write(
str(data_set[tra_index][t_id][1])+
" "+
str(data_set[tra_index][t_id][2])+
" "+
str(data_set[tra_index][t_id][3])+
"\n")
119 f.write(
"</DataArray></Points>\n")
121 f.write(
"<PointData>\n")
122 f.write(
"<DataArray type=\"Float64\" Name=\"data\" format=\"ascii\" NumberOfComponents=\""+
str(number_of_data)+
"\" >")
123 for tra_index
in range(N_tracer):
124 for data_index
in range(4,4+number_of_data):
125 f.write(
str(data_set[tra_index][t_id][data_index])+
" ")
127 f.write(
"</DataArray>\n")
128 f.write(
"</PointData>\n")
130 f.write(
"</Piece>\n</PolyData>\n</VTKFile>")
132 snapshot_ids.append(t_id)
136 f=open(output_name+
".pvd",
"w")
137 f.write(
"<VTKFile type=\"Collection\">\n")
138 f.write(
"<Collection>\n")
140 for t_id
in snapshot_ids:
141 f.write(
"<DataSet timestep=\""+
str(data_set[0][t_id][0])+
"\" file=\""+output_name+
"-"+
str(count)+
".vtp\" />\n")
143 f.write(
"</Collection>\n")
144 f.write(
"</VTKFile>")
146 print(
"pvd file "+output_name+
".pvd created. Total snapshot: "+
str(snapshot_count))