龙讯旷腾PWmat计算vdW异质结中热载流子冷却 | 复刻《Phys. Chem. Chem. Phys 》文献

01  NAMD 背景介绍

       在各类光物理与光化学过程当中,均会牵涉到激发态载流子动力学过程,诸如电荷弛豫、复合以及输运等等。光激发或者电子注入将初始的平衡状态打破,所产生的热载流子在其演化进程中,会与原子核产生强烈耦合。此时,将电子自由度与原子核自由度分开考虑的绝热近似不再适用,需要引入非绝热过程。

       根据计算精度和体系大小,人们可以从不同的理论框架下发展非绝热方法。对小分子体系,人们可以使用将电子和原子核都放在量子力学框架下的全量子方法。对于大小适中的体系,人们往往让电子的波函数继续遵循量子力学的演化规律,而让原子核遵循经典力学的量子-经典混合方法(mixed quantum-classic, MQC)。在这个框架下原子核势能面可由平均势能面予以替代或者在不同电子态势能面之间进行跳跃。对于更大体系的激发态载流子动力学,有时可以在MQC的基础上更近一步,原子核一直在基态的势能面上运动,忽略激发态载流子对原子核运动的影响,即所谓的经典路径近似(classical path approximation, CPA)。这种忽略电子运动给核运动带来的影响的近似方法,在大体系计算中具备一定的合理性。一方面,在大体系中存在大量电子,单一的热电子波函数并不会对核运动产生显著的影响;另一方面,由于研究重点并非核运动而是电子动力学,这种近似能够节省相当多的计算资源,从而使得在第一性原理密度泛函理论(DFT)水平上对具有数百个原子的系统的电子动力学进行计算成为可能。由于一些历史原因,我们在之后的内容中所说的非绝热分子动力学(nonadiabatic molecular dynamics, NAMD)都是指的第三种框架。

      绝大多数的NAMD方法都没有直接包含细致平衡(detail balance)和退相干(decoherence)过程。为了解决这两个问题,我们使用的是中国科学院半导体研究所的汪林望教授和北京计算科学研究中心康俊特聘研究员合作发展的一种基于密度矩阵形式的NAMD方法(P-matrix),通过密度矩阵的形式来引入退相干和细致平衡。具体来说,首先利用基态Born−Oppenheimer 分子动力学(BOMD)模拟得到核轨迹,然后将核轨迹用于含时薛定谔方程中得到波函数的含时演化,其中含时薛定谔方程采用密度矩阵形式进行重新表述。在此方法中,退相干通过密度矩阵非对角项衰减来描述。此外,这些非对角项被分为两部分,分别对应能量增加和能量降低的电子跃迁。通过将玻尔兹曼因子应用于能量增加的跃迁来实现细致平衡。

参考文献:

[1] Jun Kang,Lin-Wang Wang,Phys. Rev. B 99, 224303 (2019)

[2] Fan Zheng, Lin-Wang Wang, J. Phys. Chem. Lett. 2019, 10, 6174-6183.

02  文献案例复现

在PWmat中NAMD部分作为BOMD的后处理来完成,教程及涉及的后处理程序安装包见官网的module 21。下面以复现文献为例展示计算流程。Module(包含后处理程序)和文献链接置于文末,点击阅读全文获取案例文件。

1. run PWmat——进行BOMD计算

 (1)  准备需要的输入文件: 

atom.config  etot.input  *.UPF  slurm.sh

下面简要介绍下输入文件的内容:

atom.config(结构文件):PtS2/GaSe 异质结

图片

etot.input(参数文件):

8  1

IN.ATOM = atom.config

JOB = NAMD

MD_DETAIL = 1, 1000, 1, 500, 300

NAMD_DETAIL = 100, 330, 5

in.atom = atom.config

in.psp1 = Ga.SG15.PBE.UPF

in.psp2 = Se.SG15.PBE.UPF

in.psp3 = S.SG15.PBE.UPF

in.psp4 = Pt.SG15.PBE.UPF

mp_n123 = 1 1 1 0 0 0 2

NUM_BAND = 331

ECUT = 60

VDW = DFT-D3

OUT.WG  =  T

#关键参数设置及含义: 

设置job=NAMD,添加NAMD_DETAIL控制波函数的选取和输出情况

NAMD_DETAIL = m1 m2 nstep_out

m1 m2: 在NAMD计算中,执行传统的BOMD, 但输出绝热本征态在绝热窗口 [m1 m2] 内连续时间步长的重叠波函数。

