基于数据库的第一性原理材料计算流程设计

2024-06-26 11:25祁景博章曙光姜骏
电脑知识与技术 2024年13期

祁景博 章曙光 姜骏

摘要:第一性原理计算即从量子力学基本原理出发,采用数值算法求解密度泛函理论基本方程,从而获得电子运动规律、探索物质运动规律、研究物质的理论描述。项目从针对第一性原理计算的迭代计算和本征态求解方式,开发支持材料元素第一性原理材料计算的软件。随着计算机技术和计算能力的不断进步,对材料性能和机制的认知逐渐深入到电子层次,新材料的研究也越来越由传统的实验室研究转为理论模拟计算和数据驱动标准化流程的新模式。课题基于MangoDB数据库技术,利用Atomate软件的FireWorks模块研究,对材料元素实现第一性原理材料计算,获得其计算基本流程的数据库模型。

关键词:第一性原理计算;密度泛函理论;材料元素计算;标准化流程;MongoDB数据库

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2024)13-0077-07 开放科学(资源服务)标识码(OSID) :

0 引言

在新材料的研究中,材料计算往往是至关重要的一步,可以为材料工作者提供关键的数据支持,帮助他们设计、制备和合成新材料。然而,传统的材料计算通常需要不断迭代和试错,导致研发周期长、不确定性高、研究成本高,从而限制了新材料的研究进展。近年来,随着计算机技术的快速发展,新材料设计中的材料计算可以通过计算机模拟进行。通过计算机程序不断迭代材料设计、制备和合成方式,将手动的材料计算转变为模块化的“参数选择-自动计算”的标准化流程。新材料研究需要大量的材料计算数据支持,而材料数据库作为存储计算数据的媒介和载体,是材料多角度参数设计和计算迭代的基础。材料数据库在满足大量材料计算数据的同时,对于寻找宏观物理性质和微观结构优化具有决定性作用,为高效、低成本的新型材料设计等材料科学研究奠定了基础。

国内重要材料数据库包括中国科学院的材料学科基础科学数据库和北京科技大学主导的国家材料科学数据共享网。此外,还有一些规模较小的数据库,如北京航空材料研究院的航空材料数据库和中科院长春应用化学研究所的稀土材料数据库,专注于特定领域但数据共享有限。中科院物理研究所的Atomly.net收录了超过17万个无机晶体材料的第一性原理计算结果。美国的Materials Project等数据库也提供丰富内容,但仍存在用户权限限制和数据分析挑战。

1 关键技术介绍

FireWorks是一个用于定义、管理和执行标准化工作流。可以使用Python、JSON或YAML定义复杂的工作流,使用MongoDB进行存储。工作流可以在任意计算资源上自动执行,包括那些具有排队系统的计算资源。

Atomate是一款开源软件,使用Python函数的工作流用于执行复杂的材料科学。Atomate的特点包括它建立在开源库之上:pymatgen、custodian、jobflow和FireWorks。具有“标准”工作流程库,用于计算各种所需材料性能,将工作流修改和链接在一起的简单途径。它可以构建输出属性的大型数据库,会自动保留作业、目录、运行时的细致记录参数等。

MongoDB是一款开源文档型数据库,采用JSON 风格的BSON存储数据。其灵活的数据模型允许存储各种结构的文档,支持复杂查询操作。

2 需求分析

2.1 设计目标

该软件是基于MongoDB数据库的材料计算工具,针对材料研究工作者开发,旨在计算材料分子的物化性质,如动能、势能和态密度等。由于构成材料的元素组分、性质的差别,以及材料应用的复杂性,不同材料的第一性原理计算过程差别极大。当前的研究中,计算过程需要大量的人机交互,严重制约了高性能计算条件下的材料研究效率。目前对于封装外部第一性原理计算引擎具有松耦合。结果计算、软件安装、测试都需要用户去完成,材料工作者了解材料相关物性计算的基本流程但不具备计算机专业的背景知识。所以将材料计算过程分解为基本的“软件-控制参数”组合单元,应用数据库技术,通过组织基本组合单元,达到第一性原理材料计算流程的标准化,进而提高材料元素计算的效率。

