Montag, 31. Mai 2010

Sag niemals nie.

Und noch viel weniger sollte man sagen, dass etwas schnell geht, obwohl man es sich noch nicht wirklich angeguckt hat. Ich wollte nämlich noch ein Interface für Molpro (ein Quantenchemie-Programm) einbauen. Soweit so gut, es benötigte einiges an Umstrukturierung. Aber das größte Problem hab ich erst wieder am Ende gesehen. Das waren die Dateiformate. Molpro verwendet nämlich ein einfacheres Dateiformat als Tinker. Für mein Programm benötige ich allerdings die Konnektivitäten, weshalb ich mich letztendlich dafür entschied, während der Optimierung mit Molpro die Dateien kurzfristig hin und her zu konvertieren. Was aber anscheinend noch nicht funktioniert.

Naja, Das Tinker Interface hat zumindest bis vor der Umstellung ganz gut funktioniert ...

Dienstag, 25. Mai 2010

Bin mal gespannt, wann es das tut was ich gern hätte ...

Also das mit den redundanten Strukturen war nur ein Typo. Da zwischendurch die Parallelisierung eingebaut wurde, mussten die Dateien für die Optimierung indiziert werden, damit sie sich nicht überschreiben. Das habe ich mit der Nummer des Kerns gemacht. Nur habe ich an einer Stelle "omp_get_num_threads()" anstelle von "omp_get_thread_num()" verwendet, wodurch natürlich immer die gleiche Zahl ausgegeben wurde ;).
Jetzt gibt es dafür wieder einen funkigen Fehler:
Auf dem Cluster berechnet das Programm viel mehr Strukturen, als auf meinem Arbeitsrechner. Obwohl das Programm in der gleichen Version vorliegen sollte ...
Oh, und mir wurde empfohlen, nun "Newton" als Minimum-Berechnungsprogramm zu verwenden. Mit "Optimize" hatte ich nämlich das Problem, dass auch Übergangszustände gefunden wurden, also Maxima der Potentialfläche, da das Programm irgendwie nur den Gradienten betrachtet.

Oh, und das ist mein 42. Post ^^. Und das am "International Towel Day", yay ^^. Nur hab ich heute vergessen nen Handtuch mitzunehmen -_-.

Donnerstag, 20. Mai 2010

Na du kleiner Bug? Puuuut, put, put.

Nachdem ich so ne sonderbare Zeile aus meinem Code genommen habe, die irgendwie verhinderte, dass einige Strukturen bei Drehungen von 90, 180 und 270 ° berechnet wurden, steigen die Minima nun mit den Winkeln auch endlich einheitlich (oder besser gesagt invers). Nun ist der langsamste Teil auch parallelisiert, wodurch das ganze auch etwas schneller geht. Aber dafür habe ich nun wieder redundante Strukturen in meinem Ergebnis. :/

Dienstag, 18. Mai 2010

Und weiter gehts

Tja, zwar erstellt mein Programm nun nicht mehr so viele Minima und auf mysteriöse Weise gibt es anscheinend auch nicht mehr so viele Strukturen, die nicht konvergieren, aber trotzdem ist wohl noch etwas nicht ganz richtig, denn die Anzahl der Minima schankt anscheinend noch zu viel. Diese sollte nicht soo stark vom Winkel abhängen und bei 90° für ein MeOH-MeOH-Dimer sollte es nicht nur ein Minimum geben.

Montag, 17. Mai 2010

Just another manic monday ...

