OpenMX(学习版更新中)

一、安装openmx

下载安装包:Download of OpenMX

根据README.txt中流程进行安装(makefile中需要配置intel编译器和库)

二、测试运行openmx

启动配置的intel环境(后面的路径是intel的安装路径) :source /opt/intel/oneapi/setvars.sh

进入openmx3.9/work/路径     :cd openmx3.9/work/

建立一个example_met文件夹:mkdir example_met

更改Methane.dat文件里输出文件位置:vi Methane.dat

修改的内容:【System.CurrrentDirectory         ./example_met/】

退出编辑模式,键入命令运行openmx对具有固定结构的甲烷分子进行SCF计算:mpirun -np 1 ./openmx Methane.dat > met.std

在./example_met/下生成了一些文件:

met.std:SCF计算的标准输出,帮助了解SCF的计算流程

met.out:标准输出,里面包括了计算结果,例如:总能量、力、Kohn-Sham本征值等内容,可作为进一步的输入文档

met.xyz:最终的几何结构

met.ene:每一步MD步骤的计算值

met.md:每一步MD步骤的几何结构

met.md2:最终MD步骤的几何结构

met.cif:用于Material Studio的初始化结构的cif文档

met.tden.cube:总电子密度文件,使用Gaussian cube格式表示,包含整个系统的电子密度分布

met.v0.cube:Kohn-Sham势文件,表示在Gaussian cube格式下的Kohn-Sham势分布
met.vhart.cube:Hartree势文件,存储系统的Hartree势分布,采用Gaussian cube格式
met.dden.cube:由原子密度测量得到的差分电子密度文件,
采用Gaussian cube格式
met_rst/:用于存储重启文件的目录,包含进行重新计算或从中断点恢复计算所需的中间数据

以上Gaussian cube格式的文件可以在VESTA, Molekel, 和XCrySDen分子模型软件上进行可视化

指令解释:

mpirun -np 8 openmx -runtest -nt 2:使用8个MPI进程并行运行OpenMX程序,每个MPI进程使用2个线程,并执行OpenMX自带的测试例子,以验证安装是否正确。

mpirun:用于执行MPI(Message Passing Interface)并行程序的命令。MPI是一种标准,用于在计算机集群中进行并行计算。

-np 8:指定要使用的处理器数量或者指定使用的MPI进程数量。在这里,-np 8表示将使用8个处理器来运行程序。这意味着OpenMX程序将并行运行,利用多达8个处理器来加速计算过程。

openmx:这是要运行的程序的名称。openmx指的是OpenMX软件,这是一个用于材料科学和计算化学的开源软件包。

-runtest:这是OpenMX的一个特定选项,用于运行测试例子。这个选项通常用于验证安装和配置是否正确。通过运行内置的测试例子,可以确保OpenMX在我们的计算环境下正常工作。

-nt 2:这个选项指定每个MPI进程使用的线程数量。-nt 2表示每个MPI进程将使用2个线程。这通常用于利用多核处理器的多线程能力,以进一步加速计算。

三、openmx的输入输出文件

(1)输入文件

一般为.dat文件,在这个文件里关键字之后就是对应的参数,并且关键字的顺序是任意的,字母大小写不会影响关键字的识别。在开头标注“#”代表后面的内容为注释。

1、文件名

System.CurrrentDirectory            ./      #指定运行计算时的目录,这里./表示当前目录。如果需要指定其他目录,可以在这里更改
System.Name                               met   #定义当前计算任务的系统名称。这个名称会用于输出文件的命名,如:程序生成的输出文件(如 .out, .dat 等)会使用 met 作为前缀
level.of.stdout                   1    # default=1 (1-3)     #控制标准输出的详细程度。1:基本信息(默认);2:详细信息;3:非常详细的信息
level.of.fileout                   1    # default=1 (0-2)     #控制文件输出的详细程度。0:不生成输出文件(最少信息)1:基本信息(默认);2:详细信息

