【VASP】KPOINTS文件介绍

news2025/1/31 8:09:46

【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 k

10 ! 10 intersections
Line-mode
rec
0 0 0 ! gamma
0.5 0.5 0 ! X

0.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL [基础]] 学习笔记

MySQL 学习 文章目录 MySQL 学习1. 数据库三层结构2. 数据在数据库中的存储方式3. SQL 语句分类3.1 备份恢复数据库的表 4. Mysql 常用数据类型(列类型)4.1 数值型(整数)的基本使用4.2 数值型(bit)的使用4.3 数值型(小数)的基本使用4.4 字符串的基本使用(面试题)4.5 字符串使用…

基于springboot实现心灵治愈心理健康平台系统项目【项目源码+论文说明】

基于springboot实现心灵心理健康平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个心灵治愈交流平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

Linux友人帐之编译器gcc/g++的使用

一、程序的翻译过程 在C语言中,我们已经学过程序的编译和链接,在这里将复习一下我们之前所学的内容并引出后续gcc/g的内容。 1.1程序的翻译过程 预处理(头文件展开,去注释,宏替换,条件编译)编…

解决:由于找不到 VCRUNTIME140_.dll,无法继续执行代码。重新安装程序可能会解决此问题

最近我在安装一个软件时,遇到过这样的问题“由于找不到 VCRUNTIME140 1.dll,无法继续执行代码。重新安装程序可能会解决此问题”。 要解决这个问题,你可以按照以下步骤进行操作: 1. 重新安装程序: 尝试重新安装使用…

Java NIO模型(提供代码示例)

目录 一、NIO特点介绍二、NIO代码实现2.1、客户端代码2.2、服务端代码 一、NIO特点介绍 NIO全称 java non-blocking IO。从JDK 1.4开始,java提供了一些列改进的输入/输出(I/O)的新特性,被称为NIO,是同步非阻塞的&…

蓝桥杯 常用STL (C++) 未完待续

动态数组 有些时候想开一个数组,但是却不知道应该开多大长度的数组合适,因为我们需要用到的数组可能会根据情况变动。 这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。…

Python数据类型转换

举例:使用Python实现超市的收银系统 name input(‘请输入您要购买商品名称:’) id input(‘请输入您要购买商品编号:’) price input(‘请输入您要购买的商品价格:’) print(f’您购买了{name},商品编号为{id}&am…

《Deep Residual Learning for Image Recognition》阅读笔记

论文标题 《Deep Residual Learning for Image Recognition》 撑起CV界半边天的论文Residual :主要思想,残差。 作者 何恺明,超级大佬。微软亚研院属实是人才辈出的地方。 初读 摘要 提问题: 更深层次的神经网络更难训练。 …

关于unaipp生成的vue3项目开启微信云函数所遇到的问题

使用uniapp创建的vue3项目,需要用到H5静态页面跳转小程序的时候(具体操作看微信开发文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/jump-miniprogram.html),会用到微信开发者工…

Linux基本配置与用户创建

文章目录 一.Linux的配置二.Linux用户的创建 一.Linux的配置 Linux是一款类UNIX的操作系统,一般指的是Linux内核加GUN套件。Linux系统稳定,而且是开源软件,应用范围很广,很受欢迎。为了能学习Linux我们需要配置一个Linux系统&…

LeetCode讲解篇之198. 打家劫舍

LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式: 前n间房的最大金额 max(前n-1间房的最大金额, 前n-2间房的最大金额第n-1间房的最…

蓝桥杯双周赛算法心得——三带一(暴力枚举)

大家好,我是晴天学长,枚举思想,需要的小伙伴可以关注支持一下哦!后续会继续更新的。 1) .三带一 2) .算法思路 1.通过Scanner读取输入的整数n,表示接下来有n个字符串需要处理。 2.使用循环遍历每个字符串:…

2023版 STM32实战10 内部Flash读写

简介和注意事项 -1-STM32内部提供了闪存区域,用来存储用户代码和自定义数据 -2-F1系列的写入最少两字节(半字) -3-每个地址存8位数据 -4-写入之前需要解锁,写完需要上锁 -5-读取不需要解锁 存储器分布 以下三张图可清楚的…

SLAM从入门到精通(bresenham绘制算法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们说过,学术界和工业界对于slam的要求是不一样的。前者要求robot在运动的过程中,同步实现定位和制图的操作。但是工业…

罗德施瓦兹频谱仪使用笔记

本文主要介绍罗德频谱仪的两个重要参数RBW和VBW,以及测量设置,以帮助初学者理解频谱解析以及频谱仪的具体使用。 一、什么是RBW和VBW,它们对测量得到结果的影响。 在罗德施瓦兹频谱仪的频谱测量中,有两个参数设置用得比较多&…

机器视觉工程师越学习越谦虚-庆幸自己始终保持清醒

目录 ​这么多年的职场生涯,不断的学习,不断的进取,不断追求新的梦想。一直学习,越学习,越感觉自己的不足,自我感觉越无知,越谦虚。所以孔子讲“不耻下问”、“三人行必有我师”,像释…

芯片学习记录MP2144

MP2144 芯片介绍 MP2144是一款具有内部功率MOSFET的单片降压开关模式转换器。它可以从2.5V到-5.5V的输入电压实现高达2A的连续输出电流,具有出色的负载和线路调节。输出电压可以调节到低至0.6V。 恒定导通时间控制方案提供快速瞬态响应并简化环路稳定。故障状态保…

__main__文件学习测试如下

参考博客 https://www.jb51.net/article/251567.htm test01.py # https://www.jb51.net/article/251567.htmdef step():print(__name__)print("step1 买菜""step2 洗菜""step3 切菜""step4 炒菜")if __name__ __main__:print(准备制…

【统计学概念】初学者指南:了解置信区间

一、说明 什么是置信区间?如何将概率转化成信心度?信心度如何去工作?这些初步的统计概念需要明晰,然后才能应用统计模型,然后是贝叶斯推理,我们将逐步深入这些概念。 二、总体与样本个体统计 总体是研究人…

自定义Docker镜像--Jupyterlab

概述 自定义Jupyterlab镜像,为deployment做准备 步骤 下载基础镜像:centos:7.9.2009 docker search centos:7.9.2009 docker pull centos:7.9.2009 启动容器 部署应用 # 启动容器 docker run -it --name test centos:7.9.2009 bash# 在容器内部署…