Und weiter geht es mit Fehlern in meinem Programm. (Sagte ich eigentlich schon, dass es Stolper-N genannt werden soll? Wär vielleicht ein eindeutigeres Label.)
Heute wurde mir gesagt, dass mehrere hundert Minima doch etwas viel seien, für ein Methanol-Methanol-Dimer. Fand ich ja auch, aber irgendwie hatte ich den Grund nicht gefunden. Dabei habe ich zudem erfahren, dass es für N Atome etwa 2*N Minima geben soll (so war das ... glaube ich).
Naja, der Grund, warum mein Programm so viele Minima gefunden hat, war letztlich wieder ein sehr einfacher:
Ich hatte eine Schleife, in der eine gegebene Struktur mit jeder bisherigen gespeicherten Struktur verglichen wird. Dann wird eine Variable gesetzt, die angibt, ob es eine neue Struktur ist. Das Problem: Danach wird die Schleife einfach weiter durchgelaufen und wenn die Strukturen danach anders sind, als die gegebene, wird die Variable natürlich wieder zurückgesetzt und das Programm denkt, es wäre eine neue Struktur. Daher hab ich nun einfach eine Überprüfung eingebaut, dass das Programm die Schleife verlässt, sofern sich die Variable verändert.

Dienstag, 11. Mai 2010

Einer geht noch

So, nun habe ich mit dem Optimieren des van der Waals Radius-Korrekturparameters angefangen. Dazu habe ich mir ein neues Programm geschrieben, dass mein anderes mit den entsprechenden Werten ausführt, die Werte ausliest und in einer Datei sammelt. Dabei bin ich glatt auf weitere Fehler in meinem Programm gestoßen. Einen habe ich bisher nicht gelöst, nur umgangen. Dieser tritt bei großen Werten für die Atomposition auf. Denn die Nachkommastellen der Fließkommazahlen sind fest angegeben. Genauso wie die maximale Anzahl an Zeichen. Bloß daran wird sich nicht sonderlich gehalten ;). Denn wenn die Zahl vor dem Komma/Punkt größer wird, übersteigt die Länge der Zahl mit den Nachkommastellen schon mal die maximale Zeichenlänge (Wobei da noch eine Stelle abgezogen werden muss, da das Vorzeichen auch zu der maximalen Zeichenlänge zählt). Naja und aus diesem Grund wird die Stelle dann anscheinend bei der nächsten Zahl abgeschnitten, auch wenn eigentlich noch Platz da ist. Daher stimmte der Kraftfeldindex eines Wasserstoffatoms des Indols nicht, sofern der Z-Wert >= 10 betrug.

Montag, 10. Mai 2010

Organisches Chemie-Wochenende

Ja, das letzte Wochenende war sehr OC-lastig. Nahezu 1.5 Tage OC-Vorträge durften wir hören. Es fing etwa 8:30 an, dann gab es immer 3 oder selten 4 Vorträge hintereinander und dann hatten wir 20 Minuten Pause, die aufgrund geringer Verzögerung meistens auf 15 Minuten reduziert wurden. In den Pausen gab es immer Kekse und Getränke. Davon habe ich natürlich ziemlich gebrauch gemacht ;). Um 14 Uhr gab es dann auch noch eine Mittagspause. Da man sich nicht immer nur von Keksen ernähren konnte, musste man sich für mittags etwas einfallen lassen, um nicht ganz ohne was im Magen wieder in den Hörsaal zu gehen. Naja, ich wollte mir aber nichts bestellen und daher hatte ich mein 1 L Becherglas mitgenommen, sowie Hünerbrühe, Soba und Sojasauce. Stäbchen und Kartuschen-Bunsenbrenner durften natürlich nicht fehlen, allerdings hatte ich keinen Dreifuß zur Verfügung, daher musste ich improvisieren ....
In der Pause hatten wir uns eh in unseren AK-Raum zurückgezogen, da dort noch der Kaffee stand, den wir in der Pause vorher angesetzt hatten. Nunja und wie man auf folgendem Foto sieht, eignet sich die Kaffeemaschine ziemlich gut um ein 1 L Becherglas mit heißem Wasser zu füllen. ;) Ich fands lustig, auch wenn alle anderen Anwesenden die Krise bekamen, als sie das sahen.
Naja, die Vorträge gingen dann noch bis etwa 19:30. Danach wurde noch gegrillt. Gegessen werden konnte wirklich ziemlich schnell und gegnug war auch da. Man muss dazu sagen, dass das ganze Essen und Trinken von Prof. Tietze gesponsort wurde, was ich doch sehr nett fand. Entsprechend voll hatte ich mich auch gefuttert *hust* ^^.
Sonntag ging es auch wieder um 8:30 los, aber dann nur bis etwa halb drei. An dem Tag ging dann auch doch noch spontan eine Anwesenheitsliste rum ...
So, nun aber das versprochene Foto, von Jan aufgenommen (danke):

