计算化学公社

标题: 最理想的用于波函数分析的波函数文件格式mwfn已发表! [打印本页]

作者
Author:
sobereva    时间: 2020-2-22 00:02
标题: 最理想的用于波函数分析的波函数文件格式mwfn已发表!
之前已经有很多记录波函数的文件格式,比如wfn、wfx、fch、molden等等,然而这些文件都有这样或那样的缺点,给波函数分析程序的开发带来极为严重的不便,甚至有时导致结果错误,作为波函数分析程序Multiwfn的开发者我对此有极为深刻的感受。这个问题长久以来一直没有解决,程序开发者们总是将就着用现有的不理想的格式,带来很多局限性、混乱、不兼容问题。

为了彻底解决缺乏理想的波函数记录格式给波函数信息的储存与交换,以及给波函数分析程序的开发带来的严重不便,我提出了一种新的格式叫mwfn,全称Multiwfn wavefunction file,此格式已经被http://sobereva.com/multiwfn上的最新版Multiwfn所支持。此格式解决了现有各种格式存在的各种缺点,并且格式紧凑、易于读写、定义严格、高度可扩展。此格式的介绍文章已经发表在ChemRxiv上,欢迎查看:https://doi.org/10.26434/chemrxiv.11872524.v1。文中包含格式提出的思想、详细定义、目前常见格式的简介和对比,还专门说明如何测试文件内容的合理性。

非常欢迎广大量子化学程序开发者支持此格式,只要支持了这个格式,并且能通过文中说的检测方法,波函数就可以被Multiwfn进行分析。我相信此格式终究会彻底代替wfn、wfx、molden等格式,成为波函数分析与量子化学领域储存与交换波函数信息的新的公认的标准。

作者
Author:
zsu007    时间: 2020-2-22 07:43
社长威武!
作者
Author:
lijiayisjtu    时间: 2020-2-22 10:44
社长威武
作者
Author:
lijiayisjtu    时间: 2020-2-22 11:07
已经拜读,mwfn格式确实最全面


作者
Author:
朙天儿    时间: 2020-2-22 12:21
.存与交换波函数信息的新的公认的标准。
—— Sob神



作者
Author:
granvia    时间: 2020-2-22 13:24
lijiayisjtu 发表于 2020-2-22 11:07
已经拜读,mwfn格式确实最全面

