Tenferenzu
Vice Admiral Pro
- Registriert
- Okt. 2017
- Beiträge
- 6.556
Hi, ich benötige euer Schwarmwissen weil ich hier nicht wirklich weiterkomme.
Ich möchte den Verlauf einer Iteration in einem CSV loggen damit ich nachvollziehen kann bis wohin die Iteration stabil läuft und was der Parameter ist der dann zur Instabilität führt nur leider schaffe ich es nicht wirklich das numpy array 'richtig' in das CSV als Zeile anzuhängen(!).
Hat jemand vlt. eine Idee? Die ganzen Stackoverflowlösungen habe ich schon durch und irgendwie hat mein Problem noch keiner wirklich gehabt also vermute ich mal, dass es an meiner Methodik liegt und es eine viel leichtere Methode gibt um mein Problem zu lösen die ich gerade nicht finde..
P.s. Ich bin kein Programmierer
Die ganzen 'Fehlversuche' sind auskommentiert damit ihr einen Überblick darüber habt was ich schon versucht habe.
Ich hoffe es ist so halbwegs verständlich was mein Problem ist.
Der Code wäre angelehnt an dieses Projekt hier: https://github.com/barbagroup/CFDPython/blob/master/lessons/01_Step_1.ipynb
Bitte gebt mir etwas Zeit um zu Antworten da ich erstmal nach Hause und kochen muss![Lächeln :) :)](/forum/styles/smilies/smile.gif)
Ich möchte den Verlauf einer Iteration in einem CSV loggen damit ich nachvollziehen kann bis wohin die Iteration stabil läuft und was der Parameter ist der dann zur Instabilität führt nur leider schaffe ich es nicht wirklich das numpy array 'richtig' in das CSV als Zeile anzuhängen(!).
Hat jemand vlt. eine Idee? Die ganzen Stackoverflowlösungen habe ich schon durch und irgendwie hat mein Problem noch keiner wirklich gehabt also vermute ich mal, dass es an meiner Methodik liegt und es eine viel leichtere Methode gibt um mein Problem zu lösen die ich gerade nicht finde..
P.s. Ich bin kein Programmierer
![Zwinkern ;) ;)](/forum/styles/smilies/wink.gif)
Ich hoffe es ist so halbwegs verständlich was mein Problem ist.
Python:
import numpy
from matplotlib import pyplot
import csv
import pandas
uncsv = open('un.csv', 'a', newline='')
def linearconv(nx):
# nx = 41 # set plausible values. Too high - over/undershoot. Too low - asym
dx = 2 / (nx-1)
nt = 2000 # number of timesteps
dt = .00025 # amount of time each timestep covers (delta t)
c = 1 # assume wavespeed of c = 1 or one full 'unit' of convection
c2 = 0.5
# sigma = 0.5 # enforces the Courant Number and automatically sets the discretisation
nu = 0.5
# dt = sigma * dx
u = numpy.ones(nx)
u[int(.5 / dx):int(1 / dx + 1)] = 2 # Initial condition
print(u)
un = numpy.ones(nx) # initialize a temporary array
for n in range(nt): # loop for values of n from 0 to nt, so it will run nt times
un = u.copy() # copy the existing values of u into un
print(un)
# with open('un.csv', 'a', newline='') as uncsv:
# writer = csv.writer (uncsv, delimiter=',')
# for x in numpy.nditer(un.T, order='C'):
# row.append(str(u))
# writer.writerow(row)
# DF = pandas.DataFrame(un)
# DF.to_csv("unpandas.csv", mode='a')
# uncsv.write(un)
numpy.savetxt('savetext.csv', un, delimiter=',')
# numpy.savetxt('un', un.reshape(1, -1), delimiter=',',newline='\n') # überschreibt die Datei
for i in range(1, nx):
#for i in range(nx):
# u[i] = un[i] - un[i] * dt / dx * (un[i] - un[i-1]) # non linear
u[i] = un[i] - c * dt / dx * (un[i] - un[i-1]) # linear
# writer = csv.writer (uncsv, delimiter=',')
# for x in numpy.nditer(u.T, order='C'):
# row.append(str(u))
# writer.writerow(row)
# writer = csv.writer (uncsv, delimiter=',')
# for x in numpy.nditer(u.T, order='C'):
# row.append(str(u))
# writer.writerow(row)
pyplot.plot(numpy.linspace(0, 2, nx), u)
Der Code wäre angelehnt an dieses Projekt hier: https://github.com/barbagroup/CFDPython/blob/master/lessons/01_Step_1.ipynb
Bitte gebt mir etwas Zeit um zu Antworten da ich erstmal nach Hause und kochen muss
![Lächeln :) :)](/forum/styles/smilies/smile.gif)