| 查看: 4255 | 回復(fù): 12 | |||||||
| 本帖產(chǎn)生 1 個 QC強(qiáng)帖 ,點(diǎn)擊這里進(jìn)行查看 | |||||||
ChemiAndy木蟲 (正式寫手)
|
[交流]
【ChemiAndy個人文集】NBO5.G Standalone (GENNBO) Linux下的編譯和使用 已有9人參與
|
||||||
|
(此帖已在mdbbs.org發(fā)過,所帶附件可去那邊下載) 我需要計(jì)算Guanidinium ion的多個resonance structure對overall structure的相對貢獻(xiàn)(百分比)。經(jīng)google,從這個教程(猛擊: Introduction to GAUSSIAN 98W and GENNBOW 5.0 NBO)了解到,需要使用NBOGEN。此GENNBO似乎并沒有集成在Gaussian03/09所帶的NBO3.X中,故需使用NBO源代碼編譯所謂的standalone程序gennbo. 編譯很不順利,輾轉(zhuǎn)搜索很多信息方得以通過,因此記下來供別人參考。 我的編譯平臺: 硬件: AMD64 OS: Ubuntu 10.04 編譯器: Intel fortran compiler 11 (ifort) (安裝ifort請參考這里) 如下編譯過程分為4個步驟,下載,劈分源代碼nbo_5g.src,重新生成源代碼gennbo.f,修改bug并編譯。 陰影中文字為linux命令和輸出。 1. 小木蟲論壇下載源代碼: http://www.mdbbs.org/viewthread.php?tid=12591&highlight=nbo 解壓后,應(yīng)當(dāng)是名為nbo_5g.src的源文件(52192行)和一個enable.f (560行)的文件。 2. 生成gennbo.f (1) 首先將nbo_5g.src轉(zhuǎn)成linux格式,并劈成2個文件 NBO_5GA.SRC: 包括nbo_5g.src的前25134行,此部分包括主要的NBO計(jì)算 NBO_5GB.SRC: nbo_5g.src的其余部分,即后27070行,此部分包括所有的NRT計(jì)算 格式轉(zhuǎn)換 $> dos2unix * //Ubuntu10.04中沒有dos2unix,可以安裝"apt-get install tofrodos"然后用"fromdos *"命令轉(zhuǎn)換格式 文件分割: $> head -25125 nbo_5g.src >> NBO_5GA.SRC $> tail -27067 nbo_5g.src >> NBO_5GB.SRC 確認(rèn)你得到的NBO_5GA.SRC的文件尾和NBO_5GB.SRC的文件頭與如下所列相同: $> tail NBO_5GA.SRC SAVE ZERO DATA ZERO/0.0D0/ C SUM = ZERO DO 10 I = 1,N SUM = SUM + X(I)*X(I) 10 CONTINUE VECLEN = SQRT(SUM) RETURN END $> head NBO_5GB.SRC C*********************************************************************** C NBO 5.G -- Natural Bond Orbital Analysis Programs C (c) Copyright 1996-2008 Board of Regents of the University of Wisconsin System C on behalf of the Theoretical Chemistry Institute. All Rights Reserved. C*********************************************************************** C NRT - NATURAL RESONANCE THEORY Version 2.6 C*********************************************************************** C C NRT MODULE ROUTINES: C (2) 編譯enable.f,生成enable, 并執(zhí)行它獲得gennbo.f $> ifort enable.f -o enable $> ./enable Currently supported environments: (1) 32-bit Unix UNIX/LINUX (2) 64-bit Unix UNIX/LINUX (3) DOS PC DOS (4) VMS VAX VMS Environment to enable (1-4)? 1 //沒錯,選擇32bit,盡管我們的平臺是64bit,見后記 Currently supported NBO versions: (1) GEN GENNBO (standalone) (2) G03 Gaussian 03 (3) G98 Gaussian 98 (4) G94 Gaussian 94 (5) GMS GAMESS (6) NWC NWChem (7) AM1 MOPAC or AMPAC NBO Program version to enable (1-7)? 1 Module gennbo.f will be created; OK to proceed [Y]/N? Y NBO source (NBO_5G.SRC ) contains 52194 lines of code. A total of 43434 lines were written to gennbo.f including 272 utility and 2 operating system dependent lines. 這樣就得到了gennbo.f文件 3. 修改gennbo.f中的2處bug (1) 搜索 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR.NE.'gh') THEN 在THEN前補(bǔ)2個右括號 (2) 搜索 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 在THEN前補(bǔ)1個右括號 (所補(bǔ)括號要跟在原括號后, THEN前必須有空格) 感謝參考2中demonangel 的討論,不修改這2處bug很難編譯通過。 4. 編譯gennbo.f $> ifort gennbo.f -o gennbo 應(yīng)該沒有任何warning或error,隨后得到可執(zhí)行的gennbo; 使用gfortran編譯時得到一大堆warning,沒有通過,遂放棄。 5. 關(guān)于所需的內(nèi)存大小,可以直接從gennbo的log文件的前幾行讀出來, Storage needed: 85140 in NPA, 68112 in NBO ( 20000000 available) 上面為10原子使用6-311++G(d,p)基組,僅使用85K+68K=~150K的內(nèi)存,說明NBO計(jì)算不太消耗內(nèi)存,源代碼所設(shè)定的20M對于大型體系也應(yīng)該是足夠的。否則可以通過查找gennbo.f中的"MEMORY = 20000000" 然后修改為你所需的。注意20后面6個0表示20M。 關(guān)于如何通過GENNBO計(jì)算各共振結(jié)構(gòu)的貢獻(xiàn),請看下一篇博文。 參考: 1. "成功編譯NBO 5.G on GAMESS (January 12, 2009 R3.)" http://www.gaoyang168.com/html/201001/1808338.html 2. http://58.213.153.47/viewthread. ... p;extra=&page=2 ************************ 后記:我原先按照參考1(GAMESS編譯)切割nbo_5g.src,編譯成功后,測試表明得到的程序不能正常計(jì)算,因?yàn)橐话阋粋NBO分析應(yīng)該是1-2分鐘的事情,但是它既不退出,也不報錯,查看log file,只有聊聊數(shù)行,因此,只能強(qiáng)行退出。 后來,仔細(xì)看了看NBO_5GA.SRC, 和NBO_5GB.SRC,發(fā)現(xiàn)它切割的地方很奇怪,于是從5GA的末端找到NRT部分開始的地方,全部復(fù)制到5GB的前面,重新編譯。還是不行,運(yùn)算陷入死循環(huán)。 后來還按照NBO5 FAQ 使用古老的g77編譯,但是編譯無法通過,提示COMMON BLOCK的大小不匹配。就在已經(jīng)絕望之后,發(fā)生了一件古怪的事情,我再次用ifort編譯,得到的程序運(yùn)算一切正常。所有的計(jì)算在幾十秒內(nèi)成功完成。。。哥,這到底是為什么? 后來用UltraCompare仔細(xì)比較,原來是我無意中在enable那一步使用了32bit,而只有選擇32bit編譯才能通過,正確地選擇 64bit卻全部失敗... 神奇的NBO5...或者, 只是我的平臺的問題。那么,前一步切割NBO文件的位置到底有沒有影響呢?從enable.f的源碼去讀,應(yīng)該沒有影響。所以,如果你的編譯出了問題,不要放棄,just keep trying... 附件: (1) 我得到的gennbo.f。這樣你無須去切割和修改bug,直接使用“ifort gennbo.f -o gennbo"搞它。前提是你必須是64位linux。否則按照我上面的順序折騰。 (2) 我得到的gennbo程序,如果你使用和我相同的平臺(AMD64-4cores/Ubuntu10.04),或許可以執(zhí)行,我沒有嘗試。 NBO5.G Standalone (GENNBO) Linux下的編譯和使用(二) 下面說明使用NBO計(jì)算某一分子(Guanidinium as an example)個共振式對總體結(jié)構(gòu)的相對貢獻(xiàn)百分比。 Guanidinium離子(C+(NH2)3) 理論上有4種最可能的共振式,下面的計(jì)算表明只有3種共振式對總體結(jié)構(gòu)有貢獻(xiàn)。 過程很簡單,用gauss03/09生成.47文件,然后.47作為輸入文件用gennbo跑一下即可。 gennbo的運(yùn)行很簡單: $> gennbo < input.47 > output.log //PS: replace "input / output" with your file name 關(guān)鍵是input.47文件的生成。它是由gaussian 98/03/09 計(jì)算生成的。 1. .47文件的生成 生成這個文件的輸入文件job.gjf如下: %mem=1024MB # rb3lyp/6-311++g(d,p) pop=NBOread TEST: Guanidinium Ion 1 1 C N 1 B1 N 1 B2 2 A1 N 1 B3 3 A2 2 D1 H 2 B4 1 A3 3 D2 H 2 B5 1 A4 3 D3 H 3 B6 1 A5 4 D4 H 3 B7 1 A6 4 D5 H 4 B8 1 A7 3 D6 H 4 B9 1 A8 3 D7 B1 1.33487700 B2 1.33487641 B3 1.33487641 B4 1.00881433 B5 1.00881433 B6 1.00881391 B7 1.00881451 B8 1.00881391 B9 1.00881451 A1 119.99998985 A2 120.00002031 A3 121.37052848 A4 121.37052848 A5 121.37057951 A6 121.37057291 A7 121.37057951 A8 121.37057291 D1 180.00000000 D2 13.00659769 D3 -166.99340231 D4 -166.99338955 D5 13.00660166 D6 -166.99338955 D7 13.00660166 $NBO ARCHIVE FILE=MYJOB $END //PS: 此行前后均需一空行 運(yùn)行g(shù)aussian $> g09 job.gjf job.log 即可得到 MYJOB.47文件 // PS: replace MYJOB with any name you like 2. 修改MYJOB.47文件 將如下內(nèi)容替換MYJOB.47中的第二行 "$NBO $END" $NBO NRT $END $NRTSTR STR1 LONE 2 1 3 1 4 1 END BOND S 1 2 S 1 3 S 1 4 S 2 5 S 2 6 S 3 7 S 3 8 S 4 9 S 4 10 END END STR2 LONE 3 1 4 1 END BOND D 1 2 S 1 3 S 1 4 S 2 5 S 2 6 S 3 7 S 3 8 S 4 9 S 4 10 END END STR3 LONE 2 1 4 1 END BOND S 1 2 D 1 3 S 1 4 S 2 5 S 2 6 S 3 7 S 3 8 S 4 9 S 4 10 END END STR4 LONE 2 1 3 1 END BOND S 1 2 S 1 3 D 1 4 S 2 5 S 2 6 S 3 7 S 3 8 S 4 9 S 4 10 END END $END 注:單個可能的共振結(jié)構(gòu)由LONE和BOND說明 (1) LONE指明孤對電子(Lone Pair)在幾號原子上和有多少對LP LONE 2 1 3 1 4 1 END 說明在原子序號為2,3,4的原子上分別各有一對孤對電子 (2) BOND指明鍵級 S 1 2 說明在原子1,2之間有單鍵single D 1 3 說明在原子1,3之間有雙鍵double (T n m 說明在原子n,m之間有三鍵triple) 上例指明了guanidinium離子的4個可能的共振結(jié)構(gòu) 3. 然后運(yùn)行g(shù)ennbo $> gennbo < MYJOB.47 > MYJOB.log 即可得到結(jié)果 STR1: 0% STR2: 31.65% STR3: 31.65% STR4: 31.65% 為什么總和不是100%呢?還有5%哪去了?看來要仔細(xì)閱讀manual,看看這個百分比貢獻(xiàn)是如何計(jì)算出來的,也歡迎指教。 參考: 1. NBO5官方網(wǎng)站: http://www.chem.wisc.edu/~nbo5 2. Grigoriy A. Sereda, "Introduction to GAUSSIAN 98W and GENNBOW 5.0" 3. NBO5 Manual, http://www.mdbbs.org/thread-17437-1-2.html by ChemiAndy from一花一世界@百度空間 [ Last edited by yjcmwgk on 2010-9-25 at 15:14 ] 上傳gennbo.f 可用fortran編譯器編譯 $ ifort gennbo.f[ Last edited by ChemiAndy on 2011-9-15 at 06:38 ] MYJOB.47的文件輸入有錯:gdn應(yīng)該只有兩個共振結(jié)構(gòu)。三根單鍵的非極性結(jié)構(gòu),和兩單一雙的極性結(jié)構(gòu)。極性結(jié)構(gòu)雖然有三個isomer, 但NBO只需要輸入1個,否則得到錯誤的結(jié)果。 上面例子中的結(jié)果就是錯的,它得到 三根單鍵的非極性結(jié)構(gòu) 0% 兩單一雙的極性結(jié)構(gòu) 94.94% 正確的結(jié)果應(yīng)該為 三根單鍵的非極性結(jié)構(gòu) 7.45% 兩單一雙的極性結(jié)構(gòu) 58.82% 正確的MYJOB.47部分為(去掉最后兩個重復(fù)的兩單一雙的極性結(jié)構(gòu)的定義即可) 另外一個例子BF3,共振結(jié)構(gòu)定義: 參考結(jié)果: 三根單鍵的非極性結(jié)構(gòu):78% 兩單一雙的極性結(jié)構(gòu): 4% [ Last edited by ChemiAndy on 2015-3-16 at 07:38 ] |
模型 - 模擬 - 統(tǒng)計(jì) - 熱力學(xué) | MS資料 | 氣態(tài)分子化學(xué)動力學(xué) | VASP |
木蟲 (小有名氣)
鐵桿木蟲 (著名寫手)
|
按照您說的從頭到尾,沒出現(xiàn)任何問題,到這一步,說是: -bash :gennbo: command not found 如果直接./gennbo的話,出現(xiàn)如下錯誤: forrtl: Illegal seek forrtl: severe (20): REWIND error, unit 5, file /dev/pts/6 Image PC Routine Line Source gennbo 00000000004FE383 Unknown Unknown Unknown gennbo 00000000004FC862 Unknown Unknown Unknown gennbo 00000000004D6E70 Unknown Unknown Unknown gennbo 00000000004A536E Unknown Unknown Unknown gennbo 00000000004A4FCF Unknown Unknown Unknown gennbo 00000000004BA2CA Unknown Unknown Unknown gennbo 000000000040DCA5 Unknown Unknown Unknown gennbo 0000000000403030 Unknown Unknown Unknown gennbo 0000000000402FCC Unknown Unknown Unknown gennbo 0000000000402F2A Unknown Unknown Unknown libc.so.6 00000033B151C4BB Unknown Unknown Unknown gennbo 0000000000402E6A Unknown Unknown Unknown 請多指教! |
金蟲 (小有名氣)
新蟲 (正式寫手)
木蟲 (正式寫手)
|
可否傳一份NBO5.G Standalone (GENNBO) Linux,去分子模擬論壇下載不下來,積分不夠。郵箱yhuaqing2008@gmail.com,謝謝。 |
木蟲 (正式寫手)
木蟲 (著名寫手)
金蟲 (正式寫手)
|
請教lz關(guān)于.47文件的生成問題。 按照你的帖子,生成.47文件應(yīng)該輸入 # rb3lyp/6-311++g(d,p) pop=NBOread 我的問題是, rb3lyp/6-311++g(d,p)起什么作用?如果我輸入的結(jié)構(gòu)已經(jīng)用 rb3lyp/6-311++g(d,p)優(yōu)化好了,還需要輸入 rb3lyp/6-311++g(d,p)嗎?我嘗試了直接用pop=NBOread,gaussian默認(rèn)的基組是STO-3g,也產(chǎn)生了.47文件。 這樣產(chǎn)生的.47文件與# rb3lyp/6-311++g(d,p) pop=NBOread是否是一樣的? |
木蟲 (正式寫手)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 南京大學(xué)化學(xué)376求調(diào)劑 +3 | hisfailed 2026-03-19 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 294求調(diào)劑材料與化工專碩 +15 | 陌の森林 2026-03-18 | 15/750 |
|
|
[考研] 304求調(diào)劑 +7 | 司空. 2026-03-18 | 7/350 |
|
|
[考研]
|
然11 2026-03-19 | 4/200 |
|
|
[考研] 一志愿中南化學(xué)(0703)總分337求調(diào)劑 +8 | niko- 2026-03-19 | 9/450 |
|
|
[考研] 本人考085602 化學(xué)工程 專碩 +19 | 不知道叫什么! 2026-03-15 | 21/1050 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 261求B區(qū)調(diào)劑,科研經(jīng)歷豐富 +3 | 牛奶很忙 2026-03-20 | 4/200 |
|
|
[考研] 求調(diào)劑 +3 | eation27 2026-03-20 | 3/150 |
|
|
[考博] 申博26年 +3 | 八6八68 2026-03-19 | 3/150 |
|
|
[考研] 復(fù)試調(diào)劑 +4 | z1z2z3879 2026-03-14 | 6/300 |
|
|
[考研] 材料與化工求調(diào)劑 +7 | 為學(xué)666 2026-03-16 | 7/350 |
|
|
[考研] 085600材料與化工調(diào)劑 324分 +10 | llllkkkhh 2026-03-18 | 12/600 |
|
|
[考研] 0817調(diào)劑 +3 | 沒有答案_ 2026-03-14 | 3/150 |
|
|
[考研] 328求調(diào)劑,英語六級551,有科研經(jīng)歷 +3 | 生物工程調(diào)劑 2026-03-17 | 7/350 |
|
|
[考研] 化學(xué)工程321分求調(diào)劑 +15 | 大米飯! 2026-03-15 | 18/900 |
|
|
[考研] 311求調(diào)劑 +6 | 26研0 2026-03-15 | 6/300 |
|
|
[考研] 299求調(diào)劑 +5 | △小透明* 2026-03-17 | 5/250 |
|
|
[考博] 26博士申請 +3 | 1042136743 2026-03-17 | 3/150 |
|
|
[考研] 0703化學(xué)調(diào)劑 290分有科研經(jīng)歷,論文在投 +7 | 膩膩gk 2026-03-14 | 7/350 |
|