单看这个表,我个人感觉未必是包含信息越全越好,因为这些信息之间并非完全独立,例如,(对于单行列式波函数)知道了轨道系数自然就能得到密度矩阵,Fock矩阵和轨道占据数。所以fchk包含的都是必要信息,可以避免存储冗余信息从而节省文件体积。
作者
Author:
sobereva    时间: 2020-2-22 17:58
granvia 发表于 2020-2-22 13:24
单看这个表,我个人感觉未必是包含信息越全越好,因为这些信息之间并非完全独立,例如,(对于单行列式波 ...

密度矩阵虽然可以通过轨道占据数和轨道系数简单得到,但不是所有程序自己都可以做这件事,诸如NBO程序就是直接去读密度矩阵,而自己没有密度矩阵产生功能。而且,mwfn格式明确说明密度矩阵是optional的,想存就存,不想存就不存,给出程序开发者足够的余地自行决定,而不是像诸如molden格式根本不给出这个可能性。

另外,光知道系数矩阵更没法简单得到Fock矩阵,有几个波函数分析程序同时自带单/双电子积分、交换相关势计算代码?

"fchk包含的都是必要信息"的观点不对。Fock矩阵对于涉及轨道能量的分析非常重要,诸如用于获得LMO、AdNDP轨道的能量,而fchk却没有自带。对于后HF波函数,自然轨道占据数很重要,fchk甚至都没有明确给出能够记录这样信息的专门的字段(除非像Multiwfn这样提供特殊的功能基于密度矩阵去得到自然轨道,但显然给其它波函数程序开发者带来不便)。反倒是fch里有很多字段,诸如Coordinates of each shell之类是真正多余的。而且fch还包含一大堆零七八碎的Gaussian私有的对波函数分析毫无意义的信息,第三方开发者在载入、导出的时候都不知道哪些是必须的,没个统一标准,因此都称不上是一个通用的记录、交换波函数信息的格式。

mwfn格式在定义的时候是结合我10年来开发Multiwfn大量功能的过程中积攒的经验,从各个角度多方面非常全面地考虑程序开发的便利性来定义的。没有多余的信息,而只有最必须、最重要的信息,并且留出可扩展的余地。如果你也长期开发功能各异的波函数分析程序,想必会对mwfn格式的重要性和价值深有体会。

作者
Author:
granvia    时间: 2020-2-22 18:23
本帖最后由 granvia 于 2020-2-23 09:58 编辑
sobereva 发表于 2020-2-22 17:58
密度矩阵虽然可以通过轨道占据数和轨道系数简单得到,但不是所有程序自己都可以做这件事,诸如NBO程序就 ...

Fock矩阵可由分子轨道能级构成的对角阵通过系数矩阵逆变换得到,具体就是:F = inv(C')*E*inv(C),其中E是对角阵,对角元为各CMO的能量,C是系数矩阵,C’是其转置共轭
作者
Author:
sobereva    时间: 2020-2-22 22:38
granvia 发表于 2020-2-22 18:23
Fock矩阵可由分子轨道能级构成的对角阵通过系数矩阵逆变换得到,具体就是:F = C*E*C’,其中E是对角阵, ...

以这种方式得到Fock矩阵还需牵扯到正交化变换,对于基函数存在线性依赖的时候还得有特殊考虑,让波函数分析程序做这个太麻烦还容易因考虑不周导致出错。mwfn储存Fock/KS矩阵对应的矩阵名是1-e Hamiltonian,是个广义化的名字,实质上不限于Fock或者KS矩阵,因此此字段还可以有额外用处,诸如后HF计算下有的程序也可以定义特殊形式的有效单电子算符记录到这个字段里。


作者
Author:
granvia    时间: 2020-2-23 10:02
sobereva 发表于 2020-2-22 22:38
以这种方式得到Fock矩阵还需牵扯到正交化变换,对于基函数存在线性依赖的时候还得有特殊考虑,让波函数分 ...

8L式子打错了,已更正。 不用正交化,但需取逆。当基函数存在线性依赖时,确实有麻烦,可以取伪逆或求解线性方程,但可能存在问题。
作者
Author:
ggdh    时间: 2020-3-6 19:04
能不能弄一个二进制的mwfn,高度压缩,使得其体积更小,方便储存和传输。就好像xtc相对于trr那种?
然后可以用Multwfn解压
作者
Author:
sobereva    时间: 2020-3-7 10:33
ggdh 发表于 2020-3-6 19:04
能不能弄一个二进制的mwfn,高度压缩,使得其体积更小,方便储存和传输。就好像xtc相对于trr那种?
然后可 ...

我觉得必要性不高。一般波函数文件也不大,以mwfn格式来存的话,撑死了也就两三百兆,再大的话现有量化程序也算不动。而且文本文件油水很大,rar、7z一压缩也没多大了(比如molden文件压成rar后就几分之一了)。而且弄成二进制之后也不好人工修改、读取。

xtc比trr小是因为用了有损方式储存数据,但波函数储存要求精度比较高,以牺牲精度减小尺寸的话得不偿失,弄不好还导致分析结果有误导性之类就麻烦了。

作者
Author:
Freeman    时间: 2023-12-7 13:55
本帖最后由 Freeman 于 2023-12-7 13:57 编辑

请问社长,文章里“Nprims (integer,  scalar):  Number  of  primitive  functions  (in  the  case  that  all  primitive functions are Cartesian type)”,是哪个意思呢?
一、只有当基函数都是笛卡尔型时,才要填这项;
二、假如所有基函数都是笛卡尔型,所有primitive的个数(包括各个分量,如px、dxx);
三、只填笛卡尔基函数primitive的个数(包括各个分量,如px、dxx)。


作者
Author:
sobereva    时间: 2023-12-7 14:10
Freeman 发表于 2023-12-7 13:55
请问社长,文章里“Nprims (integer,  scalar):  Number  of  primitive  functions  (in  the  case  that ...

2
如果当前有的是球谐型,转化成笛卡尔型,然后再计数





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