El paquete QUIP
es una colección de herramientas de software para realizar simulaciones de dinámica molecular. Implementa una variedad de potenciales interatómicos y mecánica cuántica de enlace estrecho, y también puede llamar a paquetes externos y servir como complementos para otros software como LAMMPS, CP2K y también el marco de Python ASE. También se admiten varias combinaciones híbridas al estilo QM/MM, con especial atención a sistemas de materiales como metales y semiconductores.
Para obtener más detalles, consulte la documentación en línea. Existe documentación separada para SOAP y GAP.
El soporte a largo plazo del paquete está garantizado por:
Partes de este código fueron escritas por: 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.
Derechos de autor 2006-2021.
La mayor parte de la versión disponible públicamente se publica bajo la licencia Pública General GNU, versión 2, y algunas partes son de dominio público. El código GAP, incluido como submódulo, se distribuye bajo una licencia de fuente académica no comercial.
Cite la siguiente publicación si utiliza 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 utiliza la interfaz quippy
de Python, cite:
@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 utiliza el código GAP por favor cite
@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 "
}
Los siguientes potenciales interatómicos están actualmente codificados o vinculados en QUIP:
Se implementan las siguientes parametrizaciones y formas funcionales estrechamente vinculantes:
Se pueden llamar los siguientes paquetes externos:
quippy
Python; se recomienda la última versión) QUIP nació debido a la necesidad de unir de manera eficiente una amplia variedad de modelos diferentes, tanto empíricos como de mecánica cuántica. No será competitivo en términos de rendimiento con códigos como LAMMPS y Gromacs. El entorno de simulación atómica también hace esto y se usa mucho más ampliamente, pero QUIP tiene una serie de características únicas:
quippy
El binario para QUIP y los enlaces quippy de Python asociados que brindan interoperabilidad con el entorno de simulación atómica (ASE) están disponibles en el índice de paquetes de Python (PyPI) con el nombre de paquete quippy-ase
. Esto significa que puede instalar la última versión con:
pip install quippy-ase
La instalación a través de pip
también hace que los programas de línea de comandos quip
y gap_fit
estén disponibles (siempre que el directorio en el que pip instala los scripts esté en su PATH
).
Actualmente, las ruedas están disponibles para arquitecturas x86_64
con Python 3.6+ en macOS y distribuciones de Linux basadas en glibc (por ejemplo, Ubuntu, CentOS) y para macOS arm64. Las ruedas se actualizan periódicamente mediante GitHub Actions CI. Abra los problemas aquí si tiene problemas para instalar con pip
.
Si tiene acceso a Docker o Singularity, puede probar una de las imágenes precompiladas para comenzar a funcionar rápidamente.
Para compilar QUIP los requisitos mínimos son:
Un compilador de Fortran en funcionamiento. QUIP se prueba con gfortran
4.4 y versiones posteriores, y ifort
11.1.
Bibliotecas de álgebra lineal BLAS y LAPACK. QUIP se prueba con las versiones de referencia libblas-dev
y liblapack-dev
en Ubuntu 12.04 y mkl
11.1 con ifort
.
MPI: Para usar la paralelización MPI de gap_fit
, necesita una biblioteca ScaLAPACK, por ejemplo libscalapack-openmpi
en Ubuntu, o como parte de MKL.
Clona el repositorio QUIP de GitHub. La opción --recursive
incorpora submódulos automáticamente (si no hace esto, deberá ejecutar git submodule update --init --recursive
desde el directorio QUIP de nivel superior después de la clonación) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
Un submódulo es el código GAP, que se puede encontrar en src/GAP
. Tenga en cuenta que GAP se distribuye bajo una licencia diferente.
GAP es un método de aprendizaje automático que utiliza la regresión del proceso gaussiano y necesita archivos de datos de gran tamaño para ejecutarse. Puede encontrar potenciales que se han publicado, así como datos de capacitación en nuestro repositorio de datos; consulte también los documentos en línea.
Decida su arquitectura buscando en el directorio arch/
y defina una variable ambiental QUIP_ARCH
, por ejemplo::
export QUIP_ARCH=linux_x86_64_gfortran
para gfortran estándar en Linux. Aquí es donde puede ajustar qué compilador se está utilizando, si no le gustan los valores predeterminados. Es posible que necesites crear tu propio archivo arch/Makefile.${QUIP_ARCH}
basado en un archivo existente para sistemas más exóticos.
MPI: Algunos archivos arch ya incluyen ajustes para el uso de MPI. Generalmente tienen mpi
en su nombre, por ejemplo, linux_x86_64_gfortran_openmpi+openmp
.
Personalice QUIP, configure las bibliotecas matemáticas y proporcione opciones de vinculación::
make config
Makefile.config creará un directorio de compilación, build/${QUIP_ARCH}
, y toda la compilación se realizará allí. Primero, le hará algunas preguntas sobre dónde guarda las bibliotecas y otras cosas; si no usa algo que solicita, déjelo en blanco. Las respuestas se almacenarán en Makefile.inc
en el directorio build/${QUIP_ARCH}
y podrá editarlas más tarde (por ejemplo, para cambiar las opciones del compilador, optimización o depuración).
Si luego realiza cambios significativos en la configuración, como habilitar o deshabilitar el soporte de enlace estricto, debe forzar una reconstrucción completa realizando una make deepclean; make
.
MPI: para usar la paralelización MPI de gap_fit
, debe agregar la biblioteca de su sistema a las opciones de enlace, por ejemplo -lscalapack
o -lscalapack-openmpi
, habilitar la compatibilidad con GAP, habilitar la descomposición QR y habilitar ScaLAPACK.
Compile todos los programas, módulos y bibliotecas::
make
Desde el directorio QUIP
de nivel superior. Todos los programas están integrados en build/${QUIP_ARCH}/
. También puede encontrar bibliotecas y archivos de objetos compilados ( libquip.a
) en ese directorio. Los programas se pueden llamar directamente desde ese directorio.
Otros objetivos de marca útiles incluyen:
make install
: copia todos los programas compilados que puede encontrar en QUIP_INSTALLDIR
, si está definido y es un directorio (se requiere la ruta completa), y copia las estructuras empaquetadas en QUIP_STRUCTS_DIR
si está definido.
make libquip
: Compile QUIP como una biblioteca y vincúlelo. Esto creará todas las bibliotecas y las combinará en una: build/${QUIP_ARCH}/libquip.a
, que es con lo que necesita vincularse (así como con LAPACK).
Un buen punto de partida es utilizar el programa quip
, que puede calcular las propiedades de una configuración atómica utilizando una variedad de modelos. Por ejemplo::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
suponiendo que tiene un archivo llamado test.xyz
con los siguientes datos que representan átomos de Cu en una red cúbica fcc:
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
Los parámetros de Lennard-Jones en el ejemplo anterior se definen en el archivo ip.parms.LJ.xml
en share/Parameters
(asegúrese de que la ruta a este archivo sea correcta). El formato de la configuración atómica se proporciona en formato XYZ extendido, en el que la primera línea es el número de átomos, la segunda línea es una serie de pares clave=valor, que deben contener al menos la clave Lattice que proporciona el cuadro delimitador periódico y la clave Propiedades que describe las líneas restantes. El valor de Propiedades es una secuencia de tripletes separados por dos puntos (:), que dan el nombre, tipo y número de columnas, con el tipo dado por I para números enteros, R para reales, S para cadenas.
La mayoría de los argumentos de cadena se pueden reemplazar por --help
y los programas QUIP imprimirán una lista de palabras clave permitidas con breves mensajes de ayuda sobre su uso, por ejemplo, init_args=--help
dará una lista de posibles tipos de modelos (y algunas combinaciones). . El análisis es recursivo, por lo que init_args="IP --help"
procederá a enumerar los tipos de potenciales interatómicos (IP) que están disponibles.
Para compilar los contenedores de Python ( quippy
), los requisitos mínimos son los siguientes. f90wrap
se instalará automáticamente mediante el proceso de compilación, pero es posible que deba verificar que el directorio donde pip
instala los scripts ejecutables esté en su ruta (por ejemplo, configurando PATH=~/.local/bin:$PATH
).
numpy>=1.5.0
)ase>=3.17.0
) Nota: Si está utilizando un entorno virtual Python (virtualenv) y desea instalar quippy
en él, asegúrese de que el entorno esté activado ( source <env_dir>/bin/activate
, donde <env_dir>
es la raíz de su entorno virtual) antes . compilando quippy
(de lo contrario, las versiones de la biblioteca pueden causar conflictos inesperados).
Para compilar los contenedores de Python ( quippy
), ejecute::
make quippy
Quippy se puede usar agregando el directorio lib
en quippy/build/${QUIP_ARCH}
a tu $PYTHONPATH
, sin embargo, puede ser más conveniente instalarlo en una distribución específica de Python::
make install-quippy
se instalará en el entorno virtual actual o intentará instalar en todo el sistema (generalmente falla sin sudo
). Para instalar solo para el usuario actual (en ~/.local
), ejecute el comando QUIPPY_INSTALL_OPTS=--user make install-quippy
, o use QUIPPY_INSTALL_OPTS=--prefix=<directory>
para instalar en un directorio específico. QUIPPY_INSTALL_OPTS
también se puede configurar en el archivo build/${QUIP_ARCH}/Makefile.inc
.
Más detalles sobre el proceso de instalación de quippy y la solución de problemas comunes de compilación están disponibles en la documentación en línea.
Para ejecutar las pruebas unitarias y de regresión, que dependen de quippy
:: bash make test
Para volver a un estado cercano a un clon nuevo, use bash make distclean
Algunas funciones solo están disponibles si verifica otros módulos dentro de los directorios QUIP/src/
, por ejemplo, ThirdParty
(parámetros DFTB, modelo de agua TTM3f).
Para ejecutar potenciales de QUIP a través de LAMMPS, make libquip
para obtener QUIP en forma de biblioteca y luego siga las instrucciones en la documentación de LAMMPS. Necesita al menos la versión del 11 de agosto de 2017 o posterior.
cd src/GAP
git checkout < commit >
O
git checkout main
Actualizando la versión en el repositorio QUIP
:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
No recomendamos los compiladores proporcionados por Apple ni Python, y no probamos la compatibilidad con ellos. Utilice MacPorts o Homebrew para obtener compiladores GNU y también utilice Python desde allí o Anaconda. A partir de esta edición, gcc-8.1 produce un error interno del compilador, pero desde gcc-4.6 hasta gcc-7 está bien.
Wheels se basan en solicitudes push y pull al public
utilizando cibuildwheel con este flujo de trabajo.
Para hacer que un candidato de lanzamiento cree una etiqueta con un sufijo como -rc1
para el primer intento, presione para activar la compilación:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
Si todo va bien, los archivos .whl
aparecerán como activos en una nueva versión de GitHub. El proceso de instalación ahora se puede probar localmente.
Una vez que todo funcione correctamente, realice una versión completa (es decir, cree una etiqueta llamada simplemente v0.xy
sin el sufijo -rc1
). Esto activará la carga de ruedas y la distribución de fuentes a PyPI.