ExA16 通过ASE简单扩胞的小脚本

我们计算的时候,经常会遇到扩胞的需求。比如,我们要优化(4x4)的Ag(111)的一个slab。直接切一个slab拿来优化,可能会比较耗时。另一个办法就是我们先优化一个(1x1)的Ag(111)的slab,然后在将优化完的结构扩成(4x4)的,最后再优化。这样能有效地减少工作量。

扩胞的话,有很多工具可以选择,MS, P4vasp,等等可视化的软件,用鼠标点点就OK了。也可以使用一些现成的脚本,小程序。本节就介绍一个通过ASE进行扩胞的小脚本,也是本人偶然在一个网站发现的。有兴趣的可以自己看下: https://www.nsc.liu.se/~pla/blog/2013/02/26/vaspsupercells/

废话不多说,直接上例子,例子完了是脚本的具体内容。

如果你有自己的脚本或者推荐的程序,也欢迎发送到本人邮箱:lqcata@gmail.com。后面我们会逐渐扩展本节的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
qli@bigbro:~/Desktop/test_expand$ ls
CONTCAR expand.py
qli@bigbro:~/Desktop/test_expand$ cat CONTCAR
Ag
1.00000000000000
3.0472766735234269 0.0000000000000000 0.0000000000000000
1.5236383367617135 2.6390190116310261 0.0000000000000000
0.0000000000000000 0.0000000000000000 22.4642729552180782
Ag
4
Selective dynamics
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000 F F F
0.3333333333333357 0.3333333333333357 0.1107576902236147 F F F
0.6666666666666643 0.6666666666666643 0.2214586458624846 T T T
-0.0000000000000000 -0.0000000000000000 0.3323996157642722 T T T

0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
qli@bigbro:~/Desktop/test_expand$ python expand.py CONTCAR 2 2 1
qli@bigbro:~/Desktop/test_expand$ ls
CONTCAR expand.py POSCAR_ex
qli@bigbro:~/Desktop/test_expand$ cat POSCAR_ex
Supercell
1.0000000000000000
6.0945533470468538 0.0000000000000000 0.0000000000000000
3.0472766735234269 5.2780380232620523 0.0000000000000000
0.0000000000000000 0.0000000000000000 22.4642729552180782
16
Selective dynamics
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000 F F F
0.1666666666666679 0.1666666666666679 0.1107576902236147 F F F
0.3333333333333321 0.3333333333333321 0.2214586458624846 T T T
0.0000000000000000 0.0000000000000000 0.3323996157642722 T T T
0.0000000000000000 0.5000000000000000 0.0000000000000000 F F F
0.1666666666666679 0.6666666666666679 0.1107576902236147 F F F
0.3333333333333321 0.8333333333333323 0.2214586458624846 T T T
0.0000000000000000 0.5000000000000000 0.3323996157642722 T T T
0.4999999999999999 0.0000000000000000 0.0000000000000000 F F F
0.6666666666666679 0.1666666666666679 0.1107576902236147 F F F
0.8333333333333320 0.3333333333333321 0.2214586458624846 T T T
0.4999999999999999 0.0000000000000000 0.3323996157642722 T T T
0.4999999999999999 0.5000000000000000 0.0000000000000000 F F F
0.6666666666666677 0.6666666666666679 0.1107576902236147 F F F
0.8333333333333320 0.8333333333333323 0.2214586458624846 T T T
0.4999999999999999 0.5000000000000000 0.3323996157642722 T T T

脚本内容如下:

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
## https://www.nsc.liu.se/~pla/blog/2013/02/26/vaspsupercells/
import ase.io.vasp
import sys

cell_file = sys.argv[1]
x,y,z = [int(i) for i in sys.argv[2:5]]
cell = ase.io.vasp.read_vasp(cell_file)
ase.io.vasp.write_vasp("POSCAR_ex",cell*(x,y,z), label='Supercell',direct=True,sort=True)

使用前提是你已经安装好了ASE。

再次啰嗦一下,欢迎大家分享自己扩胞的小脚本,推荐的小程序,一起完善本节的内容。请发送到本人邮箱:lqcata@gmail.com。