2.2 功能需求分析

交互页面模块:1) 用户可在软件登录界面输入指定账号密码登录系统;2) 登录后可进行新模型任务中元素类型的选择;3) 选好元素类型后进入该元素的元素名和原子数量设置以及元素属性;4) 设置好元素属性后进入原子位置和晶胞参数坐标的具体设置。最后开始计算。

本软件系统需要先对部署在Ubuntu 20.2 下的Atomate、FireWorks、MongoDB、VASP进行环境配置才可运行。

Atomate工作流调用模块:Atomate是支持第一性原理计算的工具模块,可以通过命令生成管理每项任务的FireWorks 工作流,包括逐条启动和管理Fire?Works中所设计和构造的输入文件生成自洽迭代、态密度和能带计算和数据存储工作流。

FireWorks工作流模块通过MongoDB存储设计工作流程,在python.py文件中使用FireWorks配置计算工作流。支持利用Pymatgen前处理产生计算所需赝势信息,传递输入文件,调用VASP完成计算流程,并将结果存入MongoDB数据库。

VASP材料元素计算模块:该模块基于赝势-平面波基组,利用密度泛函理论求解Kohn-Sham方程,完成材料的电子结构分析。支持快速生成输入文件、提交计算任务到作业队列,并自动解析输出文件以汇总结果。

MongoDB 数据库存储模块:本模块主要实现对FireWorks工作流、材料计算结果数据的存储。Mon?goDB支持丰富多样的查找表达式模块和多种文件和数据类型。

2.3 性能需求分析

本软件系统中的Atomate 软件,FireWorks 模块,VASP材料元素计算软件需运行在Linux系统平台下,材料工作者需将本软件系统部署于主机或Linux操作系统的虚拟机。

3 概要设计

3.1 数据库设计与实现

数据库需要满足存储三个部分的能力:1) 存储FireWorks计算工作流;2) 存储VASP计算输出文件;3) 存储登录用户名和密码。

按照该软件的要求,采用 MongoDB数据库构建了下面的表格:

1) 用户表(user) 用户信息包括:账号、密码。

2) 材料表(material)

材料信息包括:元素、体系结构、波函数、电荷密度、迭代弛豫、本征值、电子态密度、能量、体积、元素数量、能带、密度。

3) 工作流表(jobflow)

工作流信息包括:工作流、创建时间、任务名、任务编号、输出文件。

4) VASP作业表(vasptask)

VASP作业表信息包括:任务时间、元素属性、晶胞参数、创建者、文件路径、化学元素。

3.2 软件整体概要设计

用户登录系统,填入账号密码后进入原子类型页面,选择元素类型和数量,配置元素属性。然后进入晶胞参数页面,填入原子位置和晶胞参数。完成填选后提交计算任务。系统通过Atomate调用Pymatgen搜索输入文件POSCAR,生成POTCAR,配置INCAR 和KPOINTS。使用VASP进行材料元素计算,计算结果存入MongoDB数据库,然后使用Pymatgen分析结果并绘图。

3.3 系统概要设计

3.3.1 交互页面模块概要设计

交互页面模块:在交互页面模块中需要设计四个页面:1) 登录页面:负责核对用户的账户和密码以进行身份确认并登录系统。2) 原子类型选择页面:由于一个元素可能为一个或多个的若干原子组成,所以需要确定组成该元素的具体原子类型数量。3) 元素属性页面:在后续通过Atomate调用工作流计算步骤中需要先找到该元素输入文件如:POSCAR文件,所以需要元素的具体名称、原子的数量,来确定所选的具体元素信息。元素属性的设置以在实际研究中对该元素所需的具体属性值配置。4) 晶胞参数页面:此页面需要将您需要计算的元素中原子的具体位置和晶胞参数进行配置。

3.3.2 Atomate 工作流调用模块概要设计

