ich habe eine DGL, die ich mit einem Solver in Matlab aufrufe.
In dieser DGL wird u.A. auch ein Zylinderdruck berechnet, den ich gerne irgendwie aus der Funktion zurückgeben würde (ohne ihn zu integrieren).
Es geht um den Zylinderdruck p.
Ich hoffe, es ist verständlich geworden wo mein Problem liegt und irgendjemand kann mir einen Tipp geben.
P.S. Mit globalen Variablen habe ich es schon probiert- funktioniert allerdings nicht so, wie ich es gerne möchte.
ich denke nicht, dass es sinnvoll ist, diese Werte außerhalb weiterzuverwenden, weil ODE-Löser bei Überschreiten der Fehlertoleranz auch mal Schritte zurücknehmen und diese dann logischerweise auch enthalten wären.
Ich gehe davon aus, dass Kal_Z.R und Geo.V konstante Skalare sind.
Dann hast du den Druck zu jeder Simulationszeit t.
Wenn du die Druckberechnung innerhalb der DGL sowieso brauchst, wird das zwar ein doppelter Aufwand, der sich jedoch zeitlich nur minimal auswirken sollte.
zunächst einmal vielen Dank für deine schnelle Antwort!
Den Druck berechne ich zurzeit sowohl außerhalb als auch innerhalb des Solvers, so wie du es auch vorgeschlagen hast.
Leider lässt sich Kal_Z.R nicht ohne weiteres außerhalb des Solvers berechnen. In dieser Klasse werden Gaszustände berechnet und sind somit von mehreren zeitlich veränderlichen Faktoren abhängig. Momentan nehme ich Kal_Z einfach konstant an. Dadurch ergeben sich im getesteten Betriebspunkt allerdings schon Abweichungen von über 6%, was so nicht akzeptabel ist. Geo.V ist auch nicht konstant- das lässt sich allerdings recht gut so hinbekommen.
Würde es denn prinzipiell funktionieren den Druck aus der Fu zurückzugeben?
ich sehe da keine vernünftige Möglichkeit. Meines Erachtens wäre es wie gesagt am vernünftigsten, das im Nachhinein abzuhandeln, und in der DGL nur das nötige zu machen.
Programmiertechnisch geringfügiger Mehraufwand, und Laufzeit wäre halt u.U. etwas höher.
Man könnte den Druck in jedem Integrationsschritt abspeichern (siehe obigen Ansatz). Allerdings muss man dann noch die Integrationsschritte auslesen die nicht zur Lösung der DGL gehören. In dem Beispiel oben liegen z.B. einige Punkte nicht auf der Lösungskurve.
Ob das Vorgehen wirklich sinnvoll ist hängt wohl vom Aufwand der Druckberechnung ab.
Dann kann ich einfach auf p zugreifen. Der Verlauf sieht dabei allerdings wirklich nicht so aus, wie er aussehen sollte, wie ihr ja auch schon angedeutet hattet.
Ich werde wohl doch mit konstanten Gaswerten rechnen und die Abweichungen in Kauf nehmen müssen.
Viele Grüße
finni
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.