• Multiwfn現已可以調用cubegen使靜電勢分析耗時有飛躍式的下降!

    注1:2020-Jul-4及以后版本的Multiwfn的自身的靜電勢代碼計算速度較之前版本有脫胎換骨般提升,見《Multiwfn的計算靜電勢的內部代碼速度得到了極大的提升!》(http://bbs.keinsci.com/thread-18268-1-1.html)、《Multiwfn使用的高效的靜電勢算法的介紹文章已于PCCP期刊發表!》(http://www.shanxitv.org/614)。如果你的機子有10核及以上的話,對于計算擬合靜電勢電荷、分子表面靜電勢的定量分析就強烈不建議按照此文這樣調用cubegen了,直接用Multiwfn自己的計算靜電勢的代碼速度更快!!!

    注2:如果你的波函數是ORCA算的,而且也沒有Gaussian的話,而且CPU核數很少的話,可以用此文的做法節約分子表面靜電勢分析的耗時:《對ORCA用戶大幅節約Multiwfn做分子表面靜電勢分析耗時的方法》(http://bbs.keinsci.com/thread-16499-1-1.html)。


    Multiwfn現已可以調用cubegen使靜電勢分析耗時有飛躍式的下降!

    文/Sobereva @北京科音

    First release: 2018-Aug-18  Last update: 2021-Jun-8


    靜電勢是極為重要的實空間函數,Multiwfn (http://www.shanxitv.org/multiwfn)中支持眾多靜電勢相關分析,例如《靜電勢與平均局部離子化能綜述合集》(http://bbs.keinsci.com/thread-219-1-1.html)這里提到的相關博文。考慮到Gaussian里的cubegen工具計算靜電勢速度比Multiwfn快,為了降低Multiwfn中使用較普遍的“繪制靜電勢平面圖”和“分子表面靜電勢分析”功能的耗時,在之前的Multiwfn手冊4.12節中明確說過怎么借用cubegen工具來顯著節約耗時,但是大部分國內用戶似乎不怎么看手冊,而且手動調用cubegen對一些不懂什么是命令行界面的初學者來說“有難度”。

    為了用戶便利地顯著降低靜電勢分析耗時,在2018-Aug-18于Multiwfn主頁http://www.shanxitv.org/multiwfn更新的Multiwfn 3.6(dev)版中,settings.ini文件里新加入了一個參數cubegenpath,如果這個參數被設為了本機的實際cubegen路徑(Windows下的格式比如"D:\study\G16W\cubegen.exe",Linux下的格式比如"/sob/g16/cubegen"),而且你的輸入文件是fch或fchk,當Multiwfn做以下分析時,將直接自動調用cubegen代替Multiwfn內部代碼計算靜電勢,使得總耗時有巨大下降,特別是對于大體系。
    (1) 繪制靜電勢曲線(主功能3)
    (2) 繪制靜電勢平面圖(主功能4)
    (3) 各種需要計算靜電勢格點數據的功能(例如用主功能5計算靜電勢格點數據、用主功能17對靜電勢做盆分析、用主功能200的子功能14對靜電勢做域分析等)
    (4) 計算擬合靜電勢電荷,目前包括MK、CHELPG和RESP (主功能7的相應子功能)
    (5) 計算TrEsp原子躍遷電荷(如何實現見手冊4.A.9)
    (6) 對靜電勢做定量分子表面分析(主功能12)
    Multiwfn還有很多其它和靜電勢有關的分析,但由于計算量小,就沒有考慮借用cubegen算靜電勢。

    經測試G09和G16的cubegen都可以直接調用,而且計算結果和基于Multiwfn內部代碼算的靜電勢完全相同。G09自帶的cubegen有bug,并行模式運行時結果往往詭異,因此對G09的cubegen,Multiwfn在調用時采用串行方式計算,只有用G16的cubegen時才用并行方式計算(并行核數和settings.ini里的nthreads相同)。Multiwfn通過判斷cubegenpath里有無g16或G16字樣來判斷是G09還是G16的cubegen。

    如果你不是Gaussian用戶,但又想通過如上方式節約靜電勢計算時間,那么可以先用Multiwfn把其它量化程序產生的.molden文件、GAMESS-US或firefly輸出文件(.gms)這些含有基函數信息的文件用Multiwfn轉化為.fch格式,再用此fch文件作為輸入文件即可。轉換方式見《詳談Multiwfn支持的輸入文件類型、產生方法以及相互轉換》(http://www.shanxitv.org/379)。

    順帶一提,cubegen支持的各種實空間函數中,只有靜電勢計算速度快于Multiwfn,其它函數(如電子密度、電子密度拉普拉斯函數、分子軌道波函數等)的計算速度都遠慢于Multiwfn,而且cubegen對于靜電勢以外的函數在計算時沒法并行,故Multiwfn計算其它函數的時候不會考慮利用cubegen。

    由于目前Multiwfn可以直接調用cubegen了,因此之前手冊4.12.7節介紹的用戶手動在命令行下調用cubegen降低靜電勢耗時的做法已被廢除,不再被支持,手冊這一節已被刪去。

    cubegenpath設置示例

    Multiwfn在分子表面靜電勢分析時自動調用cubegen時的截圖


    注意事項1:如果Multiwfn借用cubegen的時候算小體系沒問題,但算大體系的時候中途崩潰,有可能是cubegen可用內存不足所致。解決辦法是通過GAUSS_MEMDEF環境變量設置cubegen可用內存量,見《巨大體系的范德華表面靜電勢圖的快速繪制方法》(http://www.shanxitv.org/481)中關于GAUSS_MEMDEF的說明。

    注意事項2:cubegen計算靜電勢是基于.fch文件里的密度矩陣實現的。有的時候.fch文件里有多種密度矩陣,默認情況下使用SCF密度矩陣。如果你做的是后HF、TDDFT等計算,為了計算后HF波函數或激發態波函數的靜電勢,你需要修改settings.ini里的cubegendenstype參數成為對應的密度矩陣標識。比如,你用# MP2/cc-pVTZ density關鍵詞產生了.fch文件,那么里面既有SCF密度矩陣也有MP2密度矩陣,如果你不改cubegendenstype參數,那么利用cubegen算的靜電勢將是HF級別的;如果你把cubegendenstype參數改為MP2,則cubegen算的靜電勢將是MP2級別的。更多關于.fch文件里密度矩陣的信息見《在Multiwfn中基于fch產生自然軌道的方法與激發態波函數、自旋自然軌道分析實例》(http://www.shanxitv.org/403)文中的說明。

    注意事項3:如果你通過Multiwfn里的某些功能對波函數進行了修改,比如通過主功能6里的子功能26對軌道占據數進行了修改,之后通過調用cubegen算的靜電勢將還是對應最初波函數的,因為.fch文件的內容沒有被修改。如果你想基于修改過的波函數借用cubegen計算靜電勢,則應當在修改波函數后先用主功能100的子功能2把當前波函數導出為.fch文件,此文件中的SCF密度矩陣將對應于當前波函數,因此若再將導出的這個.fch文件作為輸入文件借用cubegen計算靜電勢,對應的就是修改后的波函數的情況。



    PS:之前肯定有人也直接用過cubegen計算靜電勢.cub文件,但通過Multiwfn調用cubegen來計算靜電勢.cub文件,比直接用cubegen計算靜電勢.cub文件要好的多得多,有這些原因:
    (1)Multiwfn全交互式操作,每一步提示超級明白易懂,因此不需要像用cubegen那樣記憶命令行
    (2)Multiwfn在設定格點方面超級靈活,選項十分豐富,無論想怎么設格點,都能找到對應的選項可用。反之cubegen在設定格點方面很笨拙、非常死板、不人性化,我在此帖的回帖中有更多說明:http://bbs.keinsci.com/thread-10685-1-1.html
    (3)Multiwfn調用cubegen算完靜電勢格點數據后可以不借助第三方工具就直接繪制成等值面,還可以計算對應變形密度(deformation density)的靜電勢,對一些討論頗有用,見比如《靜電效應主導了氫氣、氮氣二聚體的構型》(http://www.shanxitv.org/209)。

    久久精品国产99久久香蕉