Quantum Espresso中PDOS计算与轨道分析全流程详解

【连载】大话系统架构决策 - 灵活性 前言为什么要首先谈灵活性呢?其实是因为博主从事软件行业长久以来,最烦躁的,也是经常听到身边同事抱怨的一句话就是:我靠!天啦撸!需求又变啦!!!其实需求变更就涉及到系统架构的特性(关注点)之灵活性。系统灵活性高,那么任你需求如何变更,我自岿然不动!就像九阳真经中所说的“他强由他强,清风拂山冈。他横任他横,明月照大江。”反之,微末变更也会让我哭爹喊娘,埋头做码畜!既然要谈灵活性,那么我首先来尝试定义下这 阅读详情

做第一性原理计算,能带图和态密度图基本是标配。上一期我们聊了能带计算,这一期把话题转到Quantum Espresso里的PDOS计算与轨道分析。简单说,总态密度只能告诉你某个能量区间里有多少电子态,而PDOS会把这一大坨态拆开,明确告诉你它们分别来自哪个原子、哪种轨道(s、p、d还是f)。这个信息在做催化、半导体、电池材料分析时几乎是刚需,比如判断价带顶是金属d轨道还是氧p轨道主导,吸附前后哪条轨道发生了杂化,都要靠它说话。

适合看这篇内容的朋友分两种:一种是用QE跑过基本SCF,但代码只停留在“跑完能算个总能量”的阶段;另一种是已经在其他软件里画过态密度,想换到QE里把投影流程彻底搞清楚。文章里的命令和输入文件都是可以直接抄作业的,我另外会把我踩过的坑一并写出来,至少在“为什么这么设参数”这件事上,尽量让你看完之后就通透了。

1. 为什么要算PDOS:从总态密度到轨道投影

1.1 总DOS能告诉我们的和不能告诉我们的

态密度(DOS,Density of States)的物理含义很直白:在某个能量附近,单位能量区间内有多少个可占据的电子态。它直接反映了体系的电子结构特征,比如半导体带隙、金属的费米面平台、范霍夫奇点,这些都能从总DOS上看出来。

但总DOS有一个先天短板:它把整个体系所有原子、所有轨道的信息全揉在一起了。你看着总DOS里一个很高的峰,根本不知道它是第几个原子贡献的,更别说是哪种轨道了。以前有朋友拿总DOS的峰位去硬套文献里的轨道归属,套了半天对不上,后来用PDOS一算才发现,原来那个峰主要是表面原子贡献的,体相原子根本没有参与。这就是总DOS在“归属问题”上的局限性。

PDOS,全称Projected Density of States,也就是投影态密度,正好解决这个归属问题。它的处理方式是对每个本征态按原子位置和角动量做投影,然后看每个投影分量的态密度分布。这样你就能得到“第1个Mo原子的d轨道态密度”“第2个S原子的p轨道态密度”,每一层都拆得明明白白。

1.2 PDOS的物理图像:把“乐手”单独拎出来

用一个生活化的类比来理解PDOS:总DOS就像一场演出的现场录音,听起来很热闹,但你分不清吉他和贝斯各自弹了些什么;PDOS则相当于给每个乐手单独开了一个音轨,想听哪个就调哪个。你要判断这首歌的灵魂是吉他的扫弦还是键盘的铺底,直接切对应音轨就行。

在代码层面,PDOS的计算基于一个简单的投影权重:

[ P_{\alpha,l,m}(E) = \sum_{n} \int_{BZ} d\mathbf{k} \left|\langle \phi_{\alpha,l,m} | \psi_{n\mathbf{k}} \rangle\right|^2 \delta(E - \varepsilon_{n\mathbf{k}}) ]

通俗解释一下:(|\psi_{n\mathbf{k}}\rangle)是第(n)条带在(\mathbf{k})点的本征态,(|\phi_{\alpha,l,m}\rangle)是以第(\alpha)个原子为中心的投影基函数(带角动量(l)和磁量子数(m))。括号里的投影权重越大,说明这个本征态越像该原子的那条轨道。把所有本征态的贡献按能量排开,就得到了对应轨道的PDOS。

实际操作中,我们不会逐个态去手算这个权重,Quantum Espresso里的 projwfc.x 就是专门干这个的。它读入nscf步骤产生的波函数,完成投影,再按能量统计,输出一系列文本文件。画图的时候把这些文件拉出来,该填色填色,该叠加叠加,一张可以放进论文的PDOS图就出来了。

1.3 工具链梳理:pw.x 与 projwfc.x 的分工

在Quantum Espresso里做PDOS,标准流程是三步:先用 pw.x 做SCF自洽得到电荷密度,然后用 pw.x 做一次nscf计算,在一个更密的k网格上展开波函数,最后用 projwfc.x 读取nscf的波函数做轨道投影。如果想把同一元素不同原子的贡献合并,还需要用到 projwfc.x 家族的后处理工具 sumpdos.x 。

我见到不少第一次上手的人会问:为什么不能直接拿SCF的结果算PDOS?为什么非得再跑一次nscf?这个问题很关键,下一节专门解释。

另外说一下工具对比。用过VASP的人可能知道,VASP里看PDOS需要LORBIT和ISMEAR配合,然后从 DOSCAR 里自己解析轨道分量。QE的做法其实更灵活, projwfc.x 直接给出原子-角动量-磁量子数逐层分解的文件,还能配合 filproj 输出投影矩阵供后续Wannier或fatband分析使用。缺点是有一定的学习成本,文件多,命名规则需要适应。这篇文章后面会把这些文件规则捋清楚。

2. 计算思路拆解:SCF之后为什么还要多算一次nscf

