大家好,我是木南
--------------------------------------------------------------------
由于上一次《表面能的计算 & lammps输入脚本》的内容中出现了一个问题,为了不误解大家,今天特别的纠正一下错误,如下:
将
#计算Cu(111)面表面能,定义晶体取向
lattice fcc 3.615 origin 0.0 0.0 0.0 orient x 1 1 1 orient y 1 -1 0 orient z 1 1 -2
修改为
#计算Cu(111)面表面能,定义晶体取向
lattice fcc 3.615 origin 0.0 0.0 0.0 orient x 1 -1 0 orient y 1 1 -2 orient z 1 1 1
参考资料:
1. 晶体晶向和晶面指数系统
https://zhuanlan.zhihu.com/p/347854383 ivk_sa=1024320u&utm_id=0
2. 【LAMMPS翻译系列】lattice命令
http://www.goscience.cn/group/groupPostInfo?id=683
3. 其他来源.
详细内容如下:
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
内容结束!
下面附上 FCC 结构 Cu 表面能合理的 LAMMPS 脚本:
##----------------------基本参数设置----------------------
units metal
boundary p p p
atom_style atomic
##----------------------时间步长和近邻原子设置----------------------
timestep 0.005
neighbor 0.6 bin
neigh_modify every 5 delay 5 check yes
#计算Cu(100)面表面能,定义晶体取向
lattice fcc 3.615 origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
#计算Cu(110)面表面能,定义晶体取向
lattice fcc 3.615 origin 0.0 0.0 0.0 orient x 1 1 0 orient y 0 0 1 orient z 1 -1 0
#计算Cu(111)面表面能,定义晶体取向
#lattice fcc 3.615 origin 0.0 0.0 0.0 orient x 1 -1 0 orient y 1 1 -2 orient z 1 1 1
##----------------------box大小----------------------
region box block 0 20 0 20 0 40
##----------------------填充Cu原子----------------------
create_box 1 box
create_atoms 1 box
##--------势函数的选取-----------------------------------
pair_style eam/alloy
pair_coeff * * Cu_mishin1.eam.alloy Cu
##--------定义上下两个表面的边界区域-----------------------------------
region boundary1 block INF INF INF INF 29.9 INF
region boundary2 block INF INF INF INF INF 9.9
group boundary1 region boundary1
group boundary2 region boundary2
group boundary union boundary1 boundary2
#周期性边界条件+真空层=自由表面
delete_atoms group boundary
##--------输出设置,每隔10步进行输出----------------
thermo 10
dump 1 all custom 1000 pos.lammpstrj id type x y z
dump_modify 1 sort id
##--------采用最速下降算法进行能量最小化----------------
min_style sd
minimize 1.0e-30 1.0e-15 10000 10000
#系统达到平衡后,输出能量E0
variable E equal pe
print "---------------------- E0=$E---------------------------"
run 0
#定义上下区域,目的是把晶体切为上下两部分
region down block INF INF INF INF INF 19.94
region up block INF INF INF INF 19.95 INF
group up region up
group down region down
#将box在z方向上的尺寸扩大40
change_box all z delta 0 40 units lattice
#将上部分原子沿z轴移动40个晶格
displace_atoms up move 0 0 40 units lattice
#再次能量最小化,并输出新的能量E1
minimize 1.0e-30 1.0e-20 10000 100000
print "--------------E1=$E--------------------------------"
--------------------------------------------------------------------
以上是我们分享的一些经验或者文章的搬运,或有不足,欢迎大家指出!
欢迎大家关注微信公众号: 原子与分子模拟
大家好,我是木南