2、原子物种的定义

Species.Number       2                   # 定义计算中涉及的原子物种的数量,这里为2种原子

#以下这一块用于详细定义参与计算的每种原子物种及其相关参数

<Definition.of.Atomic.Species
  H   H5.0-s1          H_PBE19         

# H为氢原子;H5.0-s1 为原子基组的缩写名称,H5.0​​​​​​​为PAO (局部原子轨道)函数文件名,该文件必须存在于由 DATA.PATH 关键字指定的目录中,例如/openmx/DFT_DATA19/PAO/,其中 5.0 是 cutoff 半径,s1 表示该基组包含一个 s 轨道;H_PBE19指定该原子物种所用的赝势文件,H_PBE19 表示使用针对氢的 PBE(广义梯度近似,GGA)方法的赝势文件版本19
  C   C5.0-s1p1        C_PBE19       # C为碳原子;其他同上

Definition.of.Atomic.Species>

3、定义分子或晶体结构

Atoms.Number        3              #定义系统中总的原子数量
Atoms.SpeciesAndCoordinates.Unit   Ang    # Ang|AU,指定原子坐标的单位,Ang 表示使用埃(Ångström)作为单位,另一个可选单位是 AU(原子单位)

#下面这一块定义每个原子的物种、坐标及可选的起始和结束条件
<Atoms.SpeciesAndCoordinates 
 1  C -1.500  0.000  0.000  2.0 2.0
 2  C  0.000  0.000  0.000  2.0 2.0
 3  C  1.500  0.000  0.000  2.0 2.0
Atoms.SpeciesAndCoordinates>

第一列:识别原子的顺序序列号。第二列:指定原子物种。第三、第四和第五列:分别给出x、y、z的坐标(当为关键字“Atoms.SpeciesAndCoordinates.Unit”选择“FRAC”时,第三、第四和第五列是跨越的分数坐标a,b,还有c轴,坐标范围可以从0.0到1.0,超出其范围的坐标将在读取输入文件后自动调整)。第六列和第七列:分别给出每个原子的向上和向下自旋状态的初始电荷数量。上升和下降电荷的总和必须是原子元素的价电子数。)

Atoms.UnitVectors.Unit             Ang     # Ang|AU ,指定晶胞向量的单位,Ang 表示使用埃作为单位,另一个可选单位是 AU

#下面这一块定义晶胞的单位向量,描述系统的周期性边界条件
<Atoms.UnitVectors                     
   4.5   0.0   0.0                                        #表示第一个单位向量为 (4.5, 0.0, 0.0),即 x 方向长度为 4.5 Å
   0.0  10.0   0.0                                       #表示第二个单位向量为 (0.0, 10.0, 0.0),即 y方向长度为 10.0 Å
   0.0   0.0  10.0                                       #表示第三个单位向量为 (0.0, 0.0, 10.0),即 z方向长度为 10.0 Å
Atoms.UnitVectors>

4、SCF或者电子系统

(以后学习到再详细写)

(2)输出文件

1、设置的参数level.of.fileout=0时,会生成以下输出文件(如果系统名称已经命名为SysName):

SysName.out        :SCF计算历史、几何优化历史、Mulliken电荷、总能量、偶极矩

SysName.xyz        :由MD或者几何优化获得的最终几何结构,可由OpenMX Viewer和XCrySDen读取进行可视化

SysName.bulk.xyz:使用 scf.EigenvalueSolver 参数并将其设置为 Band 时,程序会计算电子结构,并在输出中提供完整的原子坐标信息

SysName_rst/       :存储重启文档的目录

SysName.md        :以xyz格式显示每步MD的几何坐标

SysName.md2      :最终MD步数的几何坐标

SysName.cif          :cif格式的初始几何坐标

SysName.ene        :每步MD计算的值,这些值可以在“iterout.c”程序例程中找到

