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、Gianpietroas、James Kermode 、James Daff、ST John、Chiara Gattinoni、Gianpietroas、James Kermode 、James Kermode 、James Kermode 、James Kermode 、James Kermode、萊蒂夫·莫內斯、艾倫·尼科爾、大衛·帕克伍德、拉爾斯·帕斯圖卡、喬瓦尼·佩拉爾塔、伊凡·索爾特、奧利佛·斯特里克森、沃伊切赫·斯拉赫塔、西拉·瓦爾奈、史蒂文·溫菲爾德、塔馬斯·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。