21.09.2013 Aufrufe

Programmpaket Turbomole

Programmpaket Turbomole

Programmpaket Turbomole

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

<strong>Programmpaket</strong> <strong>Turbomole</strong><br />

Informationsquellen für <strong>Turbomole</strong><br />

• homepage: www.turbomole.de ( = www.turbomole.com)<br />

mit Manual im html-Format: http://www.turbomole.de/MANUAL/DOK.html<br />

und kleiner FAQ-Liste<br />

• lokales Manual: im pdf-Format auf dirac in $TURBODIR/DOK/DOK.pdf<br />

( = /home/software/turbomole_5.71/TURBOMOLE/DOK/DOK.pdf)<br />

• einige Beispiel-inputs im Manual<br />

• direkter e-mail-Kontakt zu den Entwicklern via info@turbomole.com<br />

• mailing list (?)<br />

Obligatorische Zitate:<br />

• im Manual (Kapitel 1.3)<br />

• am Anfang des outputs jedes Teil-Programms


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Verfügbare Methoden:<br />

• Kraftfeldberechnungen mit UFF (universal force field)<br />

• HF, DFT, MP2 in den üblichen Varianten<br />

• coupled-cluster in der CC2-Näherung, inkl. Behandlung angeregter Zustände<br />

• TD-HF und TD-DFT sowie CC2 für angeregte Zustände<br />

• zahlreiche Eigenschaften<br />

• NMR-shifts<br />

• Solvatationsmodell COSMO<br />

• direkte ab-initio-Dynamik (freie Dynamik und Simulated Annealing)<br />

• spezielle <strong>Turbomole</strong>-Basissätze (SV(P), TZVPP, . . . ) sowie Dunnings korrelationskonsistente<br />

Basen (cc-pVnZ und aug-pVnZ)<br />

• Stuttgart-ECPs<br />

• distributed-memory-Parallelisierung der wichtigsten Methoden bzw. Programmteile


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Input-Vorbereitung<br />

<strong>Turbomole</strong>-Besonderheiten:<br />

• besteht aus mehreren, separaten Programmen: dscf, ridft, mpgrad, . . .<br />

• alle Programme werden über ein gemeinsames file ” control“ gesteuert<br />

• textmenü-basiertes Interface ” define“ kann verwendet werden,<br />

– um den ersten input aufzusetzen, inkl. Moleküldefinition usw.,<br />

– aber auch zur Modifikation des control-files zwischen aufeinander folgenden<br />

Läufen, z.B. zwischen dscf und ricc2.<br />

• Vorsicht:<br />

– per define werden auch Anfangs-MOs (initial guess) für HF bzw. DFT generiert<br />

(defaultmäßig durch eine EHT-Rechnung).<br />

– im control-file können auch andere Informationen auftauchen, z.B. die Hesse-<br />

Matrix nach einem Lauf von aoforce, und an andere Programme weitergegeben<br />

werden.<br />

Empfohlener Umgang mit define:<br />

• XYZ-file mit Molekülkoordinaten erzeugen (egal wie) (interaktive Erzeugung der<br />

Koordinaten innerhalb von define ist möglich, aber umständlich)<br />

• mit Zusatzprogramm x2t ins <strong>Turbomole</strong>-Format konvertieren und im von <strong>Turbomole</strong><br />

erwarteten file ” coord“ ablegen:<br />

x2t > coord<br />

• define aufrufen und ” coord“-file einlesen sowie die weiteren define-Menüs bearbeiten<br />

– entweder interaktiv,<br />

– oder (für wiederholte Produktionsläufe und/oder in shell/PBS-scripts) den von<br />

define erwarteten input (inklusive Leerzeilen!) in ein file schreiben (z.B.<br />

define.in) und define nicht-interaktiv laufen lassen:<br />

define < define.in<br />

Visualisierung von Resultaten:<br />

Kein eigenes graphisches backend vorhanden. An einigen Stellen output für Molden oder<br />

gOpenMol generierbar, z.B.:<br />

• Zusatzprogramm tm2molden (Manual 1.5, S. 19) kann Geometrie- und MO-Daten<br />

in ein Molden-input-file ausgeben<br />

• keyword $pointval kann u.a. MO-Daten für gOpenMol generieren (Manual 12.2.15,<br />

S. 202; siehe auch die ausführliche Beschreibung in Kapitel 10, S. 139–141).


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

<strong>Turbomole</strong>-jobs auf dirac:<br />

define braucht keine signifikanten Ressourcen ⇒ kann interaktiv auf dem master-Knoten<br />

laufen. (Alternative: ” define < define.in“ in ein script aufnehmen.) Wie bei Gaussian und<br />

Molpro: Start-Skript ” turbo_script“ sucht automatisch nach einem freien scratch-directory.<br />

