什么是电子能谱?

电子能谱就是用一定能量的==电子束或光子与样品表面相互作用==,使样品表面原子中不同能级的电子激发成自由电子,并研究这些自由电子的电子强度(电子数目)按其能量变化的分布曲线。根据使用的激发源的不同,电子能谱又分为==X射线光电子能谱(XPS)、紫外光电子能谱(UPS)、俄歇电子能谱(AES)==

电子能谱的基础是光电效应:当能量为hν的单色光照射到样品上时,样品中的原子或分子吸收能量从而使电子脱离样品成为自由电子(即光电子)逸出,与此同时还能产生==俄歇电子和荧光X射线等== hν = Eb + Ek + Er 其中Eb为原子的始态和终态能量差,可以看成发射的光电子的结合能;Er为原子的反冲能量,可忽略

X射线光电子能谱

X射线光电子能谱 (XPS),也称为化学分析电子能谱 (ESCA)。价电子对X光子的光电效应截面远小于内层电子,所以XPS主要用于研究内层电子的结合能。由于内层电子不参与成键,保留了较多的原子性质,所以常用于表面组分的化学分析,也可以进一步应用于确定这些==元素的化学或电子状态==。它允许以非破坏性方式测定样品的原子组成,由于X射线仅能穿透样品 5 – 20 Å,因此可以进行表面特异性分析。

电子在暴露于足够能量的电磁辐射(波长在X射线范围的高能光子)时会从材料表面射出,即光电效应: KE = hν − Eb − φ 其中Eb是电离能(也叫电子结合能),φ 是光谱仪的功函数。

从原子的K壳层激发电子.jpg

不同的原子具有不同的电子壳层和不同的结合能,因此XPS可用于识别样品表面的元素组成。计算发射的具有各种Ek的光电子的数量,并生成XPS光谱,这有助于识别除H和He之外的所有状态的所有元素。

Instrumentation of X-ray photoelectron spectroscopy

如上图所示,X射线光电子能谱仪器的主要部件包括以下部分:

  • X射线源
  • 超高真空(UHV)
  • 电子透镜
  • XPS能量分析仪
  • 检测器
  • 监视器

首先,高速电子撞击金属阳极使其发生内壳层跃迁,辐射出特征X射线。特征X射线脱离射线源部分后进入到UHV超高真空腔,在这里,约10−9~10−10 torr甚至更低的压强可以减少XPS光谱中的噪声量并避免样品表面污染产生任何额外峰。接着,X射线在UHV环境中照射到样品表面,样品释放出光电子,光电子被电子透镜所汇聚并减速。大量减速后的光电子接着进入XPS能量分析仪,这是一个两端施加有电压的半球腔体。多通道检测器可以检测出电子的动能,类似于胶片。高性能计算机用作监视器,用于控制镜头和分析仪的电压,它还会产生 XPS 光谱——计算机自动绘制Ek强度与结合能的关系生成的。

定性分析

原子的电子能级可分为两种类型——与原子核结合的核能级和仅弱结合的价能级。原子的价能级是与其他原子的价能级相互作用以在分子和化合物中形成化学键的能级。它们的特性(价键特性)和能量通过这个过程发生变化,成为形成的新物种的特性。

原子的核心能级电子的能量几乎与原子结合的化学物质无关,因为它们不参与键合过程。因此,核心水平结合能的识别因此提供了元素的独特特征。元素周期表中的所有元素都可以通过这种方式识别(除了H和He,它们没有核心能级)。

定量分析

定量分析需要测量相对峰强度,峰的强度取决于表面膜中存在的元素的原子浓度 (N)。

化学状态分析

化学位移是同一分子或两种不同化合物中两种化学不同状态的同一原子之间的结合能差异。它是样品电离原子周围的原子性质和原子数的特征。它可以用来查看样品表面原子的化学键是什么样的。

  • 它涉及化学键性质、官能团的性质和原子的氧化态。
  • XPS 的一个重要功能是它能够区分不同化学状态的相同元素,因为电子的 BE 会因氧化引起的元素周围电荷密度的变化而不同

深度分析

对薄表面薄膜中元素深度分布的估计称为深度表面分析。这样做是为了知道薄膜是否均匀。

优势与局限性

优势:

  • 可以分析所有样品,包括固体、气体和液体样品,但大多数是固体样品。
  • 定量效果好
  • 出色的化学状态测定能力
  • 它适用于从生物材料到金属的各种材料。
  • 这是一种非破坏性技术。

局限性:

  • 缺乏良好的空间分辨率,即空间分辨率差
  • 仅中等绝对灵敏度
  • 它无法检测氢和氦
  • 它不适用于痕量分析。

为什么常常用Al作为靶材

X射线衍射(XRD)实验中选择的是铜靶或者钼靶,为什么这里用的是铝靶呢?

XPS对X射线源的光子能量和能量分辨率(单色性/线宽)有非常特殊的要求。XPS的核心是精确测量样品表面原子发射的光电子的动能,进而计算其结合能。结合能的微小偏移(< 1 eV)往往对应着元素的化学态变化(如氧化态、化学键)。==如果X射线本身的线宽很宽,就会导致光电子谱峰变宽,使得相邻的、化学位移很小的峰无法分辨,严重影响化学态分析的精度==

XRD测量的是晶面间距引起的衍射峰位置(角度)。衍射峰的自然宽度通常比X射线源的线宽要宽得多(受晶体尺寸、应力等因素影响)。因此,X射线源本身的线宽(如Cu Kα约2.5 eV)对衍射峰位置测量的影响相对较小,强度更重要。

Al Kα的能量是1486.6 eV,这个能量足够高,能够有效地激发周期表中绝大多数元素(从轻元素如Li到重元素)的核心能级电子(如C 1s, O 1s, N 1s, Fe 2p, Au 4f等),这些能级是XPS分析化学态的关键。能量不是越高越好。能量过高(如Cu Kα的8048 eV)会产生更强的韧致辐射本底和更多的二次电子,增加谱图的背景噪音。同时,高能光子的光电离截面(电离效率)在特定能量范围外会降低。1486.6 eV是一个在激发效率和背景噪音之间取得良好平衡的能量点。

