|
|
Diskretisierung von nichtlinearen Ausdrücken, Crank-Nicolso |
|
blue_plasma |

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 28.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.01.2011, 17:14
Titel: Diskretisierung von nichtlinearen Ausdrücken, Crank-Nicolso
|
 |
Hallo!
Ich bin noch ziemlich unerfahren, was numerische Mathematik angeht. Deshalb entschuldigt bitte meine vielleicht doofe Frage.
Ich will ein dynamisches System von PDGLs numerisch lösen (Konvektion-Diffusion-Reaktion-Problem). Ich habe mich für das Crank-Nicolson-Verfahren entschieden. Im ersten Schritt muss ich die einzelnen Gleichungen diskretisieren. Das klappt auch so lange bis ich den Reaktionsterm diskretisieren will. Er sieht folgendermasen aus:
r = k * p1^a * p2^b, wobei k eine Exponentialfunktion ist.
Mein Problem ist nun wie ich mit den Exponenten "umgehen" soll...
Kann mir da jemand weiterhelfen oder mir den Weg zu einem Tutorial im Netz zeigen???
Besten Dank und Grüße
blue_plasma
|
|
|
|
|
ActionAndi |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 02.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.01.2011, 14:00
Titel:
|
 |
Mit dem Crank-Nicolson Verfahren löst Du das Gleichungssystem unter Anwendung der Diskretisierung der räumlichen Ableitungen.
Den von Dir angegebenen Term braucht man eigentlich diskretisieren. Da die Aktivierungsenergie (der Teil im Exponenten) eigentlich eine konstante ist. D.h. k ist konstant und brauch nicht speziell berücksichtigt werden.
Andi
|
|
|
blue_plasma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 28.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.01.2011, 15:19
Titel:
|
 |
Hallo ActionAndi!
Die Aktivierungsenergie ist konstant, aber was ist mit der Temperatur? Die ist doch nicht konstant... Ich habe nämlich leider den Fall, dass ich nicht isotherm rechnen kann, weil die Reaktion saumäßig exotherm ist.
Und bei den Partialdrücken setze ich dann einfach nur den Wert für die Konzentration an der jeweiligen Stützstelle i ein? (pi = Ci * R_uni * T)
Ich habe mich an einem Tutorial orientiert, das ich im Netz gefunden habe und darin steht, das die jeweilige unabh. Variable u (bei mir: Konzentrationen und Temperaturen), ebenfalls durch eine Differenz ersetzt wird.
Beste Grüße
blue_plasma
|
|
|
ActionAndi |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 02.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.01.2011, 19:42
Titel:
|
 |
Kann es sein, dass Du Konzentrationen und Temperaturen berechnest?
Eigentlich egal. Da Du eh implizit löst, brauchst Du exp(-E/(R*T)) nicht extra auflösen. Diese Art der Linearisierung geht locker. Wenn das DGL System steif ist, dann brauchst Du eh kleine Zeitschritte.
Warum löst Du eigentlich das DGL-System eigentlich selbst? Nutz doch einfach Simulink oder die eingebauten Löser (ode15s, oder so).
Andi
|
|
|
blue_plasma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 28.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.01.2011, 16:41
Titel:
|
 |
Hi ActionAndi!
Jupp, ich berechne Konzentrationen und Temperaturen. Ich habe das Problem auch schon mit der "Method of Lines" (solver: 15s) beackert. Im Prinzip handelt es sich um einen Rohrreaktor mit mantelseitiger Kühlung. Das Programm läuft zwar, aber da habe ich das Problem, dass die Reaktionsgeschwindigkeit so groß wird, das die Temperaturen physikalisch nicht sinnvoll sind. Und irgendwie verkraftet das Programm auch keine negativen Reaktionsordnungen. Ausserdem ist die max. Reaktiosngeschwindigkeit stark von der Gitterweite abhängig
Deshalb hab' ich mich entschieden das Ganze auch mal mit einem anderen Verfahren zu berechnen. Ich dachte es wär' ne gute Matlab-Übung...
|
|
|
ActionAndi |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 02.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.01.2011, 20:14
Titel:
|
 |
