Skip to content

Commit ad12f79

Browse files
j-signorelliMakisH
andauthored
Improvements to plotting function for flow-over-heated-plate (#570)
Co-authored-by: Gerasimos Chourdakis <gerasimos.chourdakis@ipvs.uni-stuttgart.de>
1 parent a3e3688 commit ad12f79

File tree

2 files changed

+43
-45
lines changed

2 files changed

+43
-45
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
vtk
22
numpy
33
matplotlib
4+
os
Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,65 @@
1+
#!/usr/bin/env python3
12
import vtk
23
from matplotlib import pyplot as plt
34
import numpy as np
5+
import os
46

57

68
def vtk_to_dict(case):
7-
vtkFileName = "solid-{}/precice-exports/Fluid-Mesh-Solid.dt100.vtk".format(case)
9+
vtkFileName = "solid-{}/precice-exports/Fluid-Mesh-Solid.dt100.vtu".format(
10+
case)
11+
if not os.path.exists(vtkFileName):
12+
print("No file found for " + vtkFileName)
13+
return {} # return empty dict if file not found
14+
815
# read the vtk file as an unstructured grid
9-
reader = vtk.vtkUnstructuredGridReader()
16+
reader = vtk.vtkXMLUnstructuredGridReader()
1017
reader.SetFileName(vtkFileName)
11-
reader.ReadAllVectorsOn()
12-
reader.ReadAllScalarsOn()
1318
reader.Update()
1419

1520
# obtain the data
1621
data = reader.GetOutput()
1722
n_data = data.GetPointData().GetNumberOfTuples()
1823

19-
name = "Temperature"
20-
data_names = []
21-
i = 0
22-
max_i = data.GetPointData().GetNumberOfArrays()
23-
while i < max_i:
24-
this_data_name = data.GetPointData().GetArray(i).GetName()
25-
data_names.append(this_data_name)
26-
if (this_data_name == name):
27-
data_id = i
28-
break
29-
i += 1
30-
3124
data_dict = {}
3225

33-
if not data_id:
34-
raise Exception(
35-
"For file {} name {} not found. Only the following names are available: {}. "
36-
"Aborting!".format(vtkFileName, name, data_names))
3726
for i in range(n_data):
38-
data_dict[data.GetPoint(i)] = data.GetPointData().GetArray(data_id).GetValue(i)
39-
27+
data_dict[data.GetPoint(i)] = data.GetPointData().GetArray(
28+
"Temperature").GetValue(i)
4029
return data_dict
4130

4231

43-
cases = []
44-
cases.append('fenics')
45-
cases.append('openfoam')
46-
cases.append('nutils')
47-
cases.append('dunefem')
32+
def main():
33+
case_labels = {
34+
'fenics': 'Fluid-FEniCS',
35+
'openfoam': 'Fluid-OpenFOAM',
36+
'nutils': 'Fluid-Nutils',
37+
'dunefem': 'Fluid-DuneFem'}
38+
styles = [':', '-', '--']
39+
colors = ['r', 'b', 'g', 'k']
40+
41+
for i, case in enumerate(case_labels.keys()):
42+
case_data = vtk_to_dict(case)
43+
if not case_data:
44+
continue
45+
x, t = [p[0] for p in case_data.keys()], np.array(
46+
list(case_data.values()))
47+
48+
# sort by x
49+
combined = sorted(zip(x, t))
50+
x, t = zip(*combined)
51+
x = np.array(x)
52+
t = np.array(t)
53+
54+
theta = (t - 300) / (310 - 300)
55+
plt.plot(x, theta, colors[i % 4] + styles[i %
56+
3], label=case_labels[case])
4857

49-
case_labels = {
50-
'fenics': 'OpenFOAM-FEniCS',
51-
'openfoam': 'OpenFOAM-OpenFOAM',
52-
'nutils': 'OpenFOAM-Nutils',
53-
'dunefem': 'OpenFOAM-DuneFem'}
54-
styles = [':', '-', '--']
55-
colors = ['r', 'b', 'g', 'k']
56-
i = 0
58+
plt.ylabel("Theta")
59+
plt.xlabel("x-coordinate along coupling interface")
60+
plt.legend()
61+
plt.show()
5762

58-
for case in cases:
59-
case_data = vtk_to_dict(case)
60-
x, t = [p[0] for p in case_data.keys()], np.array(list(case_data.values()))
61-
theta = (t - 300) / (310 - 300)
62-
plt.plot(x, theta, colors[i % 4] + styles[i % 3], label=case_labels[case])
63-
i += 1
6463

65-
plt.ylabel("Theta")
66-
plt.xlabel("x-coordinate along coupling interface")
67-
plt.legend()
68-
plt.show()
64+
if __name__ == '__main__':
65+
main()

0 commit comments

Comments
 (0)