为什么光电方程中有功函数这一项?

什么是功函数呢?功函数 Φ 是指将一个电子从==固体材料==内部(==费米能级处==)移动到真空中静止状态(真空能级)所需的最小能量。想象电子在固体内部处于一个“能量坑”的底部(费米能级)。要把这个电子从坑里拉出来扔到坑外平坦的地面上(真空能级),你需要克服坑壁的阻挡做功。这个“坑壁的高度”就是功函数 Φ(单位:电子伏特)。

为什么光电方程中有功函数这一项?理解的关键在于区分 ==“原子内结合能 (Eb)”==和==“电子逸出样品进入真空并被检测器测到”== 这两个过程所涉及的能量参考点。

Einstein的原始光电方程是针对于自由原子或者气体的,Eb 是电子相对于原子真空能级的结合能(即把电子从原子轨道移到离原子无穷远处所需能量):

  • 对于孤立原子,真空能级是明确的参考点
  • 测得的光电子动能直接反应原子内电子的结合能Eb

但是对于==固体==,情况变得更加复杂了。固体中,原子不是孤立的,电子处于==周期性势场中==。固体中的电子能量通常参考费米能级 (Fermi Level, EF)——绝对零度下电子占据的最高能级。总结一下固体中的光电效应:内壳层电子吸收光子能量跃迁到无穷远轨道处(依然处在固体体相中),这一步需要克服结合能,从无穷远轨道处跃迁到真空层(脱离表面)还需要克服一部分能量,这部分能量被称为功函数φ

image-20250625110131435

所以功函数补偿了谱仪测量参考点(其费米能级)与理论计算参考点(真空能级)之间的差异。它确保了测量动能 KE 与样品内结合能 Eb(相对于样品费米能级)之间的定量关系成立。

XPS怎么确定元素的氧化态?

1
2
3
4
5
6
graph TD
A[氧化态升高] --> B[原子周围电荷密度降低]
B --> C[原子实有效正电荷增加]
C --> D[内壳层电子受核束缚增强]
D --> E[结合能E_b升高]
E --> F[XPS峰向高结合能方向移动]

XPS的测试项目

  • 全谱
    • 得出元素的成分信息,也可以对所测元素进行半定量计算
  • 精细谱
    • 判断化学态,确定不同化学态的百分比含量
  • 刻蚀/溅射
    • 去除样品表面杂志后进行分析
    • 深度剖析,探测不同深度下的样品成分
  • 价带谱
    • 主要测量价带顶,也可以分析价带结构,探测外层价电子信息,也可以用来区分化学环境价态
  • 俄歇谱
    • 主要测量价带顶,也可以分析价带结构,探测外层价电子信息,也可以用来区分化学环境价态
  • Mapping
    • 表征不同元素成分在特定区域的分布情况,分辨率〈EDS,XPS深度10nm左右,EDS深度1um左右

样品制备

  • 粉末
    • 样品量20mg以上,压片制样,粘到双面胶带上分析;颗粒越细越好,且分散均匀;在压片样品表面分析时尽量选用平整测试区域,越平整信号越强

Comment and share

本文仅为学习记录,并非教程

Multiwfn是一个波函数分析程序,功能非常强大,也能绘制ELF等值面图,它支持多种类型的输入文件,既有量子化学计算程序的输出文件,又有第一性原理计算程序的输出文件