2.1 SCF自洽只是入场券

很多教程会把PDOS的输入文件直接丢给你,但不说为什么。我先把这个关键问题讲透:SCF自洽计算的核心目标是让电荷密度自洽收敛,它只需要保证总能量和电荷密度达到精度要求就行,所以k点网格通常不会开得特别密。对于大部分体系,一个中等密度的k网格就能让总能量收敛得很好。

但态密度是k空间分布的统计结果,它对k点采样的密度非常敏感。打个比方,SCF的k网格像是在地图上每隔10公里设一个观测站,总能量这种“大尺度平均量”用这些站点就能估出来;而DOS需要画出能量区间的细节,10公里一个站点太稀了,山谷和山峰可能直接被漏掉。所以必须在nscf步骤里把k网格加密,通常比SCF加密一倍甚至更多,这样态密度曲线才会平滑、可靠。

nscf和scf的区别在于:nscf不再自洽迭代,它利用SCF已经收敛的电荷密度,固定住这个势场,只在一个新的k点网格上重新求解Kohn-Sham方程,得到本征值与本征函数。由于不需要反复迭代,即使k点数增加很多,计算代价也可控。这步就是为PDOS和能带计算提供“高质量波函数库”的。

2.2 nscf的输入文件与关键参数

直接给一个我在MoS2单层上常用的nscf输入文件,细节我逐条解释。MoS2是典型的二维半导体,价带顶主要包含Mo 4d和S 3p成分,导带底几乎被Mo 4d主导,用来演示轨道分析非常经典。整个体系3个原子,计算量不大,适合拿来跑通全流程。

&CONTROL
   calculation = 'nscf'
   prefix      = 'mos2'
   outdir      = './out'
   pseudo_dir  = './pseudo'
/
&SYSTEM
   ibrav       = 0
   nat         = 3
   ntyp        = 2
   ecutwfc     = 60
   ecutrho     = 480
   occupations = 'tetrahedra'
   nbnd        = 40
/
&ELECTRONS
   conv_thr    = 1.0d-8
/
ATOMIC_SPECIES
Mo 95.94 Mo.pbesol-spn-rrkjus_psl.1.0.0.UPF
S  32.06  S.pbesol-n-rrkjus_psl.1.0.0.UPF
CELL_PARAMETERS (angstrom)
  3.180000   0.000000   0.000000
 -1.590000   2.754000   0.000000
  0.000000   0.000000  15.000000
ATOMIC_POSITIONS (crystal)
Mo  0.000000  0.000000  0.000000
S   0.333333  0.666667  0.105000
S   0.666667  0.333333 -0.105000
K_POINTS (automatic)
24 24 1 0 0 0

几个重点说一下。

第一, calculation = 'nscf' ,这是最核心的一行,告诉pw.x不要做自洽迭代,直接用已有的电荷密度去解本征问题。运行这个输入文件之前,必须先在同一 outdir 下跑完SCF,否则它会报错找不到电荷密度文件。

第二, occupations = 'tetrahedra' 。这一步是让态密度更平滑的关键。QE使用四面体方法对布里渊区积分做处理,能有效避免直接把离散k点上的态用高斯函数涂抹带来的误差。如果体系是金属,SCF阶段通常用 smearing ,nscf阶段也推荐用 tetrahedra 或保持 smearing ,具体看你想在DOS里保留多大的展宽控制权。但要提醒一句: tetrahedra 要求k点网格是完整的、规则分布的,自动生成的Monkhorst-Pack网格没问题。

第三, nbnd = 40 。这个参数经常有人忽略。QE默认的能带数只保证覆盖占据态再加一点空带,但PDOS要看的能量范围可能远高于费米能级,尤其是想看导带较高区域的轨道成分时,默认的 nbnd 根本不够。一个粗略的经验是:先看SCF输出的最高占据带序号,然后在此基础上增加10到20条空带。我这里设40,是给MoS2留了比较充足的导带空间。

第四,k点网格。SCF阶段我用的是 12 12 1 ,这里改成 24 24 1 ,相当于在二维布里渊区每个方向加密了一倍。如果发现PDOS曲线还是带毛刺,可以继续加到 36 36 1 或者更密。二维材料只需要一个k点沿z方向,因为z方向被真空层隔开,色散很小。

2.3 赝势、prefix与outdir的一致性

这一小节看起来是“常识”,但我在各种教学场合见过太多人栽在这里,所以值得单独强调:nscf和scf的输入文件里, prefix 、 outdir 、赝势文件、 ecutwfc 、 ecutrho 、晶格参数、原子坐标,必须完全一致。

prefix 如果写错了,pw.x会去另一个前缀的文件目录里找电荷密度,结果必然是找不到。 outdir 如果不同,比如一个写 ./out 一个写 ./tmp ,也一样抓瞎。赝势不一致更隐蔽,SCF用A赝势,nscf换成了B赝势,程序通常不会立刻报错,但算出来的波函数和电荷密度根本不是同一个体系,出来的PDOS就是张冠李戴。

还有一个容易踩的坑是:如果体系有磁性(比如自旋极化计算),nscf里 nspin 的设置要和SCF保持一致。SCF里开了 nspin = 2 ,nscf里忘记写,程序会按非磁处理,报错或者结果完全不对。

这里多说一句,虽然我给的示例是在本机用串行或单节点mpi运行,但实际生产环境通常需要并行。命令格式一般是 mpirun -np 16 pw.x -in nscf.in > nscf.out 。并行跑的时候要注意QE对不同k点的并行划分,只要输入文件没问题,这部分很少出幺蛾子。