2、设置的参数level.of.fileout=1时,除了 level.of.fileout=0 生成的文件之外,还会生成以下高斯立方体文件(如果系统名称已经命名为SysName):

SysName.tden.cube  :高斯立方体格式的总能量密度

SysName.sden.cube :如果使用 LSDA-CA、LSDA-PW 或 GGA-PBE 进行自旋极化计算,则会以高斯立方体格式输出自旋电子密度,帮助我们分析系统中自旋分布的情况

SysName.dden.cube :在高斯立方体格式下输出的电子密度差,它是通过将组成原子的电子密度进行叠加计算得到的。生成这个文件可以帮助研究电子密度变化或键合特征

SysName.v0.cube      :用于上自旋的 Kohn-Sham 势(不包含非局域势)的高斯立方体格式文件。如果通过关键词 scf.ProExpn.VNA 启用了投影展开方法,则 VNA 势也被排除

SysName.v1.cube       :用于下自旋的 Kohn-Sham 势(不包含非局域势)的高斯立方体格式文件。如果通过关键词 scf.ProExpn.VNA 启用了投影展开方法,则 VNA 势也被排除

SysName.vhart.cube  :由差分电荷密度计算得到的 Hartree 势的高斯立方体格式文件

3、设置的参数level.of.fileout=2时,除了 level.of.fileout=1 生成的文件之外,还会生成以下文件(如果系统名称已经命名为SysName):

SysName.vxc0.cube  :用于上自旋的交换-相关势的高斯立方体格式文件

SysName.vxc1.cube  :用于下自旋的交换-相关势的高斯立方体格式文件

SysName.grid            :用于数值积分和泊松方程求解的实空间网格文件

4、如果 MO.fileout=ON 和 scf.EigenvalueSolver=Cluster,下列文件也会产生:

SysName.homo0_0.cube, SysName.homo0_1.cube, ...

HOMO 以高斯立方体格式输出。homo 后面的第一个数字表示自旋状态(上自旋=0,下自旋=1)。第二个数字指定本征态,例如,0、1 和 2 分别对应 HOMO、HOMO-1 和 HOMO-2

SysName.lumo0_0.cube, SysName.lumo0_1.cube, ...

 LUMO 以高斯立方体格式输出。lumo 后面的第一个数字表示自旋状态(上自旋=0,下自旋=1)。第二个数字指定本征态,例如,0、1 和 2 分别对应 LUMO、LUMO+1 和 LUMO+2

5、如果 MO.fileout=ON 和 scf.EigenvalueSolver=Band,下列文件也会产生:

SysName.homo0_0_0_r.cube, SysName.homo1_0_1_r.cube,...

SysName.homo0_0_0_i.cube, SysName.homo1_0_1_i.cube, ...

HOMO 以高斯立方体格式输出。homo 后的第一个数字表示 k 点编号,该编号由关键词 MO.kpoint 指定。第二个数字表示自旋状态(上自旋=0,下自旋=1)。第三个数字指定本征态,例如,0、1 和 2 分别对应 HOMO、HOMO-1 和 HOMO-2。r 和 i 表示波函数的实部和虚部

SysName.lumo0_0_0_r.cube, SysName.lumo1_0_1_r.cube,...

SysName.lumo0_0_0_i.cube, SysName.lumo1_0_1_i.cube, ...

LOMO 以高斯立方体格式输出。lomo 后的第一个数字表示 k 点编号,该编号由关键词 MO.kpoint 指定。第二个数字表示自旋状态(上自旋=0,下自旋=1)。第三个数字指定本征态,例如,0、1 和 2 分别对应 LOMO、LOMO-1 和 LOMO-2。r 和 i 表示波函数的实部和虚部

6、如果Band.Nkpath不为0,以及scf.EigenvalueSolver=Band,下列文件也会产生:

SysName.Band:用于带隙分布的数据文件,用于分析材料或分子的能带结构。我们可以通过这个文件查看能带在不同 k 点的能量分布,分析材料的导电性和能带特征

