【VASP】KPOINTS文件介绍

2023-10-15 13:28
文章标签 介绍 vasp kpoints

本文主要是介绍【VASP】KPOINTS文件介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【VASP】KPOINTS文件介绍

  • 一、KPOINTS 的两种结构
    • 第一种结构:(非对称)
    • 第二种结构:(高对称)
  • 二、关于KPOINTS设置的一些经验
  • 三、KPOINTS的选取

前言

一、4个常用的输入文件INCAR、POSCAR、POTCAR、KPOINTS

INCAR: 计算任务类型是什么?怎么计算?

KPOINTS: 包含了倒易空间点网格的坐标和权重。

POSCAR: 包含元胞的原子坐标信息以及初始速度等信息。

POTCAR: 超软赝势或PAW势函数(有一个赝势库)。

一、KPOINTS 的两种结构

第一种结构:(非对称)

Auto
0
G
5 5 1
0.  0.  0.
  • 第一行:注释
  • 第二行:这个数字选项,按手册里提到的,可以认为0就是M-P方法,如果输入其他非零数字,就认为是选择其他的生成方法或者K点模式(即选几个k点)
  • 第三行G表示的是以gamma点为中心生成网格,还有一种是原始的Monkhorst-Pack网格,又可以叫M点,二者的区别是M在G的基础上在三个方向平移了1/(2N)个单位,所以G点是M点的特殊情况;VASP只认第一个字母,大小写均可,所以Gamma可以写G,g,gamma,ga…,Monhorst可以写为M, m等。
  • 第四行表示在xyz三个方向上生成对应数目的K点,本例是551,意思是在倒格矢a,b方向上都只取5个k点,c方向取1个k点,一共25个k点,441意思是在倒格矢a,b方向上都取4个k点,c方向上取一个,一共16个,K点的密度由KPOINTS决定,KPOINTS取点越多,包含到计算里的信息越多,但是经常有人拿不准K点数目怎么取,经常出错,所以在接下来会总结几个方法教大家怎么取K点
  • 第五行表示shift的值, 即对所按网格分割产生的k点进行平移的量(这里不平移),一般都写成 0 0 0,一般不用改,Gamma center的K点就相当于MP方法shift了0.5 0.5 0.5。

第二种结构:(高对称)

line-mode generate k10 ! 10 intersections
Line-mode
rec
0 0 0 ! gamma
0.5 0.5 0 ! X0.5 0.5 0 ! X
0.5 0.75 0.25 ! W

Line1: 标题或注释行,无特别意义
Line2: 每对高对称点之间产生10个k点
Line3: 以字母L开头表示按line模式产生k点
Line4: 以字母R开头表示k点按倒格子坐标系
Line5: 每对高对称点的坐标。(共三对,表明沿着X-X-W计算能带)

二、关于KPOINTS设置的一些经验

第一是对称性。不同的晶体结构有不同的对称性,我们应该根据晶体结构选择合适的K点,这个在各种教材中已经给出了。不过手动选择K点只在能带计算的时候是必要的,在做优化和性质计算时我们通常选择自动撒点。

第二是K点分割,K点分割越密,计算的结果就越精确,而耗时也会更多,因此我们要寻找一个比较合适的分割。这个可以在你计算的时候做一个测试,就是从小到大选择不同的分割,然后比较静态计算时的总能变化,自己画一个曲线图,当总能变化范围小于0.2eV时,我们就认为不用再取更多的K点了。

一般来说,K点的选取跟晶胞的边长有关,边长越长,所需的K点就越少。如果是块体的单胞,K点的分割要取密一些,比如我们的TiO2单胞,K点分割121212就非常精确了。而如果我们将这个晶胞延xyz方向各扩展一倍,这时只要666足够。越大的晶胞,所需的K点数就越小。如果是表面,那么在某个方向有大于10A的真空层,那么这个方向上K点最多只须取2足矣。

“三个方向K点数和晶格常数乘积近似一致”,但一般乘积不要大于40,尤其是针对比较大的体系,否则会使得优化速度比较慢。

对于六角晶系 hexagonal 的结构,官网建议用 gamma centered,因为M平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错;

对于特别大的体系,也可以使用单Gamma点,只含有一个Gamma点的计算可以使用vasp_gam版加速计算

真空层一定不要加K点,用1即可,因为这个方向都没有结构,还加K点一来没意义,比如说二维体系在xy方向是周期性体系,z方向存在真空层,那么这个方向一定不要加K点,用1即可;

对于原子或者分子的计算,K点取一个gamma点就够了(1 1 1),也就是这个KPOINTS文件可以用于绝大多数的原子或者分子计算,不用再修改;但如果你要用 ISMEAR = -5 来计算,那么就需要把 1 1 1 改成 2 2 2或者3 3 3

对于原子或者分子的计算,K点取一个gamma点(1 1 1)就够了,因为这些原子和分子不是周期性的,多的K点是能提高周期性镜像分子间的相互作用精度,但是这部分能量是我们不想要的。即:对于含有真空层的体系,在真空层的方向上永远只使用一个K点(真空层一定不要加K点,用1即可)。多余的K点只会增加真空层两边体系的相互作用的精度,而这一部分是我们不想要的。

三、KPOINTS的选取

  1. 方法1

使用官网建议的取值,每个晶格矢量的长度(a, b, c)乘以这个方向上的K点数目(k)。需要做收敛性测试,比如要算一个绝缘体体系, a,b的晶胞长度为6Å,c方向真空层15Å,K点就是3 3 1

在这里插入图片描述

  1. 方法2

    把结构拖到MS里,点击CASTEP Tools图标,查看不同K点下,K点密度,一般密度在0.03附近最佳,对于正交晶系,晶格常数取模,然后取倒数。这三个倒数的比值就是三个方向上k-points密度的取值,例如,fcc Cu的KPOINTS则是7 7 7。

在这里插入图片描述

  1. 方法3

对于非正交晶系,倒格矢长度和实空间晶格常数不满足反比关系,所以用以上方法就不行了,这个时候用vaspkit可以产生所有体系的K点,vaspkit–102–1(M点),2(G点)–选择倒格子中k点间距,单位是Angstrom-1,一般计算使用0.04,精确计算0.03或0.02

  1. 方法4

一般晶格常数乘以K点数目大约在30~40之间即可,K点数目足够多的情况下,前面的问题都不是问题,但是不要过分大,导致撒点过于密集,浪费机时,过分小撒点过疏,计算不准;

注:正式计算前一定要做收敛性测试,测Kpoints和Ecut。

关于每个参数的详细含义可以参考VASP手册:

http://cms.mpi.univie.ac.at/wiki/index.php/The_VASP_Manual

这篇关于【VASP】KPOINTS文件介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/218011

相关文章

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一