计算工作流——初识Atomate2
Atomate2
是一款开源可用来处理复杂庞大计算任务的软件包,开发团队也是大名鼎鼎的劳伦斯伯克利国家实验室的研究人员,耳熟能详的 pymatgen
、Materials Project
、FireWorks
等也是出自该团队之手。
Atomate2
环境配置可参考官网 进行。
在此之前,强烈建议先了解学习一下 pymatgen
的用法!老司机之前也出过相关介绍。如果在此之前有了解过或使用过 pymatgen
的朋友,那么 Atomate2
使用起来应该会更加容易上手,而且用习惯之后,发现 Atomate2
用起来更加顺手。下面先贴一个官网上的例子:
1 | from atomate2.vasp.jobs.core import RelaxMaker |
这段代码很简单,意思是优化 Si
单质结构,整段代码又三部分组成:
- 定义结构
1 | si_structure = Structure( |
- 指定任务/工作流
1 | relax_job = RelaxMaker().make(si_structure) |
- 运行
1 | run_locally(relax_job, create_folders=True) |
有人会问,如果只用 pymatgen
能不能实现同样的功能,答案是肯定的:
1 | from pymatgen.io.vasp.sets import MPRelaxSet |
相比于 Atomate2
的代码,如果仅仅从单个的计算任务来说,pymatgen
差别不大,都是读结构,进行单次计算。
但是对于多步计算,如多步优化,能带态密度等计算,pymatgen
该如何实现,一般来说,我们需要把每一步的计算输入相关的代码都写好,比如计算 Si
的能带:
- 结构优化
1 | relax_set = MPRelaxSet(si_structure) |
运行 vasp
计算
- 静态计算
1 | # 读取优化的结果 |
运行 vasp
计算
- 能带计算
1 | # 读取静态计算的结果 |
运行 vasp
计算
只使用 pymatgen
,从提交任务的次数来说,需要提交三次 vasp
任务,而且整个计算过程是中断的,每一次计算都需要人力去手动提交,比较麻烦。而且如果你使用的是公用集群,且恰好集群用的人比较多,计算资源比较紧张,那么你很难保证上一步计算完成后,手动提交的下一步任务能马上开始计算,可能要排很久的队,这样一来,计算周期就不可控的变长了。
如果要使用 Atomate2
来完成上述计算任务的话,代码会非常简单明了:
1 | from atomate2.vasp.flows.core import RelaxBandStructureMaker |
上述代码省略了可自定义的 INCAR
、KPOINTS
等参数设置。
有 pymatgen
代码对比,相当于 bandstructure_flow = RelaxBandStructureMaker().make(si_structure)
这一行代码包含了 pymatgen
三个分步计算过程,从代码的结构上看更加的简洁易懂,而且最关键的是自动控制任务的进行,只需要提交一次任务即可。相当于把单个独立的子任务串联了起来,这便是“工作流”了。
后面会逐步来介绍如何使用 Atomate2
来调用/自定义工作流来高效进行计算。
- 标题: 计算工作流——初识Atomate2
- 作者: 炫酷老司机
- 创建于 : 2024-11-08 00:00:00
- 更新于 : 2024-11-08 10:36:54
- 链接: https://andyhox.github.io/2024/11/08/Atomate2-1/
- 版权声明: 欢迎个人转载、使用、转贴等,但请获得作者同意且注明出处!