nstep_out: 波函数 (在窗口 [m1 m2] 内) 输出到ugio.allxxxxxx 文件的步数间隔。 

NAMD_DETAIL = 100, 330, 5

含义:输出100~330之间的231(m2-m1+1)个绝热态作为后续展开含时波函数的基组,并且每隔5步输出一次。

*.UPF:各元素的赝势文件,有多少种元素就包含多少个赝势文件

slurm.sh: 提交任务的脚本文件

 (2) 提交计算:sbatch slurm.sh

 (3)  关键的输出文件:OUT.NAMD  ugio.allxxxxxx

2. 结果后处理

2.1 -update OUT.NAMD——在OUT.NAMD基础上重新选取一个绝热态范围

 (1)  准备需要的输入文件: 

OUT.NAMD  read_outNAMD.x(后处理程序) job.sh (脚本文件,名字可以自定义)

下面简要介绍下输入文件的内容:

OUT.NAMD:job=NAMD的生成文件

read_outNAMD.x:后处理程序,从module 21的文件下载安装包中获取

job.sh脚本文件:

#!/bin/sh

#SBATCH --partition=cpu

#SBATCH --job-name=namd

#SBATCH --nodes=1

#SBATCH --ntasks-per-node=64

module load intel/2016

export OMP_NUM_THREADS=64

export OMP_STACKSIZE=512M

./read_outNAMD.x 0 150 231 1000 231 

#后处理命令相关参数的含义:

read_outNAMD.x istart iband1 iband2 nstep nstate

istart:将BOMD的第istart步当做NAMD的第1步,OUT.NAMD只包含只从MD的istart步之后输出的信息;

iband1:OUT.NAMD_update中的绝热态范围初始位置,iband1 ∈ (1 ~ nstate)

iband2:OUT.NAMD_update中的绝热态范围截止位置,iband2 ∈ (iband1 ~ nstate)

nstep:BOMD的步数

nstate:OUT.NAMD中的绝热窗口[m1,m2]中的本征态数量,330-150+1=231

read_outNAMD.x 0 150 231 1000 231

含义:从BOMD的第0步开始输出OUT.NAMD的信息,共输出1000步BOMD的信息。将其中含有231个绝热态信息的OUT.NAMD文件重新裁剪,选取其第150至第231态之间的82个绝热态信息并将其保存在OUT.NAMD_update文件中。

#注:这里是把后处理命令放在脚本文件中,是为了将后处理提交至cpu计算节点上计算(后续的后处理操作同理),最终结果等同于module 21教程中直接执行后处理命令 read_outNAMD.x

 (2) 提交后处理计算:sbatch job.sh

 (3)  输出文件:OUT.NAMD_update

2.2 -运行NAMD后处理程序

2.2.1-electron cooling

 (1)  准备需要的输入文件: 

OUT.NAMD_update NAMD.input deco_time   NAMD.cc_init  namd_dm.x(后处理程序) job.sh(脚本文件)

下面简要介绍下输入文件的内容:

OUT.NAMD_update: 从上一步2.1中获得

NAMD.input:后处理相关的参数文件

1000 

82 

1, 300, 0.1

250, 331

0d0 

40 

4000

100 

#参数含义:

1000 :BOMD的步数

82:OUT.NAMD_update中绝热窗口中的本征态数量

1 :MD_DETAIL中设置的BOMD时间步长

1, 300, 0.1:空穴(-1)/电子(1) 冷却;温度,可与MD_DETAIL中的温度不同;win_Boltz (eV),当|Ei1-Ei2|<win_Boltz时,会使用玻尔兹曼因子来保持细致平衡

1 :输出NAMD.cc_out内容的频率 (better to set to 1)

250, 331 :OUT.NAMD_update中绝热窗口的范围

0d0 :(not used),但需要写上

40 :(not used),但需要写上

4000:ndt-两步BOMD间被划分为多少个dt (needs to be converged)

100:nit-两步BOMD间进行多少次对角化(needs to be converged)

deco_time:退相干时间

1 2 40

1 2 40

...

1 2 40 #82*82行,40为退相干时间,单位为fs

NAMD.cc_init:初始时刻的电子占据情况

82 #nstate

0 0

0 0

...

1 0 #要研究的热电子的位置

0 0

0 0

0 0

0 0

namd_dm.x:后处理程序,从module 21的文件下载安装包中获取

job.sh脚本文件:

#!/bin/sh

#SBATCH --partition=cpu

#SBATCH --job-name=namd

#SBATCH --nodes=1

#SBATCH --ntasks-per-node=64

module load intel/2016

export OMP_NUM_THREADS=64