|
 |
|
Das die Reaktionsgeschwindigkeit gitterabhängig ist, ist nicht gut. Ok, das weißt Du auch ...
Für mich hört sich das an, als wenn Du evtl. die Volumina der finiten Volumen bzw. numerischen Elemente nicht oder nicht richtig in die Speziesbilanzgleichungen implementiert hast. Meinen Erfahrungen nach, ist das häufig ein Grund.
Das mit den negativen Reaktionsordnungen ist immer knifflig. Wenn die Reaktionsraten so groß sind, dass die Konzentrationen sehr sehr klein werden, dann spielt irgendwann die Numerik eine große Rolle. Da kann schnell eine Wurzel aus einer negativen Zahl gezogen werden oder eine Division durch Null vorhanden sein. Ich würde da hemdsärmlich max(abs(p1),1e-24) einführen. So wird das schonmal unterbunden.
Funktioniert der Code denn mit konstanter Temperatur? Teste erstmal die Speziesbilanzen...
Prinzipiell ist der ODE15s schon sehr stark und kann eigentlich das meiste, was mir so in der Reaktionstechnik vor die Flinte gekommen ist, lösen. Eigentlich alles....
Wenn das alles nicht funktioniert. Dann spiele mal mit den Lösereinstellungen. Ein geringer Zeitschirtt (1e-3s) kann da schon Wunder bewirken. Eigentlich sollte aber 1e-1 schon ausreichen (zumindest bei einem Rohrreaktor).
Andi
|
|
|
blue_plasma |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 28.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 18:50
Titel:
|
 |
Hallo!
danke für die letzte mail, sie hat so manchen Gedanken ins Fliesen gebracht
Also der istoherme Fall funktioniert sowohl im Gleich- als auch im Gegenstrom. Ich hab einfach die Reaktionsenthalpie auf 0 gesetzt. Gleich- und Gegenstrom unterscheiden sich ja nur durch das Vorzeichen bei der Strömungsgeschwindigkeit.
Was mir als Gedanke so gekommen ist, ist das die Randbedingung am Reaktoreintritt vielleicht falsch ist. Ich hab da eine Dirichlet-RB (konst. Temperatur) angesetzt. Da aber die Reaktion stark exotherm ist, müsste der Eintritt auch seine Temperatur verändern (RB nach Robin/Cauchy?). Eine andere Idee wäre die Einlaufstreck mitzurechnen... Oder ist das zu weit gedacht?
Die Idee mit max(abs... hat noch nicht so richtig zum Erflog geführt, aber da bleib ich mal dran.
Danke für die Tipps!
|
|
|
ActionAndi |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 02.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 19:36
Titel:
|
 |
Schön das ich Dir helfen kann.
Wenn im isothermen Fall alles funktioniert, dann ist der größte Schritt eigentlich schon getan. Bilanzierst Du denn auch wirklich alle Massen? In meiner Diss musste ich einen Automobil-Katalysator modellieren. Da habe ich zur Kontrolle meines Modells die Elementbilanzen überprüft. D.h. wieviel C, O, N und H Atome gehen in den Reaktor rein? Wieviel gehen wieder raus? Erst wenn diese Bilanz stimmt, dann ist das Reaktionsmodell auch ok.
Das gleiche kannst Du auch mit den Energiebilanzen durchführen. Nur, dass Du da die "Joules zählst". Wieviel Energie steckst Du rein? Wieviel verlässt den Reaktor wieder, wieviel steckt in den erwärmten Reaktorwänden, wieviel wird für eine Reaktion benötigt bzw. frei gesetzt?
Wenn das alles stimmt, dann kann nur noch die Numerik ein wenig spinnen. Negative Temperaturen schreien förmlich nach negativen Konzentrationen oder so.
Andi
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|