Multiwfn的输入文件(http://sobereva.com/379)

以下是Multiwfn加载ELFCAR绘制等值面图的过程

如果将Multiwfn的根目录添加到PATH环境变量以方便调用,那么画出来的图可能会遇到如下如题

在非根目录下调用Multiwfn

如果直接在根目录下双击.exe文件运行的话就能正常绘图

正常的ELF等值面图

Comment and share

起因是我想合成各式各样的材料,需要用到各种药品,计算起来比较麻烦,尤其是非化学计量比的化合物比如Li5.3PS4.3Cl0.7Br,遂用AI写了一个python脚本,个人觉得还是比较实用,脚本文件和相对原子质量的文本文件需要在同一文件夹内

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
from decimal import Decimal, getcontext
import re
from sympy import symbols, Matrix, linsolve, Rational
from collections import defaultdict

# Improve Decimal precision
getcontext().prec = 100

class FormulaParser:
@staticmethod
def parse(formula: str) -> dict:
elements = {}
pattern = re.compile(r"([A-Z][a-z]?)([\d.]*)?")
idx = 0
while idx < len(formula):
m = pattern.match(formula, idx)
if not m:
raise ValueError(f"Invalid formula at: {formula[idx:]}")
elem, num = m.group(1), m.group(2)
coeff = Decimal(num) if num else Decimal(1)
elements[elem] = elements.get(elem, Decimal(0)) + coeff
idx = m.end()
return elements

class AtomicMassReader:
@staticmethod
def read(filename="atomic_masses.txt") -> dict:
masses = {}
try:
with open(filename, 'r') as f:
for line in f:
line = line.strip()
if not line or line.startswith('#'):
continue
parts = line.split()
if len(parts) != 2:
raise ValueError(f"Line format error: {line}")
masses[parts[0]] = Decimal(parts[1])
except FileNotFoundError:
raise FileNotFoundError(f"File {filename} not found")
if not masses:
raise ValueError("Atomic masses file empty")
return masses

class SynthesisCalculator:
def __init__(self, atomic_masses: dict):
self.atomic_masses = atomic_masses
self.target = {}
self.target_mm = Decimal(0)
self.reagents = []
self.reagent_formulas = []
self.molar_masses = []

def input_target(self):
f = input("Enter target formula: ").strip()
self.target = FormulaParser.parse(f)
for e, c in self.target.items():
if e not in self.atomic_masses:
raise ValueError(f"Mass of element {e} not defined")
self.target_mm += c * self.atomic_masses[e]
print(f"Parsed: {self.target}")
print(f"Target molar mass = {self.target_mm.normalize()} g/mol")

def input_reagents(self):
n = int(input("Enter number of reagents: "))
for i in range(n):
f = input(f"Reagent {i+1} formula: ").strip()
self.reagent_formulas.append(f)
parsed = FormulaParser.parse(f)
mm = sum(parsed[e] * self.atomic_masses[e] for e in parsed)
self.reagents.append(parsed)
self.molar_masses.append(mm)
print(f"{f} molar mass = {mm.normalize()} g/mol")

def validate(self):
tgt = set(self.target)
prov = set().union(*(r.keys() for r in self.reagents))
miss = tgt - prov
extra = prov - tgt
if miss:
print(f"Error: Missing elements: {miss}")
exit()
if extra:
print(f"Warning: Extra elements: {extra}")

def solve_basis(self):
# Construct A, b corresponding to 1 mol
elems = sorted(set(self.target) | set().union(*(r.keys() for r in self.reagents)))
A = [[r.get(e, Decimal(0)) for r in self.reagents] for e in elems]
b = [self.target.get(e, Decimal(0)) for e in elems]
# Convert to rational number to avoid floating point error
A_rat = [[Rational(str(val)) for val in row] for row in A]
b_rat = [Rational(str(val)) for val in b]
vars = symbols(f'x0:{len(self.reagents)}')
sol = linsolve((Matrix(A_rat), Matrix(b_rat)), vars)
if not sol:
print("Error: No exact solution for 1 mol target.")
exit()
tup = next(iter(sol))
# Convert rational to decimal exact representation
base = {}
for i, r in enumerate(tup):
base[vars[i]] = Decimal(r.p) / Decimal(r.q)
return base, elems

def calculate(self):
t = input("Input type (0 mass g, 1 moles): ").strip()
if t not in ['0','1']:
print("Invalid type")
exit()
v = Decimal(input("Amount: ").strip())
n = v / self.target_mm if t=='0' else v
print(f"Target moles = {n.normalize()}")

base, elems = self.solve_basis()
print("\nReagent requirements:\n" + "="*40)
total_mass = Decimal(0)
for i, var in enumerate(sorted(base.keys(), key=lambda x: int(str(x)[1:]))):
moles = base[var] * n
mass = moles * self.molar_masses[i]
total_mass += mass
print(f"Reagent {i+1} ({self.reagent_formulas[i]}):")
print(f" Moles: {moles.normalize():.10f} mol")
print(f" Mass: {mass.normalize():.10f} g\n")
print(f"Total mass = {total_mass.normalize():.10f} g")

#Verify element balance
print("Verification:")
for e in elems:
actual = sum((base[symbols(f'x{i}')] * n) * r.get(e, Decimal(0))
for i, r in enumerate(self.reagents))
target_amt = self.target.get(e, Decimal(0)) * n
print(f"{e}: target {target_amt.normalize():.10f}, actual {actual.normalize():.10f}")


def main():
print("High-Precision Compound Synthesis Calculator")
print("="*60)
try:
masses = AtomicMassReader.read()
print(f"Loaded elements: {', '.join(masses.keys())}")
except Exception as e:
print(e)
exit()
calc = SynthesisCalculator(masses)
calc.input_target()
calc.input_reagents()
calc.validate()
calc.calculate()

if __name__ == "__main__":
main()

附一张使用截图,后面也会放到Github上面

使用截图

Comment and share

本文仅为学习记录,并非教程

这次记录文主要侧重于应用,参考了Sob老师的博文和网络上的各大教程

以FCC Cu为例进行ELF计算与分析

采用FCC面心立方最密堆积的铜单胞,使用vasp计算,先进行结构优化,确认收敛后进行ELF计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Global Parameters
ISTART = 1 (Read existing wavefunction, if there)
ISPIN = 2 (Non-Spin polarised DFT)
MAGMOM = 4*0.6
# ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
ENCUT = 530 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .TRUE. (Write WAVECAR or not)
LCHARG = .TRUE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
LASPH = .TRUE. (Give more accurate total energies and band structure calculations)
PREC = Accurate (Accurate strictly avoids any aliasing or wrap around errors)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)

Electronic Relaxation
ISMEAR = 1 (Gaussian smearing, metals:1)
SIGMA = 0.2 (Smearing value in eV, metals:0.2)
NELM = 90 (Max electronic SCF steps)
NELMIN = 6 (Min electronic SCF steps)
EDIFF = 1E-08 (SCF energy convergence, in eV)
# GGA = PS (PBEsol exchange-correlation)

Ionic Relaxation
NSW = 0 (Max ionic steps)
IBRION = -1 (Algorithm: 0-MD, 1-Quasi-New, 2-CG)
ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
EDIFFG = -2E-02 (Ionic convergence, eV/AA)
# ISYM = 2 (Symmetry: 0=none, 2=GGA, 3=hybrids)
LELF = .TRUE.
NPAR = 1

在优化完的结构上进行自洽计算,添加LELF = .TRUE.这个参数,确保ELFCAR文件输出

官方wiki还提到必须显示开启NPAR = 1,然而网上的各大教程都没有提到这一点

If LELF is set, NPAR=1 has to be set explicitely in the INCAR file in addition

且有一篇讨论帖:https://wiki.vasp.at/forum/viewtopic.php?t=20020

不过我自己尝试的时候发现超算平台上添加NPAR = 1会报错,而在自己电脑上则不会报错,有点迷、、、

Vesta载入ELFCAR文件

先设置一下等值面数值