3. projwfc.x实操:从命令到输出文件

3.1 一个可以直接用的projwfc输入文件

SCF和nscf都跑完之后,进入今天的主角: projwfc.x 。它的输入文件比pw.x简洁得多,最核心的内容是告诉它波函数放在哪、要投影哪些能量范围、用什么展宽方式。下面是我在MoS2例子上用的文件。

&PROJWFC
   prefix   = 'mos2'
   outdir   = './out'
   filpdos  = 'mos2_pdos'
   Emin     = -20.0
   Emax     = 10.0
   DeltaE   = 0.05
   ngauss   = 0
   degauss  = 0.02
/

运行命令一行就够:

mpirun -np 4 projwfc.x -in projwfc.in > projwfc.out

参数逐个解释。

prefix 和 outdir 不用多说,和nscf保持一致就好。 filpdos 是输出文件的前缀,我习惯写成 mos2_pdos ,这样后面生成的所有文件都带这个前缀,方便管理。

Emin 和 Emax 是能量窗口,单位是电子伏特。这里我设成-20到10 eV,意思是只计算费米能级以下20 eV到以上10 eV这个范围内的投影态密度。为什么要设这个窗口?因为PDOS文件是逐能量点输出的,范围越大,计算量和文件体积越大。如果你只关心价带顶和导带底附近的轨道成分,窗口可以再收窄,比如-5到5 eV。

DeltaE = 0.05 是能量步长,单位也是eV。这个值决定最后曲线的分辨率,0.05 eV已经比较细腻,画出来的图足够写论文。如果你只是快速看一眼趋势,用0.1 eV也行,文件会小一半。

degauss = 0.02 是高斯展宽宽度,注意单位是Ry。0.02 Ry大约等于0.27 eV,这个展宽能把离散能级抹成比较光滑的曲线。如果是金属体系或者k点不够密,可以适当加大到0.03甚至0.05 Ry,代价是峰会被压扁,细节丢失。 ngauss = 0 表示使用普通高斯展宽函数。对大多数体系,这个配置比较稳。

运行结束后, projwfc.out 尾部会有一段统计信息,告诉你总共有多少个能级被投影、每个原子每种角动量的投影总和是多少。其中有个指标值得看一眼:每个原子上各角动量投影之和,应该大致等于该原子的价电子数。如果偏差很大,说明投影半径、赝势或者k点可能有问题。

3.2 输出文件里的每一列是谁

跑完 projwfc.x 之后,目录下会冒出一堆文件,命名规则大致是这样的:

mos2_pdos_tot.dat
mos2_pdos_atm#1(Mo)_wfc#1(s).dat
mos2_pdos_atm#1(Mo)_wfc#2(p).dat
mos2_pdos_atm#1(Mo)_wfc#3(d).dat
mos2_pdos_atm#1(Mo)_wfc#4(f).dat
mos2_pdos_atm#2(S)_wfc#1(s).dat
mos2_pdos_atm#2(S)_wfc#2(p).dat
mos2_pdos_atm#2(S)_wfc#3(d).dat
...

用户名里面的 wfc#1 到 wfc#4 ,分别对应s、p、d、f这条角动量通道。每个原子都会生成这么一组文件,和原子在输入文件里的出现顺序一一对应。文件名里括号中的元素符号是代码帮你标注的,非常贴心。

打开一个文件看,比如Mo的d轨道投影文件 mos2_pdos_atm#1(Mo)_wfc#3(d).dat ,头部注释会写明每一列的含义,大致长这样:

# E (eV)    l=2 m=-2    l=2 m=-1    l=2 m=0    l=2 m=1    l=2 m=2
-20.0000   0.1234E-03  0.5678E-03  ...

第一列是能量,后面的列是同一个角动量通道下不同磁量子数m分量的投影态密度。也就是说,对每个原子,d轨道被进一步拆成了(d_{xy})、(d_{yz})、(d_{z^2})、(d_{xz})、(d_{x^2-y^2})这几个分量,具体对应关系在注释行里写得很清楚。

这里有个常见疑惑:如果我想画“Mo的d轨道总PDOS”,是不是直接用这个文件就行?不行。这个文件里的5个m分量是分开的列,你需要先把它们加起来。好在很多绘图脚本都支持直接按列求和,后面我给出一个现成的Python脚本。

mos2_pdos_tot.dat 是总态密度文件,第一列能量,第二列总DOS(如果是自旋极化,还会有第三列,对应另一个自旋方向)。注意:各原子PDOS加起来的和,并不严格等于总DOS,因为projwfc的投影只计算了原子球(Muffin-tin球内)的部分,间隙区域的电子态没有分配到任何原子头上。这个差异是正常的,不要拿它当错误去排查半天。

3.3 用sumpdos.x把同元素轨道累加

如果你的体系里某种元素有多个不等价原子,比如表面和体相的原子,直接看单个原子上某条轨道的PDOS可能看不出整体规律。这时候可以用 sumpdos.x 把多个原子的同一角动量通道合并起来,输出成一个文件。

下面是一个合并Mo所有s轨道和所有d轨道的输入示例(不同版本输入格式略有差异,以你安装目录下 Doc/INPUT_SUMPDOS.html 里的模板为准):

&DOS
   Emin   = -20.0
   Emax   = 10.0
   DeltaE = 0.05
   ngauss = 0
   degauss = 0.02
/
2
1 1
3 3

解释一下:分段里设置的能量范围和展宽参数需要与projwfc一致,然后是合并数量2,下面两行分别表示“原子1的wfc#1(s通道)”和“原子3的wfc#3(d通道)”。在MoS2例子里,如果Mo是第1个原子,这个配置就是合并Mo的s轨道和d轨道,输出文件的格式和单独原子的一样,画图直接用。

