上一节
上一节关于构建转角的代码中(下面可链接),介绍了如何使用ASE 库构建超大转角体系。
原理就是分别构建两层supercell,然后把他们拼起来,但是最后是这种形式:
poscar
1.0
a11 a12 a13
a21 a22 a23
a31 a32 a33
A B A B
n1 n2 n1 n2
Direct
... ...
... ...
就是元素都是堆
起来的。比如构建MoS2,那么6,7行可能是这种形式:
Mo S Mo S
100 200 100 200
有几位读者私信问我,如果想让元素合并,该如何处理?
其实很简单,用ASE构建一个1*1*1 的胞就可以了。
代码如下:
from ase.io import read, write
from ase.build.supercells import make_supercell
import numpy as np
fn = 'POSCAR_moire.vasp'
fout = 'moire_bilayer.vasp'
M = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
pos = read(fn)
sup_cell_u = make_supercell(pos, M)
write(fout, sup_cell_u, vasp5=True, sort=True, direct=True)
这样生成的moire_bilayer.vasp就是合并好的
结果就会变这样:
Mo S
200 400