Isosurface Level(等值面水平)是一个关键参数,用于控制可视化电子局域化程度的阈值,VESTA会绘制出ELF等于该值的等值面(isosurface),直观展示电子局域化程度高于该阈值的区

Properties-Isosurfaces-Isosurfaces level,设置完后可以按以下Tab键就会自动保存应用

等值面数值设置

这里如果设置0.75的话啥也看不到,因为铜单胞中存在着金属键,并没有很强的局域化电子,而是均匀分布的电子气

高定域性通常出现在共价作用区域、孤对电子区域、原子内核及壳层结构区域

然后就可以查看ELF图了

首先是3D的图

左上角-Edit-Lattice planes,新建一个图,根据想查看的面的来设置米勒指数hlk,以及设置距离d

3D的ELF图

然后是2D的图

左上角-Utilities-2D Data Display-Slice即可

同一个截面的2D图和3D图
001,1xd的二维截面ELF图

可以看到,顶点Cu与顶点Cu原子之间、顶点Cu和面心Cu之间的电子的局域化程度比较高并且没有明显的偏向偏离

接下来看一下一维时的电子定域化情况

左上角-Utilities-Line profile即可

  • 首先棱上的情况
边长上的ELF图

Cu和Cu两原子中间存在均匀的非零的电子局域函数,虽然不足0.5但分布平坦,这是金属键合的特征

两个铜原子的ELF(r)值相近

  • 面对角线上的情况
面对角线

三个铜原子的ELF(r)值相近

离子晶体CsF

再看一下离子键的情况,以CsF为例

CsF的ELF图

氟和铯之间出现深蓝色,这说明在这个区域电子的分布较为离域化,即氟和铯之间不存在共用电子,键的类型偏向离子键

再看看对角线上的电荷分布

对角线上的一维ELF图

两端为铯中间为氟,可以看到氟和铯ELF(r)值差别较大

共价晶体——硅

101截面的ELF图

如箭头所指,硅原子和硅原子之间有较强的电子定域化作用,键的类型为共价键

如下图,体对角线上的ELF图也能很好证明,Si-Si之间的区域电子化定域程度极高,呈现明显的尖峰

对角线上的ELF图

共价晶体——灰锡

我仍记得高中时课本讲的一个稍微有些特殊的例子——灰锡,灰锡是一个共价晶体

灰锡101晶面的ELF图

可以看到,灰锡与晶体硅结构上类似,Sn($\frac{1}{4},\frac{1}{4},\frac{1}{4}$)与Sn(0,0,0)与以及Sn(0.5,0.5,0)成键,Sn($\frac{3}{4},\frac{3}{4},\frac{1}{4}$)与Sn(0.5,0.5,0)和Sn(1,1,0)成键。成键电子局域化程度较高,为共价电子

Comment and share

2025年5月Intel平台VASP.6.4.3的编译安装


WSL的安装

选择Arch Linux,个人比较熟悉,仅供学习使用不作为稳定的生产力环境,配置如下,两颗E5 2676 v3

洋垃圾配置

打开powershell或者终端,输入wsl --install archlinux以自动安装,这一步需要使用代理(MAGIC),主机上使用Clash-Verge进行代理(运气好也能连上),终端中输入:

1
2
set http_proxy=http://127.0.0.1:7897 #自己使用的端口是7897,http代理
set https_proxy=http://127.0.0.1:7897 #自己使用的端口是7897,https代理

如果没有条件使用代理,也可以手动安装,参考Arch Wiki,https://wiki.archlinuxcn.org/wiki/%E5%9C%A8_WSL_%E4%B8%8A%E5%AE%89%E8%A3%85_Arch_Linux,手动下载.wsl镜像,然后安装

笔者计算机C盘性能太差,于是想要将wsl2迁移到另一个分区

安装成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@NAS ~]# fastfetch
-` root@NAS
.o+` --------
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: Windows Subsystem for Linux - archlinux (2.4.12)
`+oooooo: Kernel: Linux 5.15.167.4-microsoft-standard-WSL2
-+oooooo+: Uptime: 5 hours, 16 mins
`/:-:++oooo+: Packages: 155 (pacman)
`/++++/+++++++: Shell: bash 5.2.37
`/++++++++++++++: WM: WSLg 1.0.65 (Wayland)
`/+++ooooooooooooo/` Terminal: xterm-256color
ooosssso++osssssso+` CPU: Intel(R) Xeon(R) E5-2676 v3 (48) @ 2.39 GHz
.oossssso-````/ossssss+` Memory: 1.09 GiB / 15.57 GiB (7%)
-osssssso. :ssssssso. Swap: 304.95 MiB / 4.00 GiB (7%)
:osssssss/ osssso+++. Disk (/): 18.67 GiB / 1006.85 GiB (2%) - ext4
/ossssssss/ +ssssooo/- Disk (/mnt/c): 159.05 GiB / 237.01 GiB (67%) - 9p
`/ossssso+/:- -:/+osssso+- Disk (/mnt/d): 13.16 TiB / 14.55 TiB (90%) - 9p
`+sso+:-` `.-/+oso: Disk (/mnt/e): 1.70 TiB / 3.64 TiB (47%) - 9p
`++:. `-/+/ Disk (/mnt/f): 49.45 GiB / 476.94 GiB (10%) - 9p
.` `/ Disk (/mnt/g): 25.16 TiB / 29.10 TiB (86%) - 9p
Local IP (eth0): 172.31.36.99/20
Locale: en_US.UTF-8

编译器的安装

1
2
3
4
5
6
7
8
9
10
11
pacman -S make
pacman -S cmake
pacman -S gcc
pacman -S gcc-fortran
####发现gcc和gfortran编译器太新,会编报错(C23),故降级软件包
#添加中科大源来安装yay
pacman -Syy yay
yay -S downgrade #安装降级工具
downgrade -S gcc-libs #选择12.1.0版本,安装gcc的依赖
downgrade -S gcc #安装gcc,选择12.1.0版本
downgrade -S gcc-fortran #安装gforran,选择12.1.0版本

