Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
快速上手合金测试工作流APEX
中文
工作流
合金
APEX
中文工作流合金APEX
zhuoyli@connect.hku.hk
发布于 2023-07-25
推荐镜像 :Basic Image:bohrium-notebook:2023-04-07
推荐机型 :c2_m4_cpu
赞 6
1
4
快速上手合金测试工作流:APEX 1.0 (Alloy Properties EXplorer using simulations)
Background
安装 APEX
LAMMPS测试案例
提交结构弛豫relaxation工作流
APEX Introduction
在Argo UI上的三种APEX工作流:
结构弛豫工作流介绍:
提交性质测试 property工作流
APEX合金基本性质测试
提交联合工作流(结构弛豫+性质计算)
查看测试结果

快速上手合金测试工作流:APEX 1.0 (Alloy Properties EXplorer using simulations)

Open In Bohrium

©️ Copyright 2023 @ Authors
作者: zhuoyli@outlook.com 📨
日期:2023-07-25
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速开始:点击上方的 开始连接 按钮,选择 bohrium-notebook:2023-05-31镜像 和任意配置机型即可开始。

该Bohrium notebook演示了如何快速使用APEX合金测试工作流提交分子动力学测试的一个上手案例。因该案例相关的LAMMPS计算任务被预设需提交到Bohrium云平台运算,用户可能需先准备一个Bohrium账号来进行该案例。用户可以查看APEX仓库下的README.md来了解更详细的用户使用说明。

代码
文本

Background

以DeePMD为代表的AI for Science方法已在高效的分子/原子尺度的精确模拟方面展现出巨大的潜力。与此同时,一个高效、稳定、自动化的模型评估系统对于方法的持续开发与场景的实际应用都具有重大意义。

以合金体系为例,研究者们主要关心平衡态结构和能量的计算、能量与体积的关系曲线、弹性常数、空位形成能、间隙缺陷形成能以及表面形成能等重要性质参数。通过对此类性质的测试结果与同一合金体系的DFT或实验结果进行比较,可进一步评估该模型的准确性。对于如Deep Potential (DP) 一类的机器学习势函数,还可指导训练策略的优化以及前期训练的参数设置。

在此背景下,开发者们借助逐渐成熟的dflow科学计算云原生工作流所提供的完备且方便的工作流开发功能,第一性原理计算算子库fpop等工具对合金性质测试流程进行了重构,并将其命名为: Alloy Properties EXplorer using simulations (APEX)。APEX将致力为社区用户提供高效、便捷、高兼容性的合金性质计算测试工作流。

Fig1

代码
文本

安装 APEX

通过git clone下载仓库:

代码
文本
[ ]
!if [ -e APEX ]; then rm -rf APEX; fi;
代码
文本
[ ]
!git clone https://github.com/deepmodeling/APEX
代码
文本

通过pip可以快速将APEX和诸如pydflow等一系列依赖安装到当前python环境下:

代码
文本
[ ]
cd APEX
代码
文本
[ ]
!pip install .
代码
文本

或者,如果本地已有测试的案例,也可直接安装APEX:

代码
文本
[ ]
!pip install apex-flow
代码
文本

检查APEX是否正确安装:

代码
文本
[ ]
!apex -v
代码
文本

LAMMPS测试案例

这里我们演示如何通过APEX提交一个基于分子动力学软件LAMMPS工作流的完整流程。该工作流将同时对BCC和FCC相的钼单质相关的EOS和弹性常数性质进行测试。该案例存放在仓库的examples/lammps_demo/路径下:

代码
文本
[ ]
cd examples/lammps_demo/
代码
文本

通过tree命令查看该案例工作路径下预先准备的文件:

代码
文本
[ ]
!tree
代码
文本

global_bohrium.json包含了APEX提交工作流至Bohrium平台相关的全局设置(例如:Bohrium账号信息;镜像地址;节点种类等)。该文件应当提前准备在用户提交的工作路径下:

代码
文本
[ ]
!cat global_bohrium.json
代码
文本

请通过运行下面的代码填入global_bohrium.json文件下关于自己Borhrium账户的相关信息(usernamepasswordprogram_id):

代码
文本
[ ]
import json
from monty.serialization import loadfn, dumpfn

j = loadfn('global_bohrium.json')

# please replace following three lines
j['email'] = 'YOUREMAIL'
j['password'] = 'YOURPASSWD'
j['program_id'] = 1234

with open('global_bohrium.json', 'w') as f: json.dump(j, f, indent=4)
代码
文本

一个完整的APEX合金测试工作流由结构弛豫: relaxation性质测试: property两个单独的计算工作流串联完成,其具体参数设置均通过工作路径下的相关json文件传递给APEX。

在这里,我们准备了一些计算参数的json文件。按照其包含的内容分为下面三种:

  1. param_relax.json 包括了构型文件路径,原子作用描述信息,和结构弛豫工作流相关参数信息。例如:
代码
文本
[ ]
!cat param_relax.json
代码
文本
  1. param_props.json包括了构型文件路径,原子作用描述信息,和性质测试工作流相关参数信息。例如:
代码
文本
[ ]
!cat param_props.json
代码
文本
  1. param_joint.json 包括了上面两个文件里所有的信息。例如:
代码
文本
[ ]
!cat param_joint.json
代码
文本

提交结构弛豫relaxation工作流