实际用的时候,最常见的需求其实是把同一个元素所有原子的同一条轨道全部合并,比如把两个S原子的p轨道合并成“S-p”。那就把两个S原子的p通道都列进去,数量改成2,画出来就是整个S元素的p轨道贡献。

3.4 画一张能放进论文的PDOS图

PDOS画图我习惯直接用Python + matplotlib,读文本文件、按列求和、填色,一套组合拳下来非常顺手。下面这段脚本可以直接改着用:

import numpy as np
import matplotlib.pyplot as plt

def read_pdos(filename, ef=0.0):
    data = np.loadtxt(filename, comments='#')
    energy = data[:, 0] - ef
    dos = np.sum(data[:, 1:], axis=1)
    return energy, dos

ef = 0.0  # projwfc默认以费米能级为零点,这里直接用

e_mo_d, dos_mo_d = read_pdos('mos2_pdos_atm#1(Mo)_wfc#3(d).dat', ef)
e_s_p, dos_s_p = read_pdos('mos2_pdos_atm#2(S)_wfc#2(p).dat', ef)

plt.figure(figsize=(6, 4))
plt.plot(e_mo_d, dos_mo_d, label='Mo-d', color='crimson')
plt.fill_between(e_mo_d, dos_mo_d, color='crimson', alpha=0.3)
plt.plot(e_s_p, dos_s_p, label='S-p', color='steelblue')
plt.fill_between(e_s_p, dos_s_p, color='steelblue', alpha=0.3)
plt.axvline(0, color='black', ls='--', lw=0.8)
plt.xlabel('E - E_F (eV)')
plt.ylabel('PDOS (states/eV)')
plt.legend()
plt.xlim(-10, 5)
plt.tight_layout()
plt.savefig('pdos_mos2.png', dpi=300)

注意脚本里的 np.sum(data[:, 1:], axis=1) ,它把同一原子同一角动量下所有m分量求和了,得到的就是该角动量的总PDOS。如果你只想画某个特定的(d_{z^2})分量,就单独取那一列,不需要求和。

如果系统是自旋极化,文件里会有自旋上、自旋下两套数据,画图时通常一个画在上半部分、一个画在下半部分,或者用两条曲线区分。具体要看你的体系是否需要。

只画PDOS曲线还不够,我强烈建议把费米能级对齐检查一下。projwfc的输出默认已经把能量零点放在费米能级上,所以横轴在0附近就是费米能级的参考位置。但如果用了 sumpdos.x 合并,它不会自动帮你搬移零点,需要在脚本里手动减掉费米能量。费米能级本身可以从nscf输出文件里找,搜 Fermi 关键字即可。

4. 轨道分析:从数值到结论

4.1 看带边:MoS2的Mo-d与S-p杂化

拿到PDOS图之后,最关键的动作是“读图”。以MoS2为例,价带顶和导带底的轨道成分,直接决定了它的载流子输运特性和催化活性。

如果你把Mo-d和S-p两条PDOS曲线画在同一张图上,会看到几个非常典型的特征:价带顶附近Mo-d和S-p都有明显峰,而且在同一个能量区间内重叠;导带底几乎只有Mo-d的峰,S-p的贡献非常弱。这说明什么?说明MoS2的价带顶是Mo 4d和S 3p杂化形成的成键态,而导带底是以Mo 4d为主的反键态。

这个结论对应到物理图像上就是:光激发一个电子从价带到导带,本质上是在把电子从成键态转移到以金属d轨道为主的反键态,整个过程中硫的p轨道成分会发生变化。这也是为什么MoS2这类过渡金属硫化物在催化析氢反应中表现出色,因为S-p和Mo-d的杂化直接影响了表面活性位点的电子结构。

读PDOS时有一个小技巧:不要只盯着峰所在的能量位置,还要看看带宽。如果某条轨道在很宽的能量范围内都有分布,说明它和周围原子的轨道杂化得很厉害,电子比较“离域”。如果PDOS在某个能量区间出现又尖又窄的峰,说明这条轨道非常局域,类似原子能级,通常对应孤对电子或者弱相互作用的芯态区域。

4.2 PDOS与能带联动的分析习惯

PDOS单独看能说明“哪些轨道在哪些能量上有贡献”,但要说清楚一条能带是由哪种轨道组成的,最好把PDOS和能带图放在一起看。

具体操作上,先把能带计算跑出来(能带计算本身需要单独一次nscf,沿高对称路径设k点),然后把能带图的能量轴和PDOS图的能量轴对齐,通常以费米能级为0。看某一条能带在VBM处色散很平缓,对应到PDOS里是一个局域峰,说明这条带主要由某条局域轨道构成;如果某条带色散很大、带宽几个eV,对应PDOS里是一条很宽的分布,说明这条带是杂化离域带。

这里有一个通用的分析框架:把PDOS的最高占据峰和能带图的价带顶对齐,把最低空峰和导带底对齐,然后逐个能量区间比较轨道成分。比如你看到一个能量区间里同时有Fe-d和O-p的峰,而且位置基本重合,就可以初步判断Fe 3d和O 2p在发生杂化。如果再结合晶体场理论,还能进一步判断是σ型杂化还是π型杂化,这部分内容如果展开会写成长文,这里先点到为止。

4.3 投影权重的定量化使用

PDOS不只是用来“看图说话”,投影权重本身也可以做定量的分析。一个比较常用的量化方式是积分特定能量区间的PDOS,看看某种轨道在这个窗口里的相对占比。举个例子,你想知道MoS2价带项下面2 eV范围内,Mo-d和S-p各占多少贡献,可以这样算:

