Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Programmpaket Turbomole Informationsquellen für Turbomole • homepage: www.turbomole.de ( = www.turbomole.com) mit Manual im html-Format: http://www.turbomole.de/MANUAL/DOK.html und kleiner FAQ-Liste • lokales Manual: im pdf-Format auf dirac in $TURBODIR/DOK/DOK.pdf ( = /home/software/turbomole_5.71/TURBOMOLE/DOK/DOK.pdf) • einige Beispiel-inputs im Manual • direkter e-mail-Kontakt zu den Entwicklern via [email protected] • mailing list (?) Obligatorische Zitate: • im Manual (Kapitel 1.3) • am Anfang des outputs jedes Teil-Programms Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Verfügbare Methoden: • Kraftfeldberechnungen mit UFF (universal force field) • HF, DFT, MP2 in den üblichen Varianten • coupled-cluster in der CC2-Näherung, inkl. Behandlung angeregter Zustände • TD-HF und TD-DFT sowie CC2 für angeregte Zustände • zahlreiche Eigenschaften • NMR-shifts • Solvatationsmodell COSMO • direkte ab-initio-Dynamik (freie Dynamik und Simulated Annealing) • spezielle Turbomole-Basissätze (SV(P), TZVPP, . . . ) sowie Dunnings korrelationskonsistente Basen (cc-pVnZ und aug-pVnZ) • Stuttgart-ECPs • distributed-memory-Parallelisierung der wichtigsten Methoden bzw. Programmteile Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Input-Vorbereitung Turbomole-Besonderheiten: • besteht aus mehreren, separaten Programmen: dscf, ridft, mpgrad, . . . • alle Programme werden über ein gemeinsames file control“ gesteuert ” • textmenü-basiertes Interface define“ kann verwendet werden, ” – um den ersten input aufzusetzen, inkl. Moleküldefinition usw., – aber auch zur Modifikation des control-files zwischen aufeinander folgenden Läufen, z.B. zwischen dscf und ricc2. • Vorsicht: – per define werden auch Anfangs-MOs (initial guess) für HF bzw. DFT generiert (defaultmäßig durch eine EHT-Rechnung). – im control-file können auch andere Informationen auftauchen, z.B. die HesseMatrix nach einem Lauf von aoforce, und an andere Programme weitergegeben werden. Empfohlener Umgang mit define: • XYZ-file mit Molekülkoordinaten erzeugen (egal wie) (interaktive Erzeugung der Koordinaten innerhalb von define ist möglich, aber umständlich) • mit Zusatzprogramm x2t ins Turbomole-Format konvertieren und im von Turbomole erwarteten file coord“ ablegen: ” x2t <geo.xyz> > coord • define aufrufen und coord“-file einlesen sowie die weiteren define-Menüs bearbeiten ” – entweder interaktiv, – oder (für wiederholte Produktionsläufe und/oder in shell/PBS-scripts) den von define erwarteten input (inklusive Leerzeilen!) in ein file schreiben (z.B. define.in) und define nicht-interaktiv laufen lassen: define < define.in Visualisierung von Resultaten: Kein eigenes graphisches backend vorhanden. An einigen Stellen output für Molden oder gOpenMol generierbar, z.B.: • Zusatzprogramm tm2molden (Manual 1.5, S. 19) kann Geometrie- und MO-Daten in ein Molden-input-file ausgeben • keyword $pointval kann u.a. MO-Daten für gOpenMol generieren (Manual 12.2.15, S. 202; siehe auch die ausführliche Beschreibung in Kapitel 10, S. 139–141). Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Turbomole-jobs auf dirac: define braucht keine signifikanten Ressourcen ⇒ kann interaktiv auf dem master-Knoten laufen. (Alternative: define < define.in“ in ein script aufnehmen.) Wie bei Gaussian und ” Molpro: Start-Skript turbo_script“ sucht automatisch nach einem freien scratch-directory. ” Aus diversen technischen Gründen funktioniert turbo_script“ ansonsten etwas anders ” als bei Gaussian und Molpro. Wichtigste Unterschiede aus Benutzersicht: • Der komplette Inhalt des aktuellen directories wird in das zugewiesene scratchdirectory kopiert und der job läuft dann in diesem Knoten-lokalen scratch-directory. Daher: – Im aktuellen directory sieht man keine Veränderungen, während der job läuft. – Nach Beendigung (oder Absturz) erscheint ein neues Unterverzeichnis RESULTS“, ” in das alle möglicherweise relevanten output-files aus dem scratch-directory kopiert werden. Wichtig: Der Benutzer muß selber dafür sorgen, daß es dieses Unterverzeichnis vorher noch nicht gibt, sonst können alte oder neue Resultate verloren gehen. • Man braucht nicht nur ein, sondern zwei scripts, um einen turbomole-job auf dirac abzuschicken (die Namen der Skripte sind beliebig; hier heißen sie script1 und script2): script1: wechselt vom home-directory ins gewünschte directory und ruft dann das tur” bo script“ mit script2 als Argument, also: cd irgendein_verzeichnis turbo_script script2 script2: enthält die eigentlichen turbomole-Anweisungen, eine oder auch mehrere, inklusive Optionen und ggf. Ausgabeumleitung (wer will, kann hier sogar shell-Befehle mit aufnehmen). Ein einfachstes Beispiel wäre also: dscf Ein komplizierteres: define < define.in > define.out ridft > ridft.out aoforce > aoforce.out define < define2.in > define2.out jobex -c 250 -statpt -level cc2 > jobex.out Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Zusätzliches Problem: An mehreren Stellen im control-file können scratch-files für verschiedene Programm-Module mit verschiedener keyword-Syntax vereinbart sein: • dscf und ridft: twoint-file mit $scfintunit, Manual S. 161–162; und weitere scratch-files mit $scratch files, Manual S. 164 • mpgrad und rimp2: $mointunit, Manual S. 181 • ricc2: $TMPDIR, Manual S. 182 • relax: $scratch files, Manual S. 194 • mpshift: $scratch files, Manual S. 206–207 Ein spezielles, selbstgeschriebenes Filter-script mod_control.pl“ versucht, in beliebigen ” control-files alle diese Angaben automatisch um einen vorgegebenen scratch-directory-Pfad zu ergänzen. Syntax: mod_control.pl /scratch/dir/path/ < control_in > control_out Dieses script wird automatisch vom script turbo_script ausgeführt, vor dem eigentlichen Aufruf des Turbomole-Programm-Moduls. In Zweifelsfällen kann man aber mod_control.pl auch interaktiv mit obiger Syntax aufrufen, um zu überprüfen, ob das erzeugte, modifizierte control-file tatsächlich korrekt ist. Paralleljobs: • distributed memory (PVM, MPI) ⇒ keine maschinen-technischen Beschränkungen wie bei SMP-Gaussian • Programmablauf auf Effizienz der vorhandenen Kommunikations-hardware abstimmbar (Manual Kapitel 12.2.18, S. 207–210) • Parallelläufe auch auf über das Institut oder den Campus verteilten, Ethernetvernetzten PCs denkbar • parallelisierte Programm-Module: dscf, grad, ridft, rdgrad, mpgrad, ricc2 • Parallelversion auf dirac z.Z. noch nicht implementiert • am HLRN möglich (siehe dortige online-Dokumentation) Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Abläufe einiger Standard-Rechnungen in Turbomole: HF- oder DFT-Rechnungen: Grundablauf: 1. Vorbereitung mit define: • Geometrie (s.o.) • Basis (SV(P) ist voreingestellt und gut genug für erste Tests) • eht-initial-guess (in einfachen closed-shell-Fällen keine Änderungen nötig) • für HF-SCF: nichts weiter nötig (defaults in der Regel o.k.) für DFT: im Untereintrag dft des letzten Menüs DFT einschalten (und ggf. anderes Funktional als BP86 wählen) 2. dann • entweder single-point-Rechnung mit dscf (ggf. gefolgt von einer Frequenzanalyse mit aoforce, NMR-shifts mit mpshift, ricc2 oder Rechnungen für angeregte Zustände) • oder Geometrieoptimierung mit jobex (ohne weitere Optionen) RI-HF und -DFT-Rechnungen: Unterschiede im Grundablauf zu normalem HF/DFT: • im letzten define-Menü die rijk- bzw. ri-Option anwählen: – memory auf sinnvollen Wert erhöhen – Auxiliar-Basis wählen (in der Regel die, die für die normale Basis optimiert wurde!) – RI einschalten Bei sehr großen Molekülen (empfohlen für ≥ 1000 Basisfunktionen) ggf. marij dazuschalten (Multipolapproximation für Coulomb-Integrale). • ridft statt dscf • jobex mit Option -ri Man kann erwarten, daß RI-Rechnungen ca. 10-mal schneller sind als konventionelle Rechnungen, bei insignifikantem Verlust an Genauigkeit. Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] MP2-Rechnungen: Grundablauf: 1. mit define einen HF-SCF-Lauf vorbereiten 2. per Hand(!) die Option $denconv 1.e-7 im control-file hinzufügen 3. dscf-Lauf durchführen 4. mit Hilfsprogramm mpgrad das control-file auf den MP2-Lauf vorbereiten (define kann das nicht!); mpgrad -h für eine Kurzbeschreibung eingeben; Beispiel: mp2prep -e -m 500 -p 1000 /scratch1/hartke/bla Dabei wählt -e eine Energie-Berechnung (-g liefert zusätzlich den Gradienten), das memory wird auf 500 MB beschränkt und der Plattenplatz auf 1000 MB. Achtung: scratch-directory-Angabe möglichst kurz halten, weil mp2prep die Zeilen auf 80 Zeichen abschneidet, aber viel Leerraum einfügt; dummerweise kann es kein Phantasiename sein, weil mp2prep prüft, ob das directory vorhanden ist (und es ggf. anlegt). Empfehlung: wie in obigem Beispiel. In einem batch-Lauf auf dirac wird das dann von turbo_script ohnehin richtiggestellt. 5. den Eintrag $statistics off im control-file auf $statistics mpgrad ändern 6. mpgrad interaktiv und im Vordergrund laufen lassen (ohne queue); es ermittelt dann nur die erforderlichen scratch-file-Größen und setzt das control-file wieder auf $statistics off zurück 7. dann erst entweder • eine single-point-Rechnung mit mpgrad starten • oder eine Geometrieoptimierung mit jobex -level mp2 Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] RI-MP2-Rechnungen: Grundablauf: 1. mit define einen HF-SCF-Lauf vorbereiten; gleichzeitig(!) kann man schon die für RI-MP2 nötigen Optionen setzen: Untermenü mp2 im letzten define-Menü ist dafür zuständig (nicht für konventionelles MP2!): • freeze: core-Orbitale einfrieren (define bietet dafür vernünftige Vorschläge an) • cbas: Auxiliar-Basen aussuchen (passend zur Hauptbasis!) • memory: auf vernünftigen Wert setzen 2. per Hand(!) die Option $denconv 1.e-7 im control-file hinzufügen 3. dscf-Lauf durchführen 4. (wenn man nicht unter (1) schon die nötigen RI-MP2-Optionen gesetzt hat, kann man das auch an dieser Stelle noch tun, mit rimp2prep oder mit define; ein statistics-Lauf ist nicht nötig) 5. dann entweder • eine single-point-Rechnung mit Modul rimp2 starten • oder eine Geometrieoptimierung mit jobex -ri -level mp2 Wie bei HF/DFT beschleunigt die RI-Behandlung die Rechnung um ca. einen Faktor 10. Gleichzeitig kann rimp2 die frozen-core-Näherung auch für den Gradienten, im Gegensatz zu mpgrad. ⇒ Einzige Gründe, mit Turbomole mpgrad statt rimp2 zu verwenden: Keine passenden Auxiliar-Basen vorhanden, oder Referenzrechnungen (z.B. Vergleich zu konventionellem MP2 oder zu anderen Programmpaketen) RI-CC2-Grundzustandsrechnungen: Grundablauf wie bei RI-MP2; Unterschiede: • Untermenü cc2 statt mp2 im letzten define-Menü anwählen • dort neben freeze, cbas und memory auch setzen: – tmpdir: beliebiger dummy-Eintrag, wird vom turbo_script korrigiert ($TMPDIRZeile muß allerdings vorhanden sein!) – ricc2: mindestens cc2“ (als wavefunction model“) wählen, bei Geometrieop” ” timierung zusätzlich geoopt cc2“ ” • single-point-Rechnung mit ricc2 • Geometrieoptimierung mit jobex -level cc2 Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Optimierung von Übergangszuständen: 1. Anfangsgeometrie erzeugen (raten, QST2 in Gaussian, Potentialflächen-scan entlang interessanter Koordinaten, . . . ) 2. ridft-Rechnung durchführen (s.o.) 3. aoforce-Rechnung anschließen (siehe Manual; einziger wichtiger Punkt: im controlfile mit $maxcor-Option ausreichend memory zur Verfügung stellen) 4. resultierende Frequenzen überprüfen: genau eine imaginäre?! Wenn nicht, zurück zu (1) 5. mit define die eigentliche Optimierung vorbereiten (für RI-DFT, RI-MP2 oder RICC2, s.o.), dabei im letzten Menü das Untermenü stp anwählen und (wenigstens) itvc auf 1 setzen (defaults der anderen Optionen ggf. ausreichend) 6. jobex starten mit Option -statpt (und ggf. weiteren Optionen, je nach Theorie-level) 7. auch bei Konvergenz im output statpt.out auf Warnhinweise achten, daß mehr als eine imaginäre Frequenz vorliegt 8. für resultierende Geometrie Frequenzrechnung (1-3) wiederholen. angeregte Zustände: mit escf, egrad, ricc2: siehe Manual. . . Eigenschaften, NMR-shifts,. . . : siehe Manual. . . Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Praxistips: • Meldungen wie dscf ended normally“ landen verwirrenderweise im qsub-Error-output. ” • immer redundante interne Koordinaten definieren! (ired im Geometrie-Menü von define), sonst bekommt man kartesische und die sind ineffizient in Geometrieoptimierungen. • ggf. muß im control-file etwas per Hand“ ergänzt werden; z.B.: ich weiß nicht, ” wo man im define das keyword $denconv setzen kann; $denconv 1.e-7 ist aber (manchmal?) nötig für mp2 und ricc2! • aus dem Manual wird nicht ganz genau klar, wann bei Optimierungen relax und wann statpt einzusetzen ist (mit den entsprechenden flags beim jobex-script). Für Minimierungen ist relax gut geeignet, während Optimierungen zu Sattelpunkten (mit den im Skript beschriebenen Vorsichtsmaßnahmen) anscheinend nur für statpt funktionieren. • Einzelprogramme mit Option -h“ starten → Kurzerläuterungen, die aber teilweise ” mehr/aktuellere Informationen enthalten als das Manual; z.B. verrät jobex -h, daß es eine Option -inihs gibt, mit der man es sich angeblich ersparen kann, bei vor statpt-Sattelpunkt-Optimierung einen aoforce-Lauf per Hand zu starten (diese Option fehlt im Manual). Dies scheint aber nicht wirklich zu funktionieren. . . • es gibt einige kleine Zusatzprogramme zu Turbomole, s. Manual Kapitel 1.5, S. 17–19; von Ermittlung einfacher Geometrieparameter bis zur Berechnung thermodynamischer Daten • wenn define zwischen einzelnen Modulen zur Modifikation des control-files verwendet wird, wird empfohlen, das zu ändernde control-file vorher umzubenennen (oder dem neuen einen anderen Namen zu geben) • obwohl RI-HF möglich ist, ist RI-DFT mit Hybrid-Funktionalen, die HF-exchangeTerme enthalten, anscheinend nicht möglich Prof. Dr. Bernd Hartke, Universität Kiel, [email protected] Fallstudie: Ethylformiat-Pyrolyse: Ameisensäureethylester → Ameisensäure + Ethen ↓ ↓