Bohrium
robot
新建

空间站广场

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

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
ABACUS计算模拟实例 | IV. 堆垛层错能的计算
ABACUS
计算材料学
ABACUS计算材料学
FermiNoodles
weiqingzhou@whu.edu.cn
发布于 2024-04-10
推荐镜像 :abacus:3.6.3-user-guide
推荐机型 :c2_m4_cpu
赞 1
2
ABACUS-cases(v15)

ABACUS计算模拟实例 | IV. 堆垛层错能的计算

代码
文本

©️ Copyright 2023 @ Authors
作者:Jinghang Wang (AISI电子结构团队实习生) 📨
日期:2024-5-30
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速开始:由于本案例需要比较长的计算时间(使用32核需要4h以上),因此本案例不会要求完成具体计算,只展示输入输出文件以及用到的命令。如果你想进行计算,可点击上方的 开始连接 按钮,选择 abacus:3.6.3-user-guide 镜像及 c32_m64_cpu 节点配置,并在连接后点击右上方的切换内核,选择Bash内核稍等片刻即可运行。

代码
文本

🎯 本教程旨在帮助初学者学习堆垛层错能构型建模以及使用ABACUS自动计算堆垛层错能曲线。

代码
文本

本节教程目录如下:
1. 堆垛层错建模
2. 堆垛层错能计算
3. 广义堆垛层错能曲线

代码
文本

在使用ABACUS进行计算时,所有操作都需要在指定的文件夹目录下进行。我们已经准备好了数据集ABACUS-cases,其中文件夹“4”对应本节教程。

代码
文本

首先我们将数据集中的文件复制到根目录下:

代码
文本
[1]
cp -r /bohr/ABACUS-cases-nu6t/v15/ABACUS-cases/4 .
代码
文本
[2]
cd 4 && ls
Cu_ONCV_PBE-1.0.upf            INPUT       cif2STRU.py  stacking_fault.sh
Cu_fcc_energy.csv              OUT.ABACUS  model.sh     structure
Cu_gga_8au_100Ry_4s2p2d1f.orb  SFE.jpg     result

代码
文本

1. 堆垛层错建模

代码
文本

铜是一种具有具有很高的延展性和可塑性的优良的导电和导热材料。由于其优良的导电性,铜是电线、电缆和电气设备中最常用的材料之一。同时,铜也是许多重要合金(如黄铜和青铜)的主要成分,广泛应用于机械制造和船舶业中,是现代工业不可或缺的重要材料。
在晶体学领域,堆垛层错是晶体材料中可能出现的平面缺陷,堆垛层错能等于形成完整堆垛层错的完美晶格晶体的能量变化。堆垛层错通常处于较高能量状态,可能在晶体生长过程中产生或由塑性变形引起。低层错能材料中的位错也可能解离成扩展位错,这是一种以部分位错为界的层错。
堆垛层错最常出现在紧密堆积的晶体结构中。FCC和HCP结构都属于密堆结构,它们之间的区别仅在于堆叠顺序。对于FCC晶体,堆垛层错能等于沿[111]方向的ABCABC原子堆垛顺序通过原子层滑移变成ABAB原子堆垛顺序的双层HCP原子的能量变化。在计算过程中,我们通常只关注有一到两层或三层原子堆垛中断的情况。堆垛层错能量变化在很大程度上反应了一种材料的强度,这是研究金属力学性能的一个非常重要的指标。我们将以FCC-Cu体系为研究对象来介绍堆垛层错能的第一性原理计算。

代码
文本

堆垛层错能的定义式为:

式中:表示超胞发生剪切形变后的总能;为完美晶格超胞的总能;表示滑移面的面积。堆垛层错形成过程示意图见图1。

代码
文本
图1 FCC结构产生本征堆垛层错的示意图
代码
文本

本案例中,我们使用Atomsk软件进行建模。建模过程用到了model.shcif2STRU.py:前者会调用Atomsk完成建模,创建structure文件夹,并将所有20个构型均放在其中用于后续自洽计算;后者用于调用ase将生成的cif格式的构型转为ABACUS的可以识别的STRU文件格式。cif2STRU.py脚本的运行包含在model.sh中。

代码
文本
[3]
cat model.sh
# create a perfect FCC-Ni lattice with 12 atom layers and define the lattice orientation
atomsk --create fcc 3.62 Cu orient [1-10] [11-2] [111] -duplicate 1 2 4 Cu_initial.cif
astep=0.073893 #Note: IN bash script, there should be no whitespace in variable assignment. e.g. astart = 30 will fail
astep_frac=0.05
n=20
mkdir structure
for ((b=0; b<=$n; b++))
do
# move the top half atom layers to construct FCC-Ni lattice with intrinsic stacking fault
i=$(echo "scale=7; $astep * $b" | bc) # displacement
atomsk Cu_initial.cif -shift above 0.5*box z 0.0 $i 0.0 Cu_isf.cif # create structure
python3 cif2STRU.py
sed -i -e '/LATTICE_VECTORS/{n;n;n;s/.*/0.0000000000      0.0000000000      40.080090000/;}' STRU # add vaccum layer
cp STRU ./structure/STRU_$b
done