mask = (e_mo_d >= -2.0) & (e_mo_d <= 0.0)
area_mo_d = np.trapz(dos_mo_d[mask], e_mo_d[mask])
area_s_p = np.trapz(dos_s_p[mask], e_s_p[mask])
print('Mo-d contribution:', area_mo_d / (area_mo_d + area_s_p))

这个数值可以直接写进文章里,作为“Mo-d与S-p杂化强度”的一个直观指标。不过要提醒一句,QE的projwfc投影是在原子球内做的,球外电子态没有分配,所以这个占比是半定量的,适合同一个体系内部的对比。比如比较不同吸附构型、不同掺杂位置之间的轨道变化,同一套参数下比值是有参考意义的。

另外, projwfc.x 还支持输出 filproj ,把每个本征态的投影权重保存下来。这个文件是后面Wannier90计算或者fatband投影能带图的重要输入。如果你想画那种“能带上某一段加粗表示d轨道贡献大”的fatband图,数据基础就在这里,这一步很多教程都是另外开一篇讲的,这里提一下你至少知道有这么个出口。

5. 常见问题与排查技巧实录

5.1 报错速查表

我把实际使用中遇到最多的报错和问题整理成了一张表,建议收藏。

现象 常见原因 解决办法
projwfc.x报错找不到电荷密度或波函数 outdir或prefix与nscf不一致,或者nscf没跑 检查输入文件,确保与nscf完全一致,先跑nscf
projwfc.x输出文件全部为空或只有0 能量窗口设置不当,Emin/Emax没有覆盖实际占据区间 放宽窗口,比如从-30到20 eV试一次
PDOS曲线大量锯齿、尖刺 k点太少,或degauss太小 增加nscf的k点密度,适当加大degauss
不同原子PDOS相加不等于总DOS 属于正常现象,球间电子未分配 不用处理,理解即可
自旋极化体系只出来一套数据 nscf中忘了设置nspin=2,或projwfc用的文件不是磁性体系的 回nscf输入,补上nspin,重新跑
费米能级位置和文献对不上 不同代码/不同版本零点定义不同 统一从nscf输出中读取费米能级,用于对齐

这几类问题里,第二类比较容易被忽视。 projwfc.x 不会因为你把Emin设得太靠近费米能级而报错,它只会默默输出一堆0,或者整条曲线都是平的。所以如果刚跑完发现PDOS全是零,第一时间去检查能量窗口。

5.2 PDOS太锯齿怎么办

锯齿是所有算态密度的人都会遇到的事。原因不外乎两个:k点采样不够密,或者展宽太小。

先说k点。态密度本质上是对布里渊区大量k点本征值的统计,k点太少,本征值就只是离散的一串点,展宽成曲线后自然处处是尖刺。解决办法很简单:把nscf的k网格加密。从 12 12 1 改成 24 24 1 如果还不够,继续往上加。二维材料因为z方向不需要密k点,所以加x-y方向的点基本不心疼时间。

再说展宽。 degauss 设置得太小,等同于把每个离散能级用很细的针状高斯去涂抹,结果当然不光滑。建议先从0.02 Ry起步,如果锯齿还是明显,可以尝试0.03或0.05 Ry。但要注意平衡:展宽越大,峰会被压得越矮,本该分开的两个峰可能被抹成一个。我一般的策略是:先固定k点在比较密的程度,然后调节degauss,直到曲线看起来光滑且保留关键峰型。

另一个不太常提的细节是 DeltaE 。如果能量步长设得太大,比如0.2 eV,即使DOS本身很光滑,采样点太少也会造成视觉上的“折线感”。想要精致一点的图,直接降到0.02到0.05之间。

5.3 费米能级对齐

做材料计算的人应该都吃过费米能级对不齐的亏。不同代码、不同版本、不同软件包里,能带图和DOS图横轴的零点定义可能不一样。QE的projwfc.x输出时默认会把能量零点设在费米能级上,但你用 sumpdos.x 合并之后,文件里的能量可能就变成绝对能量了。

稳妥做法是:每次画图前,都从nscf的输出文件里把费米能级抓出来。命令可以这样:

grep "Fermi" nscf.out

然后把你导入脚本的能量列减去这个值。这样即使你换了QE版本,输出文件格式有了变化,画图逻辑也不会崩。

对于半导体和绝缘体,费米能级严格来说应该在带隙中间,scf输出的费米能级在半导体体系里会有一点点不确定性,这会导致你画的图零点略有偏移。这种情况下,建议用价带顶作为参考零点,而不是程序输出的费米能级。具体做法是:先看总DOS或能带图确定VBM位置,再统一平移。

5.4 关于投影方法的几个提醒

用projwfc的PDOS,有一些默认前提需要心里有数。

projwfc的投影是在以原子为中心的球形区域里做的,球的半径由赝势或代码内部设定,而不是随便给一个值。这意味着,如果你关注的轨道在原子间有很大延展,比如某些共价体系的成键态,投影权重会有一部分落在球外没被算上,导致PDOS夸大了局域特征。这是投影方法的物理限制,不是QE的bug。

另外,PDOS曲线非常依赖赝势。不同赝势对“价电子”的定义不同,比如有的Mo赝势把4p半芯态算进价电子,有的不算。这会导致你在PDOS的低能区域看到完全不同的峰。所以做横向对比的时候,比如对比文献里的PDOS,一定确认对方用的赝势和能量范围。