Aus diversen technischen Gründen funktioniert ” turbo_script“ ansonsten etwas anders<br />

als bei Gaussian und Molpro. Wichtigste Unterschiede aus Benutzersicht:<br />

• Der komplette Inhalt des aktuellen directories wird in das zugewiesene scratchdirectory<br />

kopiert und der job läuft dann in diesem Knoten-lokalen scratch-directory.<br />

Daher:<br />

– Im aktuellen directory sieht man keine Veränderungen, während der job läuft.<br />

– Nach Beendigung (oder Absturz) erscheint ein neues Unterverzeichnis ” RESULTS“,<br />

in das alle möglicherweise relevanten output-files aus dem scratch-directory<br />

kopiert werden. Wichtig: Der Benutzer muß selber dafür sorgen, daß es dieses<br />

Unterverzeichnis vorher noch nicht gibt, sonst können alte oder neue Resultate<br />

verloren gehen.<br />

• Man braucht nicht nur ein, sondern zwei scripts, um einen turbomole-job auf dirac<br />

abzuschicken (die Namen der Skripte sind beliebig; hier heißen sie script1 und<br />

script2):<br />

script1: wechselt vom home-directory ins gewünschte directory und ruft dann das ” turbo<br />

script“ mit script2 als Argument, also:<br />

cd irgendein_verzeichnis<br />

turbo_script script2<br />

script2: enthält die eigentlichen turbomole-Anweisungen, eine oder auch mehrere, inklusive<br />

Optionen und ggf. Ausgabeumleitung (wer will, kann hier sogar shell-Befehle<br />

mit aufnehmen).<br />

Ein einfachstes Beispiel wäre also:<br />

dscf<br />

Ein komplizierteres:<br />

define < define.in > define.out<br />

ridft > ridft.out<br />

aoforce > aoforce.out<br />

define < define2.in > define2.out<br />

jobex -c 250 -statpt -level cc2 > jobex.out


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Zusätzliches Problem: An mehreren Stellen im control-file können scratch-files für verschiedene<br />

Programm-Module mit verschiedener keyword-Syntax vereinbart sein:<br />

• dscf und ridft: twoint-file mit $scfintunit, Manual S. 161–162;<br />

und weitere scratch-files mit $scratch files, Manual S. 164<br />

• mpgrad und rimp2: $mointunit, Manual S. 181<br />

• ricc2: $TMPDIR, Manual S. 182<br />

• relax: $scratch files, Manual S. 194<br />

• mpshift: $scratch files, Manual S. 206–207<br />

Ein spezielles, selbstgeschriebenes Filter-script ” mod_control.pl“ versucht, in beliebigen<br />

control-files alle diese Angaben automatisch um einen vorgegebenen scratch-directory-Pfad<br />

zu ergänzen. Syntax:<br />

mod_control.pl /scratch/dir/path/ < control_in > control_out<br />

Dieses script wird automatisch vom script turbo_script ausgeführt, vor dem eigentlichen<br />

Aufruf des <strong>Turbomole</strong>-Programm-Moduls. In Zweifelsfällen kann man aber mod_control.pl<br />

auch interaktiv mit obiger Syntax aufrufen, um zu überprüfen, ob das erzeugte, modifizierte<br />

control-file tatsächlich korrekt ist.<br />

Paralleljobs:<br />

• distributed memory (PVM, MPI) ⇒ keine maschinen-technischen Beschränkungen<br />

wie bei SMP-Gaussian<br />

• Programmablauf auf Effizienz der vorhandenen Kommunikations-hardware abstimmbar<br />

(Manual Kapitel 12.2.18, S. 207–210)<br />

• Parallelläufe auch auf über das Institut oder den Campus verteilten, Ethernetvernetzten<br />

PCs denkbar<br />

• parallelisierte Programm-Module: dscf, grad, ridft, rdgrad, mpgrad, ricc2<br />

• Parallelversion auf dirac z.Z. noch nicht implementiert<br />

• am HLRN möglich (siehe dortige online-Dokumentation)


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Abläufe einiger Standard-Rechnungen in <strong>Turbomole</strong>:<br />

HF- oder DFT-Rechnungen:<br />

Grundablauf:<br />

1. Vorbereitung mit define:<br />

2. dann<br />

• Geometrie (s.o.)<br />

• Basis (SV(P) ist voreingestellt und gut genug für erste Tests)<br />

• eht-initial-guess (in einfachen closed-shell-Fällen keine Änderungen nötig)<br />

• für HF-SCF: nichts weiter nötig (defaults in der Regel o.k.)<br />

für DFT: im Untereintrag dft des letzten Menüs DFT einschalten (und ggf.<br />

anderes Funktional als BP86 wählen)<br />