export OMP_STACKSIZE=512M

./namd_dm.x 0 > log.namd

 (2) 提交后处理计算:sbatch  job.sh

 (3)  输出文件: 

NAMD.graph.aveE NAMD.graph.eigen  log.NAMD NAMD.cc_out  NAMD.DM_out

注:

NAMDgraph.aveE:被激发的电子的能量平均值随时间的演化

NAMD.graph.eigen:所有的本征态能量随时间的演化

2.2.2-hole cooling

 (1)  准备需要的输入文件: 

OUT.NAMD_update  NAMD.input  deco_time  NAMD.cc_init namd_dm.x(后处理程序) job.sh(脚本文件)

与electron cooling类似,所以下面简要介绍下有差异的输入文件内容:

NAMD.input:后处理相关的参数文件

1000 

82

-1, 300, 0.1 

1

250, 331 

0d0 

40 

4000

100

NAMD.cc_init:初始时刻的电子占据情况

82 #nstate

1 0 #要研究的热空穴的位置

0 0

...

0 0

0 0

0 0

0 0

0 0

 (2) 提交后处理计算:sbatch  job.sh

 (3) 输出文件: 

NAMD.graph.aveE  NAMD.graph.eigen  log.NAMD NAMD.cc_out  NAMD.DM_out

注:

NAMDgraph.aveE:激发产生的空穴的能量平均值随时间的演化

NAMD.graph.eigen:所有的本征态能量随时间的演化

3. 绘图

将NAMD.graph.eigen,电子的NAMD.graph.aveE和空穴的NAMD.graph.aveE绘制在同一张图上。

计算结果如图(1000步):

图片

文献中的结果(2000步):

图片

文献 DOI:

10.1039/d1cp02436a

Module 21(含后处理程序安装包):

http://www.pwmat.com/module-download

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

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

相关文章

环境配置02:CUDA安装

1. CUDA安装 Nvidia官网下载对应版本CUDA Toolkit CUDA Toolkit 12.1 Downloads | NVIDIA Developer CUDA Toolkit 12.5 Downloads | NVIDIA Developer 安装配置步骤参考:配置显卡cuda与配置pytorch - 知乎 (zhihu.com) 2. 根据CUDA版本,安装cudnn …

生育是家庭和个人的重要的选择

生育是个人和家庭的重要选择,而国家对于生育政策的制定应该综合考虑多种因素,包括人口结构、经济发展和社会稳定等。同时,我们也应该认识到,男女不应该成为决定一个人是否能够生育的因素。男女在生育中扮演着不同的角色&#xff0…

程序员必须知道!Serverless超强打造国产BAAS

在当今快节奏的软件开发领域,懒人开发者和独立开发者们一直在寻找能够简化开发流程、提高效率的利器。而今,MemFire Cloud以其强大的功能和简便的操作,成为了解决方案中的明星。无需搭建服务,无需开发API接口,你甚至可…

Python画箱线图展示数据分布情况

箱线图(Boxplot)是一种常用的统计图表,用于展示数据的分布情况。 它由五个统计量组成:最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值。 …

【c语言】字符串函数和内存函数

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C语言 目录 前言 一、字符串函数 1.strlen的使用和模拟实现 2.strcpy的使用和模拟实现 3.strcat的使用和模拟实现 4.strcmp的使用和模拟实现 5.strstr的使…

springboot3多模块实践

先帖下目录结构&#xff0c;直接在idea里面新建就行&#xff0c;删掉多余的文件 子模块的新建 根目录pom文件&#xff0c;注意modules、packaging&#xff0c;dependencyManagement统一管理依赖&#xff0c;子模块添加依赖的时候就不用加版本号 <?xml version"1.0…

SAP_FICO模块-获利能力段新增特征字段

业务背景&#xff1a; 公司有启用获利能力分析功能&#xff0c;有一个销售订单接口&#xff0c;是通过第三方销售订单管理平台推送数据到SAP的&#xff0c;用户希望对接新增一个编号ID到销售订单上&#xff0c;并且可以用KE24/KE30报表查看显示&#xff1b; 对于我这么一个后勤…

Java面试八股之简述JVM内存结构

简述JVM内存结构 Java虚拟机&#xff08;JVM&#xff09;内存结构主要分为线程私有区域和线程共享区域两大部分&#xff0c;具体组成部分如下&#xff1a; 线程私有区域 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 记录当前线程执行的字节码行…

逻辑整理(光伏发电预测算法部署用的)

