QUIP
软件包是用于进行分子动力学模拟的软件工具的集合。它实现了各种原子间势和紧束缚量子力学,还能够调用外部包,并作为其他软件(如 LAMMPS、CP2K 和 python 框架 ASE)的插件。 QM/MM 风格还支持各种混合组合,特别关注金属和半导体等材料系统。
有关更多详细信息,请参阅在线文档。 SOAP 和 GAP 有单独的文档。
通过以下方式确保该软件包的长期支持:
本代码的部分编写者: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 , 莱蒂夫·莫内斯 / 艾伦·尼科尔 / 大卫·帕克伍德 / 拉尔斯·帕斯图卡 / 乔瓦尼佩拉尔塔、伊万·索尔特、奥利弗·斯特里克森、沃伊切赫·斯拉赫塔、Csilla Varnai、史蒂文·温菲尔德、塔马斯·K·斯坦泽尔、亚当·费克特。
版权所有 2006-2021。
大多数公开可用的版本都是根据 GNU 通用公共许可证版本 2 发布的,其中一些部分属于公共领域。 GAP 代码作为子模块包含在非商业学术源许可证下分发
如果您使用 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
}
如果您使用quippy
Python 界面,请引用:
@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 "
}
如果您使用 GAP 代码,请引用
@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 "
}
目前,以下原子间势已在 QUIP 中进行编码或链接:
实现了以下紧束缚函数形式和参数化:
可以调用以下外部包:
quippy
Python 接口则需要;建议使用最新版本) QUIP 的诞生是因为需要有效地将各种不同的模型(经验模型和量子力学模型)结合在一起。它在性能方面不会与 LAMMPS 和 Gromacs 等代码竞争。原子模拟环境也能做到这一点,并且应用更为广泛,但 QUIP 具有许多独特的功能:
quippy
包从 Python 访问 Fortran 类型和例程QUIP 的二进制文件以及提供与原子模拟环境 (ASE) 互操作性的相关 quippy Python 绑定可从包名称quippy-ase
下的 Python 包索引 (PyPI) 中获取。这意味着您可以使用以下命令安装最新版本:
pip install quippy-ase
通过pip
安装还可以使用quip
和gap_fit
命令行程序(前提是 pip 安装脚本的目录位于您的PATH
上)。
目前,wheel 可用于 macOS 上使用 Python 3.6+ 的x86_64
架构和基于 glibc 的 Linux 发行版(例如 Ubuntu、CentOS)以及 macOS arm64。使用 GitHub Actions CI 定期更新轮子。如果您在使用pip
安装时遇到问题,请在此处打开问题。
如果您有权访问 Docker 或 Singularity,则可以尝试使用预编译映像之一来快速启动并运行。
编译 QUIP 的最低要求是:
一个可用的 Fortran 编译器。 QUIP 使用gfortran
4.4 及更高版本以及ifort
11.1 进行测试。
线性代数库 BLAS 和 LAPACK。 QUIP 在 Ubuntu 12.04 上使用参考版本libblas-dev
和liblapack-dev
进行了测试,并在mkl
11.1 和ifort
上进行了测试。
MPI:要使用gap_fit
的MPI 并行化,您需要一个ScaLAPACK 库,例如Ubuntu 上的libscalapack-openmpi
,或者作为MKL 的一部分。
从 GitHub 克隆 QUIP 存储库。 --recursive
选项自动引入子模块(如果您不这样做,那么您将需要在克隆后从顶级 QUIP 目录运行git submodule update --init --recursive
)::
git clone --recursive https://github.com/libAtoms/QUIP.git
其中一个子模块是 GAP 代码,可以在src/GAP
中找到。请注意,GAP 是根据不同的许可证分发的。
GAP是一种使用高斯过程回归的机器学习方法,需要大量数据文件才能运行。您可以在我们的数据存储库中找到已发布的潜力以及培训数据,另请参阅在线文档。
通过查看arch/
目录来确定您的架构,并定义一个环境变量QUIP_ARCH
,例如:
export QUIP_ARCH=linux_x86_64_gfortran
适用于 Linux 上的标准 gfortran。如果您不喜欢默认值,您可以在此处调整正在使用的编译器。对于更奇特的系统,您可能需要基于现有文件创建自己的arch/Makefile.${QUIP_ARCH}
文件。
MPI:一些架构文件已经包含针对 MPI 使用的调整。它们的名称中通常包含mpi
,例如linux_x86_64_gfortran_openmpi+openmp
。
自定义 QUIP、设置数学库并提供链接选项::
make config
Makefile.config 将创建一个构建目录build/${QUIP_ARCH}
,所有构建都发生在那里。首先它会问你一些关于你保存库和其他东西的地方的问题,如果你不使用它要求的东西,就把它留空。答案将存储在build/${QUIP_ARCH}
目录中的Makefile.inc
中,您可以稍后编辑它们(例如更改编译器、优化或调试选项)。
如果您稍后对配置进行重大更改,例如启用或禁用紧绑定支持,您应该通过执行make deepclean; make
。
MPI:要使用gap_fit
的MPI并行化,您必须将系统库添加到链接选项,例如-lscalapack
或-lscalapack-openmpi
,启用GAP支持,启用QR分解,并启用ScaLAPACK。
编译所有程序、模块和库::
make
来自顶级QUIP
目录。所有程序都构建在build/${QUIP_ARCH}/
中。您还可以在该目录中找到已编译的目标文件和库 ( libquip.a
)。可以直接从该目录调用程序。
其他有用的 make 目标包括:
make install
:将它可以找到的所有编译程序复制到QUIP_INSTALLDIR
,如果它已定义并且是一个目录(需要完整路径),并将捆绑结构复制到QUIP_STRUCTS_DIR
如果已定义。
make libquip
:将 QUIP 编译为库并链接到它。这将生成所有不同的库并将它们合并为一个: build/${QUIP_ARCH}/libquip.a
,这是您需要链接的库(以及 LAPACK)。
一个好的起点是使用quip
程序,它可以使用各种模型计算原子配置的属性。例如::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
假设您有一个名为test.xyz
的文件,其中包含代表立方 fcc 晶格中的 Cu 原子的以下数据:
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
上例中的 Lennard-Jones 参数在share/Parameters
下的ip.parms.LJ.xml
文件中定义(确保该文件的路径正确)。原子配置的格式以扩展 XYZ 格式给出,其中第一行是原子数,第二行是一系列 key=value 对,其中必须至少包含给出周期性边界框的 Lattice key 和描述其余行的 Properties 键。 Properties 的值是由冒号 (:) 分隔的三元组序列,给出名称、类型和列数,其中 I 为整数,R 为实数,S 为字符串。
大多数字符串参数可以用--help
替换,然后 QUIP 程序将打印允许的关键字列表以及有关其用法的简短帮助消息,因此例如init_args=--help
将给出潜在模型类型(和一些组合)的列表。解析是递归的,因此init_args="IP --help"
将继续列出可用的原子间势 (IP) 的类型。
要编译 Python 包装器 ( quippy
),最低要求如下。 f90wrap
将由构建过程自动安装,但您可能需要检查pip
安装可执行脚本的目录是否在您的路径上(例如通过设置PATH=~/.local/bin:$PATH
)。
numpy>=1.5.0
)ase>=3.17.0
)注意:如果您使用的是 Python 虚拟环境 (virtualenv) 并且想要在其中安装quippy
,请确保在之前激活该环境( source <env_dir>/bin/activate
,其中<env_dir>
是虚拟环境的根目录)构建quippy
(否则库版本可能会导致意外冲突)。
要编译 Python 包装器 ( quippy
),请运行::
make quippy
可以通过将quippy/build/${QUIP_ARCH}
中的lib
目录添加到$PYTHONPATH
来使用 Quippy,但是安装到特定的 Python 发行版中会更方便:
make install-quippy
将安装到当前的 virtualenv 或尝试在系统范围内安装(通常在没有sudo
情况下失败)。要仅为当前用户安装(到~/.local
),请执行命令QUIPPY_INSTALL_OPTS=--user make install-quippy
,或使用QUIPPY_INSTALL_OPTS=--prefix=<directory>
安装到特定目录。 QUIPPY_INSTALL_OPTS
也可以在文件build/${QUIP_ARCH}/Makefile.inc
中设置。
有关 quippy 安装过程和常见构建问题故障排除的更多详细信息,请参阅在线文档。
运行单元测试和回归测试,这依赖于quippy
:: bash make test
要返回到接近新克隆的状态,请使用bash make distclean
某些功能仅在您检查QUIP/src/
目录中的其他模块时才可用,例如ThirdParty
(DFTB 参数、TTM3f 水模型)。
为了通过 LAMMPS 运行 QUIP 势, make libquip
将 QUIP 转换为库形式,然后按照 LAMMPS 文档中的说明进行操作。您至少需要 2017 年 8 月 11 日版本或更高版本。
cd src/GAP
git checkout < commit >
或者
git checkout main
更新QUIP
存储库中的版本:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
我们不推荐 Apple 附带的编译器和 python,并且我们不测试与它们的兼容性。使用 MacPorts 或 Homebrew 获取 GNU 编译器,并使用那里的 python 或 Anaconda。截至本次编辑,gcc-8.1 产生内部编译器错误,但 gcc-4.6 到 gcc-7 都很好。
Wheels 是通过使用 cibuildwheel 和此工作流程向public
发出的推送和拉取请求构建的。
要让候选版本在第一次尝试时创建带有后缀(例如-rc1
的标签,请按下以触发构建:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
如果一切顺利, .whl
文件将在新的 GitHub 版本中显示为资产。现在可以在本地测试安装过程。
一旦一切正常,进行完整发布(即创建一个名为v0.xy
的标签,不带-rc1
后缀)。这将触发将轮子和源代码分发上传到 PyPI。