首先,在做性质测试之前,先提交一个结构弛豫工作流。 可以通过以下命令实现:(文件上传时间取决本地网络速度而略有不同,可能需要几分钟)

代码
文本
[ ]
!apex submit param_relax.json -c global_bohrium.json
代码
文本

当出现:Workflow has been submitted (ID: ... 我们就可以通过website所显示的Argo UI来监控该工作流。

代码
文本

APEX Introduction

APEX继承第二版合金性质计算的功能,基于dflow工作流开发工具进行重构,使其结合云原生工作流的优势,将多构型,多性质自动测试的复杂流程逻辑直观化,用户操作流程简单化。

Fig1

图 1|APEX合金工作流流程图

在Argo UI上的三种APEX工作流:

  • 结构弛豫:
Fig1
  • 性质计算:
Fig1
  • 联合工作流:
Fig1

结构弛豫工作流介绍:

Fig1

图 2|结构弛豫工作流三步骤

代码
文本

提交性质测试 property工作流

当前结构弛豫工作流完成后,相关结果文件会被自动回收并下载到本地工作路径下。

使用tree查看当前工作路径:

代码
文本
[ ]
!tree
代码
文本

接下来,我们就通过以下任意命令来继续提交合金测试工作流:(⚠️注意:在提交合金测试之前工作路径必须存在结构弛豫后的相关结果文件)

代码
文本
[ ]
!apex submit param_props.json -c global_bohrium.json
代码
文本

成功提交后,我们可以继续通过 website 来监控该工作流。

代码
文本

APEX合金基本性质测试

  • The equation of state (EOS):
Fig1

图 3|Three steps in EOS calculation

Fig1

图 4|Example of EOS plot (from Computer Physics Communications 253 (2020) 107206)

  • 弹性常数:
Fig1
Fig1

图 5|Three steps in elastic constants calculation

  • 表面能:

    Fig1
  • 点缺陷形成能:

    Fig1
  • 层错能:

    Fig1
代码
文本

性质计算工作流完成后,相关结果文件会被自动回收并下载到本地工作路径下:

代码
文本
[ ]
!tree
代码
文本

提交联合工作流(结构弛豫+性质计算)

代码
文本

你也可以通过提交一个联合工作流来一键完成上述两种工作流的工作。让我们先重置该示例的工作路径:

代码
文本
[ ]
!for ii in confs/std-?cc; do cd $ii; rm -rf relaxation eos_00 elastic_00; cd ../..; done
!tree
代码
文本

可以通过以下任意命令提交一个联合工作流:

  • apex submit param_joint.json -c global_bohrium.json
  • apex submit param_relax.json param_props.json -c global_bohrium.json

例如:

代码
文本
[ ]
!apex submit param_relax.json param_props.json -c global_bohrium.json
代码
文本

成功提交后,我们可以继续通过 website 来监控该工作流。

代码
文本

性质计算工作流完成后,相关结果文件会被自动回收并下载到本地工作路径下:

代码
文本
[ ]
!tree
代码
文本

查看测试结果

当上述工作流完成后,我们可以检查所测试两相的EOS和弹性常数结果:

代码
文本
[ ]
elastic_bcc = 'confs/std-bcc/elastic_00/result.out'
elastic_fcc = 'confs/std-fcc/elastic_00/result.out'
with open(elastic_bcc, 'r') as f1: print(f1.read())
with open(elastic_fcc, 'r') as f1: print(f1.read())
代码
文本
[ ]
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

# read & prepare data
def prep(l):
line = np.loadtxt(l, dtype=float, skiprows=2)
x = line[:, 0]
y = line[:, 1]
x_m = np.linspace(line[0, 0], line[-1, 0], 100)
Spline = interpolate.make_interp_spline(x, y)
y_m = Spline(x_m)
return x_m, y_m

eos_bcc = 'confs/std-bcc/eos_00/result.out'
eos_fcc = 'confs/std-fcc/eos_00/result.out'
bcc_x, bcc_y = prep(eos_bcc)
fcc_x, fcc_y = prep(eos_fcc)
# plot figures
plt.subplot(1,2,1)
plt.plot(bcc_x, bcc_y, 'r')
plt.xlabel('volume per atom $(\AA^3)$')
plt.ylabel('Energy per atom E (eV/atom)')
plt.title('BCC EOS')
plt.subplot(1,2,2)
plt.plot(fcc_x, fcc_y, 'b')
plt.xlabel('volume per atom $(\AA^3)$')
plt.title('FCC EOS')
代码
文本
中文
工作流
合金
APEX
中文工作流合金APEX
已赞6
本文被以下合集收录
App related
Charmy Niu
更新于 2024-01-17
10 篇3 人关注
推荐阅读
公开
Hands-on to APEX (Alloy Properties EXplorer using simulations)
EnglishAPEXWorkflowAlloy
EnglishAPEXWorkflowAlloy
zhuoyli@connect.hku.hk
发布于 2023-08-19
1 赞
公开
Finetune Alloy Property using APEX + DPGen2
WorkflowOpenLAMDPGEN,DeePMD,DP,ABACUS,LAMMPS,机器学习势函数,DeePMD-kitAPEXAPP DEMOAlloy
WorkflowOpenLAMDPGEN,DeePMD,DP,ABACUS,LAMMPS,机器学习势函数,DeePMD-kitAPEXAPP DEMOAlloy
zhuoyli@connect.hku.hk
更新于 2024-08-14