def main():while True:if is_true_month(): # 检查是否为每年的1月份、4月份、7月份、10月份的凌晨1&#xff1a;00&#xff0c;判断到minget_new_history_data # 获取最新的3个月左右的历史数据train model # 进行模型训练save model # 保存模型 在之前模型保存的位置直接覆…

三角形法恢复空间点深度

三角形法恢复空间点深度 如下图&#xff0c;以图 I 1 I_1 I1​为参考&#xff0c;图 I 2 I_2 I2​的变换矩阵为 T T T。相机光心为 O 1 O_1 O1​和 O 2 O_2 O2​。在图 I 1 I_1 I1​中有特征点 p 1 p_1 p1​&#xff0c;对应图 I 2 I_2 I2​中有特征点 p 2 p_2 p2​。理论上直…

战略网络优化:网络可观测性的综合方法

在网络成为运营支柱的时代&#xff0c;了解和优化网络性能至关重要。网络可观测性是了解网络性能的关键&#xff0c;它以一种全面、主动的方式超越了传统监控。本文说明了网络可观测性的变革力量&#xff0c;详细介绍了其优势、差异化因素及其在现代网络管理中的关键作用。 什…

vue学习(三)

14.监视属性watch 当被监视的属性发生变化时&#xff0c;回调函数立即调用&#xff0c;进行操作 监视的两种写法&#xff1a;直接配置或者通过vm添加 watch:{isHot:{immediate:true, //首次用到执行handler(newValue,oldValue){console.log("isHot 被修改了",newV…

python如何做报表系统

首先我们安装的python和PyQt5要保持一致&#xff0c;要么都是32位或者都是64位。 下载安装&#xff0c;安装完成之后我们记得要设置环境变量。 一路选择“下一步”就可以了。 安装完成之后我们需要验证是否成功。 pyqt5的安装直接安装就可以的&#xff0c;主要更改环境变量~~\p…

数据结构之B数

目录 1.概述 2.特点 3.诞生 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 6.C语言中的B树实现例子 7.总结 1.概述 B树&#xff08;B-tree&#xff09;是一种自平衡的树数据结构&#xff0c;广泛应用于数据库和文件系统中&#xff0c;以便高效地进行顺序读取、写入以及查找…

使用 C# 进行面向对象编程:第 9 部分

使用 OOP 的用户活动日志 应用程序背后的关键概念 在这一部分中&#xff0c;我们将使用之前学到的一些 OOP 概念。我们将创建一个小型应用程序。在继续之前&#xff0c;请阅读我的文章user-activity-log-using-C-Sharp-with-sql-server/。在本课程中&#xff0c;我们将再次使…

测试人员遇到需求变更 4大处理技巧

测试人员有效的需求变更管理&#xff0c;可以确保即使在需求频繁变化的情况下&#xff0c;测试工作仍然能够覆盖所有必要的功能点&#xff0c;从而保障最终产品的质量。如果没有合理的需求变更处理技巧&#xff0c;可能会造成不必要的返工和重复测试&#xff0c;无法维持项目的…

平安养老险浙江分公司开展防范非法集资宣传,守护群众“钱袋子”

为进一步提高群众对非法集资的防范意识的鉴别能力&#xff0c;近期&#xff0c;平安养老保险股份有限&#xff08;以下简称“平安养老险”&#xff09;浙江分公司以“守住钱袋子、护好幸福家”为宣传主题&#xff0c;深入居民社区、办公职场等公共场所开展的宣传活动。 平安养老…

看完再买不后悔!希喂、小米、霍尼韦尔宠物空气净化器性价比比拼

在忙碌的工作之余&#xff0c;养一只猫真的能治愈一切的不快&#xff0c;让我们的心灵得到片刻的宁静。然而&#xff0c;这份宁静背后&#xff0c;却隐藏着一些不易察觉的烦恼——猫浮毛和异味。 猫浮毛&#xff0c;这个看似微不足道的小问题&#xff0c;实则给许多宠物主人带…

PS选不了颜色和路径描边?PS不知为何才能描边任意路径,这个办法让你秒懂

在选中路径的情况下&#xff0c;按图下操作&#xff0c;即可制作路径&#xff08;不会让你选不了颜色和路径描边&#xff09;

第4章 工程经济评价指标 作业

第4章 工程经济评价指标 作业 一单选题&#xff08;共27题&#xff0c;100分&#xff09; (单选题)利息备付率是指( )与应付利息费用的比值。 A. 息税前利润 B. 利润总额 C. 净利润 D. 营业收入 正确答案: A:息税前利润; (单选题)当净现值( )0时,该项目不可行。 A. < B. …