最后,projwfc的投影权重本身没有唯一的标准定义,它是把平面波本征函数往原子轨道基函数上投影的结果。不同软件采用不同的投影基组,画出来的PDOS曲线形状可能有细节差异。所以PDOS更适合用来看趋势、看相对变化,而不是抠某个具体数值的绝对值。

5.5 我踩过的几个坑

第一个坑是跑完projwfc之后发现 pdos_atm#1(Mo)_wfc#3(d).dat 里前几列全为0,只剩高能区有一点数。查了半天发现是nscf里的 nbnd 设得太少,导带空带不够,高能区域的态压根没被算出来。把 nbnd 从24加到40再跑,曲线马上正常。从那以后我养成一个习惯:只要算PDOS,nscf的 nbnd 一定会在默认值基础上再加15到20条空带。

第二个坑是二维材料没加够真空层就跑去算PDOS。当时我只给了10 Å真空,PDOS的形状倒也算得出来,但导带底附近有明显的层间人为色散,多出来的虚假峰误导了我好几天。后来把真空层加到15 Å以上,再重新跑nscf和projwfc,问题消失。做二维体系的朋友,这个参数一定要重视。

第三个坑是使用 sumpdos.x 时没有确认版本差异。我手头有两个QE版本,一个接受的输入格式是 &DOS 分段,另一个则需要固定顺序读取数字,结果用旧模板套新版本,直接报错。后来每次用之前都先去查一下 Doc/INPUT_SUMPDOS.html ,把版本差异避开,就再没出过这种问题。

最后再分享一个实操习惯

前面把PDOS的计算流程和轨道分析讲得差不多了,最后分享一个我用了很久的习惯:每到一个新体系,我不会着急把 degauss 调到很光滑,而是故意先用偏小的展宽和偏密的k点跑一次,看原始数据里有哪些窄峰。这些窄峰往往是某个原子局域轨道的指纹,比如过渡金属的d-d跃迁峰、分子轨道的孤对电子峰。等我知道哪些峰真实存在之后,再调大展宽画正式图片。这样既不会因为展宽太大丢掉真实细节,也不会因为数据太锯齿而误判峰位。

在Quantum Espresso里做PDOS计算本身并不难,难点在于理解每一步设置背后的原因,以及会读输出文件。掌握这套流程后,你会发现从总DOS到轨道分解,其实就是多跑一次nscf、多运行一回projwfc的事。后面如果再碰到复杂体系,比如异质结、掺杂表面、磁性材料,这套流程基本不用改,换一下输入文件和赝势就能直接套用。

Quantum Espresso Hands-On实战训练(四)——PDOS计算与轨道分析 本文详细介绍了Quantum Espresso中PDOS计算与轨道分析的实战方法,重点解析了PDOS在材料电子结构研究中的核心价值,包括原子级分辨率、轨道级解析和自旋极化分析。通过具体案例和操作步骤,帮助读者掌握从输入文件准备到结果解读的全流程,并提供了高级分析技巧和疑难问题解决方案。 阅读详情

相关推荐

Quantum Espresso中DOS计算的常见问题与解决方案:从初学者到进阶

本文深入解析了在Quantum Espresso中进行态密度计算时,从基础流程到高级调优的常见问题与解决方案。针对DOS图失真、计算效率低下等高频痛点,文章系统性地提供了从SCF收敛、NSCF参数设置、展宽方法选择到投影态密度分析和性能优化的实战指南,帮助用户从原理上理解并掌控DOS计算,获得精确可靠的物理结果。

jupi8的博客 581

程序的灵活性与可扩展性

灵活性和可扩展性通常成对出现。程序的模型越是抽象,越要求灵活性和可扩展性。客户在需求描述的初始阶段往往对自己的业务模型并不熟悉。客户不是数学家和计算机专家,他们对自己的需求很难抽象出一个精确的模型来,这使得他们只能给出一个模糊的抽象的业务模型。拙劣的程序员往往将用户给的模糊模型根据自己的理解后,定义出一个自己认为准确和精确的模型。在软件提交后,用户就会往往发现这不是我所要,或者是我要的,但只是其中

嘿 2万+

Quantum Espresso Hands-On实战训练(七)——Fatband能带分析进阶技巧

本文深入探讨了Quantum Espresso中Fatband(投影能带)分析的进阶技巧。针对复杂材料体系,详细解析了projwfc.x关键参数(如degauss、lsym)的优化设置,并提供了处理磁性材料、自旋轨道耦合及异质结等场景的实用策略。通过结合DFTtoolbox进行高效绘图与高级定制,旨在帮助研究者绘制出更精确、更清晰的能带图,从而深入揭示材料的电子结构特性。

metal的博客 457

第七章 软件配置管理

本章内容提要软件配置管理的作用软件配置管理的相关概念建立软件配置管理环境版本控制系统集成分支管理变更管理配置审计和配置状态报告配置管理过程软件配置管理工具第一节  软件配置管理的作用星形网拓扑结构不同程序员对程序的更改会产生冲突软件项目中可能遇到如下的问题:找不到某个文件的历史版本;开发人员使用错误的程序版本;开发人员未经授权修改代码或文档;人员流动,交接工作不彻底;无法重新编译软件的某个历史版本...

yongchaocsdn的博客 3万+

Quantum Espresso DOS计算全流程详解:从输入文件到可视化分析(附Si案例)

本文详细解析了使用Quantum Espresso进行态密度(DOS)计算的全流程,包括自洽场计算、非自洽计算与后处理三个核心步骤。以硅晶体为例,深入剖析了输入文件的关键参数配置、常见问题排查以及利用gnuplot进行可视化分析的方法,旨在帮助研究者不仅掌握操作,更能理解DOS背后的物理意义,并将其应用于复杂材料的电子结构分析。

