1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """Possible figures plotted by Matplotlib. This module needs some heavy
23 organisation and simplification because it was done in a hurry.
24
25 For a specific object, like a rotor or blade, the object is passed.
26 Others kinds of figures could be imagined: power and
27 Weibull distribution, the power of the 3 blades, rotational speed
28 and torque...
29
30 The figure manager can be activated, whether from a GTK tree,
31 (for example by "Plot Power") or else from a predefined action in a menu.
32 A L{PLOT_TABLE} has been built, it means that each
33 possible figure has a key. This key is given by the GTK interface.
34 For some object, the key is the name of an attribute, for example
35 "power" for the C{Rotor} instance.
36 """
37
39 """Plot the power of an object C{obj}"""
40 axes = fig.add_subplot(111)
41 axes.set_xlabel("Time [s]")
42 axes.set_ylabel("Power [W]")
43 time = simu.results.time
44 values = getattr(obj.results, "power")
45 axes.plot(time, values)
46 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
47
48 fig.tab_name = "Power of '%s'" % obj.name
49
51 """Plot the electrical power of an object C{obj}"""
52 axes = fig.add_subplot(111)
53 axes.set_xlabel("Time [s]")
54 axes.set_ylabel("Elec. Power [W]")
55 time = simu.results.time
56 values = getattr(obj.results, "electrical_power")
57 axes.plot(time, values)
58 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
59
60 fig.tab_name = "Elec. Power of '%s'" % obj.name
61
62
64 """Plot the tangential force of an object C{obj}"""
65 axes = fig.add_subplot(111)
66 axes.set_xlabel("Time [s]")
67 axes.set_ylabel("Tangential force [N]")
68 time = simu.results.time
69 values = getattr(obj.results, "tangential_force")
70 axes.plot(time, values)
71 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
72
73 fig.tab_name = "Tangential force of '%s'" % obj.name
74
76 """Plot the normal force of an object C{obj}"""
77 axes = fig.add_subplot(111)
78 axes.set_xlabel("Time [s]")
79 axes.set_ylabel("Normal force [N]")
80 time = simu.results.time
81 values = getattr(obj.results, "normal_force")
82 axes.plot(time, values)
83 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
84
85 fig.tab_name = "Normal force of '%s'" % obj.name
86
88 """Plot the torque of the rotor"""
89 axes = fig.add_subplot(111)
90 axes.set_xlabel("Time [s]")
91 axes.set_ylabel("Torque [Nm]")
92 time = simu.results.time
93 values = getattr(obj.results, "torque")
94 axes.plot(time, values)
95 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
96
97 fig.tab_name = "Torque of '%s'" % obj.name
98
100 """Plot the electrical torque of the rotor"""
101 axes = fig.add_subplot(111)
102 axes.set_xlabel("Time [s]")
103 axes.set_ylabel("Electrical torque [Nm]")
104 time = simu.results.time
105 values = obj.results.electrical_torque
106 axes.plot(time, values)
107 axes.axis([time[0], time[-1], 0., 1.1*max(values)])
108
109 fig.tab_name = "Elec. Torque of '%s'" % obj.name
110
112 """Plot an airfoil"""
113 axes = fig.add_subplot(111)
114 curves = section.airfoil.curves
115 axes.set_xlabel("Angle [rad]")
116 axes.set_ylabel("Coefficient")
117 for key, curve in curves.items():
118 axes.plot(curve.angles, curve.coeffs, ".-", label=key)
119 axes.legend()
120
121 fig.tab_name = "Airfoil '%s' of '%s'" % (section.airfoil.name,
122 section.name)
123
125 """Plot the pressures on the blade"""
126 axes = fig.add_subplot(111)
127 fid = simu.current_frame_id
128
129 lst = {"radius" : [], "tang" : [], "norm" : []}
130 axes.set_xlabel("Radial position [m]")
131 axes.set_ylabel("Section pressure [N/m]")
132 for section in blade.sections:
133 lst["radius"].append(section.radial_position)
134 lst["tang"].append(section.results.tangential_press[fid])
135 lst["norm"].append(section.results.normal_press[fid])
136 axes.plot(lst["radius"], lst["norm"], ".-", label="Normal")
137 axes.plot(lst["radius"], lst["tang"], ".-", label="Tangential")
138 axes.legend(loc=2)
139
140 fig.tab_name = "Pressures of '%s' at frame %i" % (blade.name,
141 fid)
142
144 """Plot the rotor rotational speed"""
145 axes = fig.add_subplot(111)
146
147 axes.set_xlabel("Time [s]")
148 axes.set_ylabel("Rotational speed [rad/s]")
149 time = simu.res.time
150 rot_speed = rotor.results.rotational_speed_value
151 axes.plot(time, rot_speed)
152 axes.axis([time[0], time[-1], 0, 1.1 * max(rot_speed)])
153 fig.tab_name = "Rotational speed of '%s'" % rotor.name
154
156 """Plot the aerodynamic torque produced by a blade"""
157 axes = fig.add_subplot(111)
158
159 axes.set_xlabel("Time [s]")
160 axes.set_ylabel("Coupling torque [Nm]")
161 time = simu.res.time
162 torque = obj.results.coupling_torque
163 axes.plot(time, torque)
164 axes.axis([time[0], time[-1], 0, 1.1 * max(torque)])
165
166 fig.tab_name = "Done for the couling torque of %s" % obj.name
167
168 PLOT_TABLE = {
169 "power" : plot_power,
170 "tangential_force" : plot_tangential_force,
171 "normal_force" : plot_normal_force,
172 "torque" : plot_torque,
173 "airfoil" : plot_airfoil,
174 "plot_pressures" : plot_blade_pressures,
175 "rotational_speed_value" : plot_rotational_speed,
176 "coupling_torque" : plot_coupling_torque,
177 "electrical_power" : plot_electrical_power,
178 "electrical_torque" : plot_electrical_torque
179 }
180