计算化学公社

标题: DFTB+使用入门:输入文件的Hamiltonian部分写法 [打印本页]

作者
Author:
ChemiAndy    时间: 2018-3-9 21:44
标题: DFTB+使用入门:输入文件的Hamiltonian部分写法
本帖最后由 ChemiAndy 于 2018-3-22 06:29 编辑

有些初学DFTB的朋友表示对DFTB+的输入文件设置有些困惑,我这里分享一些经验。

首先说一下DFTB,SCC-DFTB这几个概念的不同。DFTB是指基于密度泛函的紧束缚模型,这个模型是50年代提出的用于周期固体体系一种近似模型,使用“轨道能+排斥势”表示总能并通过拟合高级计算结果获取经验参数的一种方法。后来发现这个模型用于分子体系计算非常节约时间,可惜键长、生成热等性质误差太大。这可以通过进一步增加含参数的势函数以提高精确性。Elsner等人提出了基于电荷自洽的DFTB:SCC-DFTB。这个模型尝试在原DFTB的能量式后面增加一个多项式,这个多项式是关于原子电荷的泰勒展开,用于修正DFTB对交换、相关作用的误差。然后用高水平DFT计算结果去训练(拟合)这个多项式的参数。这个多项式展开到2级叫SCC-DFTB2,展开到3级叫SCC-DFTB3。其中还分加不加氢键校正(加氢键应该使用DampXH=Yes并设置gamma参数DampXHExponent)SCC-DFTB3还分ThirdOrder和ThirdOderfull两种,其中ThirdOrder只包含对角元项(on-site),而ThirdOrderFull还包括交叉项。正常的SCC-DFTB3应该使用ThirdOrderFull,并且正确给出HubbardDerivs。

下面是各种不同方法的Hamiltonian部分的写法:(注意尽量使用最新方法即SCC-DFTB3-h)

SCC-DFTB2
  1. Hamiltonian = DFTB {
  2.   SCC = Yes
  3.   SlaterKosterFiles = Type2FileNames {
  4.     Prefix = "/home/user/bin/dftb/1.2/slako/mio-0-1/"
  5.     Separator = "-"
  6.     Suffix = ".skf"
  7.   }
  8.   charge = 1.0  // not neccessary your case, default 0
  9.   MaxAngularMomentum {
  10.     C = "p"
  11.     N = "p"
  12.     H = "s"
  13.     O = "p"
  14.   }
  15.   Filling = Fermi {
  16.     Temperature [Kelvin] = 50
  17.   }
  18.   DampXH = No
  19. }
复制代码

SCC-DFTB2-h (带氢键校正)
  1. Hamiltonian = DFTB {
  2.   SCC = Yes
  3.   SlaterKosterFiles = Type2FileNames {
  4.     Prefix = "/home/user/bin/dftb/1.2/slako/mio-0-1/"
  5.     Separator = "-"
  6.     Suffix = ".skf"
  7.   }
  8.   charge = 1.0   // not neccessary your case, default 0
  9.   MaxAngularMomentum {
  10.     C = "p"
  11.     N = "p"
  12.     H = "s"
  13.     O = "p"
  14.   }
  15.   Filling = Fermi {
  16.     Temperature [Kelvin] = 50
  17.   }
  18.   DampXH = Yes
  19.   DampXHExponent = 4.53
  20. }
复制代码
SCC-DFTB2-h-dispersion 带氢键校正并加色散校正
  1. Hamiltonian = DFTB {
  2.   SCC = Yes
  3.   SlaterKosterFiles = Type2FileNames {
  4.     Prefix = "/home/user/bin/dftb/1.2/slako/mio-0-1/"
  5.     Separator = "-"
  6.     Suffix = ".skf"
  7.   }
  8.   charge = 1.0
  9.   MaxAngularMomentum {
  10.     C = "p"
  11.     N = "p"
  12.     H = "s"
  13.     O = "p"
  14.   }
  15.   Filling = Fermi {
  16.     Temperature [Kelvin] = 50
  17.   }
  18.   Dispersion = SlaterKirkwood {
  19.     PolarRadiusCharge = HybridDependentPol {
  20.       C = {
  21.         CovalentRadius [Angstrom] = 0.8
  22.         HybridPolarisations [Angstrom^3, Angstrom,] = {
  23.           1.382 1382 1.382 1.064 1.064 1.064 3.8 3.8 3.8 3.8 3.8 3.8 2.50
  24.         }
  25.       }
  26.       H = {
  27.         CovalentRadius [Angstrom] = 0.4
  28.         HybridPolarisations [Angstrom^3, Angstrom,] = {
  29.           0.386 0.386 0.000 0.000 0.000 0.000 3.5 3.5 3.5 3.5 3.5 3.5 0.80
  30.         }
  31.       }
  32.       N = {
  33.         CovalentRadius [Angstrom] = 0.8
  34.         HybridPolarisations [Angstrom^3, Angstrom,] = {
  35.           1.030 1.030 1.090 1.090 1.090 1.090 3.8 3.8 3.8 3.8 3.8 3.8 2.82
  36.         }
  37.       }
  38.       O = {
  39.         CovalentRadius [Angstrom] = 0.75
  40.         HybridPolarisations [Angstrom^3, Angstrom,] = {
  41.           0.560 0.560 0.000 0.000 0.000 0.000 3.8 3.8 3.8 3.8 3.8 3.8 3.15
  42.         }
  43.       }
  44.     }
  45.   }
  46.   DampXH = Yes
  47.   DampXHExponent = 4.53
  48. }
