Programmpaket Turbomole
Programmpaket Turbomole
Programmpaket Turbomole
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 />
↓