DMUG-Archiv 2014

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Memory Management bzw. Rechenzeit

Liebe Liste,

 

vor Jahren hatte ich das Problem einer Beschreibung der Reaktion eines
Methylierungsmittels mit einer Trihydroxyverbindung. Allgemein setzt man das
Methylierungsagens M mit einem Molekül A, das drei reaktive Zentren hat,
um,  und es entsteht bzw. es können entstehen die Monomethylprodukte A1, A2
und A3, die disubstituierten A12, A13 und A23 und das trimethylierte A123. 

 

Der Reaktionsverlauf kann beschrieben werden durch ein System gekoppelter
nichtlinearer Differentialgleichungen ? siehe notebooks. Die auftretenden
Größen Ap ( lies Apunkt ) etc.  sind Ableitungen nach der Zeit.

 

Gefragt war nach der Verteilung der Reaktionsprodukte nach Ende der Reaktion
bei verschiedenen Einsatzmengen von M. Das ging einfach. Das System wird für
hinreichend lange Zeiten mit NDSolve gelöst und die entsprechenden
Produktmengen berechnet.

 

Allerdings wollte ich aus verschiedenen Gründen NDSolve umgehen. Prof.
Pesch, Bayreuth, wies darauf hin, dass man wegen der Form von Ap die Zeit
eliminieren und alles in einfachere (entkoppelte, M fällt heraus)
Differentialgleichungen in der Variablen A umschreiben kann. Wenn man noch
beachtet, dass M am Ende der Reaktion verschwindet (jedenfalls wenn es im
Unterschuss vorliegt), kann man aus der Bilanzgleichung von M auch alle
gesuchten Größen berechnen. 

 

Das funktioniert gut, wie am Beispiel einer Substanz mit zwei
Substitutionsstellen ausgeführt (siehe Disubstitution.nb). 

 

Erweitert man ohne Nachdenken auf drei Substitutionsstellen
(Disubstitution_erw.nb.  Müsste eigentlich Trisubstitution heißen)  hält das
Programm auf meinem Laptop (und auch auf mindestens einem anderen) wegen
Memory-Overflow an. Auf meinem PC wird auch nach acht (!) Stunden Rechenzeit
kein Ergebnis erhalten. Der Taskmanager sagt, dass über 97% des Speichers (4
GB) benutzt werden.

 

Allerdings enthält die Gleichung A123p, wie Prof. Pesch anmerkte, die
Funktion A123 nicht, so dass man direkt integrieren kann
(Disubstitution_erw1a.nb). Diese Integration funktioniert auch, wobei ich
die Berücksichtigung von Bedingungen unterdrückt habe. Das Ergebnis ist
umfangreich, und so stürzte mein Rechner beim Versuch FullSimplify oder auch
nur Simplify auf das Resultat anzuwenden schlicht ab ? es ging nichts mehr.
Zuwenig Memory?!

 

Vermutlich ist es für die Praxis eh geschickter, von Anfang an numerisch zu
arbeiten. Habe ich auch gemacht (Disubstitution_erw2.nb), aber hier traten
in etlichen Rechnungen je nach Wahl der Geschwindigkeitskonstanten k
Probleme auf (Overflow, Underflow,  PrecisionGoal etc. ) , so dass
eigentlich schon eine allgemeine Lösung, in die die k?s dann eingesetzt
werden können, wünschenswert ist.

 

Am elegantesten ist vermutlich, aber das habe ich noch nicht ausgeführt, die
Berechnung von A123 zu umgehen und diese Größe direkt durch die A ? Bilanz
auszudrücken und in die M ? Bilanz einzusetzen.

 

Aber die eigentliche Frage ist, wie laufen Disubstitution_erw.  bzw
Disubstitution_erw_1a auf größeren, schnelleren Rechnern bzw. unter neueren
Versionen von Mma  (ich habe Version 7)? 

 

Mit freundlichen Grüßen

Hans Dolhaine

Attachment: Disubstitution.nb
Description: Mathematica Notebook document

Attachment: Disubstitution_erw.nb
Description: Mathematica Notebook document

Attachment: Disubstitution_erw_1a.nb
Description: Mathematica Notebook document

Attachment: Disubstitution_erw_2.nb
Description: Mathematica Notebook document

Antworten:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html