前往Intel官网下载oneAPI BaseTool kithttps://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?packages=oneapi-toolkit&oneapi-toolkit-os=linux&oneapi-lin=online

1
2
chmod +x xxxxxxxxxx.sh #赋予下载下来的sh文件可执行权限
xxxx.sh #运行sh文件

oneAPI BaseTool kit不需要全部安装,只需安装MKL部分,

HPC也只需安装一部分

此处博主踩了较多的坑:

  • 编译器采用2022版,不可采用过新编译器
    • 2024年10月后,Intel删除了ifort编译器
  • gcc编译器不可太新,否则编译某些fortran模块会报错,博主从14降级到了12.1.0

VASP.6.4.3的编译安装

源码包可以去各大私密性较强的论坛或者微信公众号获取,仅供个人学习使用,不用于学术、商业用途

选择arch/目录中的模板makefile.include.intel,复制到.(上一层目录),并修改名称为makefile.include,修改目录如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxIFC\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Duse_bse_te \
-Dtbdyn \
-Dfock_dblbuf

CPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC = mpiifort
FCL = mpiifort

FREE = -free -names lowercase

FFLAGS = -assume byterecl -w

OFLAG = -O2 -xhost #添加-xhost标记
OFLAG_IN = $(OFLAG)
DEBUG = -O0

OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o

# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)

OBJECTS_LIB = linpack_double.o

# For the parser library
CXX_PARS = icpc
LLIBS = -lstdc++

##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##

# When compiling on the target machine itself, change this to the
# relevant target when cross-compiling for another architecture
VASP_TARGET_CPU ?= -xHOST
FFLAGS += $(VASP_TARGET_CPU)

# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL += -qmkl=sequential
MKLROOT ?= /opt/intel/oneapi/mkl/2022.1.0 #一定要添加MKLROOT的目录,否则会报错


/home/storm/intel/oneapi/mkl/2022.1.0
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
INCS =-I$(MKLROOT)/include/fftw

# HDF5-support (optional but strongly recommended)
#CPP_OPTIONS+= -DVASP_HDF5
#HDF5_ROOT ?= /path/to/your/hdf5/installation
#LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
#INCS += -I$(HDF5_ROOT)/include

# For the VASP-2-Wannier90 interface (optional)
#CPP_OPTIONS += -DVASP2WANNIER90
#WANNIER90_ROOT ?= /path/to/your/wannier90/installation
#LLIBS += -L$(WANNIER90_ROOT)/lib -lwannier

然后开始编译

发现使用命令make all -j48会编译报错

于是改为官方wiki的命令make DEPS=1 -j48,编译成功

测试

make test进行测试,有一些报错,懒得管了、、、能跑就行

Comment and share

安装、配置好vaspkit之后输入vaspkit可启动软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(base) storm@DESKTOP-HE4FQ8Q:~/my-learn/trash-vaspkit$ vaspkit
\\\///
/ _ _ \ Hey, you must know what you are doing.
(| (o)(o) |) Otherwise you might get wrong results.
o-----.OOOo--()--oOOO.------------------------------------------o
| VASPKIT Standard Edition 1.5.1 (27 Jan. 2024) |
| Lead Developer: Vei WANG (wangvei@icloud.com) |
| Main Contributors: Gang TANG, Nan XU & Jin-Cheng LIU |
| Online Tutorials Available on Website: https://vaspkit.com |
o-----.oooO-----------------------------------------------------o
( ) Oooo. VASPKIT Made Simple
\ ( ( )
\_) ) /
(_/
===================== Structural Utilities ======================
01) VASP Input-Files Generator 02) Mechanical Properties
03) K-Path for Band-Structure 04) Structure Editor
05) Catalysis-ElectroChem Kit 06) Symmetry Analysis
07) Materials Databases 08) Advanced Structure Models
===================== Electronic Utilities ======================
11) Density-of-States 21) Band-Structure
23) 3D Band-Structure 25) Hybrid-DFT Band-Structure
26) Fermi-Surface 28) Band-Structure Unfolding
31) Charge-Density Analysis 42) Potential Analysis
44) Piezoelectric Properties 51) Wave-Function Analysis
62) Magnetic Analysis 65) Spin-Texture
68) Transport Properties
======================== Misc Utilities =========================
71) Optical Properties 72) Molecular-Dynamics Kit
74) User Interface 78) VASP2other Interface
84) ABACUS Interface 91) Semiconductor Kit
92) 2D-Material Kit 95) Phonon Analysis
0) Quit
------------>>

以下是中文翻译对照:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
===================== 结构工具 ======================
01) VASP 输入文件生成器
02) 力学性质
03) 能带结构的 K 路径
04) 结构编辑器
05) 催化 - 电化学套件
06) 对称性分析
07) 材料数据库
08) 高级结构模型
==================== 电子工具 ======================
11) 密度态
21) 能带结构
23) 三维能带结构
25) 混合 DFT 能带结构
26) 费米面
28) 能带结构展开
31) 电荷密度分析
42) 势分析
44) 压电性质
51) 波函数分析
62) 磁性分析
65) 自旋纹理
68) 输运性质
====================== 杂项工具 ========================
71) 光学性质
72) 分子动力学套件
74) 用户界面
78) VASP 转其他格式接口
84) ABACUS 接口
91) 半导体套件
92) 二维材料套件
95) 声子分析
0) 退出

我目前还是初学者小白,使用得最多的功能还是生成输入文件功能尤其是生成INCAR文件,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 ------------>>
01
==================== VASP Input Files Options ===================
101) Customize INCAR File
102) Generate KPOINTS File for SCF Calculation
103) Generate POTCAR File with Default Setting
104) Generate POTCAR File with User Specified Potential
105) Generate POSCAR File from cif (no fractional occupations)
106) Generate POSCAR File from Material Studio xsd (retain fixes)
107) Reformat POSCAR File in Specified Order of Elements
108) Successive Procedure to Generate VASP Files and Check
109) Submit Job Queue