Lösung

Puh, nahezu den ganzen Tag drauf verwendet, das Problem zu lösen, dass mein Programm abhängig von der Optimierung des Indols einmal 17 Strukturen optimiert und einmal 18. Das lag letztendlich irgendwie an dem Vergleich des Bead-Abstands, mit der Summe der van der Waals-Radien. Die Ausgabe zeigte zwar exakt die gleichen Werte für beide Variablen an, allerdings wurde die Bedingung

if(BeadDistance < vdW_Sum)

trotzdem ausgeführt und die entsprechenden Strukturen ignoriert. Das sollte natürlich nicht sein. Ich schätze mal das liegt daran, dass double kein exakter Datentyp ist. Jedenfalls habe ich deswegen einen kleinen Korrekturterm eingeführt, der von der vdW-Summe abgezogen wird und klein genug sein sollte, um nichts zu verfälschen.

Das was ich vorher als Fehler abgestämpelt hatte, dass einige Atome des Indols falsch rotiert werden, ist anscheinend nicht einmal ein Fehler meines Programms. PyMol kommt irgendwie nicht allzu gut mit den XYZ-Dateien zurecht. Molden zeigte die selbe Datei fehlerfrei an und PyMol nach Konvertierung in eine PDB-Datei auch.

Rückschlag

Letztens bekam ich weitere Moleküle, um mein Programm zu testen. Essigsäure und Indol. War natürlich klar, dass es daran scheitert :/. Hrmpf. Aber ich habe die letzten Tage sogar noch extreme Logikfehler gefunden. Hatte mich gewundert, dass das Programm überhaupt funktioniert hatte. Naja, die Fehler sind hoffentlich nicht so groß. Verwunderlich ist nur, dass bei einer bestimmten Rotation wohl ein Wasserstoff des Indols nicht ordentlich transformiert wurde. Mal gucken.

Donnerstag, 6. Mai 2010

Neues von der Arbeit

Und wieder ein Eintrag zu meiner Bachelorarbeit ;).

Erstmal, ein tolles OpenSource-Programm: PyMol
Damit kann man super Moleküle betrachten, sehr einfach Videos machen usw. Es hat mir sehr geholfen die Rotationen zu überprüfen, weil sich die einzelnen Strukturen leicht überlagern und wieder ausblenden lassen. Außerdem kanns es die Indizes der Atome anzeigen und sowieso noch extrem viel mehr ;). Aber was für mich auch noch praktisch ist, ist dass es die Strukturen vergleichen kann, was danach dann auch betrachtet werden kann. Es berechnet also die maximale Überlappung der Strukturen. Das verwende ich ja auch in meinem Programm, allerdings mit dem Tinker-Programm "superpose". Das Einzige was beachtet werden sollte ist, dass PyMol zwar die Tiker-XYZ-Dateien unterstützt, aber sehr pingelig auf die Leerzeichen in der Datei achtet.

Ansonsten glaube ich mein Programm jetzt soweit zu haben, dass es die lokalen Minima berechnet und filtert.

Dienstag, 4. Mai 2010

Ein weiterer Tag im Leben eines Bacheloranten