复制代码

(SCC-DFTB3-h 见二楼)



作者
Author:
ChemiAndy    时间: 2018-3-9 21:52
标题: SCC-DFTB3-h
本帖最后由 ChemiAndy 于 2018-4-6 02:42 编辑

SCC-DFTB3-h
  1. Hamiltonian = DFTB {
  2.   SCC = Yes
  3.   SlaterKosterFiles = Type2FileNames {
  4.     Prefix = "/home/user/bin/dftb/1.2/slako/mio-0-1/"
  5.     Separator = "-"
  6.     Suffix = ".skf"
  7.   }
  8.   charge = 1.0
  9.   MaxAngularMomentum {
  10.     C = "p"
  11.     N = "p"
  12.     H = "s"
  13.     O = "p"
  14.   }
  15.   Filling = Fermi {
  16.     Temperature [Kelvin] = 50
  17.   }
  18.   DampXH = Yes
  19.   DampXHExponent = 4.53
  20.   ThirdOrderFull = Yes
  21.   HubbardDerivs = {
  22.     C = -0.1492
  23.     N = -0.1535
  24.     H = -0.1857
  25.     O = -0.1575
  26.   }
  27. }
复制代码



作者
Author:
lira    时间: 2018-3-10 10:18
感谢大佬的分享
作者
Author:
DCchen    时间: 2018-3-20 09:54
多谢分享!入门小白想请教一下,Temperatue是根据什么来设定具体大小的?
作者
Author:
ChemiAndy    时间: 2018-3-21 13:00
本帖最后由 ChemiAndy 于 2018-3-21 13:33 编辑

关于Fermi Filling的Temperature,这一部分手册并没有给出一个清晰的参数设置指导。我的理解是,这个参数只是为了加速金属体系收敛速度而进行设置的,其值大小也只影响收敛速度而不影响最后的结果。因此,你可以在0~3000K范围内尝试,取得最好的收敛速度。

这里的Fermi Filling其实就是其它第一原理计算软件中的smearing method. 对于金属体系,因为使用了有限K点计算而不能够连续地在费米面附近进行积分(密度-能量计算),导致计算很难收敛。因此,使用了一个所谓“部分占据”(partial occupied)技巧,用一个平滑的函数来取代积分中的步进函数。这个平滑的函数有很多形式,Fermi-Dirac形式,Methfessel Paxton形式, 高斯形式等等。当使用Fermi-Dirac形式的时候,这个费米温度Fermi Termperature就用来调节这个函数的平缓度。温度越低越陡峭,温度越高越平缓。如果体系的金属性很强,电子密度在费米面之上弥散的厉害,就要使用很平缓的函数形式,意味着要设置高一点的Fermi Temperature.


那么,对于半导体和非金属体系,是否需要设置呢?从原理上讲,是无需设置的,默认为0即可。不过,我遇到过有个网友对非金属体系设置了这个温度为300K后提高了收敛速度的情况。我没有验证过,但是如果你有收敛问题,这个也可以尝试一下。

以上部分内容在VASP的在线手册里面有详细的数学推导和说明:
(1)部分占据以及不同方法:https://cms.mpi.univie.ac.at/vas ... ferent_methods.html
(2)有限温度smearing方法:https://cms.mpi.univie.ac.at/vas ... earing_methods.html
  (3)  VASP中关于smearing的设置建议:http://cms.mpi.univie.ac.at/vasp/guide/node172.html


作者
Author:
DCchen    时间: 2018-3-22 10:56
ChemiAndy 发表于 2018-3-21 13:00
关于Fermi Filling的Temperature,这一部分手册并没有给出一个清晰的参数设置指导。我的理解是,这个参数只 ...

