虞超,楊小渝*,趙旭山,王宗國(guó)
1.中國(guó)科學(xué)院網(wǎng)絡(luò)信息中心,北京 100190
2.中國(guó)科學(xué)院大學(xué),北京 100049
隨著材料計(jì)算方法的改進(jìn)和計(jì)算機(jī)技術(shù)的發(fā)展,微觀、介觀、宏觀各個(gè)尺度的材料計(jì)算方法和技術(shù)都有很大進(jìn)步。但由于不同尺度的研究之間較為獨(dú)立[1],不同尺度對(duì)材料的描述和計(jì)算方法都不同,極大限制了多尺度的材料研究。不同空間尺度和時(shí)間尺度計(jì)算方法的集成也是高通量材料集成計(jì)算的重要研究?jī)?nèi)容。不僅將高通量方法、數(shù)據(jù)方法、實(shí)驗(yàn)方法應(yīng)用于材料的多尺度研究,利用高通量計(jì)算技術(shù)、機(jī)器學(xué)習(xí)方法和數(shù)據(jù)挖掘技術(shù)、高通量實(shí)驗(yàn)技術(shù)等,提高多尺度建模和計(jì)算的效率,而且利用不同尺度計(jì)算方法的優(yōu)勢(shì),將不同尺度的計(jì)算方法集成在一起,取長(zhǎng)補(bǔ)短,加速材料的研究。
分子動(dòng)力學(xué)是從原子尺度研究材料性質(zhì)的學(xué)科。在分子動(dòng)力學(xué)計(jì)算中,利用原子間相互作用勢(shì)[1-3]以及每個(gè)原子的坐標(biāo),原子的運(yùn)動(dòng)規(guī)律遵守Newton 方程[1],通過(guò)求解經(jīng)典力學(xué)方程求出作用在每一個(gè)原子上的合力,計(jì)算每個(gè)原子的速度,隨時(shí)間演化,模擬原子運(yùn)動(dòng)的軌跡,最終根據(jù)統(tǒng)計(jì)力學(xué)方法,得出體系的物化性質(zhì)。分子動(dòng)力學(xué)的計(jì)算精度不如第一性原理計(jì)算方法,但由于 Newton 方程的數(shù)值求解相對(duì)容易,計(jì)算速度和計(jì)算規(guī)模遠(yuǎn)遠(yuǎn)大于第一性原理計(jì)算,因此分子動(dòng)力學(xué)適合于較大空間尺度和較長(zhǎng)時(shí)間尺度的研究。
分子動(dòng)力學(xué)中模擬尺度常用的模擬軟件是LAMMPS[5],并且開(kāi)源免費(fèi)。有廣大的使用者和支持者。但由于 LAMMPS 是一款非圖形化界面軟件,并且參數(shù)使用較為復(fù)雜。往往對(duì)于使用者有較高的門檻[4]。為了使 LAMMPS 使用更加簡(jiǎn)單方便。LAMMPS 軟件需要圖形化使用界面以及自動(dòng)化的使用流程。本課題組已設(shè)計(jì)并實(shí)現(xiàn)了 MatCloud 高通量材料集成計(jì)算平臺(tái),作者積極參與了該項(xiàng)目的設(shè)計(jì)和研發(fā)工作,具體包括:適用于多用戶、大批量的數(shù)據(jù)存儲(chǔ)和檢索的材料結(jié)構(gòu)和第一性原理計(jì)算數(shù)據(jù)庫(kù);高通量材料第一性原理計(jì)算工作流執(zhí)行引擎;基本的高通量材料結(jié)構(gòu)建模工具、第一性原理計(jì)算工具、數(shù)據(jù)處理和分析工具[6]等。接下來(lái)準(zhǔn)備集成基于 LAMMPS 軟件的分子動(dòng)力學(xué)計(jì)算工具,擴(kuò)大 MatCloud 的生態(tài)圈。將不同尺度的計(jì)算方法集成在一起,加速材料研究。
開(kāi)發(fā)者在 MatCloud 的上集成 LAMMPS 軟件主要分為以下幾步:(1) 編寫 LAMMPS 性質(zhì)計(jì)算參數(shù)設(shè)置頁(yè)面 (2) 獲取前端設(shè)置參數(shù)信息并將其整理成規(guī)范格式 (Unique Parameter description),(3) 解析格式規(guī)范化的參數(shù) (Unique Parameter description) 生成 LAMMPS 計(jì)算的輸入文件,(4) 再結(jié)合 LAMMPS建模產(chǎn)生的 LAMMPS 構(gòu)型文件 (LAMMPS Input Structure) 進(jìn)行 LAMMPS 計(jì)算,(5) 抽取結(jié)果并存入數(shù)據(jù)庫(kù)。利用 MatCloud 強(qiáng)大的工作流框架我們可以很容易實(shí)現(xiàn) LAMMPS 計(jì)算、抽取結(jié)果并存入數(shù)據(jù)庫(kù)這兩步。開(kāi)發(fā)者可以通過(guò)編寫前端交互界面來(lái)方便地獲取用戶設(shè)置的 LAMMPS 計(jì)算參數(shù)。所以問(wèn)題的核心在于如何將用戶設(shè)置的參數(shù)整理成規(guī)范格式以及解析參數(shù)生成 LAMMPS 計(jì)算的輸入文件。
LAMMPS 軟件參數(shù)較為復(fù)雜,且很多參數(shù)之間有復(fù)雜的關(guān)聯(lián)關(guān)系。給集成工作帶來(lái)很大的難度[7]。主要?dú)w結(jié)為以下三種形式的計(jì)算參數(shù)組合不一致問(wèn)題:LAMMPS 軟件中不同材料性質(zhì)計(jì)算的 (如粘度計(jì)算、熱導(dǎo)率計(jì)算等) 參數(shù)組合不一致問(wèn)題;LAMMPS 軟件中不同 LAMMPS 命令的 (如 fix、pair_style 等) 參數(shù)組合不一致問(wèn)題;LAMMPS 軟件中同一個(gè) LAMMPS命令的參數(shù)組合不一致問(wèn)題。這三種形式參數(shù)組合不一致問(wèn)題導(dǎo)致我們?cè)趨?shù)解析的過(guò)程中必須為不同的參數(shù)組合都單獨(dú)來(lái)解析生成 LAMMPS 計(jì)算的輸入文件,這樣的實(shí)現(xiàn)方式不具備通用性,并且使解析參數(shù)工作變得復(fù)雜和繁冗。這給想在第三方平臺(tái)集成LAMMPS 軟件的開(kāi)發(fā)用戶帶來(lái)很大的困難。
為了使 LAMMPS 軟件的開(kāi)發(fā)用戶高效的開(kāi)展集成工作,本文提出 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范和LAMMPS 參數(shù)解析引擎。首先通過(guò) LAMMPS 參數(shù)數(shù)據(jù)規(guī)范將 LAMMPS 軟件中不同參數(shù)組合納入?yún)?shù)數(shù)據(jù)規(guī)范體系。然后我們通過(guò) LAMMPS 參數(shù)解析引擎來(lái)統(tǒng)一解析不同的參數(shù)組合,從而以通用且友好的方式集成 LAMMPS 軟件中的不同材料性質(zhì)計(jì)算工具。這套標(biāo)準(zhǔn)不僅僅局限于將 LAMMPS 軟件集成在MatCloud 平臺(tái),更應(yīng)該是一種在第三方平臺(tái)上集成LAMMPS 軟件的規(guī)范標(biāo)準(zhǔn)。
本項(xiàng)目基于 MatCloud 平臺(tái),利用 MatCloud 已有的科學(xué)工作流框架[12],作業(yè)管理框架以及平臺(tái)計(jì)算資源,集成 LAMMPS 軟件。包括界面模塊 (用戶設(shè)置計(jì)算參數(shù))、后臺(tái)模塊 (解析用戶參數(shù)、提交計(jì)算作業(yè)、結(jié)果抽取)、數(shù)據(jù)庫(kù)模塊 (存儲(chǔ)計(jì)算結(jié)果)。為L(zhǎng)AMMPS 軟件提供圖形化交互界面以及自動(dòng)化的使用流程。
本文內(nèi)容安排如下:第 1 節(jié)介紹本文研究的主要內(nèi)容以及研究方法,第 2 節(jié)介紹集成 LAMMPS 的設(shè)計(jì)實(shí)現(xiàn),其中 2.1 節(jié)描述了 LAMMPS 軟件集成流程,2.2 節(jié)描述了 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,2.3 描述了 LAMMPS 參數(shù)解析引擎。第 3 節(jié)介紹了應(yīng)用案例,其中描述了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算參數(shù)并進(jìn)行對(duì)比。第 4 節(jié)做總結(jié)。
目前國(guó)外集成了 LAMMPS 軟件的材料計(jì)算軟件的有 MedeA,Pymatgen 和 ASE。Pymatgen 和 ASE用 Python 腳本封裝了 LAMMPS 的命令,用戶可以通過(guò)編寫 Python 腳本來(lái)運(yùn)行 LAMMPS 軟件[9-10],Pymatgen 和 ASE 需要用戶熟悉 Python 編程,且沒(méi)有自動(dòng)化的使用流程。因此對(duì)于初學(xué)者使用起來(lái)不友好。MedeA 是一種圖形化界面軟件,目前已經(jīng)集成了LAMMPS,VASP 等材料計(jì)算軟件的部分功能[8],它是基于客戶端/服務(wù)器的架構(gòu)模式。用戶需要在本地安裝軟件,并且數(shù)據(jù)是存儲(chǔ)在本地,需要消耗本地大量的計(jì)算資源和存儲(chǔ)空間。因此相對(duì)于一般用戶,使用代價(jià)過(guò)于昂貴。目前國(guó)內(nèi)在這個(gè)領(lǐng)域基本是處于空白狀態(tài)。
LAMMPS 軟件中的不同的材料性質(zhì)計(jì)算都包含輸入文件和輸出文件[5]。輸入文件 (LAMMPS.in) 中描述了計(jì)算參數(shù)的配置和所需要計(jì)算的材料性質(zhì)。輸出文件 (LAMMPS.logs) 描述了計(jì)算的中間狀態(tài)結(jié)果和所需要計(jì)算的材料性質(zhì)結(jié)果。本文的核心是如何快速高效的解析參數(shù)生成 LAMMPS 計(jì)算的輸入文件(LAMMPS.in)。
LAMMPS 軟件參數(shù)較復(fù)雜,且很多參數(shù)之間有復(fù)雜的關(guān)聯(lián)關(guān)系。給集成工作帶來(lái)很大的難度。主要?dú)w結(jié)為以下三種形式的參數(shù)集合不一致問(wèn)題:
LAMMPS 軟件中不同材料性質(zhì)計(jì)算的 (粘度計(jì)算、熱導(dǎo)率計(jì)算等) 參數(shù)組合不一致問(wèn)題:比如LAMMPS 軟件中的粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算所需要執(zhí)行的 LAMMPS 命令組合不同,以至于我們需要為不同的計(jì)算功能模塊單獨(dú)來(lái)編碼解析,這樣的實(shí)現(xiàn)方式不具備通用性且工作量太大。
LAMMPS 軟件中不同 LAMMPS 命令 (fix、pair_style、compute 命令等) 的參數(shù)組合不一致問(wèn)題:如LAMMPS 中的 fix 命令下有六個(gè)參數(shù)需要設(shè)置,而pair_style 命令只有兩個(gè)參數(shù)需要設(shè)置。以至于我們需要為不同 LAMMPS 命令中的參數(shù)組合都單獨(dú)來(lái)編碼解析,這樣的實(shí)現(xiàn)方式不具備通用性且工作量太大。
LAMMPS 軟件中同一個(gè) LAMMPS 命令中參數(shù)組合不一致問(wèn)題:如 LAMMPS 中 fix 命令下的 style參數(shù),當(dāng) style 參數(shù)取不同的值的時(shí)候,用戶需要附加設(shè)置的參數(shù)不一樣。當(dāng) style 取值為 ave/time 時(shí),需要附加設(shè)置 Nevery、Nrepeat、Nfreq、Values 參數(shù),當(dāng) style 取值為 langevin 時(shí),需要附加設(shè)置 start_Temperature、stop_Temperature、damp、seed,這樣就導(dǎo)致在同一個(gè) LAMMPS 命令中由于設(shè)置 style 參數(shù)值的不同而需要設(shè)置的附加參數(shù)不同的問(wèn)題,以至于我們需要為同一個(gè) LAMMPS 命令中不同參數(shù)組合都單獨(dú)來(lái)編碼解析,這樣的實(shí)現(xiàn)方式不具備通用性且工作量太大。
正由于如上描述的三個(gè)問(wèn)題,使得開(kāi)發(fā)人員在第三方平臺(tái)上集成 LAMMPS 軟件變得比較困難。為了高效快捷的集成 LAMMPS 軟件,本文提出 LAMMPS參數(shù)數(shù)據(jù)規(guī)范以及 LAMMPS 參數(shù)解析引擎。首先通過(guò) LAMMPS 參數(shù)數(shù)據(jù)規(guī)范將 LAMMPS 軟件中不同參數(shù)組合納入?yún)?shù)數(shù)據(jù)規(guī)范體系。然后我們通過(guò) LAMMPS 參數(shù)解析引擎來(lái)統(tǒng)一解析不同的參數(shù)組合。LAMMPS 參數(shù)數(shù)據(jù)規(guī)范由三個(gè)層級(jí)組成,分別對(duì)應(yīng)著解決上面描述的三個(gè)不同問(wèn)題。一級(jí)參數(shù)的設(shè)計(jì)主要是為了解決 LAMMPS 軟件中不同材料性質(zhì)計(jì)算(如粘度、熱導(dǎo)率計(jì)算等)中參數(shù)組合不一致問(wèn)題;二級(jí)參數(shù)的設(shè)計(jì)主要是為了解決 LAMMPS 軟件不同LAMMPS 命令 (fix、pair_style、compute 命令等) 參數(shù)組合不一致問(wèn)題;三級(jí)參數(shù)的設(shè)計(jì)主要是為了解決LAMMPS 軟件中同一個(gè) LAMMPS 命令參數(shù)組合不一致問(wèn)題。將 LAMMPS 軟件中不同參數(shù)組合納入?yún)?shù)數(shù)據(jù)規(guī)范體系,再統(tǒng)一通過(guò) LAMMPS 參數(shù)解析引擎去解析,不必要為每種參數(shù)組合都單獨(dú)編碼解析,減少集成的工作量并使實(shí)現(xiàn)方式更具備通用性和擴(kuò)展性。
本課題組推出了國(guó)內(nèi)首個(gè)高通量材料計(jì)算及數(shù)據(jù)管理云平臺(tái) MatCloud[6]。MatCloud 直接與計(jì)算集群相連。支持跨地域集群調(diào)度,圖形化建模,復(fù)雜流程設(shè)計(jì)。實(shí)現(xiàn)作業(yè)在線提交和監(jiān)控、結(jié)果分?jǐn)?shù)據(jù)提取和數(shù)據(jù)管理自動(dòng)化。且用戶只需要通過(guò)瀏覽器訪問(wèn)MatCloud 平臺(tái)即可實(shí)現(xiàn)材料計(jì)算和數(shù)據(jù)管理[11]。操作簡(jiǎn)單和方便。因此在 MatCloud 上集成 LAMMPS 是非常有意義的工作,一方面使 MatCloud 平臺(tái)支持了跨尺度材料研究,擴(kuò)大 MatCloud 的生態(tài)圈。另一方面,也制定出在第三方平臺(tái)上集成 LAMMPS 軟件的規(guī)范標(biāo)準(zhǔn)。
為了高效快捷的在 MatCloud 平臺(tái)上集成LAMMPS 軟件,一方面我們提出了 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范以及 LAMMPS 參數(shù)解析引擎,另一方面我們可以利用 MatCloud 強(qiáng)大的工作流框架,快速的實(shí)現(xiàn)集成流程。設(shè)計(jì)實(shí)現(xiàn)主要分為三部分來(lái)描述,其中 2.1 描述 LAMMPS 軟件集成流程,2.2 描述LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,2.3 描述 LAMMPS 參數(shù)解析引擎。
LAMMPS 軟件集成架構(gòu)由前端界面 (Browser)、服務(wù)器端 (Server)、數(shù)據(jù)庫(kù) (Database) 三部分構(gòu)成。開(kāi)發(fā)用戶編寫前端界面獲取用戶對(duì)于不同 LAMMPS材料性質(zhì)計(jì)算的參數(shù)。然后通過(guò) LAMMPS 參數(shù)數(shù)據(jù)規(guī)范 (Parameter Scheme) 將不同 LAMMPS材料性質(zhì)計(jì)算的不同參數(shù)組合整理為 Unique parameter description。然后將 Unique parameter description 傳遞到服務(wù)器端。服務(wù)器端首先啟動(dòng)參數(shù)解析引擎(Parameter Parser Engine),解析 Unique Parameter Description,生成 LAMMPS 軟件的輸入文件 LAMMPS.in。再結(jié)合 LAMMPS 建模產(chǎn)生的LAMMPS 構(gòu)型文件 (LAMMPS Input Structure) 進(jìn)行LAMMPS 計(jì)算 (Calculate)。計(jì)算完成之后,從計(jì)算結(jié)果文件中抽取結(jié)果信息 (Extract result)。最后把結(jié)果信息存儲(chǔ)到數(shù)據(jù)庫(kù) (Database) 中。
LAMMPS 軟件存在多種計(jì)算參數(shù)集合不一致的問(wèn)題。本文提出 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,不同的LAMMPS 參數(shù)集合都可以納入三個(gè)層級(jí)。三個(gè)層級(jí)參數(shù)的概要說(shuō)明如下:
(1) 總體數(shù)據(jù)規(guī)范
一級(jí)參數(shù)全集是由全體 LAMMPS 命令組成。一級(jí)參數(shù)的設(shè)計(jì)主要是為了解決 LAMMPS 軟件不同材料性質(zhì)計(jì)算 (粘度計(jì)算、熱導(dǎo)率計(jì)算等) 參數(shù)組合不一致問(wèn)題,不同的 LAMMPS 材料性質(zhì)計(jì)算所需要的LAMMPS 命令組合不一樣。為了統(tǒng)一起來(lái),不同的LAMMPS 材料性質(zhì)計(jì)算所需要的 LAMMPS 命令組合都可以看作一級(jí)參數(shù)全集的子集。從而,我們就實(shí)現(xiàn)了不同的 LAMMPS 材料性質(zhì)計(jì)算中不同 LAMMPS命令組合的統(tǒng)一。全體一級(jí)參數(shù)分為簡(jiǎn)單一級(jí)參數(shù)和復(fù)雜一級(jí)參數(shù)。簡(jiǎn)單一級(jí)參數(shù)的值的類型是基本類型(Int,、Float,、String) 和數(shù)組類型,復(fù)雜一級(jí)參數(shù)的值類型是對(duì)象類型,對(duì)象類型中的變量成員由二級(jí)參數(shù)組成。
圖1 LAMMPS 軟件集成架構(gòu)圖Fig.1 LAMMPS software integration architecture diagram
圖2 總體數(shù)據(jù)規(guī)范描述Fig.2 Overall data normalization description
二級(jí)參數(shù)全集由六部分組成,包括 I D、groupID、style、args、keywords、values。二級(jí)參數(shù)的設(shè)計(jì)主要是為了解決 LAMMPS 軟件不同 LAMMPS命令 (如 fix、pair_style、compute 命令等) 參數(shù)組合不一致問(wèn)題,復(fù)雜的一級(jí)對(duì)象由二級(jí)參數(shù)組成,不同的復(fù)雜一級(jí)對(duì)象下的二級(jí)參數(shù)組合不同。為了統(tǒng)一起來(lái),不同的復(fù)雜一級(jí)參數(shù)對(duì)應(yīng)的二級(jí)參數(shù)組合是二級(jí)參數(shù)全集的不同子集。從而,我們就可以將不同LAMMPS 命令中不同參數(shù)組合統(tǒng)一起來(lái)。全體二級(jí)參數(shù)分為簡(jiǎn)單二級(jí)參數(shù)和復(fù)雜二級(jí)參數(shù),簡(jiǎn)單二級(jí)參數(shù)的值的類型是基本類型 (Int、Float,、String) 和數(shù)組類型,復(fù)雜二級(jí)參數(shù)的值的類型是對(duì)象類型。對(duì)象類型中的變量成員由三級(jí)參數(shù)組成。
三級(jí)參數(shù)的全集是 args 對(duì)象下所有可能出現(xiàn)的附屬參數(shù)。三級(jí)參數(shù)的設(shè)計(jì)主要是為了解決 LAMMPS軟件同一個(gè) LAMMPS 命令參數(shù)組合不一致問(wèn)題。復(fù)雜二級(jí)參數(shù) args 對(duì)象由三級(jí)參數(shù)組成,二級(jí)參數(shù)style 取值不同,所對(duì)應(yīng) args 下面的三級(jí)參數(shù)組合不同。為了統(tǒng)一起來(lái)。args 對(duì)象中不同的附屬參數(shù)組合是三級(jí)參數(shù)全集的子集。從而,我們就可以將同一個(gè)LAMMPS 命令中不同參數(shù)組合統(tǒng)一起來(lái)。三級(jí)參數(shù)的取值類型都是簡(jiǎn)單數(shù)據(jù)類型 (Int、Float 、String) 和數(shù)組類型。
通過(guò)定義以上三個(gè)層級(jí)參數(shù),我們就可以用這一套數(shù)據(jù)參數(shù)規(guī)范去定義 LAMMPS 軟件中的參數(shù)。具體三個(gè)層級(jí)參數(shù)的描述參見(jiàn)下文:
(2) 一級(jí)參數(shù)規(guī)范
本文規(guī)定一級(jí)參數(shù)全集是由全體 LAMMPS 命令組成。不同的 LAMMPS 計(jì)算由不同的一級(jí)參數(shù)組合而成。
(3) 二級(jí)參數(shù)規(guī)范
本文規(guī)定二級(jí)參數(shù)全集由 ID、groupID、style、args、keywords、values 六個(gè)參數(shù)組成,不同的一級(jí)參數(shù)子級(jí)集合由這六個(gè)參數(shù)組合而成。
(4) 三級(jí)參數(shù)規(guī)范
本文規(guī)定三級(jí)參數(shù)的全集由所有的附加參數(shù)組成。二級(jí)參數(shù) style 取值不同,對(duì)應(yīng)著二級(jí)參數(shù) args下面的子級(jí)參數(shù)集合不同。
表1 部分一級(jí)參數(shù)描述Table 1 Partial fi rst-level parameter description
LAMMPS 參數(shù)解析引擎的作用是將 LAMMPS參數(shù)數(shù)據(jù)規(guī)范格式的 Unique parameter description 解析成為 LAMMPS 的輸入文件 LAMMPS.in 文件。參數(shù)解析引擎主要由三個(gè)組件構(gòu)成,分別是基本類型解析引擎、數(shù)組類型解析引擎、對(duì)象類型解析引擎。
基本類型解析引擎主要是解析簡(jiǎn)單數(shù)據(jù)類型(Int、Float、String) 的參數(shù)。如 units、dimension 等。該類型參數(shù)不存在子級(jí)參數(shù)。包括一級(jí)簡(jiǎn)單類型參數(shù)、二級(jí)簡(jiǎn)單類型參數(shù)和三級(jí)參數(shù)。
表2 全體二級(jí)參數(shù)描述Table 2 All second-level parameter description
表3 部分三級(jí)參數(shù)描述Table 3 Partial third-level parameter description
圖3 LAMMPS 參數(shù)解析引擎描述Fig.3 LAMMPS parameter parsing engine description
圖4 粘度性質(zhì)計(jì)算參數(shù)數(shù)據(jù)規(guī)范Fig.4 Viscosity property calculation parameter data specif i cation
圖5 熱導(dǎo)率計(jì)算參數(shù)數(shù)據(jù)規(guī)范Fig.5 Thermal conductivity calculation parameter data normalization
圖6 粘度計(jì)算和熱導(dǎo)率計(jì)算部分一級(jí)參數(shù)說(shuō)明,解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算的 LAMMPS 命令組合不一致問(wèn)題Fig.6 Partial fi rst-level parameter description of viscosity calculation and thermal conductivity calculation.Solving the inconsistency of LAMMPS command combination for viscosity property calculation and thermal conductivity property calculation
圖7 粘度計(jì)算和熱導(dǎo)率計(jì)算部分二級(jí)參數(shù) (pair_style、compute) 說(shuō)明。分別解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算中的不同 LAMMPS 命令中參數(shù)組合不一致的問(wèn)題Fig.7 Partial second-level parameter description(pair_style、compute) of viscosity calculation and thermal conductivity calculation,solving the inconsistency of different LAMMPS commands parameter combination in viscosity property calculation and thermal conductivity property calculation
圖8 粘度計(jì)算和熱導(dǎo)率部分三級(jí)參數(shù)說(shuō)明,分別解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算的中同一個(gè) LAMMPS 命令(fix、compute) 中參數(shù)組合不一致的問(wèn)題Fig.8 Partial third-level parameter description (f i x、compute)of viscosity calculation and thermal conductivity calculation, solving the inconsistency of same LAMMPS commands parameter combination in viscosity property calculation and thermal conductivity property calculation
數(shù)組類型解析引擎主要是解析數(shù)組類型的參數(shù)。比如粘度計(jì)算中fix命令會(huì)重復(fù)出現(xiàn),可以把 fix 參數(shù)設(shè)置為數(shù)組類型。如二級(jí)參數(shù) keywords 和 values 都屬于數(shù)組類型,解析時(shí)都需要啟動(dòng)數(shù)組類型解析引擎。
對(duì)象解析引擎主要是解析對(duì)象類型的參數(shù)。比如說(shuō)一級(jí)復(fù)雜類型參數(shù)和二級(jí)復(fù)雜類型參數(shù),這些參數(shù)值的類型都是對(duì)象類型,即存在子級(jí)參數(shù)。解析時(shí)需要啟動(dòng)對(duì)象類型解析引擎。
使用 LAMMPS 主要目的是計(jì)算材料的性質(zhì) (如粘度性質(zhì)、熱導(dǎo)率性質(zhì))??梢灶A(yù)見(jiàn)今后將把更多材料性質(zhì)的計(jì)算集成到第三方平臺(tái) (如 MatCloud)。為了讓開(kāi)發(fā)者更好的在第三方平臺(tái)集成 LAMMPS 軟件。本文提出在第三方平臺(tái)集成 LAMMPS 的基本步驟:(1) 編寫 LAMMPS 性質(zhì)計(jì)算參數(shù)設(shè)置頁(yè)面 (2) 獲取前端設(shè)置參數(shù)信息并將其整理成規(guī)范格式 (Unique parameter description (3) 解析格式規(guī)范化的參數(shù)(Unique parameter description) 生成 LAMMPS 計(jì)算的輸入文件 (4) 再結(jié)合 LAMMPS 建模產(chǎn)生的 LAMMPS構(gòu)型文件 (LAMMPS Input Structure) 進(jìn)行 LAMMPS計(jì)算 (5) 抽取結(jié)果并存入數(shù)據(jù)庫(kù)。
在第三方平臺(tái)上集成 LAMMPS 軟件的核心在于如何將性質(zhì)計(jì)算參數(shù)信息整理成規(guī)范格式。下面圍繞這點(diǎn)來(lái)討論如何在 MatCloud 平臺(tái)上集成粘度計(jì)算和熱導(dǎo)率計(jì)算。
開(kāi)發(fā)人員需要參考 LAMMPS 軟件中粘度計(jì)算參數(shù)使用手冊(cè),并依照本文提出的 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,將前端設(shè)置粘度計(jì)算參數(shù)信息整理成如上所示的結(jié)構(gòu),從左到右依次為一級(jí)參數(shù)、二級(jí)參數(shù)、三級(jí)參數(shù)。MatCloud -LAMMPS 會(huì)將整理好的參數(shù)(Unique parameter description) 傳遞給參數(shù)解析引擎,解析成粘度計(jì)算的輸入文件,再結(jié)合 LAMMPS建模產(chǎn)生的 LAMMPS 構(gòu)型文件 (LAMMPS Input Structure)啟動(dòng) LAMMPS 軟件進(jìn)行計(jì)算,并提取結(jié)果存入數(shù)據(jù)庫(kù)。
開(kāi)發(fā)人員需要參考 LAMMPS 軟件中熱導(dǎo)率計(jì)算參數(shù)使用手冊(cè),并依照本文提出的 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,將前端設(shè)置熱導(dǎo)率計(jì)算參數(shù)信息整理成如上所示的結(jié)構(gòu),從左到右依次為一級(jí)參數(shù)、二級(jí)參數(shù)、三級(jí)參數(shù)。然后將整理好參數(shù) (Unique parameter description) 傳遞給參數(shù)解析引擎,解析成熱導(dǎo)率計(jì)算的輸入文件,再結(jié)合 LAMMPS 建模產(chǎn)生的 LAMMPS構(gòu)型文件 (LAMMPS Input Structure) 啟動(dòng) LAMMPS軟件進(jìn)行計(jì)算,并提取結(jié)果存入數(shù)據(jù)庫(kù)。
為了說(shuō)明 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范的通用性,本文將從三個(gè)層次對(duì) LAMMPS 軟件中粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算進(jìn)行說(shuō)明。
第一,粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算所需要的 LAMMPS 命令組合不一致,把 LAMMPS 的全體命令作為一級(jí)參數(shù)全集,這樣就將兩個(gè)材料性質(zhì)計(jì)算的所需的參數(shù)組合都統(tǒng)一為一級(jí)參數(shù)全集的不同子集。從而解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算的LAMMPS 命令組合不一致問(wèn)題。
第二,粘度計(jì)算和熱導(dǎo)率計(jì)算中不同 LAMMPS命令中參數(shù)組合不一致,如粘度計(jì)算的 velocity 和熱導(dǎo)率計(jì)算的 compute 參數(shù)。定義二級(jí)參數(shù)全集由ID、groupID、style、args、keywords、values 六個(gè)參數(shù)組成。這樣就將不同計(jì)算中 (如粘度計(jì)算和熱導(dǎo)率計(jì)算) 中的不同 LAMMPS 命令 (如 pair_style 和compute 命令) 中的二級(jí)參數(shù)組合都統(tǒng)一為二級(jí)參數(shù)全集的子集。從而分別解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算中的不同 LAMMPS 命令中參數(shù)組合不一致的問(wèn)題。
第三,同一個(gè) LAMMPS 命令中參數(shù)組合不一致,比如粘度計(jì)算和熱導(dǎo)率計(jì)算中都存在重復(fù)的命令(如 fi x、compute 命令),但由于重復(fù)命令中的二級(jí)參數(shù) style 取值不同,導(dǎo)致重復(fù)命令中 args 對(duì)象不同 (即 args 對(duì)象下的附屬參數(shù)組合不同)。定義三級(jí)參數(shù)的全集是 args 對(duì)象下所有可能出現(xiàn)的附屬參數(shù),不同 args 對(duì)象中不同的附屬參數(shù)組合是三級(jí)參數(shù)全集的子集。從而分別解決了粘度性質(zhì)計(jì)算和熱導(dǎo)率性質(zhì)計(jì)算的中同一個(gè) LAMMPS 命令中參數(shù)組合不一致的問(wèn)題。
本文中我們主要討論在 MatCloud 平臺(tái)上集成LAMMPS 軟件的一種高效的實(shí)現(xiàn)方式,為了解決LAMMPS 軟件集成過(guò)程中出現(xiàn)的三種形式的計(jì)算參數(shù)組合不一致問(wèn)題,本文提出 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范和 LAMMPS 參數(shù)解析引擎。將 LAMMPS 的參數(shù)集合納入 LAMMPS 參數(shù)數(shù)據(jù)規(guī)范,通過(guò) LAMMPS參數(shù)解析引擎,實(shí)現(xiàn)參數(shù)的高效解析。再結(jié)合MatCloud 平臺(tái)已有的科學(xué)工作流框架,作業(yè)管理框架以及平臺(tái)計(jì)算資源,我們可以高效自動(dòng)化的利用LAMMPS 軟件開(kāi)展分子動(dòng)力學(xué)計(jì)算,獲取材料在原子尺度的性質(zhì)。此外,本論文提出的 LAMMPS 參數(shù)描述和規(guī)范方法也可以應(yīng)用于其它平臺(tái)對(duì) LAMMPS軟件的集成,同時(shí),也為不同軟件參數(shù)的規(guī)范化提供新的思路。
基于本文實(shí)現(xiàn)的方法,未來(lái)一方面將繼續(xù)集成更多的 LAMMPS 性質(zhì)計(jì)算工具,來(lái)獲取更多材料性質(zhì)。另一方面,由于目前可用于開(kāi)展 LAMMPS 計(jì)算的勢(shì)函數(shù)還比較少,因此,需要借助 MatCloud 已經(jīng)集成的第一性原理計(jì)算軟件 (VASP) 開(kāi)展大量的第一性原理計(jì)算,通過(guò)結(jié)果擬合或機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的方法[13-16],快速構(gòu)建出用于分子動(dòng)力學(xué)計(jì)算的勢(shì)函數(shù),提高計(jì)算的準(zhǔn)確度。