xTB方法是Grimme组提出的一种新颖的半经验方法,写完整了叫做GFN-xTB方法,目前xTB已经推出到第二代。相比PM系列半经验方法,最大的一个优势是:ORCA从4.2.0开始支持调用xTB,而ORCA原有的半经验方法只有AM1和PM3,AM1况且不说,PM系列方法都已经出到PM7了呀(无奈)。

安装

xTB只有单独一个可执行文件,没有其他依赖,多线程采取的是OpenMP框架,是一个编译时多线程,因此不同于ORCA依赖的OpenMPI框架,没有运行时需要安装。直接从GitHub仓库下载release就可以了。解包出来把bin目录下的xtb文件移到ORCA的目录里也行,做个软链接也行,个人倾向于做软链接:

# 比如我这边拉取的是6.4.0版
tar -xf tar -xf xtb-210201.tar.xz

# 比如我这边ORCA目录已经放进PAHT了
ln -s $(pwd)/xtb-210201/bin/xtb $(dirname "$(which orca)")/otool_xtb
ln -s $(pwd)/xtb-210201/bin/xtb $(dirname "$(which orca)")/xtb

几个重要的后处理

报错 Segmentation fault (core dumped)

这个只能说xtb的开发还处于早期阶段

# 解除文件大小软限制
ulimit -s unlimited

报错 forrtl: severe (174): SIGSEGV, segmentation fault occurred

这个报错呢也只能说xtb的开发还处于早期阶段

# 扩大堆栈大小,如果还报错继续扩大
export OMP_STACKSIZE=4G

调用

关键词列写xtb1就可以调用GFN-xTB,对应的写xtb2就可以调用二代GFN2-xTB。按4.2.1版手册描述,这个半经验方法可以进行以下计算:

  • Single Point Energy
  • Energy and Gradient
  • Optimization, using all kinds of constraints, relaxed surface scans, etc.
  • Nudged-Elastic Band calculations
  • Numerical Frequency Calculations
  • Intrinsic Reaction Coordinate
  • Molecular Dynamics Calculations
  • QM/MM calculations

基本就是除了激发态,什么都能算了。

TechTips

一般用半经验方法,主要是因为原子数量太多,比如做显式溶剂,不太确定哪几个位点的溶剂分子不可以忽略,那么考虑半经验粗略优化一下结构。在这种情况下会出现使用默认opt关键词,优化过程卡在Diagonalizing the G-matrix,或者干脆报内存不足。这主要是因为冗余内坐标优化需要G矩阵求逆,换成直角坐标系就没这个问题了。当然作为trade-off,众所周知,直角坐标系优化步数比较多,因此优化比较慢,只不过反正每一步算得飞快,问题倒也不是很大就是了。