ich möchte das Profil eines hängenden Tropfen berechnen.
Dafür setze ich die Druckdifferenz (Kapillardruck) gleich dem aus der Gewichtskraft resultieren Kraft und der Referenzdruckdifferenz.
Da der Tropfen symmetrisch ist, berechne ich nur für positive x. Weiterhin sind mir die Anfangsbedinungen bekannt. am Scheitelpunkt ist die erste Ableitung =0. Der Wert für z ist geschätzt oder geraten.
Leider bekomme ich nur komplexe Zahlen für z oder NaN. Hat jemand eine Idee, was ich hier vergessen haben könnte?
die Funktion tropfen gibt beim ersten Aufruf schon NaN zurück. Das liegt daran, dass in dem Moment x = 0 und in der Funktion durch x geteilt wird.
Wo allerdings der Fehler in deinem Modell liegt, kann ich dir auch nicht beantworten. Oder doch? Wenn x eine Art Zeit ist, wundert es mich, dass x explizit in der Gleichung vorkommt.
Das ist natürlich nicht sonderlich elegant, aber bringt Fortschritt. Jetzt ernte ich wieder komplexe Zahlen, leider auch nicht mein Ziel.
Vermutlich liegt das an x, welches, wie du schon meintest, explizit in der Gleichung steht. Ich habe mir noch andere Ausführungen zum Thema Tropfen angeschaut. Alle nutzen diese Gleichung. Einige nutzen das klassiche Runge-Kutta-Verfahren. Aber ich denke, es muss auch einfacher gehen.
Noch jemand eine Idee?
Das Problem ist, dass z(2) nach -1 läuft (schau dir die Werte an, bevor sie komplex werden) und damit der Wert unter der Wurzel negativ wird. Hat sich da vielleicht ein Vorzeichenfehler eingeschlichen, bei dem Term (1-z(2)^2)^(1/2) ?
Bei mir gibt es übrigens auch eine Warnung, die auf ein Problem hindeutet:
Warning: Failure at t=1.338858e-004. Unable to meet integration tolerances without reducing the step size below the smallest value
allowed (4.336809e-019) at time t.
Wenn du dir die Rückgabe (x-Werte) anschaust, siehst du, dass die Schrittweite da vollkommen in die Knie gegangen ist.
Kurz und gut, meine Vermutung: entweder ein Vorzeichenfehler, oder das Modell liefert nach einer gewissen Zeit keine brauchbaren Ergebnisse mehr (z.B. wenn der Tropfen reisst).
super. Tatsächlich, das war ein Vorzeichenfehler. (wieso ist mir das nicht aufgefallen).
Dennoch bleibt das Problem weiterhin bestehen:
x ist nicht die Zeit! Hier soll nur die Tropfenform (als Querschnitt in der z-x-Ebene) abgebildet werden.
Die Tropfenform ergibt sich allein aus den Flüssigkeitseigenschaften (Dichte, Oberflächenspannung) und der Gravitationsbeschleunigung.
Ich gebe mit "r" nur den Radius im Scheitelpunkt vor.
Es stimmt, x läuft eigentlich irgendwo zwischen 0 und 0.02. Das kann man sich ja vorstellen. Aber alles probieren/wertebereiche ändern half bisher nichts.
Leider erst mal nicht.
Das Problem liegt darin, dass die Ableitung in z(2) schneller steigt als z(2) an sich, was zu einem mehr als exponentiellen Verhalten führen würde.
Ich kann also nur empfehlen, die Gleichung nochmal sorgfältig zu überprüfen (hast du evtl eine Referenz dazu?)
es gibt wenige Beschreibungen zum hängenden Tropfen. Die meisten Publikationen beziehen sich auf Probleme mit sitzenden Tropfen. Aber hier mal ein öffentlicher Link, wo die Herleitung der Gleichung beschrieben wird.
Hier beziehen sie sich allerdings auf die Krümmungen und das Problem wird schlussendlich über Bogenlänge und Winkel beschrieben. Das sieht mir aber stark danach aus, als könnte ich das dann nicht mehr mit ode45 lösen. Denn dort steckt dann x,z,s und phi drin.
Ich dachte, das Problem sollte mit x und z vollständig beschrieben sein, oder irre ich mich da?
Also, das eine ist vertikal, das andere horizontal.
* Auf die Gefahr hin, mich völlig zu blamieren: fehlt für eine vollst. Beschreibung nicht noch der Volumeninhalt des Tröpfchens?
bzw: würdest du mit sowas wie V=x^2*z das System überdimensionieren ? Die DGLs scheinen sich für mich nur aus Addhäsion/Kohäsion und freiem Fall zu ergeben.
* bei der auskommentierten Gleichung tritt doch (dz/dx)' [-> Ableitung von dz/dx, oder?] auf, aber in deiner Funktion finde ich nur die Auflösung nach dzdx... Irgendwie fehlt da ein Integrationsschritt...
Die komplexe Ausgabe ist, glaube ich, vom Tisch.
Da das eine x-Werte (normalerweise Zeitintervall) und das andere z-Werte (kann generell auch einer oder viele sein) ist, sollten die Dimensionen keine Probleme sein.
Von der Physik eines solchen Systems habe ich leider keine Ahnung, ich kann bestenfalls bestehende Gleichungen umsetzen
Wenn ich es richtig auffasse, ist es quasi eine DGL in dz/dx, deswegen kommt das sowie die Ableitung davon vor.
Naja, die Physiker integrieren ja gerne mal über Körper...
Ich finde das alles etwas abgedreht...
Aber das mit dx/dz und dx*dz fiel mir halt auf... und ich könnte nur mit grosser Mühe die DGL umformulieren...
danke für die Hilfe und Denkanregungen von Euch.
Ich habe jetzt mal die einzelnen Schritte, wie ich von der Anfangsgleichung zu der Formulierung für Matlab gekommen bin, aufgeschrieben (siehe angehängte pdf-Datei). Versteckt sich dort ein Fehler?
Ich brauche hier das Volumen des Körpers nicht. Ich gebe ja noch 'r' als Radius im Scheitelpunkt vor. Weiterhin ist eine 'Anfangsbedingung' die Gesamthöhe des Tropfens gegeben. Damit ist eigentlich alles definiert.
überprüf doch nochmal, ob deine Startwerte sinnvoll sind. Ich habe das mal mit [0.001; 0] statt [0.3; 0] laufen lassen, und dann klappt das bei mir (und wenn ich es plotte, sieht es sogar wie ein Wassertropfen aus ).
juhuuu, ich kann tatsächlich die Form eines Tropfens erkennen. Vielen DANK!!!!
Allerdings kommen da auch gleich drei neue ? hinzu.
1. Wo liegt denn nun mein Koordinatensystem?
Also logisch ist, das der Scheitelpunkt hier oben ist. Ist auch logisch wenn man sich die Gleichung betrachtet. Aber wieso liegt z=0 mitten im Tropfen?
2. Wenn ich mir die Einschnürung anschauen möchte (indem ich r verkleinere), bekomme ich eine Fehlermeldung. Da müsste ich, wenn ich richtig überlegt habe, R1 und R2 mit beiden Vorzeichen versehen (bisher beide als positiv angenommen). Aber wie baut man das in Matlab in die Funktion ode45 ein?
Das ist vermutlich auch der Grund, warum die Funktion über Bogenlänge und Winkel beschrieben werden sollte.
3. Wieso verändert sich die Form des Tropfens fast gar nicht, wenn ich den Kontaktwinkel ändere? (Hier 10°.)
1. die x-Achse ist x, die y-Achse ist z. Wie das in deiner Anwendung zu deuten ist, kann ich dir auch nicht sagen. Ich würde es so interpretieren, dass der Tropfen symmetrisch zur x-Achse ist, und die andere Hälfte fehlt.
2. Warum nicht das ganze spiegeln? WELCHE Fehlermeldung?
3. Sorry, aber ich verstehe nichts von der Physik.
zu 1. nein. Der Tropfen ist symmetrisch zur z-Achse, nicht zur x-Achse. Aus Symmetriegründen habe ich auf der x-Achse nur von 0 (oder fast 0) bis 0.05 berechnet. Somit habe ich die rechte Seite des Tropfens. Die linke Seite bekomme ich durch Spiegeln an der z-Achse.
zu 2. Es ist nicht das Problem der anderen Seite. Bei zu kleinem r kann er die Schrittgrösse für x nicht halten (da mal nachzuschauen, hast du mir ganz zu Beginn dieser Diskussion geraten - seitedem beobachte ich auch x)
Das Problem ist, wenn ich die Form (oder die halbe Form) des Tropfens darstellen möchte, kurz bevor er sich ablöst (das entspricht kleinem r), funktionert das nicht. Das ist auch der Grund, warum ein Tropfen nicht einfach mit f(x) dargestellt werden kann.
zu 3. Irgendetwas muss ich ja auch mal allein lösen .
LG,
soeckle
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.