1.1 结构优化1
这里主要分享怎样快速开始第一个结构优化过程。
Linux常用命令
- 如果是个人服务器,需要安装Linux系统或者Windows+虚拟机+Linux;如果租用超算,安装对应超算客户端或者SSH。
- 这部分内容需要自己熟练,对于命令的意义在操作中就会明白。https://www.runoob.com/linux/linux-command-manual.html
- 常用命令如下:
原文链接:https://blog.csdn.net/m0_46422300/article/details/104645072
目录操作
1 切换目录(cd)
1 | cd / //切换到根目录 |
2 查看目录(ls)
1 | ls //查看当前目录下的所有目录和文件 |
3 创建目录(mkdir)
1 | mkdir tools //在当前目录下创建一个名为tools的目录 |
4 删除目录与文件(rm)
1 | rm 文件名 //删除当前目录下的文件 |
5 修改目录(mv)
1 | mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作 |
6 拷贝目录(cp)
1 | cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面 |
7 搜索目录(find)
1 | find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录 |
8 查看当前目录(pwd)
1 | pwd //显示当前位置路径 |
文件操作
1 新增文件(touch)
1 | touch a.txt //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间 |
2 删除文件(rm)
1 | rm -f 文件名 //删除当前目录的的文件(不询问) |
3 编辑文件(vi、vim)
1 | vi 文件名 //打开需要编辑的文件 |
–进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令”dd”删除当前整行
-使用命令”/字段”进行查找
-按”i”在光标所在字符前开始插入
-按”a”在光标所在字符后开始插入
-按”o”在光标所在行的下面另起一新行插入
-按”:”进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 “– 插入 –””
-按”ESC”进入底行模式
底行模式
-退出编辑: :q
-强制退出: :q!
-保存并退出: :wq
操作步骤示例
1.保存文件:按”ESC” -> 输入”:” -> 输入”wq”,回车 //保存并退出编辑
2.取消操作:按”ESC” -> 输入”:” -> 输入”q!”,回车 //撤销本次修改并退出编辑
补充
1 | vim +10 filename.txt //打开文件并跳到第10行 |
4 查看文件
1 | cat a.txt //查看文件最后一屏内容 |
5 grep
1 | grep -i "the" demo_file //在文件中查找字符串(不区分大小写) |
文件权限
1 权限说明
文件权限简介:’r’ 代表可读(4),’w’ 代表可写(2),’x’ 代表执行权限(1),括号内代表”8421法”
##文件权限信息示例:-rwxrw-r–
-第一位:’-‘就代表是文件,’d’代表是文件夹
-第一组三位:拥有者的权限
-第二组三位:拥有者所在的组,组员的权限
-第三组三位:代表的是其他用户的权限
2 文件权限
普通授权 chmod +x a.txt
8421法 chmod 777 a.txt //1+2+4=7,"7"说明授予所有权限
打包与解压
1 说明
1 | .zip、.rar //windows系统中压缩文件的扩展名 |
2 打包文件
tar -zcvf 打包压缩后的文件名 要打包的文件
参数说明:z:调用gzip压缩命令进行压缩; c:打包文件; v:显示运行过程; f:指定文件名;
示例:
1 | tar -zcvf a.tar file1 file2,... //多个文件压缩打包 |
3 解压文件
1 | tar -zxvf a.tar //解包至当前目录 |
原文链接:https://blog.csdn.net/m0_46422300/article/details/104645072
其他准备
安装好VASP、vaspkit,个人电脑安装好VESTA、MS或者qvasp等建模可视化软件中的一个。如果是租用超算,还需要准备好提交任务的脚本文件,一般工程师会帮我们编好,软件安装只需要给他们提供安装包或官网即可。
vaspkit运行的五种方式
方法一 :交换式菜单模式,直接输入vaspkit;
方法二 :命令+参数模式,适合批处理。如vaspkit -task 102 -kpr 0.03,详细介绍见vaspki-help, 注意部分功能不支持这种模式;
方法三 :利用bash管道传递参数,如echo -e “102\n2\n0.04\n”| vaspkit
方法四 :同样利用bash管道传递参数, (echo 102; echo 2; echo 0.04)|vaspkit
方法五 :vi cmd.in(文件名任意,非必须是cmd.in)包含以下三行内容
1 | 102 |
然后运行vaspkit < cmd.in
,产生KPOINTS文件,其他命令格式类似。
输入文件
1 | INCAR in ** |
- 必要的输入文件有四个:INCAR,KPOINTS,POSCAR,POTCAR 。
- INCAR 告诉VASP算什么,怎么算。
- KPOINTS 包含计算的倒空间K点信息。
- POSCAR 是结构信息,包括元素、晶胞参数及各个原子的坐标信息。
- POTCAR 元素的赝势文件,描述体系中对应的原子核和电子的相关信息。
- 提交任务的脚本或者命令,需要你自己准备。
下面由简单到复杂介绍
POSCAR
结构文件信息格式如下:
1 | Mo S2 #结构名称,可不写或随便写,不能没有这一行 |
- 对于自己建模的结构,按照该格式自己写;
- 对于Materials projiect数据库可以直接下载POSCAR格式;
- 对于.cif文件,可以导入 VEASTA 等输出为POSCAR的格式,或者用 vaspkit 的411/412功能。
Mind:
POSCAR文件非常重要,大部分报错都是结构不合理导致的。一个好的初始结构不仅可以加快收敛速度,也会增加准确性。文件中元素的顺序非常重要。
KPOINTS
文件一般格式如下:
1 | K-POINTS # 第一行随便写或者空着不写,但不能没有这一行 |
大家需要修改的是第三行和第四行,其他可不改。
第三行:VASP只认第一个字母,大小写均可。当然这一行也可以直接写字母G或者g。G表示的是以gamma点为中心生成网格。
另外一种是原始的Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G的基础上在三个方向上平移了1/(2N)个单位。G,也叫 gamma centered Monkhorst-Pack Grid;所以,gamma centered 只是MP网格的一种特殊情况。
因此这一行也可以一直用G不变。第四行,在xyz三个方向上生成对应数目的K点;__这个一般需要测试__。如果开始不想测试,官网也给出了经验方法,
- d区金属,k*a ~ 30 Å
- 普通金属,k*a ~ 25 Å
- 半导体,k*a ~ 20 Å
- 绝缘体,k*a ~ 15 Å
其中a对应三个方向的晶胞参数,也就是对应方向的k点与该方向晶胞参数乘积最好在20-30之间。
如果已经安装了vaspkit程序,可以通过102功能自动生成KPOINTS文件。
POTCAR
POTCAR赝势文件相对来说最复杂也最简单。其中有很多信息,大部分信息我们不需要关注,一般只需要关注前几行。特别是赝势的种类信息。以Mo为例:
1 | PAW_PBE Mo 08Apr2002 |
除此之外,一种元素也有很多赝势,例如Mo:
1 | [scf1355@ln151%nc-l potpaw_PBE.52]$ ls Mo* |
如果没有特别的需求,直接采用VASP官网推荐的即可。参考链接:
https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html
不知道选哪一个就选第一个,使用方法如下:
1 | cat ~/pot/Mo/POTCAR ~/pot/S/POTCAR > POTCAR |
或者用vaspkit的103命令自动生成。
Mind:
该文件看似复杂,使用时只需要查看元素种类和POSCAR是否对应即可。
可以通过grep PBE POTCAR
查看顺序是否正确。
1 | [scf1355@ln151%nc-l 2h]$ grep PBE POTCAR |
INCAR
这个控制计算过程的文件最为复杂,手册上相关参数多达三百多个。因此前期我们记住一点:不知道含义的参数不要加。不加对于有些参数意味着用默认值,一般是合理的。INCAR参数查找参考官方:https://www.vasp.at/wiki/index.php/Category:INCAR_tag
贴一个我的结构优化的INCAR:
1 | ISTART = 0 (Read existing wavefunction; if there) |
上面参数详细介绍
- ISTART :初始波函数。WAVECAR存在默认1,不存在默认0。
0:随机生成波函数
1:从 WAVECAR 读取波函数,若读取失败则随机生成。 - ICHARG :初始电荷密度。当ISTART=0默认2,其他默认1。
0:通过 WAVECAR 生成电荷密度,若读取失败则通过原子电荷密度叠加生成
1:从 CHGCAR 读取电荷密度
2:通过原子电荷密度叠加生成电荷密度
11:从 CHGCAR 读取电荷密度,且在(非自洽)循环中保持不变 - ISPIN :自旋极化。默认1,关闭。不知道是否打开,可以打开,结果不会有影响。
1:非自旋极化(每个轨道上自旋向上和自旋向下的电子数量相等,适合非磁性体系)
2:自旋极化(适合铁磁、反铁磁体系) - ENCUT :平面波截断能(单位 eV)
默认元素中最大的ENMAX。一般为 POTCAR 中 最大ENMAX 参数值的 1.0 到 1.3 倍。500适用大部分体系。 - PREC :总体计算精度,默认Normal。可设为 Low、Med、High、Normal、Single、Accurate。具体参照手册,设为A或者Accurate足够精确。
- LWAVE LCHARG :控制WAVECAR和CHGCAR输出,默认输出,在结构优化可以关闭,节省储存空间。
- ISMEAR :轨道分数占据
−5:四面体方法(适合半导体和绝缘体)
0:高斯方法(适合导体、半导体和绝缘体),展宽由 SIGMA 确定
N:Methfessel-Paxton 方法(适合导体) - EDIFF :自洽循环收敛标准(系统能量变化),单位为 eV。默认1E-4,可以设的更精确一些。一般设置为 1E-6或更高。
- __EDIFFG__:离子位置优化收敛标准。默认EDIFF*10。正值为系统能量变化,负值为原子上残余力。随着体系维数下降,可适当增加原子残余力。
- NSW :离子位置优化最大步数(IBRION=1、2)。默认0。设为100足够大,也可以继续加大。
分子动力学开启时代表分子动力学模拟步数(IBRION=0) - IBRION :离子位置优化算法。默认NSW=0/1时为-1,其他默认0。
-1:离子不移动
0:分子动力学模拟
1:准牛顿法
2:共轭梯度法
5:振动频率计算
6:弹性常数计算
7/8:DFPT方法 - POTIM :有限差分法步长。当IBRION=1/2/3默认值 0.5。当IBRION=0(MD)时必须指定。
- ISIF :需要结构优化变量。默认IBRION=0时为0,其他默认2。结构优化一般设为3,全部优化。
Mind
- 上面四个输入文件都是纯文本文件,且文件名不能更改,格式不能错误。
- vaspkit可以同时产生INCAR、POTCAR、KPOINTS文件。
提交任务
在超算上提交或者集群上提交,只需要把四个输入文件和提交任务的脚本文件放在同一文件夹下,运行脚本即可。
在个人服务器、虚拟机提交可以通过nohup mpirun -np 核数 vasp_std > std.out &
提交
Mind
- 提交后经常查看作业收敛情况,有问题及时暂停,避免浪费时间
查看任务完成
实时查看任务日志tail -f 日志文件
任务停止后,判断任务是否正常结束,输入grep reached 日志文件
或者tail 日志文件
如果输出reached required accuracy - stopping structural energy minimisation
代表正常结束,否则很可能没有收敛或者出错中断。
输出文件
任务一旦提交,会立刻生成输出文件,不过此时可能是空的。运行片刻大部分文件会产生内容。
https://www.vasp.at/wiki/index.php/Category:Output_files
其中我们先关注几个输出文件。
CONTCAR
优化后的结构文件,与POSCAR相对应。为最后一个离子步的结构。当然如果要提高精度或者续算,可以cp CONTCAR POSCAR
继续计算。
OSZICAR
包含自洽计算中能量收敛等信息。
OUTCAR
这个是VASP最主要的输出文件,包含计算过程中大量信息,依次主要包括:
VASP版本;
计算开始时间和并行性CPU数;
赝势信息;
最近邻列表;
对称性信息;
晶格信息和k点坐标;
INCAR中读入的参数和其他大部分的默认参数值;
平面波个数和FFT信息;
每一步离子步数和其中每一个电子自洽的时间、内存、能量等信息;
自洽完成后的费米能和能量本征值;
应力;力;
电荷数和磁矩;
程序运行时间。
总而言之想找而不知道去哪里找,就在这里。
IBZKPT
由VASP自动生成,包含所有不等价k点的坐标和权重以及可能的四面体链接情况,它的格式与KPOINTS文件的格式是完全一样的。
WAVECAR
波函数文件,二进制文件,不能直接用文本编辑器直接打开。
波函数文件较大,可以通过(LWAVE)来控制输出。结构优化不需要输出。
它也可以作为输入文件,为后续计算提供初始波函数。
CHGCAR和CHG
电荷密度文件,包含晶格矢量,原子坐标,总电荷密度以及PAW的单中心占据情况等信息。 该文件既是输出文件(由LCHARG控制),也可以是输入文件。结构优化不需要输出。
在计算能带或者态密度时,需要读入电荷密度进行非自洽计算。
总结
- 输入文件KPOINTS比较简单,可以手动,注意格式;INCAR参数众多,直接参考,不知道的参数不加;POTCAR文件比较大,我们只关注赝势对应的元素顺序与POSCAR是否一致;POSCAR结构文件VESTA直接输出。提交任务脚本由超算代理提供,不同超算不同。
- 任务提交后关注是否正常结束,另外关注计算的时间等。