7、如果 Dos.fileout=ON,下列文件也会产生:

SysName.Dos.val  :用于计算态密度的本征值数据文件

SysName.Dos.vec :用于计算态密度的本征矢数据文件

8、如果 scf.SpinPolarization=NC 且 level.of.fileout=1 或 2,还会生成以下文件:

SysName.nco.xsf         :一个向量文件,通过 Mulliken 分析投影到每个原子的非共线轨道矩,使用 XCrySDen 中的“Display→Forces”功能可以可视化

SysName.nc.xsf           :一个向量文件,通过 Mulliken 分析投影到每个原子的非共线自旋矩,使用 XCrySDen 中的“Display→Forces”功能可以可视化

SysName.ncsden.xsf  :一个向量文件,存储了在实空间网格上的非共线自旋矩,使用 XCrySDen 中的“Display→Forces”功能可以可视化

四、openmx画能带图

1、openmx画图工具生成

在openmx3.9/source/目录下找到bandgnu13.c文件,按以下命令编译该文件:

gcc bandgnu13.c -lm -o bandgnu13

将得到的执行文件bandgnu13复制到openmx3.9/work目录下:

cp  bandgnu13  ../work/

2、将text.Band文件转换为gnuplot格式

openmx3.9/work/bandgnu13   text.Band

  • 运行该命令后会得到2到3个文件:'text.GNUBAND'、'text.​​​​​​​BANDDAT1'('text.​​​​​​​BANDDAT2')。(1和2分别为up- and down-spin states)
  • 其中,text.GNUBAND为gnuplot的脚本文件,将会读取后面一个或者两个文件画图
  • 如果使用在SCF计算中使用'LSDA-CA', 'LSDA-PW', or 'GGA-PBE'的自旋极化计算,自旋向下态的'text.​​​​​​​BANDDAT2'将会额外产生

3、使用gnuplot画图

在'text.GNUBAND'中编辑内容,以适应画出来的图形样式

输入以下指令进行绘图:gnuplot cdia.GNUBAND

在'text.GNUBAND'中添加以下内容可将画出来的图保存为jpg格式:

set terminal jpeg size 1000,1000 
set output "plot.jpg"                  #输出的文件名

在'text.GNUBAND'中添加以下内容可将画出来的图保存为png格式:

​​​​​​​set terminal pngcairo size 1000,1000 font 'Times New Roman,10'   ## 格式,大小和字体
set output "plot.png"  ###输出的文件名

其他内容可为:

set style data points                  #设置数据绘图风格为点图

set style data lines                     #设置数据绘图风格为折线图,每个数据点通过直线连接
set nokey                                    #不显示图例
set zeroaxis                                #绘制一条穿过原点的零轴(x=0或y=0),通常用于标示零点
set ytics 1                                    #设置y轴刻度间隔
set mytics 5                                #在主y轴刻度间隔内划分5个次刻度(单位eV)
set xra [0.000000:0.153785]   #设置x轴的显示范围
set yra [-0.021328:0.175540]  #设置y轴的显示范围
set ylabel "eV"                           #设置y轴刻度的单位(单位eV)
set xtics ("K" 0.000000, "Γ" 0.064997, "M" 0.121286, "K'" 0.153785)  #在x轴上定义特定的刻度点,并为每个点设置对应的标签
plot  "openmx.BANDDAT1" using 1:2 with points lc rgb "red",  \
        "openmx.BANDDAT2" using 1:2 with lines lc rgb "red"    

 #绘制两组数据在一幅图里,分别从文件 openmx.BANDDAT1 和openmx.BANDDAT2中读取数据并绘制,文件格式通常是 x 和 y (using 1:2)的数据对,其中 x 表示倒空间路径的位置,y 表示能量值。(with points)代表画点图,(with lines )代表画线图,(lc rgb "red")代表画的线为红色
pause -1                                     #暂停程序,等待用户按键以继续或退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值