0) Quit
9) Back
------------>>
------------>>
101
+---------------------------- Tip ------------------------------+
| WARNNING: You MUST know what wou are doing! |
|Some Parameters in INCAR file need to be set/adjusted manually.|
+---------------------------------------------------------------+
======================== INCAR Options ==========================
ST) Static-Calculation SR) Standard Relaxation
MG) Magnetic Properties SO) Spin-Orbit Coupling
D3) DFT-D3 no-damping Correction H6) HSE06 Calculation
PU) DFT+U Calculation MD) Molecular Dynamics
GW) GW0 Calculation BS) BSE Calculation
DC) Elastic Constant EL) ELF Calculation
BD) Bader Charge Analysis OP) Optical Properties
EC) Static Dielectric Constant PC) Decomposed Charge Density
PH) Phonon-Calculation PY) Phonon with Phononpy
NE) Nudged Elastic Band (NEB) DM) The Dimer Method
FQ) Frequence Calculation LR) Lattice Relaxation
MT) Meta-GGA Calculation PZ) Piezoelectric Calculation

0) Quit
9) Back
------------>>
Input Key-Parameters (STH6D3 means HSE06-D3 Static-Calcualtion)

以下是中文对照:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+---------------------------- 提示 ------------------------------+
| 警告:你必须清楚自己在做什么! |
|INCAR 文件中的一些参数需要手动设置/调整。|
+---------------------------------------------------------------+
======================= INCAR 选项 ==========================
ST) 静态计算 SR) 标准松弛
MG) 磁性性质 SO) 自旋轨道耦合
D3) DFT-D3 无阻尼校正 H6) HSE06 计算
PU) DFT+U 计算 MD) 分子动力学
GW) GW0 计算 BS) BSE 计算
DC) 弹性常数 EL) ELF 计算
BD) Bader 电荷分析 OP) 光学性质
EC) 静态介电常数 PC) 分解电荷密度
PH) 声子计算 PY) 使用 Phonopy 的声子计算
NE) 强制弹性带(NEB) DM) 二聚体方法
FQ) 频率计算 LR) 晶格松弛
MT) Meta-GGA 计算 PZ) 压电计算

LR晶格弛豫就对应着结构优化,当然生成的INCAR文件可能仍需要进行一些修改,比如ENCUT可能需要调整为赝势中ENMAX的1.3倍

生成KPOINTS文件

对于非能带的计算,选择102) Generate KPOINTS File for SCF Calculation使用程序自动撒点即可,但是需要用户选择撒点方式和撒点密度,选择Gamma Scheme,使用0.04精度

关于生成 KPOINTS 文件

  • 在 VASP 计算中,KPOINTS 文件用于指定 k 点网格的设置。对于非能带计算,比如进行能量计算、优化结构等,通常不需要像计算能带结构那样沿特定的高对称路径采样 k 点,而是可以在整个布里渊区均匀地分布 k 点,这就是所说的 “自动撒点”。

撒点方式

  • Monkhorst-Pack 方式 :这是最常用的自动撒点方式。它通过指定一组三个整数(nx, ny, nz),在三个倒易晶格方向上均匀地分布 k 点,形成的网格可以系统地逼近布里渊区的积分。例如,对于简单晶格,若指定 k 点网格为 3×3×3,程序就会按照 Monkhorst-Pack 方式在这三个方向各取 3 个点,生成一个均匀分布的 k 点网格。
  • Gamma 方式 :这种方式会在 k 点网格中包含 Γ 点(布里渊区的中心点)。对于金属等具有高对称性的材料,在 Γ 点附近采样很重要,这时候 Gamma 方式撒点更合适。比如指定 k 点网格为 4×4×4 并采用 Gamma 方式撒点,生成的网格会以 Γ 点为中心,向周围均匀分布其他 k 点。

K 点密度

  • K 点密度指的是在布里渊区单位体积内分布的 k 点数量,它决定了 k 点网格的疏密程度。较高的 K 点密度意味着更精细地采样布里渊区,能够更精确地计算系统的物理性质,但也会增加计算量和资源消耗。
  • 例如,对于一个计算资源充足的大型超算任务,为了获得高精度结果,可以选择较大的 K 点密度,如 8×8×8 甚至更高;而对于初步探索或计算资源有限的情况,可以适当降低 K 点密度,如 4×4×4。

生成KPOINTS的同时,POTCAR也会被自动生成,前提是在vaspkit的配置文件中正确设置了赝势的路径和赝势稳健的种类(默认type为PBE)

Comment and share

从上周三开完组会一直到现在都还没怎么缓过神来,不能再这样下去了😟,得主动出击。早上起来忧心忡忡的,高分子物理没心情上,吃完早饭直接去鼎新馆吧。昨晚大概M$入门了,建模后提交了任务,但是可能INCAR里面参数设置得不够合理,今天下午提交的任务才收敛。尝试想了一些方案但是被师兄否定了,提高电解质中离子电导率的机理也许是清楚的,但是没有一篇明晰的文献手把手教我应该挑选那些元素掺杂来提高离子电导率,也许永远不会吧🥺。Keep on going,再试试吧,多读读文献,也许我现在的困境和英语只有60分的同学所面临的困境相似吧?——都是词汇量不够?

Anyway, Just keep on going! 如果走不出迷堆明天就去请教一下魏老师。

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

Comment and share

