Vasp官网教程精翻第1部分:VASP简介
type
status
date
slug
summary
tags
category
icon
password
Part 1: Introduction to VASP
第一部分:VASP简介
目录:
1 独立氧原子(Isolated oxygen atom)
2 自旋极化(Spin-polarized)氧原子
3 低对称性(with low symmetry)的自旋极化氧原子
1 独立氧原子(Isolated oxygen atom)
- 解释密度泛函理论(DFT)的伪代码计算(vasp代码)方法
- 创建输入文件以运行隔离(或孤立)原子的 DFT 计算
- 认识 stdout 和 OUTCAR 的基本结构
- 提取分子和原子的相关能量
- 从之前的 Kohn-Sham (KS) 轨道重新开始 DFT 计算
1.1任务
假设我们对一个处在大盒子中的单个氧原子(假定孤立状态)进行 DFT 计算,以计算孤立原子的能量。
DFT 是处理电子自由度的框架。在伪代码级别上,即:
- 给定电子电荷密度,可以定义哈密顿量(Hamiltonian)。
- 计算哈密顿量的特征函数和特征值。
- 电子电荷密度计算后会被更新。
- 迭代上述 1-3步骤,直到收敛。
1.2输入
VASP在当前目录中查找四个主要输入文件,即(i.e.,表示即)POSCAR、INCAR、KPOINTS和POTCAR。每个输入文件的一般格式在VASP Wiki的链接文章中详细解释(初学比较晦涩难懂),但下面我们将讨论本示例的特定参数选择。
暂时无法在飞书文档外展示此内容
本地文件的解压目录下molecules-part1\molecules\e01_O-DFT>
ls确保所有文件都有
认识POSCAR
1、INCAR文件包含控制计算的标记(tags标签)。这些标记可查阅VASP Wiki,如果在INCAR文件中没有设置的标签均采用系统默认值。
2、O atom in a box是计算任务的名称,完全自定义,不要有中文和特殊字符,自己看的懂做什么计算即可。
4、晶格参数xyz三组坐标。晶格参数设置得足够大,即8 Å,这样相邻细胞中的原子之间就不会发生明显的相互作用。
6、cart表示此处使用笛卡尔坐标系,也可以使用分数坐标系。
7、0 0 0 表示在原点位置,笛卡尔坐标系的原点。
8、代码中!表示注释,这是老版本vasp中的代码,现在都用#表示注释。建议改为#防止出错。
认识INCAR
1、变量或者说标签的赋值格式如下,SYSTEM = XXXX
SYSTEM是标签变量名,后面加空格,再加=,再加空格,再加自定义字符串,这里的赋值仅作为我们自己使用,对计算没有任何作用,自定义知道这个计算是计算什么的即可,英文无特殊字符。
2、ISMEAR决定了如何设置每个轨道的局部占位率fnk(nk下标) 。
ISMEAR =0: Gaussian smearing.
这里关于该变量设置的详细介绍:
https://www.vasp.at/wiki/index.php/ISMEAR
认识KPOINTS
一个k点就足以描述孤立的原子或分子,因为波矢量k连接相邻的晶格点,即从一个晶格点平移到相邻的晶胞。因此,包含更多的k点可以更准确地描述相邻晶胞中氧原子之间的相互作用。但如果我们在POSCAR文件中确实已将盒子设置得足够大以描述孤立的原子,那么这种相互作用应该是零。
认识POTCAR
第4行:氧的价电子构型
第12行:ZVAL = 6表示有6个价电子
1.3计算
首先书写好提交脚本文件,脚本文件要根据计算机组的不同而不同,最直接的是从机组的管理员获取。例如文件名为sub.vasp,放到vasp提交的文件同目录下:
暂时无法在飞书文档外展示此内容
解释:
- n是核心数
- N是申请的节点数,如果一个节点有64核心,那么上面-n为128核心时,就需要两个节点了。
- p standard为自己的计算机集群名称,这是管理员设定好的,不能自定义,哪一个计算集群空闲就可以用哪一个。
提交任务的命令为:
查询节点状态:sinfo
idel空闲,mixed部分使用但部分核心空闲,可以接收任务,alloc已分配,down宕机
查询任务状态:squeue
实测在sub.vasp被自动定义为计算任务的名称,以后为了区别不同的计算任务,可以考虑更明确的文件名。
因为这个案例计算很简单,一旦提交命令之后没有任何变化,squeue也看不到计算的状态,这时候只需要查看一下当前目录的输出结果,就可以看到已经计算完毕:
以上就是计算完毕后的全部文件,可以直接从服务器下载到本地用notepad++打开查看或编辑,或者直接在服务器上使用vim编辑器等复杂的Linux查看命令。
补充:
VASP 是一个基于 Fortran 的程序,带有可执行文件。它可以通过
mpirun
在并行环境中运行。为了了解如何控制 mpirun
,请输入:man mpirun1.3.1 stdout
stdout是在计算完毕后直接输出在命令窗的,但是我使用的超算没有输出的提示,我们可以直接找到这个文件,不需要关注是不是直接打印在命令窗的,这个文件就是vasp.out文件。下面是内容:
详细解释:
在设置完成后,会显示 entering main loop 。对于DFT计算的每个迭代步骤,即采用Davidson迭代算法处理的步骤,下面是一行标签,数列对应的是标签的数值,我们依次来看一下:
N:迭代计算iteration count的次数,123456...
E:total energy 总能量
dE:change of the total energy 总能量的变化
D eps:change of the eigenvalues 特征值的变化
ncg:number of optimization steps to iteratively diagonalize the Hamiltonian 迭代地对哈密顿算符进行本征化所需的优化步骤数
rms:weighted absolute value of the residual vector of the KS orbitals KS轨道残差向量加权绝对值
rms(c):absolute value of the charge density residual vector 电荷密度剩余向量的绝对值
计算收敛之后,最后就是总结的一些标签:
F:the total free energy 总自由能
E0:the converged total energy E 合并后的总能量
d E:the final change of the total energy due to the entropy T*S term 熵项导致的总能量的最终变化
以上标签需要根据密度泛函理论中常用变量进行理解,如果是新手入门可以暂时放过,如果需要深入研究可以阅读《Density Functional Theory》美 David s sholl著。
两点重要的补充:
1、根据迭代计算的算法,初始电子电荷密度是从POTCAR文件中读取的,并在最初的几步中保持不变,见 rms(c) 列。这是因为哈密顿量是通过迭代方式进行的,因此,用于更新电荷密度的KS轨道仅在暖启动期后才可信。然后,在进入下一个迭代步骤之前更新电荷密度,而不是在最终的迭代步骤中更新。
2、系统默认的收敛标准是 dE 和 d eps 均<10E-04,达到此值即认为收敛,计算结束。
1.3.2 OUTCAR
OUTCAR文件是计算的更详细的日志文件,里面的内容通过----虚线条分割为不同部分,不同计算的内容不绝对相同,本案例文件的内容大致分为一下内容:
- Version and execution details.版本和执行细节。
- Reading of INCAR, POSCAR and POTCAR.读取INCAR、POSCAR和POTCAR文件。
- Analysis of nearest-neighbor distances and symmetries.邻近距离和对称性分析。
- Tags and parameters set by INCAR, POSCAR, POTCAR and KPOINTS or by default.
- 由INCAR、POSCAR、POTCAR和KPOINTS文件或默认设置的标签和参数。
- Verbose information describing the calculation.详细描述计算过程的信息。
- Information on the lattice, the k points and the positions.格点、k点和位置的信息。
- Information on the basis set, e.g., number of plane waves.有关基组的信息,例如平面波的数量。
- Information concerning the nonlocal pseudopotential.有关非局域赝势的信息。
- Details for each DFT iteration step.每次DFT迭代步骤的详细信息。
- Computed quantities, such as energies, forces, etc.计算量,如能量、力等。
- Computational time. 计算时间。
该文件以及其他所有的文件都可以在超算上直接用终端查看:
Vim OUTCAR可以查看OUTCAR文件,注意必须是正确的大小写。
退出vim查看,需要输入
:q
然后回车;要进行关键词查找,可以直接输入/关键词
然后回车,找到的关键词会被黄色高亮显示。下面是收敛后的特征值信息,可以用fermi关键词定位到:
费米能级是 E-fermi 的值,单位是电子伏特(eV),在解释这些结果之前必须从哈密顿量( band energies )的本征值中减去该值。然后,所有负能量状态都被占据( occupation )。注意,因为每个人设置的初始精度不同,因此计算结果会略有不同。
现在我们分析以上DFT计算的孤立氧原子的能带能量和占据情况结果与实际的能级的占据情况对比分析。
氧原子([He]2s2 2p4)有六个价电子,它们对应于两个2s电子和四个2p电子。从能量的角度来看,在费米能级-8.8430781790以下,因为2s轨道比2p轨道更紧密地束缚。band1是2s轨道被两个电子占据,occupation为2;band 2 、3 和 4 的 occupation值为1.33333 (我们可以理解为1个完整电子+1/3个电子)读数反映三个2p轨道是等价的,被4个电子占据。因此,“第4个”电子同样有可能存在于任何一个2p轨道中。
下面研究一下最后一次迭代计算,就是------ Iteration 1( 7) ------后面的信息:
注意到第9行的代码,2p轨道的弱化引入了一个不物理的熵entropy( S )。SIGMA(由高斯展宽引入的能级展宽)可以被解释为一种人工电子温度( T )。较小的SIGMA值会降低熵值,但可能会减缓收敛速度。这会导致自由能中的一个不物理项( T*S )。
注意到第16行的代码,在这个计算中,单个孤立氧原子的总能量( energy without entropy )接近于零。实际上,如果盒子尺寸更大,计算精度更高,它将变为零。这只是因为所有赝势都是为孤立的非自旋极化原子生成的。所以我们是在将参考系统与自身进行比较。请记住,虽然选择参考系统通常是任意的,但一旦在包含更多原子或更小盒子(即非孤立系统)的计算中,能量的绝对值将失去物理意义。通常,只有相对于费米能级的能带能量(带隙)、两个相关系统的总能量等相对能量才有物理意义并可以进行解释。
1.3.3 重新计算
默认的重启计算的方法是从WAVECAR文件中读取KS轨道。尝试重启并检查标准输出以确认计算迅速收敛!对于全新的计算,应删除WAVECAR文件。
2 极化氧原子(Spin-polarized oxygen atom)
- 打开自旋极化功能,运行自旋密度泛函理论(SDFT)计算。
- 从哈密顿算符的本征值以及两个自旋分量的占据情况推导出自旋磁矩。
- 什么情况下使用
vasp_gam
计算。
2.1任务
对孤立氧原子进行SDFT计算,以提取自旋磁化强度。
在SDFT中,哈密顿算符是一个2x2矩阵,KS轨道是两个分量向量。在这里,这两个分量对应于孤立氧原子的自旋向上和自旋向下,允许它们具有不同的本征值。通过分别计算两种自旋分量的KS轨道来获得考虑了两种自旋分量(自旋向上和自旋向下)电荷密度的有效哈密顿算符,从而有效地考虑了自旋分量的相互作用。
2.2输入
同样准备好输入和提交脚本,这里有输入的变化:
INCAR文件多了第三行:
ISPIN=2打开了自旋极化功能,运行的SDFT。
小技巧:
对比两份代码的不同不需要手动对比,可以直接使用notepad++的compare插件对比差异。
2.3计算
小技巧:如果KPOINTS文件只包含Gamma点,可以使用 vasp_gam 可执行文件代替 vasp_std 。这将把某些数组作为实数而不是复数处理,因此计算成本较低。但请注意,该假设只适用于仅考虑Gamma point的计算。
2.3.1vasp.out
为什么会出现大大的warning!?
该警告与MAGMOM标签的默认值有关,因为我们将ISPIN设置为2。通常来说,收到警告并不意味着我们的计算存在问题,而是提醒我们检查一下是否是故意设置了该值。警告旨在帮助避免常见的错误或提高计算性能。
2.3.2OUTCAR
这个系统是自旋极化的吗?
是的,我们可以看到自旋分量具有不同的本征值(band energies),因此SDFT基态是自旋极化的。这与洪特规则相一致,首先每个2p轨道被一个特定的自旋方向占据,例如说如果 occupation 所示的 spin component 1 中的自旋向上。然后,“第四”个2p电子具有自旋向下,这导致 occupation 的 0.33333 在 band No. 2 - 4 的 spin component 2 中出现,spin component 1对应氧分子最外层轨道中自旋向上的电子,共占据7个band;可以看出band4、5简并,band6、7简并,分别对应π2px 、π2py 的成键与反成键轨道。spin component 2也同理。
补充:下面的内容也是官网的一部分,为了保持整个体系的完整性,暂时放在这
磁化强度是自旋引起的磁矩的期望值。换句话说,它是沿着自旋量子化轴(例如 z 轴)的投影。因此,磁化强度是:here 𝑔𝑠≈2 is the spin g-factor, 𝜎𝑧 is a Pauli matrix, and 𝜇𝐵 is the Bohr magneton. What value does ⟨𝜇𝑠,𝑧⟩ have in this example?
The
spin component 1
has two more electrons as seen by comparing the occupation. Hence, ⟨𝜇𝑠,𝑧⟩=2𝜇𝐵 and the summary, after the convergence has been reached, in the stdout indeed states mag= 1.9999
corresponding to ⟨𝜇𝑠,𝑧⟩.比较占据状态可以看出,
spin component 1
比 mag= 1.9999
多两个电子。因此,在达到收敛状态后,stdout的确给出了与 mag= 1.9999
相对应的总结。3 低对称性自旋极化的氧原子(Spin-polarized oxygen atom with low symmetry)
- 找出施加在电子电荷密度上的对称性。
- 解释一下如何从输入中提取施加的对称性。
- 考虑是否可以比较两个计算的总能量。
3.1任务
对一个具有斜方晶系(D2h)的孤立氧原子进行SDFT计算,并将其与具有立方晶系(Oh)的计算结果进行比较。
有32种晶体学点群,它们是晶体的离散旋转对称性。为了减少计算量,VASP默认情况下会搜索并利用系统中的所有对称性。这有助于高效地计算大型系统,但重要的是要确保没有强加任何对称性,因为基态并不期望具有这种对称性!特别是,即使物理系统偏爱不同的对称性,如果不手动关闭,周期性边界条件的使用可能会将对称性强加给解。
ISYM标签控制VASP的对称性。
3.2输入
全部输入文件在实例中molecules/e03_O-SDFT-symm
点群对称性是由POSCAR文件中的结构决定的,并且在ISYM标签具有默认值时应用于解。在示例2极化氧原子中进行的计算是所需的具有立方对称性(Oh)的计算,因为所有晶格矢量具有相等的长度并围成一个封闭的区域,并且位于原点的单个原子不会破坏任何对称性。
INCAR:
对于INCAR该计算是否包括自旋轨道耦合效应?换句话说,自旋自由度是否与空间自由度耦合?
不!这种计算方法是分别处理两个自旋分量,以得到非相对论哈密顿量的自洽解,从而考虑了自旋极化效应。自旋轨道耦合是相对论修正项,可以在VASP中通过LSORBIT标签打开。
POSCAR:
对于POSCAR与例2中具有立方对称性(Oh)的计算不同,我们将晶格矢量更改为符合斜方晶系(D2h)。换句话说,所有晶格矢量都有不同的长度,但仍然包围着盒子。
如果设计为四面体对称性 tetragonal symmetry (D4h):
3.3计算
3.3.1OUTCAR
可以看到point symmetry D_2h,即vasp找到了斜方晶系orthorhombic symmetry的对称性。
看总能量:
第5行energy without entropy= -1.51408544 energy(sigma->0) = -1.59117811对比在例2中计算的cubic symmetry立方对称性的总能量趋于0,两者哪个更稳定?
具有较低对称性的计算具有较低的能量,因此,它可能更接近理论的、近似的多体基态。 DFT中的一个重要选择是交换-关联泛函的选择,它有效地考虑了多体效应。在这里,我们使用了默认的广义梯度近似(GGA),它倾向于为大多数原子选择对称性破缺的解。(涉及到大量的密度泛函理论的概念)
补充:
在INCAR文件中的SIGMA标签数值不同,那么迭代到收敛之前的次数也不相同,注意要是比较其他不同的参数计算结果,需要保证这个标签的数值相同。
完成!
下载官网工程文件:
官方地址:https://www.vasp.at/tutorials/latest/molecules/part1/
可能存在过时的问题,需要辩证的学习。
Loading...