代码
文本
[4]
# create structrues
#. model.sh
代码
文本
[5]
cat cif2STRU.py
from ase.io import read, write
from pathlib import Path

# cif to STRU
cs_dir = './'
cs_vasp = Path(cs_dir, 'Cu_isf.cif')
cs_atoms = read(cs_vasp, format='cif')
cs_stru = Path(cs_dir, 'STRU')
pp = {'Cu':'Cu_ONCV_PBE-1.0.upf'}
basis = {'Cu': 'Cu_gga_8au_100Ry_4s2p2d1f.orb'}
write(cs_stru, cs_atoms, format='abacus', pp=pp, basis=basis, scaled=False)

代码
文本
[6]
#选取20个STRU文件中的一个进行展示
cat structure/STRU_10
ATOMIC_SPECIES
Cu  63.546        Cu_ONCV_PBE-1.0.upf

NUMERICAL_ORBITAL
Cu_gga_8au_100Ry_4s2p2d1f.orb

LATTICE_CONSTANT
1.889726

LATTICE_VECTORS
2.5597000000      0.0000000000      0.0000000000      
0.0000000000      8.8672000000      0.0000000000      
0.0000000000      0.0000000000      40.080090000

ATOMIC_POSITIONS
Cartesian

Cu
0.0000000000
48
0.0000000000 0.0000000000 0.0000000000 1 1 1 mag 0.0 
0.0000000000 2.9557300000 4.1800250000 1 1 1 mag 0.0 
2.5597000000 1.4778700000 2.0900000000 1 1 1 mag 0.0 
1.2798500000 3.6946700000 2.0900000000 1 1 1 mag 0.0 
1.2798500000 0.7389300000 4.1800250000 1 1 1 mag 0.0 
1.2798500000 2.2168000000 0.0000000000 1 1 1 mag 0.0 
0.0000000000 4.4336000000 0.0000000000 1 1 1 mag 0.0 
0.0000000000 7.3893300000 4.1800250000 1 1 1 mag 0.0 
0.0000000000 5.9114700000 2.0900000000 1 1 1 mag 0.0 
1.2798500000 8.1282700000 2.0900000000 1 1 1 mag 0.0 
1.2798500000 5.1725300000 4.1800250000 1 1 1 mag 0.0 
1.2798500000 6.6504000000 0.0000000000 1 1 1 mag 0.0 
0.0000000000 0.0000000000 6.2700250000 1 1 1 mag 0.0 
2.5597000000 2.9557300000 10.450050000 1 1 1 mag 0.0 
0.0000000000 1.4778700000 8.3600250000 1 1 1 mag 0.0 
1.2798500000 3.6946700000 8.3600250000 1 1 1 mag 0.0 
1.2798500000 0.7389300000 10.450050000 1 1 1 mag 0.0 
1.2798500000 2.2168000000 6.2700250000 1 1 1 mag 0.0 
2.5597000000 4.4336000000 6.2700250000 1 1 1 mag 0.0 
2.5597000000 7.3893300000 10.450050000 1 1 1 mag 0.0 
0.0000000000 5.9114700000 8.3600250000 1 1 1 mag 0.0 
1.2798500000 8.1282700000 8.3600250000 1 1 1 mag 0.0 
1.2798500000 5.1725300000 10.450050000 1 1 1 mag 0.0 
1.2798500000 6.6504000000 6.2700250000 1 1 1 mag 0.0 
0.0000000000 0.0000000000 12.540050000 1 1 1 mag 0.0 
2.5597000000 3.6946610000 16.720075000 1 1 1 mag 0.0 
0.0000000000 2.2168000000 14.630050000 1 1 1 mag 0.0 
1.2798500000 4.4336000000 14.630050000 1 1 1 mag 0.0 
1.2798500000 1.4778610000 16.720075000 1 1 1 mag 0.0 
1.2798500000 2.2168000000 12.540050000 1 1 1 mag 0.0 
2.5597000000 4.4336000000 12.540050000 1 1 1 mag 0.0 
0.0000000000 8.1282610000 16.720075000 1 1 1 mag 0.0 
0.0000000000 6.6504000000 14.630050000 1 1 1 mag 0.0 
1.2798500000 0.0000000000 14.630050000 1 1 1 mag 0.0 
1.2798500000 5.9114610000 16.720075000 1 1 1 mag 0.0 
1.2798500000 6.6504000000 12.540050000 1 1 1 mag 0.0 
2.5597000000 0.7389300000 18.810075000 1 1 1 mag 0.0 
0.0000000000 3.6946610000 22.990100000 1 1 1 mag 0.0 
0.0000000000 2.2168000000 20.900075000 1 1 1 mag 0.0 
1.2798500000 4.4336000000 20.900075000 1 1 1 mag 0.0 
1.2798500000 1.4778610000 22.990100000 1 1 1 mag 0.0 
1.2798500000 2.9557300000 18.810075000 1 1 1 mag 0.0 
2.5597000000 5.1725300000 18.810075000 1 1 1 mag 0.0 
2.5597000000 8.1282610000 22.990100000 1 1 1 mag 0.0 
0.0000000000 6.6504000000 20.900075000 1 1 1 mag 0.0 
1.2798500000 0.0000000000 20.900075000 1 1 1 mag 0.0 
1.2798500000 5.9114610000 22.990100000 1 1 1 mag 0.0 
1.2798500000 7.3893300000 18.810075000 1 1 1 mag 0.0 


