Sie entstammen aus einer Betrachtung für eine 1D-Kanalströmung...Ich möchte also den Geschwindigkeits-/Dichte-/Druck-/Temperaturverlauf über die Rohrlänge ermitteln. Da an beiden Enden des Kanals Druckspeicher angenommen werden sollen, dachte ich mir, dass es sich hier um ein Randwertproblem handelt. Also eine druckgetriebene Luftströmung....mit Startzustand und Endzustand meiner 4 Variablen.
Kann mit jemand helfen, wie ich dieses gekoppelte DGl-System mit Matlab lösen kann?? Auf meiner Suche bin ich auf den bvp4c-Solver gestoßen...damit habe ich es schon mal versucht, aber ich habe da so meine Probleme....geht das damit überhaupt bzw kann mir jemand auch auf einem anderen Weg weiterhelfen?
Hey Jan,
schon mal Danke, dass du dich mit meinem Problem befasst!
Alles klar, dann schauen wir nun mal weiter. Ich habe dir im Folgenden den Code mal zusammenkopiert...ich hoffe ich habe alles erwischt und das meiste sinnlose bzw überflüssige rausgeschmissen^^
Code:
clc clearall closeall globaleps Re d k vis pp gamma ;
eps=0.025;
dglname = 'kanstroemung';
R=287.1429;
gamma=1.4;
vis= 2e-6
d=5e-3;
Taus=50;
del=1e5;
To=293;
po=20.6e5;
rhoa=po/R/To
%%%%
Tend=297
pend=24e5
rhoend=pend/R/Tend
uend=76.35938
%%%%
%ae=(gamma*po/rhoa)^0.5
ae=sqrt(gamma*R*To);
ua=0.0001*ae;
AnfWert=[po rhoa To ua];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Anfangswerte=[po rhoa To ua]; Endwerte=[pend rhoend Tend uend];
solinit=bvpinit(linspace(0,1,10),[20.6e5 24e5; 24.485123.28628; 293297;0.034376.35938])
sol=bvp4c(@kanstroemung,@Randbedingung,solinit)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function res = Randbedingung(Anfangswert,Endwerte)
res = [Anfangswert(1)-20.6e5 % Druck
Endwerte(1)-24e5 % Druck
Anfangswert(2)-24.4851% Dichte
Endwerte(2)-23.28628% Dichte
Anfangswert(3)-293% Temperatur
Endwerte(3)-297% Temperatur
Anfangswert(4)-0.0343% Geschwindigkeit
Endwerte(4)-76.35938]; % Geschwindigkeit
Wie man sieht, hat er irgendwie ein Problem mit den Eingaben...wenn man sich die Hilfe zum Solver ansieht, dann ist leider immer eine DGL 2.Ordnung als Basis der Betrachtung. Kann mit der Fehlermeldung leider nichts anfangen... ist bestimmt klar wenn man nicht ein Brett vorm Kopf hat
Zunächst werde ich ja nicht müde zu erklären, dass "clear all" nur zeitraubender Unfug ist. Es ist zwar sehr weit verbreitet, es ist aber trotzdem sinnfrei alle in den Speicher geladenen Funktionen zu löschen und ein resourcen-hungriges Neueinlesen zu erzwingen. Wenn man unbedingt die Variablen löschen möchte, hilft "clear variables".
CLC und CLOSE ALL würde ich auch eher weglassen.
Die Matlab-Funktion EPS mit einer globalen Variablen zu überschreiben, ist eine schelchte Idee. Dies verursacht zwar hier wohl keine Probleme, aber das "Shadowing" von Matlab's Funktionen ist häufig eine Quelle unverständlicher Fehler. Um genau zu sein betrifft das auch "gamma".
Das sieht nach einer eindeutigen Fehlermeldung aus: Im Code ist der initial guess eine Matrix, Matlab erwartet aber einen Vektor. Siehe "help bvpinit".
Gruß, Jan
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.