Vielleicht sagt jemandem dieses Problem ja was, ich gehe in einer verschachtelten schleife 2 indizes nacheinander durch
erst alle ortspunkte i und nach jedem durchlauf wird die zeit j um 1 erhöht.
Dies ist um eine Wärmeausbreitung in einem Metall Stab zu simulieren.
Code: Alles auswählen
#Berechnung
U_0_X_0 = 200 # Anfangstemperatur in Celsius im Zentrum des Laserstrahls von -1mm bis +1 mm Ortskoordinate
U_0_X_rod = 20 # Anfangstemperatur von -50mm bis -1mm und +1mm bis 50mm der Aluminiumstange
L = 0.1 # Länge Aluminium Stab [m]
I_d = 0.002 # Durchmesser Laserstrahl [m]
n = 100 # Anzahl Stützstellen
delta_x = L/n # Schrittweite der Gitterstellen (0.01m)
delta_t = 1 # Messungen pro sekunde
λ_Alu = 230 # Wärmeleitfähigkeit Alu [W/m*K]
rho_Alu = 2700 # Dichte Alu [KG/m³]
c_Alu = 88800 # Spezifische Wärmekapazität Alu [J/kG*K] (eig 888...erstmal für berechnung)
a_Alu = λ_Alu / (rho_Alu * c_Alu) # Temperaturleitfähigkeit
a_Alu_x = a_Alu * / delta_x**2 # Temperaturleitfähigkeit, und Schrittweite als 1 Koeffizient
X = np.arange(0,0.05, 0.001) #Alu Stab länge
U = np.zeros(50) #Temperatur array
U = U + U_0_X_rod # 0er array wird mit 20 beschrieben (Temp. außerhalb des Laserstrahls)
U[0] = U_0_X_0 # -1 mm
U[1] = U_0_X_0 # Temperatur an der Stelle X=0
#Plot bei t = 0 (Laserstrahl ist nur sehr kurz auf dem stab undzwar 1 mm durchmesser links)
fig, ax = plt.subplots(figsize = (10, 7))
ax.set(xlabel='länge (m)', ylabel='Temperatur (°C)',
title='Temperaturverteilung im Aluminium Stab bei t=0')
plt.plot(X,U , marker = "o")
plt.grid()
del_t = [1,2,3,4,5,6,7,8,9,10]#Zeit liste
for j in (del_t):
for i in range(len(U)-1):
U[j+1,i] = U[j,i] + a_Alu_x * del_t[j] * (U[j,i] - 2*U[j,i] + U[j,i])
Am ende soll ein 3 D Plot entstehen Temperatur nach Ort und Zeit
Das Problem liegt hier in der schleife es sagt too many indices ,ich habe in meiner Lektüre Python 3 von Peter Kaiser jedoch keine Doppelindizierung gefunden und komme so auf keinen Fehleransatz