From 3a71ede91713ec1dc9521237535496ff4969f59a Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 2 Dec 2024 15:41:41 +0100 Subject: [PATCH] added luftwiderstand --- luftwiderstand.py | 110 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 luftwiderstand.py diff --git a/luftwiderstand.py b/luftwiderstand.py new file mode 100644 index 0000000..40347eb --- /dev/null +++ b/luftwiderstand.py @@ -0,0 +1,110 @@ +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^3 + +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 + } +] + +# 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 + + +plot.figure() + +# Fd vs. velocity, param: temperature +temps_list = [-20, -10, 0, 10, 20, 30] +vel_list = [20, 40, 60, 80, 100, 120, 130, 140, 160] +reference = fd(rho(20), 100, c_val_id3, area_id3) +temps_list_leg = [f"{t}°C" for t in temps_list] + +for temp_degc in temps_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)/reference - 1) * 100 + y_fd.append(fd_t) + + plot.plot(vel_list, y_fd) + +plot.ylabel("Wind-Widerstand [%]") +plot.xlabel("Geschwindigkeit [km/h]") +plot.legend(temps_list_leg) +plot.grid() + +plot.figure() + +# Fd vs. velocity, param: car +temp = 20 +vel_list = [20, 40, 60, 80, 100, 120, 130, 140, 160] +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) + +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("Wind-Widerstand [%]") +plot.xlabel("Geschwindigkeit [km/h]") +plot.legend(car_list_leg) +plot.grid() +plot.show() \ No newline at end of file