计算化学公社

标题: 原子积分怎么变换到分子积分 [打印本页]

作者
Author:
最爱喵星人    时间: 2017-7-24 21:53
标题: 原子积分怎么变换到分子积分
请问原子积分怎么变换到分子积分?

然后请问我关于多参考方法的算法流程理解正确吗:
1 解fock方程,得到优化一组MO
2 定义casscf fock 算符 f_cas=sum_pq [f_pq*E_pq]
3 对定义的casscf fock 算符进行投影,确保它是0级波函数的本征函数 H0=|0><0|*f_cas
4 各种动态相关

我不太理解的是0级波函数是哪来的? HF的波函数吗?

谢谢。

作者
Author:
sobereva    时间: 2017-7-25 00:34
(, 下载次数 Times of downloads: 71)
这是一般写法,具体怎么高效地变换很有学问,cook book里写了不少

作者
Author:
Warm_Cloud    时间: 2017-7-25 09:04
下面有个例子:我的程序里面的,想要更高的效率,可以看看主流的软件怎么写的。  
  !===================================================================
    do p = 1,Nbas
      do q = 1,p
        ! first step
        if(method == "mp2") then
            NTemp = Nocc
        else
            NTemp = Nbas
        end if
        
        do r = 1,Nbas
          do l = 1,NTemp
            A_T(l,r) = 0.0d0
            do s = 1,Nbas
               A_T(l,r) = A_T(l,r) + MoCu(s,l)*g_Mo(EI(s,r),EI(p,q))
            end do
          end do
        end do
        ! second step
        do k = 1+FCstar,Nbas
        
          if(method == "mp2") then
            NTemp = min(k,Nocc)
          else
            NTemp = k
          end if
         
          do l = 1+FCstar,NTemp
            g_Mo(EI(l,k),EI(p,q)) = 0.0d0
            do r = 1,Nbas
               g_Mo(EI(l,k),EI(p,q)) = g_Mo(EI(l,k),EI(p,q)) + MoCu(r,k)*A_T(l,r)
            end do
          end do
        end do
        !---------------------------------------------------------------
      end do
    end do
        
    deallocate(A_T)
   
    do k = 1+FCstar,Nbas
   
      if(method == "mp2") then
        NTemp = min(k,Nocc)
      else
        NTemp = k
      end if
      
      do l = 1+FCstar,NTemp
        ! step 3
        do p = 1,Nbas
          do j = 1,NBas
            B_T(j,p) = 0.0d0
            do q = 1,Nbas
               B_T(j,p) = B_T(j,p) + MoCu(q,j)*g_Mo(EI(l,k),EI(p,q))
            end do
          end do
        end do
        ! step 4
        do i = 1+FCstar,Nbas
          do j = 1+FCstar,i
            if( i*(i-1)+2*j < k*(k-1)+2*l ) cycle
            g_Mo(EI(l,k),EI(j,i)) = 0.0d0
            do p = 1,Nbas
               g_Mo(EI(l,k),EI(j,i)) = g_Mo(EI(l,k),EI(j,i)) + MoCu(p,i)*B_T(j,p)
            end do
          end do
        end do  
        !---------------------------------------------------------------
      end do
    end do
   
    deallocate(B_T)
   
    do k = 1+FCstar,Nbas
   
      if(method == "mp2") then
        NTemp = min(k,Nocc)
      else
        NTemp = k
      end if
      
      do l = 1+FCstar,NTemp
        do i = 1+FCstar,Nbas
          do j = 1+FCstar,i
            if( i*(i-1)+2*j < k*(k-1)+2*l ) cycle
            g_Mo(EI(j,i),EI(l,k)) = g_Mo(EI(l,k),EI(j,i))
          end do
        end do  
      end do
    end do   

作者
Author:
rtransformation    时间: 2017-7-25 14:51
sobereva 发表于 2017-7-25 00:34
这是一般写法,具体怎么高效地变换很有学问,cook book里写了不少

Sob老师,这个“cook book”是哪本书?
作者
Author:
最爱喵星人    时间: 2017-7-25 15:07
sobereva 发表于 2017-7-25 00:34
这是一般写法,具体怎么高效地变换很有学问,cook book里写了不少

哦,那有了原子积分表,再根据上面的式子乘逆反推回分子积分吗
作者
Author:
最爱喵星人    时间: 2017-7-25 15:24
Warm_Cloud 发表于 2017-7-25 09:04
下面有个例子:我的程序里面的,想要更高的效率,可以看看主流的软件怎么写的。  
  !=================== ...

谢谢。另外你的那个编程参考文献帖子里的百度盘打不开。
作者
Author:
Warm_Cloud    时间: 2017-7-25 17:41
最爱喵星人 发表于 2017-7-25 15:24
谢谢。另外你的那个编程参考文献帖子里的百度盘打不开。

没问题的,打得开
作者
Author:
最爱喵星人    时间: 2017-7-25 22:51
Warm_Cloud 发表于 2017-7-25 17:41
没问题的,打得开

要不能不能麻烦你把文件名截个图?在国外,打不开。。。
作者
Author:
sobereva    时间: 2017-7-26 02:09
rtransformation 发表于 2017-7-25 14:51
Sob老师,这个“cook book”是哪本书?

Handbook Of Computational Quantum Chemistry(David.B.Cook)
作者
Author:
rtransformation    时间: 2017-7-26 08:52
sobereva 发表于 2017-7-26 02:09
Handbook Of Computational Quantum Chemistry(David.B.Cook)

谢谢老师。




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