计算化学公社

标题: Hess2freq源码中读入Hessian矩阵如何理解 [打印本页]

作者
Author:
lucky1999    时间: 2024-7-13 21:14
标题: Hess2freq源码中读入Hessian矩阵如何理解
各位老师,我是一个量化的新手,目前想通过http://sobereva.com/328中sob写的Hess2freq搞清楚振动频率是如何通过Hessian矩阵计算得到的。目前,我对以下的代码段有一些疑问。
  1. !Load Hessian matrix
  2. allocate(Hess(nmodeall,nmodeall))
  3. Hess=0
  4. call loclabel(10,"Cartesian Force Constants")
  5. read(10,*)
  6. read(10,"(5(1PE16.8))") ((Hess(i,j),j=1,i),i=1,nmodeall)
  7. Hess=Hess+transpose(Hess)
  8. do i=1,nmodeall
  9.         Hess(i,i)=Hess(i,i)/2D0
  10. end do
  11. close(10)
  12. ! call showmatgau(Hess,"Hessian matrix",1)
复制代码
我的理解,该段代码应该是从Cartesian Force Constants字段下提取值放到Hess这个二维数组中,Hess这个二维数组中应该放入nmodeall*nmodeall个元素,但是我看过Hess2freq程序文件夹下的examples中两个例子的fch文件中Cartesian Force Constants下的值的个数不是nmodeall*nmodeall个(我认为Hessian矩阵应该是有nmodeall*nmodeall个值),请问各位老师我是哪儿理解错了吗?谢谢各位老师。附件中为两个例子的fch文件。

作者
Author:
sobereva    时间: 2024-7-13 21:28
Hessian矩阵是对称矩阵,fch只记录了其三角部分,hess2freq直接读的也是按三角矩阵读的,然后再产生完整的Hessian矩阵
作者
Author:
lucky1999    时间: 2024-7-13 21:37
sobereva 发表于 2024-7-13 21:28
Hessian矩阵是对称矩阵,fch只记录了其三角部分,hess2freq直接读的也是按三角矩阵读的,然后再产生完整的H ...

谢谢sob老师的解答,懂啦!




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