歌词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[00:00.60]许美静 - 阳光总在风雨后
[00:01.60]词:陈佳明
[00:02.60]曲:陈佳明
[00:24.34]人生路上甜苦和喜忧
[00:29.24]愿与你分担所有
[00:34.15]难免曾经跌倒和等候
[00:39.30]要勇敢的抬头
[00:43.95]谁愿藏躲在避风的港口
[00:48.85]宁有波涛汹涌的自由
[00:53.91]愿是你心中灯塔的守候
[00:59.22]在迷雾中让你看透
[01:06.93]阳光总在风雨后
[01:11.89]乌云上有晴空
[01:16.84]珍惜所有的感动
[01:21.89]每一份希望在你手中
[01:26.89]阳光总在风雨后
[01:32.00]请相信有彩虹
[01:37.05]风风雨雨都接受
[01:41.81]我一直会在你的左右
[02:11.74]人生路上甜苦和喜忧
[02:16.98]愿与你分担所有
[02:21.35]难免曾经跌倒和等候
[02:26.71]要勇敢地抬头
[02:31.31]谁愿藏躲在避风的港口
[02:36.26]宁有波涛汹涌的自由
[02:41.36]愿是你心中灯塔的守候
[02:46.67]在迷雾中让你看透
[02:54.22]阳光总在风雨后
[02:59.62]乌云上有晴空
[03:04.38]珍惜所有的感动
[03:09.28]每一份希望在你手中
[03:14.43]阳光总在风雨后
[03:19.39]请相信有彩虹
[03:24.54]风风雨雨都接受
[03:29.24]我一直会在你的左右
[03:37.35]阳光总在风雨后
[03:41.95]乌云上有晴空
[03:46.76]珍惜所有的感动
[03:51.71]每一份希望在你手中
[03:56.86]阳光总在风雨后
[04:01.76]请相信有彩虹
[04:06.82]风风雨雨都接受
[04:11.65]我一直会在你的左右
[04:19.63]风风雨雨都接受
[04:24.13]我一直会在你的左右

歌词深度分析

1. 主题与中心思想

这首歌词的核心主题是逆境中的希望与陪伴,强调人生难免经历风雨(挫折与等待),但要坚持信念(“勇敢抬头”),因为光明终将到来(“阳光总在风雨后”)。中心情感是温暖而坚韧的鼓励,既有对个体勇气的呼唤,也有对陪伴力量的歌颂(“我一直会在你的左右”)。内在冲突体现在“避风港的安全”与“波涛汹涌的自由”之间的选择,最终指向成长必须直面挑战的价值观。


2. 情绪氛围与感受

歌词传递的情绪由低沉渐趋昂扬: - 开篇承认人生的“甜苦喜忧”与“跌倒”,带有淡淡的忧郁; - 副歌通过“阳光”“彩虹”等意象转向明亮,情绪升华成坚定与治愈; - 反复的“风风雨雨都接受”强化了坦然接纳苦难的豁达感。整体是哀而不伤、充满力量的基调。


3. 语言风格与用词特色

  • 口语化与诗意结合:如“跌倒和等候”“避风的港口”通俗易懂,但“灯塔的守候”“乌云上有晴空”又充满诗意。
  • 短句为主:增强节奏感和号召力(如“要勇敢的抬头”)。
  • 关键词重复:“阳光”“风雨”“彩虹”形成记忆点,强化主题。

4. 意象与象征意义

  • 风雨/乌云:象征人生困境;阳光/彩虹:象征希望与转机。
  • 灯塔:象征指引与守护,暗喻陪伴者的角色;避风港口:象征安逸但可能停滞的状态。
  • 文化延伸:呼应中国传统文化中“苦尽甘来”的哲学(如“守得云开见月明”),也符合普世励志价值观。

5. 修辞手法分析

  • 比喻:将人生困境比作“风雨”,希望比作“阳光”“彩虹”。
  • 对比:“避风港口”与“波涛汹涌的自由”形成安全与冒险的张力。
  • 排比:副歌重复“阳光总在风雨后…请相信有彩虹”,增强感染力。
  • 拟人化:乌云“上有晴空”,赋予自然现象情感暗示。

6. 节奏与结构

  • 分段清晰:主歌(叙事铺垫)→ 副歌(情感升华)循环三次,结尾重复强调陪伴。
  • 押韵工整:主歌“忧/有”“候/透”,副歌“后/空/动/中”“虹/受/右”,增强音乐性。
  • 重复设计:副歌重复四次,形成洗脑记忆点,符合流行歌曲传播规律。

7. 文化/社会背景

  • 时代共鸣:1990年代末华语乐坛盛行治愈系歌曲,反映经济快速发展下人们对压力释放的需求。
  • 集体心理:歌词中“分担所有”“在你左右”暗合亚洲文化重视人际支持的特点,区别于西方个人英雄主义。
  • 创作者视角:陈佳明擅长细腻情感表达(如为许美静写的《城里的月光》),本词延续了他“温柔鼓励”的风格。

8. 多重解读角度

  • 个人成长视角:鼓励个体直面挫折,强调自我救赎(“勇敢抬头”)。
  • 人际关系视角:突出陪伴的力量(“与你分担”“在你左右”),适合友情、亲情或爱情解读。
  • 社会隐喻视角:风雨可象征时代变迁(如金融危机),阳光则寄托对未来的集体信心。

总结:这首歌词通过简洁有力的语言、鲜明的自然意象和循环递进的结构,成功构建了一个从困境到希望的叙事闭环,兼具文学美感和大众传播性,成为华语励志经典。

Comment and share

