巨幅减小Gaussian的TDDFT计算产生的fch文件的尺寸的方法
巨幅减小Gaussian的TDDFT计算产生的fch文件的尺寸的方法
A method to greatly reduce the size of the fch file generated by TDDFT calculation of Gaussian
文/Sobereva@北京科音2023-Feb-7
1 G16 C.01开始TDDFT的fch文件尺寸巨大的问题
Gaussian 16从C.01版开始,对大体系做TDDFT计算得到的chk转换成的fch文件(Linux下默认为fchk后缀,是一码事,本文不做区分)尺寸颇大,尤其是算的激发态数目多的时候。例如用Gaussian 16 C.02对C60富勒烯在6-31G*下做TDDFT计算50个激发态,产生的chk文件是1356 MB,formchk转换出来的fch文件达到1915MB!如果用G16 B.01计算,虽然产生的chk文件也是这么大,但是formchk转出来的fch只有38MB,仅是G16 C.02版尺寸的一个零头。之所以两个版本的formchk转出来的fch文件尺寸差异这么大,在于从G16 C.01版开始fch文件里额外保存了Excited state densities和G to E trans densities字段,分别记录激发态密度矩阵和基态到激发态的跃迁密度矩阵。这俩信息对绝大多数用户没什么用,而且要用它们的时候还可以随时用Multiwfn计算出来,见《使用Multiwfn绘制跃迁密度矩阵和电荷转移矩阵考察电子激发特征》(//www.umsyar.com/436)。
巨大的fch文件显然非常占硬盘,而且网络传输又特别费时间、费流量。为了解决此问题,这里提供两个解决方法,分别用fchred和Multiwfn程序。
2 fchred程序
我写的fchred程序的用途是将fch中占空间极大的Excited state densities和G to E trans densities字段去掉,从而减小fch文件的体积。此程序可以在//www.umsyar.com/soft/fchred.zip免费下载,带.exe后缀的是Windows版,不带后缀的是Linux版。
启动fchred后,输入原fch文件的路径,再输入新产生的fch文件的路径,就会开始转换。对于前面说的G16 C.02做TDDFT算富勒烯的例子,原本的fch文件经过fchred处理后,尺寸从1915MB减小到了38MB,和G16 B.01版得到的fch文件的大小基本一致。
fchred也可以通过命令行使用,比如输入fchred Liella.fch,就会直接产生转换完的Liella_new.fch文件到当前目录下。
3 利用Multiwfn程序减小fch文件尺寸
波函数分析程序Multiwfn(//www.umsyar.com/multiwfn)提供了非常丰富的电子激发分析功能,见《Multiwfn支持的电子激发分析方法一览》(//www.umsyar.com/437)。其中有很多功能,比如空穴-电子分析(//www.umsyar.com/434)、IFCT分析(//www.umsyar.com/433)等,对于Gaussian用户来说都需要提供fch文件,Multiwfn会从中读取基函数和轨道信息。大量Gaussian和Multiwfn用户留着fch文件就是为了做这些分析,以及用Multiwfn看轨道图像(//www.umsyar.com/269),以及做各种依赖于基态波函数的分析。
如果你就是为了上述目的留着fch,可以用Multiwfn载入fch文件之后选择主功能100的子功能2,再选择导出fch文件。这样得到的fch文件里就只保留了对以上目的有用的信息了,其它没用的字段就全都消失了。前述的G16 C.02算富勒烯TDDFT例子的fch文件在这么处理后,新的fch文件尺寸仅有19MB,比G16 B.01的fch还要小一倍!
对于以上目的,笔者更建议让Multiwfn转出来我提出的mwfn格式(https://doi.org/10.26434/chemrxiv-2021-lt04f-v6)的波函数文件,对于在Multiwfn中做分析可以起到和fch同等的用处,而由于mwfn格式更为紧凑,尺寸更小。用Multiwfn载入原fch文件,进入主功能100的子功能2,选择相应选项就能导出mwfn文件,在Multiwfn让你选择在mwfn里导出什么信息时选择Only export wavefunction就够了。对于前例,这样产生的mwfn文件尺寸只有不到13MB,进一步用winrar或7zip压缩后就只有不到2MB了,尺寸已可以忽略不计(而原本的fch有1915MB之大!)。当一个激发态相关的研究课题搞完后,笔者建议对相关的fch文件都这么处理,能够巨幅节约硬盘。
别忘了Multiwfn可以方便地通过命令行使用,也可以写脚本实现用Multiwfn快捷地批处理fch文件,参见《详谈Multiwfn的命令行方式运行和批量运行的方法》(//www.umsyar.com/612)。
相对于用Multiwfn,用fchred减小fch文件的唯一一个优点是可以保留其它信息。比如做激发态的振动分析得到了fch文件,如果用Multiwfn处理的话fch里的Hessian矩阵等信息就没了,之后就没法用比如sobtop(//www.umsyar.com/soft/Sobtop)计算激发态的力场参数了,也没法用GaussView去观看振动模式了。