祁景博 章曙光 姜駿
摘要:第一性原理計算即從量子力學(xué)基本原理出發(fā),采用數(shù)值算法求解密度泛函理論基本方程,從而獲得電子運動規(guī)律、探索物質(zhì)運動規(guī)律、研究物質(zhì)的理論描述。項目從針對第一性原理計算的迭代計算和本征態(tài)求解方式,開發(fā)支持材料元素第一性原理材料計算的軟件。隨著計算機技術(shù)和計算能力的不斷進步,對材料性能和機制的認知逐漸深入到電子層次,新材料的研究也越來越由傳統(tǒng)的實驗室研究轉(zhuǎn)為理論模擬計算和數(shù)據(jù)驅(qū)動標準化流程的新模式。課題基于MangoDB數(shù)據(jù)庫技術(shù),利用Atomate軟件的FireWorks模塊研究,對材料元素實現(xiàn)第一性原理材料計算,獲得其計算基本流程的數(shù)據(jù)庫模型。
關(guān)鍵詞:第一性原理計算;密度泛函理論;材料元素計算;標準化流程;MongoDB數(shù)據(jù)庫
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2024)13-0077-07 開放科學(xué)(資源服務(wù))標識碼(OSID) :
0 引言
在新材料的研究中,材料計算往往是至關(guān)重要的一步,可以為材料工作者提供關(guān)鍵的數(shù)據(jù)支持,幫助他們設(shè)計、制備和合成新材料。然而,傳統(tǒng)的材料計算通常需要不斷迭代和試錯,導(dǎo)致研發(fā)周期長、不確定性高、研究成本高,從而限制了新材料的研究進展。近年來,隨著計算機技術(shù)的快速發(fā)展,新材料設(shè)計中的材料計算可以通過計算機模擬進行。通過計算機程序不斷迭代材料設(shè)計、制備和合成方式,將手動的材料計算轉(zhuǎn)變?yōu)槟K化的“參數(shù)選擇-自動計算”的標準化流程。新材料研究需要大量的材料計算數(shù)據(jù)支持,而材料數(shù)據(jù)庫作為存儲計算數(shù)據(jù)的媒介和載體,是材料多角度參數(shù)設(shè)計和計算迭代的基礎(chǔ)。材料數(shù)據(jù)庫在滿足大量材料計算數(shù)據(jù)的同時,對于尋找宏觀物理性質(zhì)和微觀結(jié)構(gòu)優(yōu)化具有決定性作用,為高效、低成本的新型材料設(shè)計等材料科學(xué)研究奠定了基礎(chǔ)。
國內(nèi)重要材料數(shù)據(jù)庫包括中國科學(xué)院的材料學(xué)科基礎(chǔ)科學(xué)數(shù)據(jù)庫和北京科技大學(xué)主導(dǎo)的國家材料科學(xué)數(shù)據(jù)共享網(wǎng)。此外,還有一些規(guī)模較小的數(shù)據(jù)庫,如北京航空材料研究院的航空材料數(shù)據(jù)庫和中科院長春應(yīng)用化學(xué)研究所的稀土材料數(shù)據(jù)庫,專注于特定領(lǐng)域但數(shù)據(jù)共享有限。中科院物理研究所的Atomly.net收錄了超過17萬個無機晶體材料的第一性原理計算結(jié)果。美國的Materials Project等數(shù)據(jù)庫也提供豐富內(nèi)容,但仍存在用戶權(quán)限限制和數(shù)據(jù)分析挑戰(zhàn)。
1 關(guān)鍵技術(shù)介紹
FireWorks是一個用于定義、管理和執(zhí)行標準化工作流??梢允褂肞ython、JSON或YAML定義復(fù)雜的工作流,使用MongoDB進行存儲。工作流可以在任意計算資源上自動執(zhí)行,包括那些具有排隊系統(tǒng)的計算資源。
Atomate是一款開源軟件,使用Python函數(shù)的工作流用于執(zhí)行復(fù)雜的材料科學(xué)。Atomate的特點包括它建立在開源庫之上:pymatgen、custodian、jobflow和FireWorks。具有“標準”工作流程庫,用于計算各種所需材料性能,將工作流修改和鏈接在一起的簡單途徑。它可以構(gòu)建輸出屬性的大型數(shù)據(jù)庫,會自動保留作業(yè)、目錄、運行時的細致記錄參數(shù)等。
MongoDB是一款開源文檔型數(shù)據(jù)庫,采用JSON 風格的BSON存儲數(shù)據(jù)。其靈活的數(shù)據(jù)模型允許存儲各種結(jié)構(gòu)的文檔,支持復(fù)雜查詢操作。
2 需求分析
2.1 設(shè)計目標
該軟件是基于MongoDB數(shù)據(jù)庫的材料計算工具,針對材料研究工作者開發(fā),旨在計算材料分子的物化性質(zhì),如動能、勢能和態(tài)密度等。由于構(gòu)成材料的元素組分、性質(zhì)的差別,以及材料應(yīng)用的復(fù)雜性,不同材料的第一性原理計算過程差別極大。當前的研究中,計算過程需要大量的人機交互,嚴重制約了高性能計算條件下的材料研究效率。目前對于封裝外部第一性原理計算引擎具有松耦合。結(jié)果計算、軟件安裝、測試都需要用戶去完成,材料工作者了解材料相關(guān)物性計算的基本流程但不具備計算機專業(yè)的背景知識。所以將材料計算過程分解為基本的“軟件-控制參數(shù)”組合單元,應(yīng)用數(shù)據(jù)庫技術(shù),通過組織基本組合單元,達到第一性原理材料計算流程的標準化,進而提高材料元素計算的效率。
2.2 功能需求分析
交互頁面模塊:1) 用戶可在軟件登錄界面輸入指定賬號密碼登錄系統(tǒng);2) 登錄后可進行新模型任務(wù)中元素類型的選擇;3) 選好元素類型后進入該元素的元素名和原子數(shù)量設(shè)置以及元素屬性;4) 設(shè)置好元素屬性后進入原子位置和晶胞參數(shù)坐標的具體設(shè)置。最后開始計算。
本軟件系統(tǒng)需要先對部署在Ubuntu 20.2 下的Atomate、FireWorks、MongoDB、VASP進行環(huán)境配置才可運行。
Atomate工作流調(diào)用模塊:Atomate是支持第一性原理計算的工具模塊,可以通過命令生成管理每項任務(wù)的FireWorks 工作流,包括逐條啟動和管理Fire?Works中所設(shè)計和構(gòu)造的輸入文件生成自洽迭代、態(tài)密度和能帶計算和數(shù)據(jù)存儲工作流。
FireWorks工作流模塊通過MongoDB存儲設(shè)計工作流程,在python.py文件中使用FireWorks配置計算工作流。支持利用Pymatgen前處理產(chǎn)生計算所需贗勢信息,傳遞輸入文件,調(diào)用VASP完成計算流程,并將結(jié)果存入MongoDB數(shù)據(jù)庫。
VASP材料元素計算模塊:該模塊基于贗勢-平面波基組,利用密度泛函理論求解Kohn-Sham方程,完成材料的電子結(jié)構(gòu)分析。支持快速生成輸入文件、提交計算任務(wù)到作業(yè)隊列,并自動解析輸出文件以匯總結(jié)果。
MongoDB 數(shù)據(jù)庫存儲模塊:本模塊主要實現(xiàn)對FireWorks工作流、材料計算結(jié)果數(shù)據(jù)的存儲。Mon?goDB支持豐富多樣的查找表達式模塊和多種文件和數(shù)據(jù)類型。
2.3 性能需求分析
本軟件系統(tǒng)中的Atomate 軟件,F(xiàn)ireWorks 模塊,VASP材料元素計算軟件需運行在Linux系統(tǒng)平臺下,材料工作者需將本軟件系統(tǒng)部署于主機或Linux操作系統(tǒng)的虛擬機。
3 概要設(shè)計
3.1 數(shù)據(jù)庫設(shè)計與實現(xiàn)
數(shù)據(jù)庫需要滿足存儲三個部分的能力:1) 存儲FireWorks計算工作流;2) 存儲VASP計算輸出文件;3) 存儲登錄用戶名和密碼。
按照該軟件的要求,采用 MongoDB數(shù)據(jù)庫構(gòu)建了下面的表格:
1) 用戶表(user) 用戶信息包括:賬號、密碼。
2) 材料表(material)
材料信息包括:元素、體系結(jié)構(gòu)、波函數(shù)、電荷密度、迭代弛豫、本征值、電子態(tài)密度、能量、體積、元素數(shù)量、能帶、密度。
3) 工作流表(jobflow)
工作流信息包括:工作流、創(chuàng)建時間、任務(wù)名、任務(wù)編號、輸出文件。
4) VASP作業(yè)表(vasptask)
VASP作業(yè)表信息包括:任務(wù)時間、元素屬性、晶胞參數(shù)、創(chuàng)建者、文件路徑、化學(xué)元素。
3.2 軟件整體概要設(shè)計
用戶登錄系統(tǒng),填入賬號密碼后進入原子類型頁面,選擇元素類型和數(shù)量,配置元素屬性。然后進入晶胞參數(shù)頁面,填入原子位置和晶胞參數(shù)。完成填選后提交計算任務(wù)。系統(tǒng)通過Atomate調(diào)用Pymatgen搜索輸入文件POSCAR,生成POTCAR,配置INCAR 和KPOINTS。使用VASP進行材料元素計算,計算結(jié)果存入MongoDB數(shù)據(jù)庫,然后使用Pymatgen分析結(jié)果并繪圖。
3.3 系統(tǒng)概要設(shè)計
3.3.1 交互頁面模塊概要設(shè)計
交互頁面模塊:在交互頁面模塊中需要設(shè)計四個頁面:1) 登錄頁面:負責核對用戶的賬戶和密碼以進行身份確認并登錄系統(tǒng)。2) 原子類型選擇頁面:由于一個元素可能為一個或多個的若干原子組成,所以需要確定組成該元素的具體原子類型數(shù)量。3) 元素屬性頁面:在后續(xù)通過Atomate調(diào)用工作流計算步驟中需要先找到該元素輸入文件如:POSCAR文件,所以需要元素的具體名稱、原子的數(shù)量,來確定所選的具體元素信息。元素屬性的設(shè)置以在實際研究中對該元素所需的具體屬性值配置。4) 晶胞參數(shù)頁面:此頁面需要將您需要計算的元素中原子的具體位置和晶胞參數(shù)進行配置。
3.3.2 Atomate 工作流調(diào)用模塊概要設(shè)計
在Ubuntu 20.4 Linux系統(tǒng)中,下載Atomate、Fire?Works、Pymatgen、Python3.9、MongoDB7.0,并創(chuàng)建Atom?ate目錄結(jié)構(gòu)。配置環(huán)境變量和FireWorks工作流模塊路徑,設(shè)置數(shù)據(jù)存儲位置并連接VASP計算軟件。使用命令啟動配置好的FireWorks工作流,生成輸入文件。
3.3.3 FireWorks 工作流模塊概要設(shè)計
FireWorks工作流模塊配置和定義FireTask來調(diào)用Python模塊和函數(shù);配置.py文件包含流程中所需函數(shù);調(diào)用Pymatgen預(yù)處理對Atomate生成POTCAR 函數(shù);傳入VASP生成輸入文件并計算結(jié)果函數(shù);整條工作流以yaml格式存入MongoDB函數(shù);調(diào)用Pymatgen 做后處理繪圖函數(shù)。
3.3.4 VASP 材料元素計算模塊概要設(shè)計
VASP材料元素計算模塊管理著VASP計算的核心部分。主要輸入包括四個文件:INCAR(控制參數(shù))、POSCAR(結(jié)構(gòu)描述)、POTCAR(贗勢)和KPOINTS(K點設(shè)置)。輸出包括七個文件:CONTCAR (遲豫后的結(jié)構(gòu))、WAVECAR(波函數(shù))、CHGCAR(電荷密度)、OSZICAR(迭代信息)、EIGENVAL(本征值)、DOSCAR(電子態(tài)密度)和OUTCAR(主要輸出)。通過FireWorks配置的流程,進行基于第一性原理的材料元素計算,并將結(jié)果存入MongoDB。
3.3.5 MongoDB 數(shù)據(jù)庫模塊概要設(shè)計
MongoDB數(shù)據(jù)庫模塊:安裝MongoDB并配置其環(huán)境變量和數(shù)據(jù)庫控制文件和其中參數(shù)、存儲Fireworks 工作流數(shù)據(jù)庫、VASP輸出文件計算結(jié)果數(shù)據(jù)庫,Mon?goDB 需預(yù)先通過啟動命令使環(huán)境啟動。本軟件中MongoDB應(yīng)存儲三部分:1)FireWorks計算工作流。2)vasp計算輸出文件。3)登錄用戶賬號和密碼。
3.4 前端交互界面框架設(shè)計
登錄頁面設(shè)計:包括賬號和密碼輸入框,登錄和退出按鈕。輸入正確信息點擊“登錄”可進入系統(tǒng),否則彈出“賬號或密碼錯誤”提示框。
元素類型選擇頁面:設(shè)置原子類型數(shù)量選擇欄,選擇元素的原子組成數(shù)量,并建立模型。
元素屬性頁面:包括元素名輸入框和晶胞參數(shù)選擇欄,選擇計算中所需的晶胞參數(shù)選項。
晶胞參數(shù)頁面:設(shè)置元素原子的三維坐標和晶胞參數(shù)的x、y、z 軸向量坐標。
4 詳細設(shè)計與代碼實現(xiàn)
4.1 軟件詳細設(shè)計概述
基于MongoDB的高通量材料計算數(shù)據(jù)庫的設(shè)計與應(yīng)用畢業(yè)設(shè)計,系統(tǒng)通過命令行或交互頁面實現(xiàn)材料工作者對材料元素第一性原理的計算,并將計算數(shù)據(jù)存儲進數(shù)據(jù)庫。系統(tǒng)內(nèi)部使用Atomate工作流調(diào)用FireWorks、VASP和MongoDB協(xié)作。用戶配置元素信息后,系統(tǒng)通過Atomate調(diào)用FireWorks啟動標準化計算工作流。工作流利用Pymatgen處理數(shù)據(jù),生成輸入文件,并傳入VASP進行計算。計算完成后,結(jié)果存入MongoDB數(shù)據(jù)庫。Atomate調(diào)用Pymatgen繪制能帶結(jié)構(gòu)圖和態(tài)密度圖。
4.2 模塊詳細設(shè)計與代碼實現(xiàn)
4.2.1 交互頁面模塊詳細設(shè)計與代碼實現(xiàn)
登錄頁面:使用wxPython編寫交互頁面。當用戶輸入密碼后頁面會與數(shù)據(jù)庫中存放的賬號密碼進行比對,若賬號密碼正確則進入元素配置頁面,若錯誤則彈出錯誤提示框顯示“賬號或密碼錯誤”。
元素類型選擇頁面:氧化鎂MgO有一個鎂原子Mg 和一個氧原子O組成,不同元素間原子組成數(shù)量差別很大,并且原子組成為元素的基本。用戶點擊下拉欄選擇符合組成元素的原子數(shù)量如:“1、2、3...”,選擇完可點擊創(chuàng)建模型按鈕,創(chuàng)建該元素的模型。
元素屬性頁面:本頁面需要將原子數(shù)量具體分配給指定元素:鎂原子Mg對應(yīng)原子個數(shù)“1”,氧原子O對應(yīng)原子個數(shù)“1”。在第一性原理計算中會涉及晶胞參數(shù),該屬性是結(jié)構(gòu)弛豫計算中重要部分。
晶胞參數(shù)頁面:設(shè)置原子的三維位置輸入框如下:鎂原子Mg對應(yīng)位置“ 0 0 0”,氧原子O對應(yīng)位置 “0.5 0.5 0.5”。將鎂原子和氧原子組合成氧化鎂后,需要設(shè)置晶胞參數(shù)的方位向量如下:x軸“ 2.13 2.132.13”,y軸“ 2.13 0 2.13”,z軸“ 0 2.13 2.13”。配置完畢后,點擊“OK”按鈕即可開始計算。
4.2.2 Atomate 調(diào)用FireWorks 工作流模塊詳細設(shè)計與代碼實現(xiàn)
Atomate 工作流調(diào)用模塊:在Linux 系統(tǒng)中部署Atomate軟件包、FireWorks模塊,創(chuàng)建好Atomate目錄的結(jié)構(gòu),配置環(huán)境變量以及FireWorks工作流模塊路徑及數(shù)據(jù)存儲的位置信息,并制定好VASP計算軟件。
配置Atomate調(diào)用FireWorks工作流模塊路徑及材料元素計算輸出文件和計算流程的數(shù)據(jù)存儲的路徑位置信息。
4.2.3 VASP 材料元素計算模塊詳細設(shè)計與代碼實現(xiàn)
下載VASP6.1.2并在Atomate的配置目錄中指定VASP計算軟件的路徑,可在Atomate啟動FireWorks 后啟動VASP。
通過Python腳本使用pymatgen前處理進行輸入文件的查找與轉(zhuǎn)換,進行VASP計算前輸入文件的準備工作,從自動化預(yù)設(shè)的工作流中創(chuàng)建頻帶結(jié)構(gòu)。
VASP材料計算中需要元素的輸入文件,若制作材料元素充足的數(shù)據(jù)庫需要有足夠多的材料元素文件。
VASP 輸入文件中最重要的就是POSCAR 和POTCAR兩個文件。
通過Python腳本啟動VASP計算。
通過Python腳本使用pymatgen后處理。
4.2.4 MongoDB 數(shù)據(jù)庫模塊詳細設(shè)計與代碼實現(xiàn)
my_launchpad.yaml文件配置指定了FireWorks工作流與MongoDB數(shù)據(jù)庫的連接。
通過jobflow.ymal指定了計算任務(wù)和計算的輸出文件既參數(shù)output存入MongoDB數(shù)據(jù)庫,以及可將在材料元素的計算過程中調(diào)用jobflow.ymal。
5 系統(tǒng)測試
在材料計算軟件中對MgO經(jīng)過一系列參數(shù)配置后通過VASP計算得到數(shù)據(jù)和計算任務(wù)流程保存至MongoDB數(shù)據(jù)庫。
VASP計算過程中將輸出數(shù)據(jù)同時存入當前文件夾內(nèi),繪圖腳本可根據(jù)該元素的輸出數(shù)據(jù)繪制能帶圖和態(tài)密度圖。
6 結(jié)束語
綜上所述,本材料計算軟件根據(jù)第一性原理材料計算的特征,將材料計算過程分解為基本的“軟件-控制參數(shù)”組合單元,應(yīng)用數(shù)據(jù)庫技術(shù),通過組織基本組合單元,實現(xiàn)材料計算達到第一性原理材料計算流程的標準化,進而提高材料元素計算的效率。本軟件適用于材料工作者對材料研究中的計算步驟,由于兼容問題,材料工作者需將軟件部署于本機或虛擬機為Linux系統(tǒng)的計算機或服務(wù)器。經(jīng)測試軟件可根據(jù)用戶可根據(jù)設(shè)定的元素的原子位置和數(shù)量進行計算得到元素的輸出文件等相關(guān)計算結(jié)果。由于本項目在研究過程中無服務(wù)器條件則部署于虛擬機平臺導(dǎo)致算力不夠無法執(zhí)行多材料的并發(fā)和高通量計算,可在未來基于服務(wù)器端部署進行深入研究。
參考文獻:
[1] 堅增運,劉翠霞,呂志剛. 計算材料學(xué)[M]. 北京:化學(xué)工業(yè)出版社,2012.
[2] 湯富領(lǐng),李俊琛,盧學(xué)峰. 計算材料學(xué)案例教程[M]. 北京:冶金工業(yè)出版社,2022.
[3] 王玉祥. 第一性原理數(shù)據(jù)庫建立及熱電材料高通量篩選[D]. 上海:上海大學(xué),2021.
[4] 劉東升. 高通量材料計算與機器學(xué)習(xí)集成平臺的設(shè)計與實現(xiàn)[D]. 武漢:華中科技大學(xué),2022.
[5] 羅樹林. 基于高通量計算與機器學(xué)習(xí)的材料設(shè)計方法與軟件的開發(fā)與應(yīng)用[D]. 長春:吉林大學(xué),2021.
[6] 孫博. 材料高通量計算與機器學(xué)習(xí)一體化平臺設(shè)計與實現(xiàn)[D]. 沈陽:遼寧大學(xué),2021.
[7] 崔子純,楊莫涵,阮曉鵬,等. 高通量計算二維材料界面摩擦[J]. 物理學(xué)報,2023,72(2):225-235.
[8] 陽王東,楊昊,冷燦,等. 基于GASpy的材料模擬計算框架[J].湖南大學(xué)學(xué)報(自然科學(xué)版),2022,49(2):93-100.
[9] Atomate 1. 0. 3 documentation[EB/OL]. https://atomate. org/.[10] Introduction to FireWorks (workflow software)[EB/OL].https://materialsproject.github.io/fireworks/.
【通聯(lián)編輯:李雅琪】