单层 CrI3 晶格常数优化

接下来进行的这一步,和之前 Vasp wiki 上面的教程 Fcc Si 优化晶格常数 基本过程是一样的。
首先,准备好 INCAR, KPOINTS, POTCAR 文件,POTCAR 与 bulk 结构的一样。

KPOINTS

k-points
 0
Monkhorst Pack
 8  8  1
 0  0  0

INCAR

 SYSTEM = CrI3 single layer
       ISIF = 2
        NSW = 1000
      EDIFF = 1E-5
     EDIFFG = -5E-3
       PREC = High
     IBRION = 2
     ISMEAR = 0
      ISPIN = 2
      ENCUT = 600

注意 INCAR 这里 ISIF = 2,而三维计算的时候我们是让 ISIF=3,差别在于是否可以改变元胞的形状和体积。

ISIF的设置

修改晶格常数计算

接下来要做的主要思路是:由 CrI3 bulk 结构切得到的单层的POSCAR (上一篇博客中提到),写脚本,目的是每次修改 POSCAR中的晶格常数值,然后进行计算,得到 total free energy,最后能量最低的晶格常数值对应最佳晶格常数。

下面介绍具体操作。

下图中的蓝色菱形线条框起来的就是单层CrI3原胞,绿色的原子表示的是 Cr,红色和蓝色的原子是 I,分别在上一层和下一层。

图片 Zhang, Wei-Bing, et al. Journal of Materials Chemistry C 3.48 (2015): 12457-12468

图中 a1, a2 就是晶格基矢,设晶格常数为 a(即图中棱形的边长),则 a1=(a,0,0), a2 = (-a/2, sqrt(3)*a/2, 0) ,a3 = (0, 0, c)

以下的 python2 脚本实现了根据晶格常数得到 POSCAR 的功能

import sys
import math

a = float(sys.argv[1]) # lattice constant
fout = open('POSCAR', 'w')

fout.write(
'''CrI3 monolayer
1.0
        %.10f         0.0000000000         0.0000000000
        %.10f         %.10f         0.0000000000
        0.0000000000         0.0000000000        23.2178993225
    I   Cr
    6    2
Direct
     0.318349988         0.333710033         0.138589990
     0.666289984         0.984630016         0.138589990
     0.015369989         0.681649979         0.138589990
     0.014990008         0.332949996         0.000000000
     0.667049973         0.682030038         0.000000000
     0.317970037         0.985010075         0.000000000
     0.000000000         0.000000000         0.068870003
     0.333330026         0.666670051         0.069729999
'''%(a, -a/2, math.sqrt(3)*a/2))

fout.close()

还需要修改在服务器提交计算任务的脚本 sub_vasp,在末尾 # running program 前后加上一段

 54 rm WAVECAR SUMMARY.fcc
 55 for i in 5.6 5.8 6.0 6.2 6.4 6.8 7.0 7.2; do
 56     python pos.py $i
 57
 58     # running program
 59     $OPEN_MPI $IB_FLAG -np $NCPUS -machinefile .NODES_to_RUN.${job    id} $VASP_EXEC
 60
 61      # E=`awk '/F=/ {print $0}' OSZICAR` ; echo $i $E  >>SUMMARY.fcc
 62     mkdir $i
 63     mv CHG CONTCAR EIGENVAL OSZICAR PCDAT vasprun.xml WAVECAR CHGCAR DOSCAR IBZKPT OUTCAR POSCAR XDATCAR $i
 64
 65 done

也就是说,在提交任务的脚本中,我们选择尝试晶格常数从 5.6~7.2,每隔0.2取一个值计算,并且调用了 pos.py。计算完成后我们又建立了以晶格常数命名的文件夹,把刚刚的计算结果移到新的文件夹,以免被后面的计算结果所覆盖。

之所以取这些晶格常数尝试,是因为之前那篇文章给出的计算结果是 7.0008(然而我看走眼了,看成了 6.051)。大概每一个晶格常数的需要算3个多小时,所以算这么多还是挺花时间的,大概一两天。(遇到服务器关机,计算节点存储满了什么的,则需要更多的时间 = =)

根据计算结果画图

算完以后,可以取更密的值继续计算。然后再写一个 python3 脚本,从不同的OSZICAR中提取每次计算的能量

sum.py

a = [5.6, 5.8, 6.0, 6.2, 6.4, 6.8, 6.9, 7.0, 7.1, 7.2, 7.4]
with open("SUMMARY.txt", "wt") as f:
    for i in a:
        with open("%.1f/OSZICAR"%i) as fin:
            for line in fin:
                pass
            print(i,line[:-1], file=f)

得到 SUMMARY.txt 如下,第一列是晶格常数

5.6   10 F= -.25231765E+02 E0= -.25185740E+02  d E =-.829857E-03  mag=     5.3969
5.8   12 F= -.27302282E+02 E0= -.27267145E+02  d E =-.256012E-03  mag=     6.0472
6.0   11 F= -.28870757E+02 E0= -.28850240E+02  d E =-.123916E-04  mag=     6.0440
6.2   10 F= -.30009049E+02 E0= -.30004278E+02  d E =0.422491E-05  mag=     6.0047
6.4   13 F= -.30774062E+02 E0= -.30773558E+02  d E =-.483616E-05  mag=     6.0001
6.8    9 F= -.31488252E+02 E0= -.31488244E+02  d E =-.170946E-03  mag=     6.0000
6.9    9 F= -.31544414E+02 E0= -.31544408E+02  d E =-.308623E-03  mag=     6.0000
7.0   11 F= -.31562794E+02 E0= -.31562788E+02  d E =-.100152E-03  mag=     6.0000
7.1   14 F= -.31547196E+02 E0= -.31547189E+02  d E =-.146476E-04  mag=     6.0000
7.2   10 F= -.31500496E+02 E0= -.31500486E+02  d E =-.181810E-03  mag=     6.0000
7.4   11 F= -.31322697E+02 E0= -.31322675E+02  d E =-.108923E-02  mag=     6.0000

再写一个作图脚本 plot.py

import matplotlib.pyplot as plt

a = []
energy = []
with open("SUMMARY.txt", "r") as fin:
    for line in fin:
        mylist = line.split()
        a.append(mylist[0])
        energy.append(mylist[5])

plt.plot(a, energy, ".-")
plt.ylabel('energy')
plt.xlabel('a')
plt.show()
#plt.savefig('energy.png')

就能得到所需的晶格常数、自由能量关系曲线图

放大一点

所以,最低能量对应的最佳晶格常数就是7.0,和我们上一篇博客中的 POSCAR完全一样 (⊙﹏⊙),和论文中用PBE functional 得到的 7.008 也是非常的一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容