代码
文本

2. 堆垛层错能计算

代码
文本

在准备好了构型之后,便可以编写一个自动计算的脚本用于完成全部构型的自洽计算,这里使用的脚本为stacking_fault.sh

代码
文本
[7]
cat stacking_fault.sh
astep=0.073893 #Note: IN bash script, there should be no whitespace in variable assignment. e.g. astart = 30 will fail
astep_frac=0.05
n=20
echo "displace,ene" > Cu_fcc_energy.csv
for ((b=0; b<=$n; b++))
do
cp ./structure/STRU_$b ./STRU
mpirun -n 32 abacus >> result
# get energy
energy_line=$(grep "etot" OUT.*/running_scf.log)
E_value=$(echo $energy_line | awk '{for(i=1;i<=NF;i++) if ($i=="is") print $(i+1)}')
E=$(printf "%.8f" $E_value) # Keep eight decimal places
# get displacement in fraction
j=$(echo "scale=2; $astep_frac * $b" | bc | awk '{printf "%.2f", $0}')
echo "$j,$E" >> Cu_fcc_energy.csv
done

代码
文本

脚本中首先设置了原子层移动的相对和绝对步长,之后复制structure中对应的STRU文件到当前目录下用于自洽计算,然后进行自洽计算,最后获取自洽计算得到的能量输出到Cu_fcc_energy.csv文件中。

代码
文本

ABACUS相关输入如下:

代码
文本
[8]
cat INPUT
INPUT_PARAMETERS
calculation         scf
symmetry            1
ecutwfc             80
scf_thr             1e-7
scf_nmax            300
relax_nmax          200
basis_type          lcao
smearing_method     mp
smearing_sigma      0.008
cal_stress          1
cal_force           1
kspacing            0.14

代码
文本

然后我们直接运行脚本便可开始计算。

代码
文本
[9]
#这一步使用32核预计耗时4h
#bash stacking_fault.sh
代码
文本

3. 广义堆垛层错能曲线

代码
文本

计算完成后,我们便可以通过一个画图脚本plot.py来可视化输出Cu_fcc_energy.csv中的能量-位移关系。FCC-Cu体系的广义堆垛层错能(generalized stacking fault energy curves, GSFE)结果如下图2所示,计算结果和A.Hunter[1]的研究结果一致。从图中可以看出,在FCC-Cu材料中,本征堆垛层错形成时,堆垛层错能为正值。这说明在FCC-Cu体系中,需要一定的外力或者能量才能使体系产生堆垛层错。

代码
文本
[10]
# plot
#python3 plot.py
代码
文本

代码
文本
图2 FCC-Cu的广义堆垛层错能曲线
代码
文本

恭喜你完成了第四个ABACUS计算模拟实例🎉

代码
文本

如果你还想尝试更多的计算实例,可以点击下方了解ABACUS计算模拟合集链接: ABACUS计算模拟实例 | 概述

代码
文本
ABACUS
计算材料学
ABACUS计算材料学
已赞1
本文被以下合集收录
ABACUS@计算材料学 | 计算模拟实例
weiqingzhou@whu.edu.cn
更新于 2024-08-09
13 篇8 人关注
ABACUS计算模拟实例
FermiNoodles
更新于 2024-07-15
13 篇1 人关注
推荐阅读
公开
ABACUS计算模拟实例 | VI. 空位形成能与间隙能计算
ABACUS计算材料学
ABACUS计算材料学
FermiNoodles
更新于 2024-06-21
2 转存文件
公开
ABACUS计算模拟实例 | IX. 表面能的计算
ABACUSDFT
ABACUSDFT
FermiNoodles
发布于 2024-05-21
2 转存文件