解释的很清楚,十分感谢!
作者
Author:
get-it    时间: 2018-9-5 19:17
楼主是否用DFTB+作过结构弛豫?我用DFTB+优化结构时,晶格弛豫和原子位置弛豫似乎不是同时进行的。
作者
Author:
granvia    时间: 2018-9-5 19:58
ChemiAndy 发表于 2018-3-21 13:00
关于Fermi Filling的Temperature,这一部分手册并没有给出一个清晰的参数设置指导。我的理解是,这个参数只 ...

电子温度即使对半导体绝缘体最好也不要设为零,跟CPMD是类似的
作者
Author:
whtu    时间: 2019-6-14 15:07
您好,试着跑一个例子测试,出现如下错误:
***  Parsing and initializing

Parser version: 6

Interpreting input file 'dftb_in.hsd'
--------------------------------------------------------------------------------
***  Converting input from version  3 to version  6 ...
WARNING!
-> Keyword moved to Analysis block.
Path: dftb_in/Options/CalculateForces
Line: 51-51 (File: dftb_in.hsd)

WARNING!
-> Adding legacy step size for finite difference differentiation
Path: dftb_in/Hamiltonian/DFTB/Differentiation

***  Done.

Reading SK-files:
  O-O.skf
ERROR!
-> IO error in file 'O-O.skf': Unable to read 1st data line

这里提示读取.skf出错,我的这些文件是从官网下载的,请问是什么原因?

另外: 我的DFTB+是在 https://www.dftbplus.org/download/dftb-stable/ 下载的 executables(x86_64/Linux),然后解压就用。

作者
Author:
ChemiAndy    时间: 2019-6-15 16:53
Reading SK-files:
  O-O.skf
ERROR!
-> IO error in file 'O-O.skf': Unable to read 1st data line
作者
Author:
wuzhiyi    时间: 2019-8-6 21:25
SCC-DFTB3是不需要加色散矫正么?
作者
Author:
plus    时间: 2019-8-7 08:29
感谢分享
作者
Author:
lcdamoy    时间: 2020-5-28 19:27
ChemiAndy 发表于 2018-3-21 13:00
关于Fermi Filling的Temperature,这一部分手册并没有给出一个清晰的参数设置指导。我的理解是,这个参数只 ...

温度不影响最终结果?
我对一个简单的水分子计算,0K和300K完全是不同的结果,而且手册中提到,当温度设为有限温度时,结果都需要读取和零温下不同的输出项
作者
Author:
破晓时的曙光    时间: 2020-10-30 17:11
ChemiAndy 发表于 2018-3-9 21:52
SCC-DFTB3-h

请教一个问题,这个能够像上面的SCC-DFTB2-h-dispersion一样加色散校正吗
作者
Author:
ChemiAndy    时间: 2020-10-31 09:35
可以
作者
Author:
Aridea    时间: 2021-9-9 11:39
ChemiAndy 发表于 2020-10-31 09:35
可以

大佬,请教一下,MS里集成的skflib库怎么再linux里调用呀,正好用到一个SlaterKosterFile只有MS里有提供,dftb官网下载的没有,咋办
作者
Author:
chenxin199261    时间: 2022-2-19 00:09
lcdamoy 发表于 2020-5-28 19:27
温度不影响最终结果?
我对一个简单的水分子计算,0K和300K完全是不同的结果,而且手册中提到,当温度设 ...

你看看你是不是设置单位[kelvin]了?不然默认单位是H(??)。300K我算的能量绝对值相差不到0.001 Hartree.相对能量也没差。
作者
Author:
wenjian    时间: 2022-5-27 11:34
非常感激各位讲解与讨论,受益匪浅!
作者
Author:
chirk    时间: 2022-10-8 15:32
ChemiAndy 发表于 2020-10-31 09:35
可以

大哥,我下载dftb之后运行时出错,显示的是No input file 'dftb_in.hsd' not found,求大佬指点
作者
Author:
ChemiAndy    时间: 2022-10-11 05:05
chirk 发表于 2022-10-8 15:32
大哥,我下载dftb之后运行时出错,显示的是No input file 'dftb_in.hsd' not found,求大佬指点

首先,当你输入dftb+命令运行DFTB时,它会自动在当前目录寻找名为dftb_in.hsd的输入文件。该输入文件包含了你的模拟体系和参数设置,本帖就是讨论其参数设置的。
其次,我不当大哥好多年。
作者
Author:
不会扣篮的后卫    时间: 2024-1-25 12:50
ChemiAndy 发表于 2022-10-11 05:05
首先,当你输入dftb+命令运行DFTB时,它会自动在当前目录寻找名为dftb_in.hsd的输入文件。该输入文件包含 ...

老师,您好。请问怎么设置DFTB+的参数,可以跑出类似于这样的输出文件呢?




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3