from matplotlib import pyplot as plot import numpy as np temperatures = [] # Standard-Atmosphärendruck [Pa] g_p0 = 101325 # spezifischen Gaskonstante R_S = R/M = 287,058 J/(kg*K) für trockene Luft g_RS = 287.54 # CW-Wert und Stirnfläche c_val_id3 = 0.267 area_id3 = 2.360 # m^2 car_list = [ { "car": "VW id.3", "cw": 0.267, "area": 2.360 }, { "car": "Tesla Model Y LR AWD", "cw": 0.23, "area": 2.518 }, { "car": "Tesla Model 3 LR AWD", "cw": 0.23, "area": 2.220 }, { "car": "Polestar 2", "cw": 0.278, "area": 2.480 }, { "car": "Renault Zoe", "cw": 0.33, "area": 2.27 }, { "car": "Hyundai Kona Elektro", "cw": 0.29, "area": 2.37 }, { "car": "Hyundai Ioniq Elektro", "cw": 0.24, "area": 2.22 } ] temp_list = [-20, -10, 0, 10, 20, 30] vel_list = [20, 40, 60, 80, 100, 120, 130, 140, 160] # rho: [kg/m3] def rho(temperature_degc: float, p_pa: float =g_p0): return p_pa/(g_RS*(temperature_degc + 273.15)) # Force : N = kg·m·s2 def fd(rho: float, velocity_kmh: float, c_val: float, area: float): vel = velocity_kmh / 3.6 cwa = c_val * area res = 0.5*rho*vel*vel*cwa return res def plot_1(fd_reference): temps_list_leg = [f"{t}°C" for t in temp_list] plot.figure() for temp_degc in temp_list: rho_t = rho(temp_degc) y_fd = [] for vel_kmh in vel_list: fd_t = (fd(rho_t, vel_kmh, c_val_id3, area_id3)/fd_reference - 1) * 100 y_fd.append(fd_t) plot.plot(vel_list, y_fd) plot.title("Luftwiderstand vs Geschwindigkeit") plot.ylabel("Luftwiderstand [%]") plot.xlabel("Geschwindigkeit [km/h]") plot.legend(temps_list_leg) plot.grid() def plot_2(temp=20): ''' Fd vs. velocity, param: car ''' # [kmh] car_list_leg = [f"{t['car']}" for t in car_list] rho_t = rho(temp) reference = fd(rho_t, 100, c_val_id3, area_id3) plot.figure() for car in car_list: y_fd = [] for vel_kmh in vel_list: fd_t = (fd(rho_t, vel_kmh, car['cw'], car['area'])/reference - 1) * 100 y_fd.append(fd_t) plot.plot(vel_list, y_fd) plot.ylabel("Luftwiderstand ID.3 [%]") plot.xlabel("Geschwindigkeit [km/h]") plot.title(f"Luftwiderstand vs Geschwindigkeit, Temperature {temp}°C") plot.legend(car_list_leg) plot.grid() def plot_3(y_fd, y_pwr, temp=20): car_list_leg = [f"{t['car']}" for t in car_list] fig, ax1 = plot.subplots() ax1.plot(vel_list, y_fd) ax1.set_ylabel("Luftwiderstand [N]") ax1.set_xlabel("Geschwindigkeit [km/h]") ax1.set_title(f"Luftwiderstand vs Geschwindigkeit, Temperature {temp}°C") ax1.legend(car_list_leg) ax2 = ax1.twinx() ax2.set_ylabel("Antriebsleistung [kW]", color='tab:red') ax2.plot(vel_list, y_pwr, color='tab:red') ax2.tick_params(axis='y', labelcolor='tab:red') ax1.grid() def plot_4(y_fd, y_energy, temp=20): car_list_leg = [f"{t['car']}" for t in car_list] fig, ax1 = plot.subplots() ax1.plot(vel_list, y_fd) ax1.set_ylabel("Luftwiderstand [N]") ax1.set_xlabel("Geschwindigkeit [km/h]") ax1.set_title(f"Luftwiderstand vs Geschwindigkeit, Temperature {temp}°C") ax1.legend(car_list_leg) ax2 = ax1.twinx() ax2.set_ylabel("Antriebsenergie [kWh/100km]", color='tab:red') ax2.plot(vel_list, y_energy, color='tab:red') ax2.tick_params(axis='y', labelcolor='tab:red') ax1.grid() plot.show() def main() -> None: # Fd vs. velocity, param: temperature reference = fd(rho(20), 100, c_val_id3, area_id3) temp_ref = 20 # Luftwiderstand [%] vs. Geschwindigkeit [kmh], Param: Temperatur plot_1(reference) # Luftwiderstand [%] vs. Geschwindigkeit [kmh] at 20°C, Param: Car Model plot_2(temp_ref) y_fd = [] y_pwr = [] y_energy = [] for vel_kmh in vel_list: fd_t = fd(rho(temp_ref), vel_kmh, c_val_id3, area_id3) y_fd.append(fd_t) y_pwr.append(fd_t*vel_kmh/1000/3.6) y_energy.append(fd_t*vel_kmh/1000/3.6*100/vel_kmh) # Luftwiderstand [N] / Antriebsleistung [kW] vs. Geschwindigkeit [kmh], Param: Temp plot_3(y_fd, y_pwr, temp_ref) # Luftwiderstand [N] / Antriebsenergie [kWh/100km] vs. Geschwindigkeit [kmh], Param: Temp plot_4(y_fd, y_energy, temp_ref) if __name__ == '__main__': main()