Füllstand Stausee
-
Hallo zusammen
Ich habe ein kleines Problem mit einer Berechnung.
Wir sollen in der Schule ein Simulationsprogramm schrieben, welches einen Staudemm simuliert. Dieser Stausee besitzt 3 Einlaufventile. Der Volumenstrom ist bei diesem Einläufen immer konstant.
Anders sieht es jedoch bein den Ausläufen aus. Dieser häng hier auch von dem Füllstand des Stausees ab. (Wir haben keinen Sensor, welcher den Füllstand berechnet.)
Nun möchte ich eine Funktion schreiben, welche den Füllstand berechnet, (Einläufe vorest ausgeschlossen).
Ich habe im Netz eine Formel gefunden (Ausfluß eines offenen Behälters ( Torricelli )), die gibt mir jedoch nur zurück, wie lange die Entleerung dauert.
Ich möchte am liebsten eine Formel, bei der ich das Volumen des ausgeflaufenen Wasser, abhängig von t (Zeitdauer der Messung) bekommen.
Kann mir jemand einen Ansatz geben, wie ich das Lösen kann?
Gruss Binggi
-
Hast du schon eine Funktion für den Auslauf in Abhängigkeit vom Füllstand vorgegeben? Dann könnte man evtl. eine Differentialgleichung aufstellen...
-
Nein leider nicht.
Ich glaub bei der Aufgabe ist gedacht, dass man einen konstanten Volumenstrom für den auslauf nimmt... Ich will es aber korrekt machen und will desshalb den Füllstand auch miteinbeziehen.
-
Sollst du dir selber eine Formel für den Auslauf aussuchen? Vielleicht ist der Volumenstrom ja proportional zur Füllhöhe. Ich verstehe nicht, wo ich ansetzen soll, weil irgendwie gar nichts gegeben zu sein scheint...
-
Die Definitionen kann man selber machen. Man nehme an, dass h(Füllstand in m) zwischen 100 und 0 sein kann. Der Durchmesser des auslaufrohrer sei d=2m. Daurch ist man in der Lange die Gleichungen(Fliessgeschwindigkeit, Volumenstrom) zu lösen. Da aber bei geöffnetem Auslauf h nicht linear abnimmt, müsste ich einen Weg finden, um h immer neu zu errechnen, dass es annähert dem reelen Ergebnis liegt. z.B all Sekunde h neu berechnen.
Da die Aufgabe nicht wirklich gut ist und viele Unklarheiten beinhaltet und der Lehrer keine Lust verspührt uns zu helfen, muss man alles selber herausfinden.
Gruss
-
Ich bin nicht ganz sicher, ob ich dein Problem ganz verstanden habe.
So wie ich es sehe, stellt sich ein Gleichgewicht ein, nämlich sobald der See gefüllt ist, wird die Auslaufgeschwindigkeit so hoch, das Volumen des Einlaufenden und Auslaufenden Wassers gleich sind. Mit Abnahme des Füllstands verringert sich die Ausflußgeschwindigkeit, dass der See wieder volllaufen kann. Diesen Prozess möchtest du nun manuell nachregeln?
-
Habe eine Gute Lösung gefunden:
t=(2A0)/(μAm*sqrt(2*g)) * (sqrt(z0)-sqrt(z1))
Wobei:
t : Zeit für komplettes Leerlaufen [ s ]
A0 : Behälterquerschnittsfläche [ m² ]
AM : Mündungsquerschnittsfläche [ m² ]
μ : Einschnürungsfaktor, < 1 reale Strömung
z0 : Spiegelhöhe über dem Ausfluß [ m ]
z1 : Höhe des Behälterbodens über dem Ausfluß [ m ]
Nun bin ich seit einiger Zeit am knobeln, wie ich ein Einlauf (linerar), auch in die Formel einbeziehen kann. Hat jemand eine Idee wie das gehen könnte?
-
Ich würde einfach mit purer Hydrostatik mit dem dicken Daumen drauf schiessen.
Der Staudruck ist p_stau = 1/2 rho v^2 (mit rho = Wasserdichte, v Wassergeschwindigkeit)
Der hydrostatische Druck ist p_stat = rho g h (g = Erdbeschleunigung und h Füllhöhe)
Wenn der Auslauf am Boden des Stausee ist, gilt am Auslauf p_stat = p_stau
Daraus bekommst du die Wassergeschwindigkeit am Auslauf.
Der Volumenstrom pro Sekunde [V/s] ist dann v*A, und A ist die Fläche des Auslaufs.
Für dieses einfache Modell kannst du die Flächen aller Ausläufe addieren, und so rechnen, als wäre nur einer da (sofern du annimmst, dass sie alle am Boden sind).
-
Danke Mups für deine Idee.
Ich muss aber voraus berechnen können wann der Staudamm leer ist.
Das ist bei deiner Variante nicht möglich.
-
Darfst du eigentlich Annehmen, dass alle Ausläufe am Boden liegen? Wenn ja, fliesst immer Wasser raus, so lange der Stausee nicht leer läuft.
Wenn du annehmen darfst, dass der Stausee nicht leer läuft, oder du abbrechen darfst, falls das passiert, kannst du aus meinen Vorschlägen eine DGL basteln (Zuläufe nicht vergessen!) und die lösen. Dann besteht dein Programm nur noch aus einer Mini-Formel.
(Der "Stausee" hat bestimmt eine nach oben hin unveränderliche Grundfläche? Sonst wird es wieder schwerer).
-
Binggi schrieb:
Danke Mups für deine Idee.
Ich muss aber voraus berechnen können wann der Staudamm leer ist.
Das ist bei deiner Variante nicht möglich.Warum? Gehört das auch zur Aufgabe? Simulieren klingt für mich erstmal danach, einen Zeitverlauf auszurechnen. Oder interessiert nur eine einzige Zahl: Die Zeit, bis der See trocken ist? Das kann aber ggf. auch unendlich lange sein, weil der See ja auch überlaufen kann.
Ansonsten kannst du deine Formel vermutlich auch aus dem Ansatz herleiten, den ich hingeschrieben habe (bis auf diesen mu-Faktor)
-
Ja, eine der Aufgaben ist zu errechnen, wie lange Strom pruduziert werden kann.. Wobei wenn der einlauf grösser dem auslass ist, wird das separat abgehandelt
Man kann annehmen dass der auslauf am boden ist. Beim Enlauf ist es ja egal, da dir fliessgeschwindigkeit nicht von der wasserhöhe abhängt.
Ich habe dem stausee momentan die masse 100*100*50 gegeben.
Was meinst du mit DGL?
-
Wenn du nicht weisst, was eine Differentialgleichung (DGL) ist, dann musst sie auch nicht lösen
Welche Aufgaben sollst du denn noch lösen?
-
Edit: doppleter post
-
Hatten wir noch nicht in der schule
Wenn ich es selbst lösen könnte, hätte ich nicht gefragt
Es gibt keine anderen Aufgaben mehr...
-
Das Problem bei deiner Formel ist, dass du da nicht die Zuflüsse modellieren kannst.
Viel einfacher ist es wahrscheinlich, wenn du eine Zeitsimulation machst, d.h. iterativ in kleinen Zeitschritten den aktuellen Füllstand ausrechnest. Wenn der Füllstand bei Null ist, stoppst du die Schleife. Wenn nach einer langen Zeit immer noch nicht zu Ende ist, dann machst du einen "Notstopp", weil ja auch Fälle denkbar sind, bei denen sich der Füllstand nicht mehr ändert oder alles Überläuft.
Im Prinzip so:
V := Anfangsvolumen dt := Kleiner Zeitschritt t := 0 while V >= 0 V += Extra-Wasser von Zustrom // jedes mal einen konstanten Wert addieren V -= Abfluss // jedes mal etwas Abziehen, in Abhaengigkeit vom Fuellstand print t, V t += dt
Das Wasser, was abfliesst, kannst du mit meiner Formel ausrechnen.
-
Ja, diese Variante hatte ich schon.
Sie funktioniert, ist aber wenig effizient.
Habe dt= 0.1s genommen. Bei geringer Differenz zwischen Einlauf und Auslauf habe ich schnell mal 1Mio Berechnungen bis die Zeit berechnet ist. Wenn ich denn Füllstand all 0.5 s update habe ich schon 2Mio berechnungen pro Sek.
Daher wollte ich das ganze in einer Rechnung unterkriegen. Oder die Berechnungen halt in einen separaten Thread auslagern.
Werde mich mal mit unserer Mathelehrerin in verbindung setzten um einen Optimale Methode zu bekommen.
Besten Dank.
Gruss Binggi
-
1000k Rechenschritte finde ich jetzt nicht ganz schrecklich. Wenn sie über die Zeit nicht viel ändert, kannst du den Zeitschritt auch vergrößern. Deine Schleife sollte auch mit kleinem dt ziemlich flott durchlaufen, falls du keine Ausgaben auf die Konsole oder in eine Datei machst, sondern nur am Ende die Gesamtzeit ausgibst (Ausgabe braucht viel mehr Zeit als die paar Berechnungen).
Darf ich fragen, wie du in deinem Programm den Volumenstrom am Ausfluss berechnet hast?
Eine anayltische Formel ist natürlich viel feiner, da hast du recht. Aber wenn du die selbst herleiten willst (oder wenigsten die Herleitung verstehen willst), brauchst du vermutlich mehr Mathematik, als du mit deiner Schulmathematik hinbekommst.
-
Den Volumenstrom habe ich mit
Vs= c * A
c = φ * sqrt( 2 * g * h )
berechnet. Wobei beim Einlass h Konstand ist, und beim Auslass h die Füllhöhe ist.