張亞超 鄭珊
[摘 要] 以H2分子勢能曲線的密度泛函理論計算為實踐教學案例,探討腳本語言Python在“計算材料學”教學中的可能應用。由于該課程實踐性較強,傳統(tǒng)教學方式既需要兼顧基礎理論內容,又需要花費很大精力講授各種計算軟件的使用,無形中增大了學習難度。提出一種基于Python的計算材料學實驗方案,引導學生通過實際材料計算和提問學習理論方法。Python語法簡單、容易上手,且具備膠水語言的優(yōu)勢,可以無縫整合材料建模、理論計算、數(shù)據(jù)分析與可視化等全部過程,大大降低了教學復雜度,有助于提升學生的學習興趣。
[關鍵詞] 密度泛函理論;Python;實踐教學;材料模擬
[作者簡介] 張亞超(1985—),男,河南葉縣人,博士,貴州師范學院貴州省納米材料模擬與計算重點實驗室副教授,主要從事計算材料學研究;鄭 珊(1990—),女,貴州貴陽人,碩士,貴州師范學院化學與材料學院實驗師,主要從事藥物分子篩選與設計研究。
[中圖分類號] G642.0? ?[文獻標識碼] A? ?[文章編號] 1674-9324(2021)37-0137-04? ? [收稿日期] 2021-04-16
隨著理論方法的發(fā)展與計算能力的提升,在物質科學相關研究領域,理論、實驗與計算已經(jīng)形成了三足鼎立的局面。為了適應這種學科發(fā)展需求,材料科學與工程專業(yè)的教學工作也不斷與時俱進,逐步吸納現(xiàn)代計算機技術[1],將其應用范圍從傳統(tǒng)的實驗數(shù)據(jù)處理與可視化擴大到材料模擬與設計、材料基因工程等前沿領域。部分高校開設了“計算材料學”課程[2],致力于介紹前沿材料計算技術[3],培養(yǎng)學生的計算思維和動手能力。遺憾的是,該課程涉及多學科交叉和大量的專業(yè)軟件使用[4],內容龐雜,操作極其煩瑣,學生很容易在初期就失去信心和興趣。本文提出一種基于Python腳本語言的計算材料實驗設計方案,希望能通過實踐帶動理論課的學習。這種實踐教學方案的實施,一方面為學生提供一個便利的計算材料工具箱,顯著降低上機實踐操作的復雜性,使學生能通過簡單程序編寫完成一般的材料模擬與設計工作,增強課程的趣味性與吸引力;另一方面鼓勵學生通過實際材料模擬“發(fā)現(xiàn)”計算方法存在的問題,以更深入地理解該課程所涉及的基礎理論知識。
一、“計算材料學”課程特點與教學改革
“計算材料學”涵蓋較多的理論基礎,涉及凝聚態(tài)物理、理論化學、數(shù)值分析、計算機編程等多個學科方向,教學難度較大。以作者所在的高校貴州師范學院為例,該課程開設在材料科學與工程專業(yè)大三下學期,教學內容包括從頭算波函數(shù)理論、密度泛函理論、固體電子結構計算、贗勢平面波方法、經(jīng)典分子動力學、第一性原理分子動力學及蒙特卡羅模擬等,共48學時,其中理論講授32學時,上機實踐16學時。這要求學生在前五個學期必須系統(tǒng)學習一些必備的基礎理論課程,包括高等數(shù)學、線性代數(shù)、C語言程序設計、量子力學、材料物理等。然而,在實際教學過程中發(fā)現(xiàn),由于先修課程并未扎實掌握,學生在一個學期內很難完成這樣的高強度學習。該課程的理論方法講授部分涉及大量的公式推導,學生往往會因為一時跟不上進度而失去興趣。上機實踐環(huán)節(jié)又要求學生掌握較多的專業(yè)軟件。例如,材料建模過程依賴商業(yè)軟件如GaussView、Materials Studio等,這類軟件往往安裝于Windows系統(tǒng),而大部分材料計算軟件如SIESTA、Quantum Espresso、VASP等卻在Linux環(huán)境下運行。在這種情況下,學生需要同時熟悉不同的操作系統(tǒng),并需要頻繁完成不同系統(tǒng)之間的數(shù)據(jù)傳遞。熟練掌握這些操作本身就需要一定的學習時間,學生短時間內極容易在計算環(huán)境搭建或命令行操作上遇到困難而陷入迷茫。
針對這種情況,筆者探索一種實踐主導的教學模式,不再花費大量時間集中講授理論方法,而是以一系列實驗項目為切入點,通過開展計算機模擬和集體討論來推進理論課學習。舉例來說,通過“H2分子勢能曲線的第一性原理計算”了解以Hartree-Fock理論為基礎的從頭算波函數(shù)方法的精度和計算量,熟悉分子體系計算所常用的原子軌道線性組合(LCAO)框架;通過“銳鈦礦TiO2(101)表面電子結構計算”學習固體能帶理論,掌握平面波(PW)展開和倒空間積分等重要概念,了解第一性原理贗勢;通過“N2分子在Cu(111)表面的吸附解離”認識第一性原理分子動力學對化學過程模擬的重要性;通過“二維磁性材料相變的蒙特卡羅模擬”熟悉蒙特卡羅方法的基本原理。
這些實驗項目全部通過Python腳本直接在遠程Linux工作站上完成,容易引起學生的學習興趣。Python運行環(huán)境和必備的計算模塊已經(jīng)事先在Linux工作站上部署好,學生在實驗過程中可以專注于材料計算本身,而不必分心去解決技術困難。學生在動手編程調用計算模塊的過程中,能夠對計算參數(shù)的選擇和收斂性測試有更細致的了解。通過比較不同方法的計算精度能夠對理論方法所涉及的近似有更深刻的認識,這有助于激發(fā)學生的求知欲。這種化被動為主動的實踐教學方式,將會提升學生的整體學習效率。
二、Python在材料模擬中的優(yōu)勢
Python作為一種簡潔卻強大、實用的腳本語言,特別適合于化學、物理和材料類專業(yè)的科研教學工作[5]。此處選用Python作為編程語言主要是基于它的以下幾點明顯優(yōu)勢:(1)語法簡單,前期學過C語言的學生可以快速完成簡單Python腳本的編寫,學習成本很低。(2)完全免費,不用擔心版權問題。(3)科學計算庫比較豐富,如NumPy、SciPy、pandas、scikit-learn等,利于開展常規(guī)的數(shù)值分析工作,如插值與擬合、數(shù)值積分、微分方程求解、矩陣運算、數(shù)據(jù)挖掘與機器學習等。另外,采用matplotlib庫可以直接實現(xiàn)計算結果的可視化,從圖中分析結果的變化趨勢比直接看數(shù)據(jù)直觀得多。(4)Python是“膠水語言”,可將材料建模、電子/分子結構計算、材料性質提取與數(shù)據(jù)分析整合到一個腳本,一次運行便可獲得結果,大大降低了材料模擬復雜度。例如,調用原子模擬環(huán)境軟件包ASE(Atomic Simulation Environment),可以在統(tǒng)一框架下輕松實現(xiàn)原子尺度的材料模擬,包括結構優(yōu)化、分子動力學模擬、研究化學過程勢壘的NEB(Nudged Elastic Band)計算等。這類計算模塊的開發(fā)為實現(xiàn)高通量材料模擬奠定了良好的基礎。(5)Python有非常強大的軟件包管理工具pip,僅用一個命令即可完成計算模塊的在線安裝或升級,自動解決各種計算庫的依賴問題。
值得一提的是,盡管Python的計算速度與編譯型語言C/C++和FORTRAN相比差距明顯,這個問題很大程度上可以通過C語言擴展來解決:將速度較慢的模塊用C語言實現(xiàn),然后封裝成庫供Python調用。這種Python與C語言的有機結合既保證了計算速度,又保留了腳本語言的靈活性,有助于開展復雜的材料模擬。另外,基于Python面向對象的語言特性,更容易設計出可維護性強的計算程序。
三、具體教學案例
本部分以“H2分子勢能曲線的密度泛函理論計算”為具體教學案例,展示這種教學方式的優(yōu)勢與可行性。根據(jù)實驗目的,需要得到H2分子的結合能隨H-H鍵長的變化關系。為了計算結合能Eb,必須先求出孤立H原子與H2分子的電子能量。此時,Eb=E(H2)-2E(H),其中原子能量E(H)與分子能量E(H2)通過密度泛函理論(DFT)計算獲取。在Python腳本中,計算Eb的過程可以通過定義一個函數(shù)來方便地實現(xiàn)。此項目所用的Python代碼如圖1所示。該腳本僅僅利用30行代碼就實現(xiàn)了H原子與H2分子的超胞模型構建、0.2~3.5A(步長0.05A)鍵長范圍的DFT計算(采用三種不同泛函:LDA, PBE和PBE0),以及勢能曲線作圖。計算結果表明,無論(半)局域泛函還是雜化泛函,均無法正確描述H2分子的解離行為(圖2)。當鍵長大于2.25A時,三種泛函所得勢能曲線均越過零線(Eb=0水平線),意味著原子之間存在排斥作用。從物理上講,當兩個H原子相距足夠遠時,H-H之間化學鍵被打斷,原子之間不再有相互作用,因此勢能曲線應該趨近于零線。
通過這個項目,可以引導學生思考以下兩個問題:(1)擬合勢能曲線,計算H2分子的平衡鍵長re及解離能De,與實驗結果(re=0.74A,De=4.52 eV)進行比較,討論不同泛函的計算精度;(2)造成勢能曲線尾部越過零線的原因是什么,如何改進?第二個問題實質上是理論化學領域著名的靜態(tài)電子關聯(lián)問題,根源在于DFT框架下多電子波函數(shù)的單Slater行列式表達。在實際計算中,針對這類問題往往需要采用高精度波函數(shù)方法,如多參考態(tài)組態(tài)相互作用(MRCI)方法[6]。
學生通過這個實驗項目能學到什么東西呢?首先,在技術層面,學生通過練習可以學會如何調用ASE模塊搭建分子模型、控制特定的結構參數(shù),如原子間距,學習如何調用GPAW程序進行DFT計算,并利用Python提取計算結果完成結合能的計算,以及如何調用matplotlib庫進行作圖。其次,通過分析計算結果,了解DFT目前在處理靜態(tài)相關問題上的局限,由此認識到在復雜材料計算中也可能存在這樣的誤差。另外,還可以借此理解波函數(shù)方法的優(yōu)勢,即通過增大多電子波函數(shù)基組,提高對電子相關的描述精度。學有余力的學生甚至可以通過查閱文獻,思考如何在DFT框架下解決這個問題。一個常用的辦法是引入對稱性破缺波函數(shù):控制兩個H原子的自旋取向,一個向上,另一個向下,這實際上是一種單重態(tài)與三重態(tài)的混合態(tài)。然后采用自旋極化的DFT計算將能夠得到趨近零線的勢能曲線。
四、結論與展望
本文以H2分子勢能曲線的DFT計算為例探討了Python腳本語言在“計算材料學”實踐教學中的應用。由于材料模擬的復雜性與前沿交叉特點,傳統(tǒng)的理論講授為主、上機實踐為輔的教學模式不再適用于該課程的教學。本研究提出一種實踐教學方案,將整個課程分解為一系列實驗項目,引導學生在Linux工作站上編寫Python腳本來完成實驗。Python的“膠水語言”特點,有助于整合材料建模、計算與數(shù)據(jù)可視化,在材料模擬領域優(yōu)勢巨大。基于Python的編程實踐有助于激發(fā)學生進一步的探索熱情,為系統(tǒng)學習相關理論方法打下良好的基礎。這種教學方式同樣也適用于“計算化學”“計算生物學”等需要具備一定編程經(jīng)驗的課程。
參考文獻
[1]高慧玲,李蕓玲,劉露,等.《計算機在材料科學中的應用》課程教學探索[J].廣東化工,2021,48(6):197-198.
[2]江建軍,繆靈,梁培,等.計算材料學:設計實踐方法[M].北京:高等教育出版社,2010:1-44.
[3]張躍,谷景華,尚家香,等.計算材料學基礎[M].北京:北京航空航天大學出版社,2007:160-190.
[4]戴振翔,鄭贛鴻,馬永青.《材料結構設計與計算》課程的教學改革[J].教育教學論壇,2018(29):130-131.
[5]王浩,劉紅瑜,韋淼今.Python在分析化學實驗設計中的應用[J].大學化學,2020,35(9):198-204.
[6]楊傳路,黃鈺珺,張鑫,等.MRCI方法研究H2分子基態(tài)勢能曲線和解析勢能函數(shù)[J].魯東大學學報(自然科學版),2004,20(1):10.
Application of Python in Computational Materials Science Teaching
ZHANG Ya-Chaoa, ZHENG Shanb
(a. Guizhou Provincial Key Laboratory of Computational Nano-Material Science; b. School of Chemistry and Materials Science, Guizhou Education University, Guiyang,Guizhou 550018, China)
Abstract: This paper explores possible application of Python scripting in computational materials science teaching, using density functional calculations of potential curve for H2 as a practical case. Due to strong practice orientation of this course, traditional training process is largely devoted to cover both theoretical methods and the usage of various computational packages, making it difficult to understand. Here, we propose a Python based experiment scheme, to encourage students to learn about theoretical methods through experience and by asking proper questions. Python is simple and easy to pick up. As a glue language, it is easily adapted for an seamless integration of materials model setup, computation, as well as data analysis and visualization. Thus, it will considerably simplify the complicated teaching activities and would also improve student interests.
Key words: density functional calculations; Python; practice teaching; materials simulations