在Ubuntu 20.4 Linux系统中,下载Atomate、Fire?Works、Pymatgen、Python3.9、MongoDB7.0,并创建Atom?ate目录结构。配置环境变量和FireWorks工作流模块路径,设置数据存储位置并连接VASP计算软件。使用命令启动配置好的FireWorks工作流,生成输入文件。

3.3.3 FireWorks 工作流模块概要设计

FireWorks工作流模块配置和定义FireTask来调用Python模块和函数;配置.py文件包含流程中所需函数;调用Pymatgen预处理对Atomate生成POTCAR 函数;传入VASP生成输入文件并计算结果函数;整条工作流以yaml格式存入MongoDB函数;调用Pymatgen 做后处理绘图函数。

3.3.4 VASP 材料元素计算模块概要设计

VASP材料元素计算模块管理着VASP计算的核心部分。主要输入包括四个文件:INCAR(控制参数)、POSCAR(结构描述)、POTCAR(赝势)和KPOINTS(K点设置)。输出包括七个文件:CONTCAR (迟豫后的结构)、WAVECAR(波函数)、CHGCAR(电荷密度)、OSZICAR(迭代信息)、EIGENVAL(本征值)、DOSCAR(电子态密度)和OUTCAR(主要输出)。通过FireWorks配置的流程,进行基于第一性原理的材料元素计算,并将结果存入MongoDB。

3.3.5 MongoDB 数据库模块概要设计

MongoDB数据库模块:安装MongoDB并配置其环境变量和数据库控制文件和其中参数、存储Fireworks 工作流数据库、VASP输出文件计算结果数据库,Mon?goDB 需预先通过启动命令使环境启动。本软件中MongoDB应存储三部分:1)FireWorks计算工作流。2)vasp计算输出文件。3)登录用户账号和密码。

3.4 前端交互界面框架设计

登录页面设计:包括账号和密码输入框,登录和退出按钮。输入正确信息点击“登录”可进入系统,否则弹出“账号或密码错误”提示框。

元素类型选择页面:设置原子类型数量选择栏,选择元素的原子组成数量,并建立模型。

元素属性页面:包括元素名输入框和晶胞参数选择栏,选择计算中所需的晶胞参数选项。

晶胞参数页面:设置元素原子的三维坐标和晶胞参数的x、y、z 轴向量坐标。

4 详细设计与代码实现

4.1 软件详细设计概述

基于MongoDB的高通量材料计算数据库的设计与应用毕业设计,系统通过命令行或交互页面实现材料工作者对材料元素第一性原理的计算,并将计算数据存储进数据库。系统内部使用Atomate工作流调用FireWorks、VASP和MongoDB协作。用户配置元素信息后,系统通过Atomate调用FireWorks启动标准化计算工作流。工作流利用Pymatgen处理数据,生成输入文件,并传入VASP进行计算。计算完成后,结果存入MongoDB数据库。Atomate调用Pymatgen绘制能带结构图和态密度图。

4.2 模块详细设计与代码实现

4.2.1 交互页面模块详细设计与代码实现

登录页面:使用wxPython编写交互页面。当用户输入密码后页面会与数据库中存放的账号密码进行比对,若账号密码正确则进入元素配置页面,若错误则弹出错误提示框显示“账号或密码错误”。

元素类型选择页面:氧化镁MgO有一个镁原子Mg 和一个氧原子O组成,不同元素间原子组成数量差别很大,并且原子组成为元素的基本。用户点击下拉栏选择符合组成元素的原子数量如:“1、2、3...”,选择完可点击创建模型按钮,创建该元素的模型。

元素属性页面:本页面需要将原子数量具体分配给指定元素:镁原子Mg对应原子个数“1”,氧原子O对应原子个数“1”。在第一性原理计算中会涉及晶胞参数,该属性是结构弛豫计算中重要部分。