weixin_29234509的博客 99

VASP+LOBSTER绘制COHP与PDOS合并图:从原理到实践

在材料计算与电子结构分析领域,投影态密度(PDOS)和晶体轨道哈密顿布居(COHP)是揭示化学键本质的核心工具。PDOS描述了特定原子轨道在能量空间的电子态分布,回答了“电子态在哪里”的问题;而COHP则进一步量化了原子轨道间的成键与反键相互作用强度,揭示了化学键的能量贡献。将两者结合绘制合并图,能在同一能量坐标下直观建立“轨道分布”与“成键强度”的关联,从而在电子层面深入理解材料的稳定性、导电性及磁性等性质。这一技术对于分析过渡金属化合物、二维材料及异质结界面的成键机制具有关键价值。本文以VASP结合LO

duiker 584

软件的灵活性来自哪里?

灵活的软件,可以更好的适应用户的需求。什么样的软件才是灵活的?一旦用户提出灵活性方面的需求,设计者经常想到的一个对策是:增加配置。在不同的业务环节上增加功能配置,哪里需要灵活性,就把配置写到哪里。配置为软件系统提供了无数个可能——这就是灵活性。但是配置经常复杂无比,失去控制。很多配置项目已经失去了业务意义,完全成为一种数学意义上的排列组合。按照一些配置的路线,业务无法形成闭环流程,走进死胡同。这样...

929

COHP与PDOS合并图绘制:从数据到化学键的深度分析

在计算材料科学与量子化学领域,电子结构分析是理解材料性质的核心。投影态密度(PDOS)能够揭示特定原子轨道对电子态的贡献,而晶体轨道哈密顿布居(COHP)则提供了原子间成键强弱的定量描述。将这两种分析技术结合,绘制在同一张图上,能够实现轨道成分与成键信息的空间对齐与关联解读,从而深入揭示电荷转移、轨道杂化等微观机制。这种合并图在分析二维材料层间耦合、催化活性位点电子结构以及拓扑材料能带等场景中具有重要价值。本文以LOBSTER程序与Python可视化工具链为基础,详细解析了从数据处理、参数调整到图表美化的全

duiker 474

软件架构:可控的灵活性

在软件开发中,我们对于软件架构经常看到极端:要么不重视软件架构,要么过分重视以至于她成了“天条”。我甚至遇到了这样的事情:某公司强制推行某基于Struts的架构设计,然而到了项目组它却处处遭到抵制,特别是分部基本上抛弃了这个架构设计。那么,这个原因在哪里呢?为什么一个成本高昂的架构设计没有被接纳呢?  实际上有时候一个良好的设计也未必会被接纳,特别是没有Java开发实际经验甚至缺乏软件开发经验

xiayule的专栏 1376

COHP与PDOS合并图绘制指南:从数据对齐到出版级可视化

在计算材料学与量子化学研究中,电子结构分析是理解材料性质的核心。投影态密度(PDOS)揭示了特定原子轨道的电子分布,而晶体轨道哈密顿布居(COHP)则量化了原子间相互作用的成键与反键特性。将这两种分析技术结合,绘制COHP与PDOS合并图,能够直观地在同一能量坐标下关联轨道成分与化学键特性,从而深入揭示催化活性、电池材料氧化还原等微观机制的技术价值。本文聚焦于解决绘制过程中的关键工程实践问题,如VASP与Lobster软件输出数据的能量对齐、坐标轴设置以及使用Origin或Python Matplotlib

duiker 505

El Agente Sólido:基于Quantum ESPRESSO的自动化第一性原理计算工作流框架

密度泛函理论(DFT)是计算材料科学和凝聚态物理领域的核心方法,用于预测材料的电子结构、力学和热学性质。其原理基于求解多电子体系的薛定谔方程,通过电子密度泛函近似将复杂的多体问题转化为可计算的形式。该技术的价值在于能够从量子力学第一性原理出发,无需经验参数即可模拟材料的宏观性质,极大地加速了新材料的发现与设计。在实际应用中,DFT计算通常涉及复杂的流程,包括结构构建、参数设置、任务提交和后处理分析,这要求研究者具备扎实的理论基础和熟练的软件操作技能。为了提升计算效率和可复现性,自动化工作流框架应运而生。本文

weixin_33978044的博客 497

Quantum Espresso中PDOS投影态密度计算全解析:从scf到projwfc

态密度是描述电子在能量空间中分布的核心物理量,而投影态密度(Projected Density of States,PDOS)进一步将电子态拆解到各原子轨道,是分析轨道杂化、磁性来源与电荷转移的利器。第一性原理计算中,PDOS通过将Kohn-Sham波函数投影到原子球谐函数上实现,能够直观揭示费米能级附近的轨道贡献。该技术广泛应用于氧化物、二维材料及催化剂表面吸附等体系,为能带结构与电荷密度分析提供证据链。在实际操作中,基于Quantum Espresso的PDOS计算需依次完成自洽场计算、非自洽计算及轨道

weixin_33965305的博客 388

材料仿真软件:Quantum Espresso_(6).输出文件解析与结果分析

包含了分子动力学模拟的结果数据,可以用于分析材料在不同时间步的状态。:这是Quantum Espresso计算的主要输出文件,包含了计算过程中的详细信息和最终结果。) 包含了特定原子或轨道的态密度数据,可以用于分析材料的电子结构。) 包含了计算得到的波函数数据,通常用于进一步的后处理分析,如能带结构计算。) 包含了材料的电子态密度数据,可以用于分析材料的电子结构。) 包含了计算得到的电荷密度数据,可以用于分析电荷分布和进一步的计算。) 包含了材料的能带结构数据,可以用于绘制能带图。

