WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Partielle DGL - Konvektionsgleichung lösen - Strömungsrohr

 

RomanBT
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.11.14
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 03.11.2014, 13:42     Titel: Partielle DGL - Konvektionsgleichung lösen - Strömungsrohr
  Antworten mit Zitat      
Hallo,

ich möchte eine partielle Differentialgleichung lösen. Es geht um ein Stömungsrohr, welches in mehrer Ebenen unterteilt wird welche ideal durchmischt sind. Es ist also quasi ein plug-flow im Strömungsrohr. Die Konvektionsgleichung ist diese:
dc/dt=-v*dc/dz

Ich möchte das gefüllte Strömungsrohr kontinuierlich mit einer neuen Lösung durchströmen lassen und dies darstellen.
Mit der Finiten-Differenzen-Methode ergibt sich:
dc/dt= (c(t+1,z)-c(t-1,z))/2h
dc/dz= (c(t,z+1)-c(t,z-1))/2h

Betrachtet man die zeitabhängige Konzentration c(z,t) für jeden Ort z gesondert ergibt sich:
yz(t)=c(z,t)

und daraus:
yz'(t)=dc/dt

Ersetzt man so die linke Seite der pde ergibt sich:
yz'(t) = (c(t+1,z)-c(t-1,z))/2h

mit yz(t)=c(z,t) ergibt sich
yz'(t) = (yz+1(t)-yz-1(t))/2h

Somit hat man für jede Ebene im Stömungsrohr eine ode, woraus sich ein System mehrer ode ergibt welches mit dem entprechenden solver (ode23) gelöst werden kann.

Da es sich um ein numerisches(bzw 2 numerische) Verfahren handelt, habe ich auch mit einem gewissen Fehler gerechnet. Das Problem ist, dass die Konzentration an bestimmten Orten z gut dargestellt wird, an anderen kommt es zu einer Art Überschwingen/Einschwingen.

[img]http://www.directupload.net/file/d/3795/qff863ex_png.htm[/img]

Die Abbildung zeigt die Konzentration an bestimmten Orten z im Strömungsrohr.
Hier der 3D Plot:

[img]http://www.directupload.net/file/d/3795/kogpc3xn_png.htm[/img]

Der code:
Code:

clear all;
close all;
clc;

%%

pk(1) = 0.01;                % v Fließeschwindigkeit [m/min]

pk(11)=0.2;                  % l Säulenlänge [m]
pk(12)=10000;              % Anzahl der Orte z
pk(13)=pk(11)/pk(12);  % Bodenhöhe h [m]
z= 0:pk(13):pk(11);      % Ortsvektor

pk(21)= 20;                  % tend Versuchsdauer [min]
pk(22)=100;                 % Anzahl der Zeitschritte
pk(23)=pk(21)/pk(22);  % Schrittweite [min]
t=0:pk(23):pk(21);       % Zeitvektor

pk(31)= 1;                   % cP1R1 Proteinkonz P1 Reservoir 1 [g/l]
cP1L(1)= pk(31);          % cP1L für z=0 [g/l]
cP1L(2:pk(12)+1)=0;    % cP1L für z~=0

%%
convection_odefun = @(t,x) convection_mod (t, x, pk);

[tsim zsim] = ode23(convection_odefun, t, cP1L);

figure(1);

hold on;
for i=1:10
   
plot(tsim,zsim(:,pk(12)/2+(i*10)),'r-')
axis([tsim(1) tsim(end) 0 1.2]);
xlabel ('t [min]')
ylabel ('c_{P1L} [g/l]')
grid on;
end

for i=8:9
plot(tsim,zsim(:,pk(12)/2+(i*100+i*i)),'b-')
end

plot(tsim,zsim(:,pk(12)/4),'m-')
axis([tsim(1) tsim(end) 0 1.2]);
xlabel ('t [min]')
ylabel ('c_{P1L} [g/l]')
grid on;

figure (2);
mesh(z, t, zsim);
axis([ z(1) z(end) t(1) t(end) -0.1 1.2 0 1]);


das function file
Code:
function out = convection_mod (t,x,p)

dx(1)=0;
for i=2:p(12)
dx(i)= -p(1)* (x(i+1)-x(i-1))/(2*p(13));
end
dx(p(12)+1) = -p(1)*(x(p(12))-x(p(12)+1))/(p(13)*2);

   out = dx';

end


Die Anzahl der Orte habe ich bereits auf 10000 erhöht. Weiter Erhöhungen bringen keine Verbeserungen. Momentane Rechendauer ca 5 min.

Mein Problem ist, ich bin mit der Lösung bisher nicht zufrieden und würde gerne den Fehler verringern.
Kennt sich jmd mit der lösung partieller Differentialgleichungen aus?
Was könnte ich tun? Wo liegt mein Fehler? In welche Richtung sollte ich mich weiter schlau machen?
Ich bin über jegliche Hilfe oder Anregungen dankbar.

Mein eigentliches Ziel ist die Lösung der Konvektions-Dispersions-Gleichung mit Reaktionsterm. Mit dieser Aufgabe wollte ich mich erst einmal mit dem Thema vertraut machen.

Schönen Gruß
Roman
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.