晶胞参数页面:设置原子的三维位置输入框如下:镁原子Mg对应位置“ 0 0 0”,氧原子O对应位置 “0.5 0.5 0.5”。将镁原子和氧原子组合成氧化镁后,需要设置晶胞参数的方位向量如下:x轴“ 2.13 2.132.13”,y轴“ 2.13 0 2.13”,z轴“ 0 2.13 2.13”。配置完毕后,点击“OK”按钮即可开始计算。

4.2.2 Atomate 调用FireWorks 工作流模块详细设计与代码实现

Atomate 工作流调用模块:在Linux 系统中部署Atomate软件包、FireWorks模块,创建好Atomate目录的结构,配置环境变量以及FireWorks工作流模块路径及数据存储的位置信息,并制定好VASP计算软件。

配置Atomate调用FireWorks工作流模块路径及材料元素计算输出文件和计算流程的数据存储的路径位置信息。

4.2.3 VASP 材料元素计算模块详细设计与代码实现

下载VASP6.1.2并在Atomate的配置目录中指定VASP计算软件的路径,可在Atomate启动FireWorks 后启动VASP。

通过Python脚本使用pymatgen前处理进行输入文件的查找与转换,进行VASP计算前输入文件的准备工作,从自动化预设的工作流中创建频带结构。

VASP材料计算中需要元素的输入文件,若制作材料元素充足的数据库需要有足够多的材料元素文件。

VASP 输入文件中最重要的就是POSCAR 和POTCAR两个文件。

通过Python脚本启动VASP计算。

通过Python脚本使用pymatgen后处理。

4.2.4 MongoDB 数据库模块详细设计与代码实现

my_launchpad.yaml文件配置指定了FireWorks工作流与MongoDB数据库的连接。

通过jobflow.ymal指定了计算任务和计算的输出文件既参数output存入MongoDB数据库,以及可将在材料元素的计算过程中调用jobflow.ymal。

5 系统测试

在材料计算软件中对MgO经过一系列参数配置后通过VASP计算得到数据和计算任务流程保存至MongoDB数据库。

VASP计算过程中将输出数据同时存入当前文件夹内,绘图脚本可根据该元素的输出数据绘制能带图和态密度图。

6 结束语

综上所述,本材料计算软件根据第一性原理材料计算的特征,将材料计算过程分解为基本的“软件-控制参数”组合单元,应用数据库技术,通过组织基本组合单元,实现材料计算达到第一性原理材料计算流程的标准化,进而提高材料元素计算的效率。本软件适用于材料工作者对材料研究中的计算步骤,由于兼容问题,材料工作者需将软件部署于本机或虚拟机为Linux系统的计算机或服务器。经测试软件可根据用户可根据设定的元素的原子位置和数量进行计算得到元素的输出文件等相关计算结果。由于本项目在研究过程中无服务器条件则部署于虚拟机平台导致算力不够无法执行多材料的并发和高通量计算,可在未来基于服务器端部署进行深入研究。

参考文献:

[1] 坚增运,刘翠霞,吕志刚. 计算材料学[M]. 北京:化学工业出版社,2012.

[2] 汤富领,李俊琛,卢学峰. 计算材料学案例教程[M]. 北京:冶金工业出版社,2022.

[3] 王玉祥. 第一性原理数据库建立及热电材料高通量筛选[D]. 上海:上海大学,2021.

[4] 刘东升. 高通量材料计算与机器学习集成平台的设计与实现[D]. 武汉:华中科技大学,2022.

[5] 罗树林. 基于高通量计算与机器学习的材料设计方法与软件的开发与应用[D]. 长春:吉林大学,2021.

[6] 孙博. 材料高通量计算与机器学习一体化平台设计与实现[D]. 沈阳:辽宁大学,2021.

[7] 崔子纯,杨莫涵,阮晓鹏,等. 高通量计算二维材料界面摩擦[J]. 物理学报,2023,72(2):225-235.

[8] 阳王东,杨昊,冷灿,等. 基于GASpy的材料模拟计算框架[J].湖南大学学报(自然科学版),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/.

【通联编辑:李雅琪】