So, heute hab ich endlich die Optimierung der Strukturen mit eingebaut. Allerdings läuft bisher noch alles über Dateien, also wahrscheinlich noch eine recht langsame Version. Im Grunde werden die Monomere einmal optimiert, dann geladen, die Rotationsdimere berechnet, geschrieben und danach sukzessive mit dem Tinker-Programm "optimize" optimiert und der resultierende Energiewert gespeichert. Dabei werden nur Strukturen hinzugefügt, die eine eigene Energie haben, oder zumindest eine eigene Struktur. (mit Toleranzbereichen) Dabei ergibt sich auch schon ein kleines Problem ... oder auch nicht, wie mans nimmt ;). Denn ich verwende noch zwei Methanol-Moleküle zu testen. Dabei ergeben sich Dimerstrukturen, bei denen die Moleküle sich als Donor und Akzeptor abwechseln. Dabei sind die Energien natürlich gleich. Die Gleichheit der Strukturen werden mit dem Tinker-Programm "superpose" überprüft. Das Problem dabei ist, dass dieses anscheinend nur die Atome mit dem gleichen Index vergleicht, oder so ähnlich. Dies ließ sich bisher auch nicht durch Angabe eigener "Atom-Maps" korrigieren. Aber villeicht habe ich da noch etwas übersehen. Bei zwei verschiedenen Molekülen und asymmetrischeren Dimeren sollte das auch kein so großes Problem sein.

Und unser Arbeitskreis hat heute ein Maskottchen bekommen. Eine Taube saß zusammengekauert auf dem Fluchtwegs-Balkon und wollte partout nicht gehen. Erst als wir auch gingen ^^. Wir haben sie "Kim" getauft. Hier ein kleines Bildchen von ihr:

Bachelorarbeit *update*

Moin

Endlich funktioniert die Drehung der Moleküle ordentlich, nachdem ich einige Tage Fehler beheben musste. Zum Beispiel hatte ich lange Zeit nicht bemerkt, dass die Rotation nicht um den richtigen Winkel geschah, da die trigonometrischen Funktionen nur Radianten annehmen, aber keine Winkel in Grad. Außerdem sollte die Rotation um das andere Molekül als einfache Translation dargestellt werden. (Was es auch einfacher zu programmieren macht ;).) Naja und dabei kann man noch einige Berechnungen einsparen, da sich doppelte Anordnungen ergeben, wenn das Molekül nach der Rotation um eine Achse auf der anderen befindet.

Und nur noch eine Bemerkung nebenbei: Vektoren von Zeigern sind irgendwie mysteriös. Sollte man besser nicht verwenden ;). Hat zumindest bei mir zu sonderbaren Fehlern geführt.

Da jetzt das ausschreiben der XYZ-Dateien auch funktioniert, kann ich das ganze auch endlich visualisieren. Dafür eignet sich PyMol sehr gut. Zum Spaß habe ich daher mal ein kleines Video einer "Methanol-Kugel" gemacht.

Sonntag, 2. Mai 2010

Experimental-PC

Letzten Montag entschied ich mich mal in die Grenzflächenvorlesung reinzugucken. Und man mag es nicht glauben, aber die Physikalische Chemie Vorlesungen scheinen immer mehr zu einer Experimentalvorlesung zu werden ^^. Erst in Thermodynamik die Darstellung einer statistischen Verteilung mit Würfeln, wurde nun in der Grenzflächen-Vorlesung ein kleiner Teich mit Booten vorgestellt, die sich von alleine bewegten. Die Erklärung war, dass sich das Campher, das unter den Booten befestigt war, langsam im Wasser löste. Dadurch entstand eine an den Grenzflächen lokal erhöhte Campher-Konzentration, die wiederum einen Druck bewirkte. Soweit ich mich erinner war der ausschlaggebende Effekt dabei eben nicht eine Diffusion aufgrund der Konzentration, sondern die unterschiedliche Oberflächenspannung, die aus der unterschiedlichen Zusammensetzung resultiert.