FireWorks——材料计算工作流的归属?
当我们回溯材料计算研究者的成长轨迹,会发现工作流管理工具的演进恰似一场层层突破的修行: 【启蒙阶段:刀耕火种】 初入课题组时,导师递来的”葵花宝典”成为叩开计算材料学大门的密钥。VASP 手册里晦涩的INCAR参数,像一串等待破译的密码;在Linux终端反复调试的bash脚本,记录着与POSCAR较劲的日日夜夜。这个阶段的研究者如同匠人,用记事本雕琢每个计算任务,用肉眼比对OUTCAR中的能量收敛曲线。 【进阶工具:批量觉醒】 当pymatgen 的Structure对象开始替代手工建模,当ASE的Atoms模块实现晶格参数的自动化调整,研究者终于挣脱了重复劳动的枷锁。笔者仍记得第一次用pymatgen 批量处理200个分子吸附构型时的震撼——原本需要数周的建模工作,在Python脚本的魔法下仅需一杯咖啡的时间。 【自动化跃迁:流程封装】 Atomate2 的出现如同打开潘多拉魔盒,将DFT计算分解成可复用的”乐高模块”:结构优化→静态计算→能带分析。Jobflow...
计算工作流——Atomate2自定义工作流
Atomate2除了直接调用现成的工作流,我们还可以根据个人需求自定义任务个数以及工作流走向。具体操作也非常简单,只需要在Flow中按照计算顺序传入任务即可,如果我们需要优化一个结构并进行静态计算: 12345678910111213141516171819from jobflow import Flowfrom atomate2.vasp.jobs.core import RelaxMaker, StaticMakerfrom pymatgen.core.structure import Structuresi_structure = Structure.from_file("Si.cif")# create a relax jobrelax_job = RelaxMaker().make(structure=si_structure)# create a static job that will use only the structure from the relaxationstatic_job =...
计算工作流——Atomate2基本设置
Atomate2安装过程官网上介绍的已经非常详细了,唯一需要注意的是云数据库的设置。Atomate2推荐采用云数据库来存储工作量计算结果,官网给出的例子为使用Mongdb Atlas。但是由于一些原因,采用云数据库来储存数据,对于个人用户来说不是很友好,特别是国内用户: 由于“局域网”问题,许多集群可能连接不上Mongdb Atlas,或者速度比较慢,容易掉线; 云数据库要花钱购买存储空间,Mongdb Atlas也只提供500M的免费空间,长期来看也是不够用的,不管你是学生还是社畜,咱自己总不能倒贴上班吧; 小批量计算没有这个必要,个人用户自己计算的东西,体量实在太小,没必要纠结于按照官网教程来配置数据库,我们主要是使用Atomate2方便的工作流。 Note:...
计算工作流——初识Atomate2
Atomate2 是一款开源可用来处理复杂庞大计算任务的软件包,开发团队也是大名鼎鼎的劳伦斯伯克利国家实验室的研究人员,耳熟能详的 pymatgen、Materials Project、FireWorks 等也是出自该团队之手。 Atomate2 环境配置可参考官网进行。 在此之前,强烈建议先了解学习一下 pymatgen 的用法!老司机之前也出过相关介绍。如果在此之前有了解过或使用过 pymatgen 的朋友,那么 Atomate2 使用起来应该会更加容易上手,而且用习惯之后,发现 Atomate2 用起来更加顺手。下面先贴一个官网上的例子: 123456789101112131415from atomate2.vasp.jobs.core import RelaxMakerfrom jobflow.managers.local import run_locallyfrom pymatgen.core.structure import Structuresi_structure = Structure( lattice=[[0, 2.73,...
Chap.16 计算小白硬学VASP —— 各类结构“Transformation”使用说明(三)
¡Hola a todos! 上一章介绍了怎么构建disordered分数占据结构,本章介绍怎么从disordered分数占据结构中生成可以直接计算的结构。 OrderDisorderedStructureTransformation上一章以LiFePO4为例,在8aO位点替换掺杂S元素,生成的disordered结构如下: 123456789101112131415161718192021222324252627282930313233343536Full Formula (Li4 Fe4 P4 S0.8 O15.2)Reduced Formula: Li4Fe4P4S0.8O15.2abc : 10.236196 5.970755 4.654917angles: 90.000000 90.000000 90.000000pbc : True True TrueSites (28) # SP a b c--- ...
Chap.15 计算小白硬学VASP —— 各类结构“Transformation”使用说明(二)
¡Hola a todos! 继续介绍pymatgen中standard_transformations中各类Transformation的使用说明。 SubstitutionTransformationSubstitutionTransformation类主要用于对结构进行某一元素替换或者部分掺杂。如何控制替换的元素活掺杂比例?则需要我们在使用时传入species_map参数,以Si为例: 完全替换元素 12345678910111213from pymatgen.transformations.standard_transformations import SubstitutionTransformationfrom pymatgen.io.cif import CifParser# 初始结构ini_Si = Cifparser('./Si.cif').parse_structures()[0]print(f'初始结构:\n{ini_si}')print('\n')#...
Chap.14 计算小白硬学VASP —— 各类结构“Transformation”使用说明(一)
¡Hola a todos! 本章开始,主要介绍pymatgen中standard_transformations中各类Transformation的使用说明。 AutoOxiStateDecorationTransformation该类主要是自动平衡结构中的价态信息,以LiFePO4结构为例,初始结构信息如下: 1234from pymatgen.core.structure import StructureLFP = Structure.from_file("./LiFePO4.vasp")print(LFP) 运行代码: 123456789101112131415161718192021222324252627282930313233343536Full Formula (Li4 Fe4 P4 O16)Reduced Formula: LiFePO4abc : 4.654917 5.970755 10.236196angles: 90.000000 90.000000 90.000000pbc : True ...
Chap.13 计算小白硬学VASP —— 自动搜索表面吸附位点并生成吸附结构
¡Hola a todos! 本章介绍如何在slab模型表面自动搜索吸附位点并生成吸附模型。 AdsorbateSiteFinder搜索吸附位点AdsorbateSiteFinder模块主要用于搜索slab模型表面潜在的吸附位点,主要分为三大类:ontop、bridge、hollow。首先导入AdsorbateSiteFinder模块: 1from pymatgen.analysis.adsorption import AdsorbateSiteFinder slab模型以Si(111)面为例,关于如何自动切slab模型可以参考往期内容。 模型: 12345678910from pymatgen.analysis.adsorption import AdsorbateSiteFinderfrom pymatgen.core.structure import Structure# 读取结构Si_111 = Structure.from_file("./Si_111.cif")# 实例化asf = AdsorbateSiteFinder(Si_111)#...
Chap.12 计算小白硬学VASP —— 构建异质结模型
¡Hola a todos! 本章介绍如何自动构建异质结模型。 CoherentInterfaceBuilder & ZSLGeneratorpymatgen中自动构建异质结模型需要调用CoherentInterfaceBuilder和ZSLGenerator。其中前者是用于生成interfaces,而后者主要是用于定义晶面的匹配度。导入方法为: 12from pymatgen.analysis.interfaces.coherent_interfaces import CoherentInterfaceBuilderfrom pymatgen.analysis.interfaces.zsl import ZSLGenerator 首先介绍ZSLGenerator,原理见:Lattice match: An application to...
Chap.11 计算小白硬学VASP —— 构建slab模型
¡Hola a todos! 本章介绍如何构建slab模型。 首先切面用到的miller index针对的是bulk模型的惯用胞(conventional cell)而不是原胞(primtive cell),这与之前计算能带是刚好相反的。 所以,在进行切面操作时,要确保你的bulk模型是惯用胞,可以用pymatgen的功能来帮助实现。 直接从Materials project下载结构 如果是从MP上下载结构,我们需要把conventional_cell = True打开: 1234567from mp_api.client import MPResterapi_key = "your key"with MPRester(api_key) as mpr: Si = mpr.get_structure_by_material_id("mp-149",conventional_unit_cell=True) ...