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