歌词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[00:00.43]快乐无罪 - 许美静
[00:01.62]词:许常德/陈佳明
[00:03.13]曲:陈建宁/陈政卿
[00:19.82]你要我快乐
[00:23.76]我非常快乐
[00:27.22]在不想太多的时候
[00:34.32]吻你是烟火 吻后是寂寞
[00:41.32]爱是我犯的差错
[00:49.38]我要你什么 我贪你什么
[00:56.73]在你想消失的时候
[01:04.12]想你是黑洞 它没有尽头
[01:10.72]就算流星也该坠落
[01:17.55]快乐有泪 怎会有泪
[01:21.23]我哭到心碎
[01:25.52]不解幸福会被永恒连累
[01:29.16]不解刹那是你要的美
[01:32.60]快乐有罪 怎会有罪
[01:36.29]我怎么拒绝
[01:40.55]也许到最后你我都反悔
[01:44.21]留下空荡的城市黑夜
[01:47.60]让我撒野
[02:22.36]我要你什么 我贪你什么
[02:29.56]在你想消失的时候
[02:36.93]想你是黑洞 它没有尽头
[02:43.74]就算流星也该坠落
[02:50.47]快乐有泪 怎会有泪
[02:54.10]我哭到心碎
[02:58.48]不解幸福会被永恒连累
[03:02.05]不解刹那是你要的美
[03:05.46]快乐有罪 怎会有罪
[03:09.17]我怎么拒绝
[03:13.44]也许到最后你我都反悔
[03:16.94]留下空荡的城市黑夜 让我撒野
[03:28.09]快乐有泪 怎会有泪
[03:31.54]我哭到心碎
[03:35.86]不解幸福会被永恒连累
[03:39.50]不解刹那是你要的美
[03:42.99]快乐有罪 怎会有罪
[03:46.58]我怎么拒绝
[03:50.86]也许到最后你我都反悔
[03:54.47]留下空荡的城市黑夜
[03:57.90]让我撒野

歌词深度分析

1. 主题与中心思想

这首歌词探讨了爱情中的矛盾与自我欺骗,核心情感是「伪装的快乐」与「真实的痛苦」之间的撕裂感。 - 表面:反复强调“快乐”(“我非常快乐”“快乐有泪/有罪”),实则揭露快乐背后的空虚。 - 内在冲突:渴望爱的永恒与接受爱的短暂(“不解幸福会被永恒连累”),以及自我麻痹(“在不想太多的时候”)与清醒痛苦(“我哭到心碎”)的对抗。

2. 情绪氛围与感受

  • 主调:压抑的忧伤,夹杂自嘲与无力感。
  • 矛盾情绪
    • “吻你是烟火,吻后是寂寞” —— 瞬间炽热与长久孤独的对比。
    • “快乐有泪/有罪” —— 快乐被赋予负面色彩,暗示情感中的自我惩罚倾向。

3. 语言风格与用词特色

  • 诗意化隐喻:用“烟火”“黑洞”“流星”等意象抽象化情感体验。
  • 口语化反问:“怎会有泪”“怎会有罪”增强质问感,像自我对话。
  • 重复与矛盾修辞:通过“快乐”与“泪/罪”的并置,制造语义冲突。

4. 意象与象征意义

  • 烟火:象征爱情的短暂绚烂与毁灭性。
  • 黑洞:比喻思念的吞噬性与无解(“没有尽头”)。
  • 流星:暗指注定陨落的爱情,呼应“刹那的美”。
  • 空荡的城市黑夜:投射内心的荒芜感,同时“撒野”暗示崩溃后的释放。

5. 修辞手法分析

  • 矛盾修辞法:如“快乐有泪”“快乐有罪”,颠覆常规认知。
  • 排比与反复:副歌段落的重复强化无力感,像陷入循环的执念。
  • 拟人化:“幸福被永恒连累”将抽象概念人格化,暗示责任转移。

6. 节奏与结构

  • 分段:主歌叙事(具体情境),副歌抒情(情绪爆发)。
  • 押韵:交替押“ei”“ui”韵(如“泪/罪”“碎/累”),音调压抑。
  • 节奏变化:副歌的短句“怎会有泪”“怎会有罪”加快节奏,模拟急促的控诉。

7. 文化/社会背景

  • 90年代华语流行乐:反映都市情感疏离(“空荡的城市”),契合许美静“都市冷调”风格。
  • 女性视角:歌词中被动性(“你怎么拒绝”)与主动宣泄(“让我撒野”)的拉扯,隐含传统性别角色与自我意识的冲突。

8. 多重解读角度

  • 爱情层面:一段不对等的关系,一方逃避(“你想消失的时候”),另一方自我欺骗。
  • 存在主义层面:对“快乐”本质的质疑——是否只是逃避现实的工具?
  • 社会隐喻:“城市黑夜”可延伸为现代人的集体孤独,爱情成为短暂救赎却加剧虚无。

总结:这首歌词以“快乐”为伪装,揭露爱情中的痛苦本质。通过意象碰撞与矛盾修辞,完成了一场从自我欺骗到崩溃宣泄的情感解剖,最终指向现代人面对爱与孤独的永恒困境。

Comment and share

ENCUT是用来指定平面波基组能量截止值的参数

以上是wiki对ENCUT的描述,POTCAR文件中已经包含了元素的ENMAXENMIN,这也是互联网上对ENCUT的选择方案对通常是1.3倍的ENMAX

侯柱峰老师提供了另外一种方法并指出通过该方法选择的ENCUT通常能满足1.3倍ENMAX,供参考使用

截断能指定了用于波函数展开的平面波基组的截断能量,此能量越大则用来描述波函数的平面波基组越多,精度越高,但计算也越耗时。

可以通过计算测试来选择合适的ENCUT

以下是用于测试的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
rm WAVECAR
for i in 150 200 250 300 350 400
do
cat > INCAR <<!
SYSTEM = Si-Diamond
ENCUT = $i
ISTART = 0 ; ICHARG = 2
ISMEAR = -5
PREC = Accurate
!
echo "ENCUT = $i eV" ; time vasp
E=`grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5 }'`
echo $i $E >>comment
done

计算后会得到comment文件,它列出了在不同ENCUT下计算得到的总能量

1
2
3
4
5
6
150 -11.900655
200 -11.938864
250 -11.944599
300 -11.945248
350 -11.945503
400 -11.945622

==总能量变化在0.001 eV即可==,因此在这个例子中ENCUT可以选择250

Comment and share

John Doe

author.bio


author.job


Changchun, China