• entweder single-point-Rechnung mit dscf<br />

(ggf. gefolgt von einer Frequenzanalyse mit aoforce, NMR-shifts mit mpshift,<br />

ricc2 oder Rechnungen für angeregte Zustände)<br />

• oder Geometrieoptimierung mit jobex (ohne weitere Optionen)<br />

RI-HF und -DFT-Rechnungen:<br />

Unterschiede im Grundablauf zu normalem HF/DFT:<br />

• im letzten define-Menü die rijk- bzw. ri-Option anwählen:<br />

– memory auf sinnvollen Wert erhöhen<br />

– Auxiliar-Basis wählen (in der Regel die, die für die normale Basis optimiert<br />

wurde!)<br />

– RI einschalten<br />

Bei sehr großen Molekülen (empfohlen für ≥ 1000 Basisfunktionen) ggf. marij<br />

dazuschalten (Multipolapproximation für Coulomb-Integrale).<br />

• ridft statt dscf<br />

• jobex mit Option -ri<br />

Man kann erwarten, daß RI-Rechnungen ca. 10-mal schneller sind als konventionelle<br />

Rechnungen, bei insignifikantem Verlust an Genauigkeit.


MP2-Rechnungen:<br />

Grundablauf:<br />

Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

1. mit define einen HF-SCF-Lauf vorbereiten<br />

2. per Hand(!) die Option $denconv 1.e-7 im control-file hinzufügen<br />

3. dscf-Lauf durchführen<br />

4. mit Hilfsprogramm mpgrad das control-file auf den MP2-Lauf vorbereiten (define<br />

kann das nicht!); mpgrad -h für eine Kurzbeschreibung eingeben; Beispiel:<br />

mp2prep -e -m 500 -p 1000 /scratch1/hartke/bla<br />

Dabei wählt -e eine Energie-Berechnung (-g liefert zusätzlich den Gradienten), das<br />

memory wird auf 500 MB beschränkt und der Plattenplatz auf 1000 MB.<br />

Achtung: scratch-directory-Angabe möglichst kurz halten, weil mp2prep die Zeilen<br />

auf 80 Zeichen abschneidet, aber viel Leerraum einfügt; dummerweise kann es kein<br />

Phantasiename sein, weil mp2prep prüft, ob das directory vorhanden ist (und es<br />

ggf. anlegt).<br />

Empfehlung: wie in obigem Beispiel. In einem batch-Lauf auf dirac wird das dann<br />

von turbo_script ohnehin richtiggestellt.<br />

5. den Eintrag $statistics off im control-file auf $statistics mpgrad ändern<br />

6. mpgrad interaktiv und im Vordergrund laufen lassen (ohne queue); es ermittelt<br />

dann nur die erforderlichen scratch-file-Größen und setzt das control-file wieder auf<br />

$statistics off zurück<br />

7. dann erst entweder<br />

• eine single-point-Rechnung mit mpgrad starten<br />

• oder eine Geometrieoptimierung mit jobex -level mp2


RI-MP2-Rechnungen:<br />

Grundablauf:<br />

Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

1. mit define einen HF-SCF-Lauf vorbereiten; gleichzeitig(!) kann man schon die für<br />

RI-MP2 nötigen Optionen setzen: Untermenü mp2 im letzten define-Menü ist dafür<br />

zuständig (nicht für konventionelles MP2!):<br />

• freeze: core-Orbitale einfrieren (define bietet dafür vernünftige Vorschläge an)<br />

• cbas: Auxiliar-Basen aussuchen (passend zur Hauptbasis!)<br />

• memory: auf vernünftigen Wert setzen<br />

2. per Hand(!) die Option $denconv 1.e-7 im control-file hinzufügen<br />

3. dscf-Lauf durchführen<br />

4. (wenn man nicht unter (1) schon die nötigen RI-MP2-Optionen gesetzt hat, kann<br />

man das auch an dieser Stelle noch tun, mit rimp2prep oder mit define; ein<br />

statistics-Lauf ist nicht nötig)<br />

5. dann entweder<br />

• eine single-point-Rechnung mit Modul rimp2 starten<br />

• oder eine Geometrieoptimierung mit jobex -ri -level mp2<br />

Wie bei HF/DFT beschleunigt die RI-Behandlung die Rechnung um ca. einen Faktor 10.<br />

Gleichzeitig kann rimp2 die frozen-core-Näherung auch für den Gradienten, im Gegensatz<br />

zu mpgrad.<br />

⇒ Einzige Gründe, mit <strong>Turbomole</strong> mpgrad statt rimp2 zu verwenden: Keine passenden<br />

Auxiliar-Basen vorhanden, oder Referenzrechnungen (z.B. Vergleich zu konventionellem<br />

MP2 oder zu anderen <strong>Programmpaket</strong>en)<br />

