Le package QUIP
est un ensemble d'outils logiciels permettant de réaliser des simulations de dynamique moléculaire. Il implémente une variété de potentiels interatomiques et de mécanique quantique à liaison étroite, et est également capable d'appeler des packages externes et de servir de plugins à d'autres logiciels tels que LAMMPS, CP2K et également le framework python ASE. Diverses combinaisons hybrides sont également prises en charge dans le style QM/MM, avec un accent particulier sur les systèmes de matériaux tels que les métaux et les semi-conducteurs.
Pour plus de détails, consultez la documentation en ligne. Il existe une documentation distincte pour SOAP et GAP.
Le support à long terme du package est assuré par :
Des parties de ce code ont été écrites par : 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.
Droits d'auteur 2006-2021.
La majeure partie de la version disponible publiquement est publiée sous la licence GNU General Public, version 2, avec certaines parties dans le domaine public. Le code GAP, inclus sous forme de sous-module, est distribué sous une licence source académique non commerciale.
Veuillez citer la publication suivante si vous utilisez QUIP :
@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
}
Si vous utilisez l'interface Python quippy
, veuillez citer :
@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 "
}
Si vous utilisez le code GAP veuillez citer
@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 "
}
Les potentiels interatomiques suivants sont actuellement codés ou liés dans QUIP :
Les formes fonctionnelles et paramétrages étroitement liés suivants sont implémentés :
Les packages externes suivants peuvent être appelés :
quippy
; dernière version recommandée) QUIP est né de la nécessité de relier efficacement une grande variété de modèles différents, à la fois empiriques et quantiques. Il ne sera pas compétitif en termes de performances avec des codes tels que LAMMPS et Gromacs. L'environnement de simulation atomique fait également cela et est beaucoup plus largement utilisé, mais QUIP possède un certain nombre de fonctionnalités uniques :
quippy
Le binaire pour QUIP et les liaisons Python quippy associées qui assurent l'interopérabilité avec l'environnement de simulation atomique (ASE) sont disponibles à partir de l'index du package Python (PyPI) sous le nom du package quippy-ase
. Cela signifie que vous pouvez installer la dernière version avec :
pip install quippy-ase
L'installation via pip
rend également disponibles les programmes de ligne de commande quip
et gap_fit
(à condition que le répertoire dans lequel pip installe les scripts se trouve sur votre PATH
).
Actuellement, des roues sont disponibles pour les architectures x86_64
avec Python 3.6+ sur les distributions Linux basées sur macOS et glibc (par exemple Ubuntu, CentOS) et pour macOS arm64. Les roues sont mises à jour périodiquement à l'aide de GitHub Actions CI. Veuillez ouvrir les problèmes ici si vous rencontrez des problèmes d'installation avec pip
.
Si vous avez accès à Docker ou à Singularity, vous pouvez essayer l'une des images précompilées pour être opérationnel rapidement.
Pour compiler QUIP, les exigences minimales sont :
Un compilateur Fortran fonctionnel. QUIP est testé avec gfortran
4.4 et versions ultérieures, et ifort
11.1.
Bibliothèques d'algèbre linéaire BLAS et LAPACK. QUIP est testé avec les versions de référence libblas-dev
et liblapack-dev
sur Ubuntu 12.04, et mkl
11.1 avec ifort
.
MPI : Pour utiliser le parallélisme MPI de gap_fit
, vous avez besoin d'une bibliothèque ScaLAPACK, par exemple libscalapack-openmpi
sur Ubuntu, ou dans le cadre du MKL.
Clonez le référentiel QUIP depuis GitHub. L'option --recursive
introduit automatiquement les sous-modules (si vous ne le faites pas, vous devrez alors exécuter git submodule update --init --recursive
à partir du répertoire QUIP de niveau supérieur après le clonage) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
Un sous-module est le code GAP, qui se trouve dans src/GAP
. Notez que GAP est distribué sous une licence différente.
GAP est une méthode d'apprentissage automatique qui utilise la régression de processus gaussienne et nécessite son exécution de fichiers de données volumineux. Vous pouvez retrouver les potentiels publiés ainsi que les données de formation dans notre référentiel de données, voir également la documentation en ligne.
Décidez de votre architecture en regardant dans le répertoire arch/
et définissez une variable d'environnement QUIP_ARCH
, par exemple ::
export QUIP_ARCH=linux_x86_64_gfortran
pour gfortran standard sous Linux. C'est ici que vous pouvez ajuster le compilateur utilisé, si vous n'aimez pas les valeurs par défaut. Vous devrez peut-être créer votre propre arch/Makefile.${QUIP_ARCH}
basé sur un fichier existant pour les systèmes plus exotiques.
MPI : certains fichiers arch incluent déjà des ajustements pour l'utilisation de MPI. Ceux-ci ont généralement mpi
dans leur nom, par exemple linux_x86_64_gfortran_openmpi+openmp
.
Personnalisez QUIP, définissez les bibliothèques mathématiques et fournissez des options de liaison : :
make config
Makefile.config créera un répertoire de construction, build/${QUIP_ARCH}
, et toute la construction s'y déroulera. Tout d'abord, il vous posera quelques questions sur l'endroit où vous conservez les bibliothèques et autres éléments. Si vous n'utilisez pas quelque chose qu'il demande, laissez-le simplement vide. Les réponses seront stockées dans Makefile.inc
dans le répertoire build/${QUIP_ARCH}
, et vous pourrez les modifier plus tard (par exemple pour modifier les options du compilateur, d'optimisation ou de débogage).
Si vous apportez ultérieurement des modifications importantes à la configuration, telles que l'activation ou la désactivation de la prise en charge des liaisons étroites, vous devez forcer une reconstruction complète en effectuant un make deepclean; make
.
MPI : pour utiliser la parallélisation MPI de gap_fit
, vous devez ajouter votre bibliothèque système aux options de liaison, par exemple -lscalapack
ou -lscalapack-openmpi
, activer la prise en charge GAP, activer la décomposition QR et activer Scalapack.
Compilez tous les programmes, modules et bibliothèques : :
make
À partir du répertoire QUIP
de niveau supérieur. Tous les programmes sont construits dans build/${QUIP_ARCH}/
. Vous pouvez également trouver des fichiers objets et des bibliothèques compilés ( libquip.a
) dans ce répertoire. Les programmes peuvent être appelés directement depuis ce répertoire.
D'autres cibles de marque utiles incluent :
make install
: copie tous les programmes compilés qu'il peut trouver dans QUIP_INSTALLDIR
, s'il est défini et s'il s'agit d'un répertoire (chemin complet requis), et copie les structures groupées dans QUIP_STRUCTS_DIR
s'il est défini.
make libquip
: compilez QUIP en tant que bibliothèque et créez un lien vers celle-ci. Cela créera toutes les différentes bibliothèques et les combinera en une seule : build/${QUIP_ARCH}/libquip.a
, avec lequel vous devez établir un lien (ainsi qu'avec LAPACK).
Un bon point de départ consiste à utiliser le programme quip
, qui peut calculer les propriétés d'une configuration atomique à l'aide de divers modèles. Par exemple::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
en supposant que vous disposez d'un fichier appelé test.xyz
contenant les données suivantes représentant les atomes de Cu dans un réseau fcc cubique : :
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
Les paramètres Lennard-Jones dans l'exemple ci-dessus sont définis dans le fichier ip.parms.LJ.xml
sous share/Parameters
(assurez-vous que le chemin d'accès à ce fichier est correct). Le format de la configuration atomique est donné au format Extended XYZ, dans lequel la première ligne est le nombre d'atomes, la deuxième ligne est une série de paires clé=valeur, qui doivent contenir au moins la clé Lattice donnant la boîte englobante périodique et la clé Propriétés qui décrit les lignes restantes. La valeur de Properties est une séquence de triplets séparés par deux points (:), qui donnent le nom, le type et le nombre de colonnes, le type étant donné par I pour les entiers, R pour les réels, S pour les chaînes.
La plupart des arguments de chaîne peuvent être remplacés par --help
et les programmes QUIP afficheront alors une liste de mots-clés autorisés avec de brefs messages d'aide quant à leur utilisation, ainsi par exemple init_args=--help
donnera une liste de types de modèles potentiels (et quelques combinaisons) . L'analyse est récursive, donc init_args="IP --help"
procédera ensuite à la liste des types de potentiels interatomiques (IP) disponibles.
Pour compiler les wrappers Python ( quippy
), la configuration minimale requise est la suivante. f90wrap
sera installé automatiquement par le processus de construction, mais vous devrez peut-être vérifier que le répertoire dans lequel pip
installe les scripts exécutables se trouve sur votre chemin (par exemple en définissant PATH=~/.local/bin:$PATH
).
numpy>=1.5.0
)ase>=3.17.0
) Remarque : Si vous utilisez un environnement virtuel Python (virtualenv) et que vous souhaitez y installer quippy
, assurez-vous que l'environnement est activé ( source <env_dir>/bin/activate
, où <env_dir>
est la racine de votre environnement virtuel) avant construire quippy
(sinon les versions de la bibliothèque peuvent provoquer des conflits inattendus).
Pour compiler les wrappers Python ( quippy
), exécutez ::
make quippy
Quippy peut être utilisé en ajoutant le répertoire lib
dans quippy/build/${QUIP_ARCH}
à votre $PYTHONPATH
, mais il peut être plus pratique de l'installer dans une distribution Python spécifique : :
make install-quippy
s'installera dans le virtualenv actuel ou tentera d'installer à l'échelle du système (échoue généralement sans sudo
). Pour installer uniquement pour l'utilisateur actuel (dans ~/.local
), exécutez la commande QUIPPY_INSTALL_OPTS=--user make install-quippy
, ou utilisez QUIPPY_INSTALL_OPTS=--prefix=<directory>
pour installer dans un répertoire spécifique. QUIPPY_INSTALL_OPTS
peut également être défini dans le fichier build/${QUIP_ARCH}/Makefile.inc
.
Plus de détails sur le processus d'installation rapide et le dépannage des problèmes de construction courants sont disponibles dans la documentation en ligne.
Pour exécuter les tests unitaires et de régression, qui dépendent de quippy
:: bash make test
Pour revenir à un état proche d'un nouveau clone, utilisez bash make distclean
Certaines fonctionnalités ne sont disponibles que si vous extrayez d'autres modules dans les répertoires QUIP/src/
, par exemple ThirdParty
(paramètres DFTB, modèle d'eau TTM3f).
Afin d'exécuter les potentiels QUIP via LAMMPS, make libquip
pour obtenir QUIP sous forme de bibliothèque, puis suivez les instructions de la documentation LAMMPS. Vous avez besoin d'au moins la version du 11 août 2017 ou ultérieure.
cd src/GAP
git checkout < commit >
OU
git checkout main
Mise à jour de la version dans le dépôt QUIP
:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
Nous ne recommandons pas les compilateurs livrés par Apple ni Python, et nous ne testons pas la compatibilité avec eux. Utilisez MacPorts ou Homebrew pour obtenir des compilateurs GNU, et utilisez également le python à partir de là ou Anaconda. À partir de cette modification, gcc-8.1 produit une erreur interne du compilateur, mais gcc-4.6 jusqu'à gcc-7 convient.
Les roues sont construites sur des requêtes push et pull adressées au public
à l'aide de cibuildwheel avec ce flux de travail.
Pour qu'une version candidate crée une balise avec un suffixe tel que -rc1
pour la première tentative, appuyez sur pour déclencher la construction :
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
Si tout se passe bien, les fichiers .whl
apparaîtront comme actifs dans une nouvelle version de GitHub. Le processus d'installation peut désormais être testé localement.
Une fois que tout fonctionne correctement, effectuez une version complète (c'est-à-dire créez une balise nommée uniquement v0.xy
sans le suffixe -rc1
). Cela déclenchera le téléchargement des roues et la distribution des sources sur PyPI.