kkchenjj的博客 1199

Quantum ESPRESSO 终极指南:掌握开源电子结构计算的强大工具

Quantum ESPRESSO是一款功能强大的开源电子结构计算软件套件,专为材料科学和凝聚态物理研究设计。这个完整的工具包能够进行从第一性原理出发的纳米尺度材料模拟,帮助科研人员深入理解材料的电子性质。✨ ## 什么是Quantum ESPRESSO? Quantum ESPRESSO(简称QE)是一个基于密度泛函理论(DFT)的开源软件套件,用于进行电子结构计算和材料建模。它采用平面波赝势

gitblog_00741的博客 873

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 256

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3893

Quantum ESPRESSO终极指南:免费开源材料模拟从入门到精通

还在为复杂的材料计算软件而烦恼吗?想要快速上手专业的电子结构模拟却不知从何开始?Quantum ESPRESSO作为开源材料计算领域的标杆工具,其实比你想象的更易用、更强大。本文将为你揭示如何从零开始掌握这个免费的计算平台,无需深厚的编程背景,就能开展专业的材料科学研究。 ## 为什么选择Quantum ESPRESSO? 在众多电子结构计算软件中,Quantum ESPRESSO以其**完全

gitblog_01112的博客 385

Centos7.6操作系统安装+Bond配置(600GB磁盘版本)

1.安装前准备工作 准备centos7.6操作系统镜像 CentOS-7-x86_64-DVD-1810.iso 服务器安装一般都是在BMC界面操作,所以安装前需要在BMC界面挂载好操作系统镜像 重启服务器后自动进入安装界面。 华为大数据集群安装操作系统配置

小时光 5989

Quantum Espresso实战:从SCF到PDOS的投影态密度与轨道分析

态密度(DOS)是电子结构分析中的核心概念,但总态密度只能给出能量分布,无法区分不同原子轨道的贡献。投影态密度(PDOS)通过将波函数投影到原子轨道上,揭示各元素轨道在能带中的具体角色,是理解轨道杂化、晶体场分裂和成键机制的关键。在光催化、电池材料等过渡金属氧化物研究中,PDOS分析尤为常用。本文基于Quantum Espresso软件,以金红石TiO2为例,完整演示从自洽计算、非自洽计算到projwfc.x投影的PDOS计算与轨道分析流程,帮助研究者高效提取电子结构信息。

weixin_33885676的博客 378

按照autoware.universe官方从零搭建自己的自动导航小车(三)(续)

本文介绍了在Autoware框架下完善自定义传感器套件描述包的详细过程。主要内容包括:1)创建传感器描述包tinyplc_sensor_kit_description,包含YAML标定文件和URDF模型;2)配置传感器与车辆基座的相对位姿,实现sensor_kit.xacro和sensors.xacro宏文件;3)更新sensor_kit.launch.xml文件以集成激光雷达和GNSS/IMU驱动。通过xacro验证URDF模型正确性后,下一步计划接入Helios16激光雷达数据并在Rviz2中验证点云显

qq_45335326的博客 1266

STM32的bootloader程序(通过串口更新STM32应用程序)

STM32的bootloader程序(通过串口更新STM32应用程序),对bootloader进行浅浅的学习

星羽空间 1万+

QE(quantum-espresso)各类计算汇总

横坐标做变换x'=x*0.5292*2*pi/a, 其中a是晶格常数(认为是垂直与高对称路径面的方向,比如走g2-g3面,则a是x方向的晶格)。x是原来的坐标,x'是变换单位后的坐标。----在构造 ε₂ 时,价带 → 导带跃迁的 δ 函数被替换为宽度为 intersmear 的高斯/洛仑兹函数。----带内主要出现在金属系统(自由电子或接近费米面的跃迁)。其中X0就是求出的价带顶二阶导数值,a为晶格常数值(求G-X方向就是晶格常数a,求G-Y方向就是晶格常数b).则m*=1/(2*C)m0。

weixin_51602307的博客 377

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4222

Quantum ESPRESSO:材料科学研究的终极电子结构计算指南

**密度泛函理论**、**第一性原理计算**和**材料模拟**是现代材料科学研究的核心技术。Quantum ESPRESSO作为一个开源软件包,为科研人员提供了**电子结构计算**的完整解决方案,从基础能带分析到复杂分子动力学模拟,覆盖了材料科学研究的全流程需求。 ## 🌟 项目核心亮点:为什么选择Quantum ESPRESSO? ### 模块化架构设计 Quantum ESPRESSO采

gitblog_01188的博客 538

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

ARM与PC共享文件方式【samba】移植与配置

方式推荐指数适用平台优点缺点⭐⭐⭐⭐⭐全平台 (Win/Mac/Linux)兼容性最强,操作像本地文件配置稍繁琐,协议开销略大NFS⭐⭐⭐⭐Linux/Mac (Win支持一般)速度极快,CPU占用低Windows配置复杂,权限管理较难SFTP (SSH)⭐⭐⭐⭐全平台 (需客户端)安全加密,无需额外配置服务需使用FileZilla/Xftp等专用软件物理U盘⭐⭐⭐全平台无需网络,速度取决于接口需要人工插拔,不适合自动化Syncthing⭐⭐⭐⭐全平台自动同步,支持远程。

浩瀚之水的专栏 261
上一篇: AUTOSAR OS核心机制深度解析:调度、Alarm与多核实战
下一篇: 数据中心机房施工组织设计:从荷载验算到运维交接的关键要点
weixin_34208185
博客等级 码龄11年 5030粉丝 1153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值