RI-CC2-Grundzustandsrechnungen:<br />

Grundablauf wie bei RI-MP2; Unterschiede:<br />

• Untermenü cc2 statt mp2 im letzten define-Menü anwählen<br />

• dort neben freeze, cbas und memory auch setzen:<br />

– tmpdir: beliebiger dummy-Eintrag, wird vom turbo_script korrigiert ($TMPDIR-<br />

Zeile muß allerdings vorhanden sein!)<br />

– ricc2: mindestens ” cc2“ (als ” wavefunction model“) wählen, bei Geometrieoptimierung<br />

zusätzlich ” geoopt cc2“<br />

• single-point-Rechnung mit ricc2<br />

• Geometrieoptimierung mit jobex -level cc2


Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Optimierung von Übergangszuständen:<br />

1. Anfangsgeometrie erzeugen (raten, QST2 in Gaussian, Potentialflächen-scan entlang<br />

interessanter Koordinaten, . . . )<br />

2. ridft-Rechnung durchführen (s.o.)<br />

3. aoforce-Rechnung anschließen (siehe Manual; einziger wichtiger Punkt: im controlfile<br />

mit $maxcor-Option ausreichend memory zur Verfügung stellen)<br />

4. resultierende Frequenzen überprüfen: genau eine imaginäre?!<br />

Wenn nicht, zurück zu (1)<br />

5. mit define die eigentliche Optimierung vorbereiten (für RI-DFT, RI-MP2 oder RI-<br />

CC2, s.o.), dabei im letzten Menü das Untermenü stp anwählen und (wenigstens)<br />

itvc auf 1 setzen (defaults der anderen Optionen ggf. ausreichend)<br />

6. jobex starten mit Option -statpt (und ggf. weiteren Optionen, je nach Theorie-level)<br />

7. auch bei Konvergenz im output statpt.out auf Warnhinweise achten, daß mehr<br />

als eine imaginäre Frequenz vorliegt<br />

8. für resultierende Geometrie Frequenzrechnung (1-3) wiederholen.<br />

angeregte Zustände:<br />

mit escf, egrad, ricc2: siehe Manual. . .<br />

Eigenschaften, NMR-shifts,. . . :<br />

siehe Manual. . .


Praxistips:<br />

Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

• Meldungen wie ” dscf ended normally“ landen verwirrenderweise im qsub-Error-output.<br />

• immer redundante interne Koordinaten definieren! (ired im Geometrie-Menü von<br />

define), sonst bekommt man kartesische und die sind ineffizient in Geometrieoptimierungen.<br />

• ggf. muß im control-file etwas ” per Hand“ ergänzt werden; z.B.: ich weiß nicht,<br />

wo man im define das keyword $denconv setzen kann; $denconv 1.e-7 ist aber<br />

(manchmal?) nötig für mp2 und ricc2!<br />

• aus dem Manual wird nicht ganz genau klar, wann bei Optimierungen relax und<br />

wann statpt einzusetzen ist (mit den entsprechenden flags beim jobex-script). Für<br />

Minimierungen ist relax gut geeignet, während Optimierungen zu Sattelpunkten<br />

(mit den im Skript beschriebenen Vorsichtsmaßnahmen) anscheinend nur für statpt<br />

funktionieren.<br />

• Einzelprogramme mit Option ” -h“ starten → Kurzerläuterungen, die aber teilweise<br />

mehr/aktuellere Informationen enthalten als das Manual; z.B. verrät jobex -h, daß<br />

es eine Option -inihs gibt, mit der man es sich angeblich ersparen kann, bei<br />

vor statpt-Sattelpunkt-Optimierung einen aoforce-Lauf per Hand zu starten (diese<br />

Option fehlt im Manual). Dies scheint aber nicht wirklich zu funktionieren. . .<br />

• es gibt einige kleine Zusatzprogramme zu <strong>Turbomole</strong>, s. Manual Kapitel 1.5, S. 17–19;<br />

von Ermittlung einfacher Geometrieparameter bis zur Berechnung thermodynamischer<br />

Daten<br />

• wenn define zwischen einzelnen Modulen zur Modifikation des control-files verwendet<br />

wird, wird empfohlen, das zu ändernde control-file vorher umzubenennen (oder<br />

dem neuen einen anderen Namen zu geben)<br />

• obwohl RI-HF möglich ist, ist RI-DFT mit Hybrid-Funktionalen, die HF-exchange-<br />

Terme enthalten, anscheinend nicht möglich


Fallstudie:<br />

Prof. Dr. Bernd Hartke, Universität Kiel, hartke@phc.uni-kiel.de<br />

Ethylformiat-Pyrolyse: Ameisensäureethylester → Ameisensäure + Ethen<br />

↓<br />

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!