大物实验计算弹性模量_VASP计算二维材料的载流子迁移率

1、前言

载流子迁移率通常指半导体内部电子和空穴整体的运动快慢情况,是衡量半导体器件性能的重要物理量。2004年,石墨烯的成功剥离引起了研究人员对于二维材料性质探索的浓厚兴趣。石墨烯、黑磷等二维材料展现出的高载流子迁移率是其中的一个重要研究课题,科研人员在理论计算方面已经做了大量的工作。由于电子在运动过程中不仅受到外电场力的作用,还会不断的与晶格、杂质、缺陷等发生无规则的碰撞,大大增加了理论计算的难度。

目前计算载流子迁移率比较常用的理论是形变势理论玻尔兹曼输运理论,前者没有考虑电子和声子(晶格振动)以及电子与电子之间的相互作用等因素,计算结果存在一定的误差,但笔者的计算结果与实验值在数量级上是吻合的;玻尔兹曼输运理论的一种计算考虑了电子-声子的相互作用,基于第一性原理计算和最大局域化Wannier函数插值方法,借助于Quantum-ESPRESSO和EPW软件可以完成载流子迁移率计算。缺点是计算量太大,一般的课题组很难承受起高昂的计算费用,另外EPW软件对于二维材料的计算存在部分问题,在其官方论坛也有讨论,计算过程在后续文章中会提到。

本文以形变势理论方法为基础,详细介绍了二维InSe的电子和空穴的有效质量与载流子迁移率的计算方法。

2、理论基础

基于Bardeen和Shockley[1]提出的形变势理论,二维材料载流子迁移率可以根据下式计算:

694bc5c7b4eebf0287d47f5f8fa2ead0.png

其中,m∗是传输方向上的有效质量,T是温度,kB是玻尔兹曼常数。E1表示沿着传输方向上位于价带顶(VBM)的空穴或聚于导带底(CBM)的电子的形变势常数,由公式E1=ΔE/(Δl/l0)确定,ΔE为在压缩或拉伸应变下CBM或VBM 的能量变化,l0是传输方向上的晶格常数,Δll0的变形量。md是载流子的平均有效质量,由下面公式定义。

511586e5300c3af6bb1312a84766fe86.png

C2D是均匀变形晶体的弹性模量,对于2D材料,弹性模量可以通过下面公式来计算,

89f6d17acfc70a860d3604f11fa079c5.png

其中E是总能量,S0是优化后的面积。

下面对公式中的单位(量纲)做一个简单换算,具体如下:

72f52a378fc4250a1ba38581bd91e06b.png

换算过程:

e88702a0a9de6fb64bd8abdb3296bae3.png

3、计算与数据处理工具

  • VASP.5.4.4软件 可以手动控制优化晶格方向

  • OriginLab软件

  • Excel

  • Materials Studio软件

  • 正格矢到倒格矢转化脚本,来源于小木虫(见下面链接)

http://muchong.com/bbs/viewthread.php?tid=7149817&fpage=1

#! /usr/bin/python# This program reads in base vectors from a given file, calculates reciprocal vectors# then writes to outfile in different units# LinuxUsage: crecip.py infile outfile# Note: the infile must be in the form below:# inunit ang/bohr# _begin_vectors# 46.300000000 0.000000000 0.000000000# 0.000000000 40.500000000 0.000000000# 0.000000000 0.000000000 10.000000000# _end_vectors# # Note: LATTICE VECTORS ARE SPECIFIED IN ROWS !def GetInUnit( incontent ): inunit = "" for line in incontent: if line.find("inunit") == 0: inunit = line.split[1] break return inunitdef GetVectors( incontent ): indstart = 0 indend = 0 for s in incontent: if s.find("_begin_vectors") != -1: indstart = incontent.index(s) else: if s.find("_end_vectors") != -1: indend = incontent.index(s) result =  for i in range( indstart + 1, indend ): line = incontent[i].split result.append( [ float(line[0]), float(line[1]), float(line[2]) ] ) return resultdef Ang2Bohr( LattVecAng ): La
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值