Das QUIP
-Paket ist eine Sammlung von Softwaretools zur Durchführung von Molekulardynamiksimulationen. Es implementiert eine Vielzahl interatomarer Potentiale und eng bindender Quantenmechaniken und ist außerdem in der Lage, externe Pakete aufzurufen und als Plugins für andere Software wie LAMMPS, CP2K und auch das Python-Framework ASE zu dienen. Unterstützt werden auch verschiedene Hybridkombinationen im Stil von QM/MM, mit besonderem Fokus auf Materialsysteme wie Metalle und Halbleiter.
Weitere Einzelheiten finden Sie in der Online-Dokumentation. Für SOAP und GAP gibt es eine separate Dokumentation.
Die langfristige Unterstützung des Pakets wird gewährleistet durch:
Teile dieses Codes wurden geschrieben von: Albert Bartok-Partay, Livia Bartok-Partay, Federico Bianchini, Anke Butenuth, Marco Caccin, Silvia Cereda, Gabor Csanyi, Alessio Comisso, Tom Daff, ST John, Chiara Gattinoni, Gianpietro Moras, James Kermode , Letif Mones, Alan Nichol, David Packwood, Lars Pastewka, Giovanni Peralta, Ivan Solt, Oliver Strickson, Wojciech Szlachta, Csilla Varnai, Steven Winfield, Tamas K Stenczel, Adam Fekete.
Urheberrecht 2006-2021.
Der größte Teil der öffentlich verfügbaren Version wird unter der GNU General Public-Lizenz, Version 2, veröffentlicht, wobei einige Teile gemeinfrei sind. Der als Submodul enthaltene GAP-Code wird unter einer nichtkommerziellen akademischen Quelllizenz vertrieben
Bitte zitieren Sie die folgende Veröffentlichung, wenn Sie QUIP verwenden:
@ARTICLE { Csanyi2007-py ,
title = " Expressive Programming for Computational Physics in Fortran 95+ " ,
author = " Cs{'a}nyi, G{'a}bor and Winfield, Steven and Kermode, J R and De
Vita, A and Comisso, Alessio and Bernstein, Noam and Payne,
Michael C " ,
journal = " IoP Comput. Phys. Newsletter " ,
pages = " Spring 2007 " ,
year = 2007
}
Wenn Sie die quippy
Python-Schnittstelle verwenden, geben Sie bitte Folgendes an:
@ARTICLE { Kermode2020-wu ,
title = " f90wrap: an automated tool for constructing deep Python
interfaces to modern Fortran codes " ,
author = " Kermode, James R " ,
journal = " J. Phys. Condens. Matter " ,
month = mar,
year = 2020 ,
keywords = " Fortran; Interfacing; Interoperability; Python; Wrapping codes;
f2py " ,
language = " en " ,
issn = " 0953-8984, 1361-648X " ,
pmid = " 32209737 " ,
doi = " 10.1088/1361-648X/ab82d2 "
}
Wenn Sie den GAP-Code verwenden, geben Sie ihn bitte an
@ARTICLE { Bartok2010-pw ,
title = " Gaussian approximation potentials: the accuracy of quantum
mechanics, without the electrons " ,
author = " Bart{'o}k, Albert P and Payne, Mike C and Kondor, Risi and
Cs{'a}nyi, G{'a}bor " ,
journal = " Phys. Rev. Lett. " ,
volume = 104 ,
number = 13 ,
pages = " 136403 " ,
month = apr,
year = 2010 ,
issn = " 0031-9007, 1079-7114 " ,
pmid = " 20481899 " ,
doi = " 10.1103/PhysRevLett.104.136403 "
}
Die folgenden interatomaren Potentiale sind derzeit in QUIP kodiert bzw. verknüpft:
Folgende verbindliche Funktionsformen und Parametrisierungen sind implementiert:
Folgende externe Pakete können aufgerufen werden:
quippy
Python-Schnittstelle verwendet wird; neueste Version empfohlen) QUIP wurde aus der Notwendigkeit heraus geboren, eine Vielzahl unterschiedlicher empirischer und quantenmechanischer Modelle effizient miteinander zu verknüpfen. Mit Codes wie LAMMPS und Gromacs wird es hinsichtlich der Leistung nicht konkurrenzfähig sein. Die Atomic Simulation Environment tut dies ebenfalls und wird viel weiter verbreitet, aber QUIP verfügt über eine Reihe einzigartiger Funktionen:
quippy
-Paket Binärdateien für QUIP und die zugehörigen quippy-Python-Bindungen, die Interoperabilität mit der Atomic Simulation Environment (ASE) ermöglichen, sind im Python-Paketindex (PyPI) unter dem Paketnamen quippy-ase
verfügbar. Das bedeutet, dass Sie die neueste Version installieren können mit:
pip install quippy-ase
Durch die Installation über pip
werden auch die Befehlszeilenprogramme quip
und gap_fit
verfügbar (vorausgesetzt, das Verzeichnis, in das pip Skripte installiert, befindet sich in Ihrem PATH
).
Derzeit sind Räder für x86_64
Architekturen mit Python 3.6+ auf macOS und glibc-basierten Linux-Distributionen (z. B. Ubuntu, CentOS) sowie für macOS arm64 verfügbar. Die Räder werden regelmäßig mithilfe von GitHub Actions CI aktualisiert. Bitte öffnen Sie hier Probleme, wenn Sie Probleme bei der Installation mit pip
haben.
Wenn Sie Zugriff auf Docker oder Singularity haben, können Sie eines der vorkompilierten Images ausprobieren, um schnell loszulegen.
Um QUIP zu kompilieren, sind die Mindestanforderungen:
Ein funktionierender Fortran-Compiler. QUIP wurde mit gfortran
4.4 und höher und ifort
11.1 getestet.
Lineare Algebra-Bibliotheken BLAS und LAPACK. QUIP wird mit den Referenzversionen libblas-dev
und liblapack-dev
unter Ubuntu 12.04 und mkl
11.1 mit ifort
getestet.
MPI: Um die MPI-Parallelisierung von gap_fit
zu nutzen, benötigen Sie eine ScaLAPACK-Bibliothek, z. B. libscalapack-openmpi
auf Ubuntu, oder als Teil der MKL.
Klonen Sie das QUIP-Repository von GitHub. Die Option --recursive
bringt Submodule automatisch ein (Wenn Sie dies nicht tun, müssen Sie nach dem Klonen git submodule update --init --recursive
aus dem QUIP-Verzeichnis der obersten Ebene ausführen) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
Ein Submodul ist der GAP-Code, der in src/GAP
zu finden ist. Beachten Sie, dass GAP unter einer anderen Lizenz vertrieben wird.
GAP ist eine maschinelle Lernmethode, die die Gaußsche Prozessregression verwendet und für deren Ausführung große Datendateien erforderlich sind. Veröffentlichte Potenziale sowie Trainingsdaten finden Sie in unserem Datenrepositorium, siehe auch die Online-Dokumente.
Legen Sie Ihre Architektur fest, indem Sie im Verzeichnis arch/
suchen und eine Umgebungsvariable QUIP_ARCH
definieren, z. B.:
export QUIP_ARCH=linux_x86_64_gfortran
für Standard-Gfortran unter Linux. Hier können Sie anpassen, welcher Compiler verwendet wird, wenn Ihnen die Standardeinstellungen nicht gefallen. Für exotischere Systeme müssen Sie möglicherweise Ihre eigene arch/Makefile.${QUIP_ARCH}
-Datei basierend auf einer vorhandenen Datei erstellen.
MPI: Einige Arch-Dateien enthalten bereits Anpassungen für die MPI-Nutzung. Diese haben normalerweise mpi
im Namen, z. B. linux_x86_64_gfortran_openmpi+openmp
.
Passen Sie QUIP an, legen Sie die Mathematikbibliotheken fest und stellen Sie Verknüpfungsoptionen bereit::
make config
Makefile.config erstellt ein Build-Verzeichnis, build/${QUIP_ARCH}
, und der gesamte Build findet dort statt. Zunächst werden Ihnen einige Fragen dazu gestellt, wo Sie Bibliotheken und andere Dinge aufbewahren. Wenn Sie etwas nicht verwenden, nach dem gefragt wird, lassen Sie es einfach leer. Die Antworten werden in Makefile.inc
im Verzeichnis build/${QUIP_ARCH}
gespeichert und können später bearbeitet werden (z. B. um Compiler-, Optimierungs- oder Debug-Optionen zu ändern).
Wenn Sie später wesentliche Änderungen an der Konfiguration vornehmen, wie z. B. die Aktivierung oder Deaktivierung der Tight-Binding-Unterstützung, sollten Sie eine vollständige Neuerstellung erzwingen, indem Sie „ make deepclean; make
.
MPI: Um die MPI-Parallelisierung von gap_fit
zu nutzen, müssen Sie Ihre Systembibliothek zu den Verknüpfungsoptionen hinzufügen, z. B. -lscalapack
oder -lscalapack-openmpi
, die GAP-Unterstützung aktivieren, die QR-Zerlegung aktivieren und ScaLAPACK aktivieren.
Kompilieren Sie alle Programme, Module und Bibliotheken::
make
Aus dem QUIP
Verzeichnis der obersten Ebene. Alle Programme werden in build/${QUIP_ARCH}/
erstellt. In diesem Verzeichnis finden Sie auch kompilierte Objektdateien und Bibliotheken ( libquip.a
). Programme können direkt aus diesem Verzeichnis aufgerufen werden.
Weitere nützliche Make-Ziele sind:
make install
: kopiert alle kompilierten Programme, die es finden kann, nach QUIP_INSTALLDIR
, wenn es definiert ist und ein Verzeichnis ist (vollständiger Pfad erforderlich), und kopiert gebündelte Strukturen nach QUIP_STRUCTS_DIR
wenn es definiert ist.
make libquip
: Kompilieren Sie QUIP als Bibliothek und verlinken Sie darauf. Dadurch werden alle verschiedenen Bibliotheken erstellt und zu einer zusammengefasst: build/${QUIP_ARCH}/libquip.a
, mit der Sie eine Verknüpfung herstellen müssen (sowie mit LAPACK).
Ein guter Ausgangspunkt ist die Verwendung des quip
-Programms, das die Eigenschaften einer Atomkonfiguration anhand verschiedener Modelle berechnen kann. Zum Beispiel::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
Angenommen, Sie haben eine Datei namens test.xyz
mit den folgenden Daten, die Cu-Atome in einem kubischen fcc-Gitter darstellen:
4
Lattice="3.61 0 0 0 3.61 0 0 0 3.61" Properties=species:S:1:pos:R:3
Cu 0.000 0.000 0.000
Cu 0.000 1.805 1.805
Cu 1.805 0.000 1.805
Cu 1.805 1.805 0.000
Die Lennard-Jones-Parameter im obigen Beispiel sind in der Datei ip.parms.LJ.xml
unter share/Parameters
definiert (stellen Sie sicher, dass der Pfad zu dieser Datei korrekt ist). Das Format der Atomkonfiguration wird im erweiterten XYZ-Format angegeben, wobei die erste Zeile die Anzahl der Atome und die zweite Zeile eine Reihe von Schlüssel=Wert-Paaren ist, die mindestens den Lattice-Schlüssel enthalten müssen, der den periodischen Begrenzungsrahmen angibt der Eigenschaftenschlüssel, der die restlichen Zeilen beschreibt. Der Wert von Eigenschaften ist eine durch einen Doppelpunkt (:) getrennte Folge von Tripletts, die den Namen, den Typ und die Anzahl der Spalten angeben, wobei der Typ durch I für ganze Zahlen, R für reelle Zahlen und S für Zeichenfolgen angegeben wird.
Die meisten String-Argumente können durch --help
ersetzt werden, und QUIP-Programme geben dann eine Liste zulässiger Schlüsselwörter mit kurzen Hilfemeldungen zu ihrer Verwendung aus, z. B. init_args=--help
gibt eine Liste potenzieller Modelltypen (und einiger Kombinationen) aus. . Die Analyse erfolgt rekursiv, sodass init_args="IP --help"
anschließend mit der Auflistung der verfügbaren Typen interatomarer Potentiale (IP) fortfährt.
Zum Kompilieren der Python-Wrapper ( quippy
) gelten folgende Mindestanforderungen. f90wrap
wird durch den Build-Prozess automatisch installiert, aber Sie müssen möglicherweise überprüfen, ob das Verzeichnis, in dem pip
ausführbare Skripte installiert, in Ihrem Pfad liegt (z. B. indem Sie PATH=~/.local/bin:$PATH
festlegen).
numpy>=1.5.0
)ase>=3.17.0
) Hinweis: Wenn Sie eine virtuelle Python-Umgebung (virtualenv) verwenden und quippy
darin installieren möchten, stellen Sie vorher sicher, dass die Umgebung aktiviert ist ( source <env_dir>/bin/activate
, wobei <env_dir>
das Stammverzeichnis Ihrer virtuellen Umgebung ist). quippy
erstellen (andernfalls können Bibliotheksversionen unerwartete Konflikte verursachen).
Um die Python-Wrapper ( quippy
) zu kompilieren, führen Sie Folgendes aus:
make quippy
Quippy kann verwendet werden, indem Sie das lib
-Verzeichnis in quippy/build/${QUIP_ARCH}
zu Ihrem $PYTHONPATH
hinzufügen. Die Installation in einer bestimmten Python-Distribution kann jedoch bequemer sein:
make install-quippy
wird entweder in der aktuellen virtuellen Umgebung installiert oder versucht, systemweit zu installieren (schlägt normalerweise ohne sudo
fehl). Um nur für den aktuellen Benutzer (in ~/.local
) zu installieren, führen Sie den Befehl QUIPPY_INSTALL_OPTS=--user make install-quippy
aus oder verwenden Sie QUIPPY_INSTALL_OPTS=--prefix=<directory>
, um in ein bestimmtes Verzeichnis zu installieren. QUIPPY_INSTALL_OPTS
kann auch in der Datei build/${QUIP_ARCH}/Makefile.inc
festgelegt werden.
Weitere Details zum schnellen Installationsprozess und zur Fehlerbehebung bei häufigen Build-Problemen finden Sie in der Online-Dokumentation.
Um die Unit- und Regressionstests auszuführen, die von quippy
:: bash make test
abhängen
Um zu einem Zustand zurückzukehren, der einem neuen Klon nahe kommt, verwenden Sie bash make distclean
Einige Funktionen sind nur verfügbar, wenn Sie andere Module in den QUIP/src/
-Verzeichnissen auschecken, z. B. ThirdParty
(DFTB-Parameter, TTM3f-Wassermodell).
Um QUIP-Potenziale über LAMMPS auszuführen, make libquip
um QUIP in die Bibliotheksform zu bringen, und befolgen Sie dann die Anweisungen in der LAMMPS-Dokumentation. Sie benötigen mindestens die Version vom 11. August 2017 oder höher.
cd src/GAP
git checkout < commit >
ODER
git checkout main
Aktualisieren der Version im QUIP
-Repository:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
Wir empfehlen keine von Apple gelieferten Compiler und Python und testen die Kompatibilität mit ihnen nicht. Verwenden Sie entweder MacPorts oder Homebrew, um GNU-Compiler zu erhalten, und verwenden Sie außerdem Python von dort oder Anaconda. Ab dieser Bearbeitung erzeugt gcc-8.1 einen internen Compilerfehler, aber gcc-4.6 bis gcc-7 ist in Ordnung.
Mit diesem Workflow werden Räder auf der Grundlage von Push- und Pull-Anfragen an public
mithilfe von cibuildwheel erstellt.
Um einen Release-Kandidaten dazu zu bringen, beim ersten Versuch ein Tag mit einem Suffix wie -rc1
zu erstellen, drücken Sie, um den Build auszulösen:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
Wenn alles gut geht, werden die .whl
Dateien als Assets in einer neuen GitHub-Version angezeigt. Der Installationsprozess kann nun lokal getestet werden.
Sobald alles ordnungsgemäß funktioniert, führen Sie eine vollständige Freigabe durch (dh erstellen Sie ein Tag mit dem Namen v0.xy
ohne das Suffix -rc1
). Dadurch wird das Hochladen der Räder und die Quellverteilung an PyPI ausgelöst.