| 查看: 4253 | 回復(fù): 12 | |||||||
| 本帖產(chǎn)生 1 個(gè) QC強(qiáng)帖 ,點(diǎn)擊這里進(jìn)行查看 | |||||||
ChemiAndy木蟲 (正式寫手)
|
[交流]
【ChemiAndy個(gè)人文集】NBO5.G Standalone (GENNBO) Linux下的編譯和使用 已有9人參與
|
||||||
|
(此帖已在mdbbs.org發(fā)過,所帶附件可去那邊下載) 我需要計(jì)算Guanidinium ion的多個(gè)resonance structure對(duì)overall structure的相對(duì)貢獻(xiàn)(百分比)。經(jīng)google,從這個(gè)教程(猛擊: Introduction to GAUSSIAN 98W and GENNBOW 5.0 NBO)了解到,需要使用NBOGEN。此GENNBO似乎并沒有集成在Gaussian03/09所帶的NBO3.X中,故需使用NBO源代碼編譯所謂的standalone程序gennbo. 編譯很不順利,輾轉(zhuǎn)搜索很多信息方得以通過,因此記下來供別人參考。 我的編譯平臺(tái): 硬件: AMD64 OS: Ubuntu 10.04 編譯器: Intel fortran compiler 11 (ifort) (安裝ifort請(qǐng)參考這里) 如下編譯過程分為4個(gè)步驟,下載,劈分源代碼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行)和一個(gè)enable.f (560行)的文件。 2. 生成gennbo.f (1) 首先將nbo_5g.src轉(zhuǎn)成linux格式,并劈成2個(gè)文件 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 //沒錯(cuò),選擇32bit,盡管我們的平臺(tái)是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個(gè)右括號(hào) (2) 搜索 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 在THEN前補(bǔ)1個(gè)右括號(hào) (所補(bǔ)括號(hào)要跟在原括號(hào)后, THEN前必須有空格) 感謝參考2中demonangel 的討論,不修改這2處bug很難編譯通過。 4. 編譯gennbo.f $> ifort gennbo.f -o gennbo 應(yīng)該沒有任何warning或error,隨后得到可執(zhí)行的gennbo; 使用gfortran編譯時(shí)得到一大堆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對(duì)于大型體系也應(yīng)該是足夠的。否則可以通過查找gennbo.f中的"MEMORY = 20000000" 然后修改為你所需的。注意20后面6個(gè)0表示20M。 關(guān)于如何通過GENNBO計(jì)算各共振結(jié)構(gòu)的貢獻(xiàn),請(qǐng)看下一篇博文。 參考: 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,編譯成功后,測(cè)試表明得到的程序不能正常計(jì)算,因?yàn)橐话阋粋(gè)NBO分析應(yīng)該是1-2分鐘的事情,但是它既不退出,也不報(bào)錯(cuò),查看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...或者, 只是我的平臺(tái)的問題。那么,前一步切割NBO文件的位置到底有沒有影響呢?從enable.f的源碼去讀,應(yīng)該沒有影響。所以,如果你的編譯出了問題,不要放棄,just keep trying... 附件: (1) 我得到的gennbo.f。這樣你無須去切割和修改bug,直接使用“ifort gennbo.f -o gennbo"搞它。前提是你必須是64位linux。否則按照我上面的順序折騰。 (2) 我得到的gennbo程序,如果你使用和我相同的平臺(tái)(AMD64-4cores/Ubuntu10.04),或許可以執(zhí)行,我沒有嘗試。 NBO5.G Standalone (GENNBO) Linux下的編譯和使用(二) 下面說明使用NBO計(jì)算某一分子(Guanidinium as an example)個(gè)共振式對(duì)總體結(jié)構(gòu)的相對(duì)貢獻(xiàn)百分比。 Guanidinium離子(C+(NH2)3) 理論上有4種最可能的共振式,下面的計(jì)算表明只有3種共振式對(duì)總體結(jié)構(gòu)有貢獻(xiàn)。 過程很簡(jiǎn)單,用gauss03/09生成.47文件,然后.47作為輸入文件用gennbo跑一下即可。 gennbo的運(yùn)行很簡(jiǎ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文件的生成 生成這個(gè)文件的輸入文件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ǎn)蝹(gè)可能的共振結(jié)構(gòu)由LONE和BOND說明 (1) LONE指明孤對(duì)電子(Lone Pair)在幾號(hào)原子上和有多少對(duì)LP LONE 2 1 3 1 4 1 END 說明在原子序號(hào)為2,3,4的原子上分別各有一對(duì)孤對(duì)電子 (2) BOND指明鍵級(jí) S 1 2 說明在原子1,2之間有單鍵single D 1 3 說明在原子1,3之間有雙鍵double (T n m 說明在原子n,m之間有三鍵triple) 上例指明了guanidinium離子的4個(gè)可能的共振結(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,看看這個(gè)百分比貢獻(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的文件輸入有錯(cuò):gdn應(yīng)該只有兩個(gè)共振結(jié)構(gòu)。三根單鍵的非極性結(jié)構(gòu),和兩單一雙的極性結(jié)構(gòu)。極性結(jié)構(gòu)雖然有三個(gè)isomer, 但NBO只需要輸入1個(gè),否則得到錯(cuò)誤的結(jié)果。 上面例子中的結(jié)果就是錯(cuò)的,它得到 三根單鍵的非極性結(jié)構(gòu) 0% 兩單一雙的極性結(jié)構(gòu) 94.94% 正確的結(jié)果應(yīng)該為 三根單鍵的非極性結(jié)構(gòu) 7.45% 兩單一雙的極性結(jié)構(gòu) 58.82% 正確的MYJOB.47部分為(去掉最后兩個(gè)重復(fù)的兩單一雙的極性結(jié)構(gòu)的定義即可) 另外一個(gè)例子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é)動(dòng)力學(xué) | VASP |
木蟲 (小有名氣)
鐵桿木蟲 (著名寫手)
|
按照您說的從頭到尾,沒出現(xiàn)任何問題,到這一步,說是: -bash :gennbo: command not found 如果直接./gennbo的話,出現(xiàn)如下錯(cuò)誤: 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 請(qǐng)多指教! |
金蟲 (小有名氣)
新蟲 (正式寫手)
木蟲 (正式寫手)
|
可否傳一份NBO5.G Standalone (GENNBO) Linux,去分子模擬論壇下載不下來,積分不夠。郵箱yhuaqing2008@gmail.com,謝謝。 |
木蟲 (正式寫手)
木蟲 (著名寫手)
金蟲 (正式寫手)
|
請(qǐng)教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ā)表 | |
|---|---|---|---|---|
|
[考研] 265求調(diào)劑 +8 | 梁梁校校 2026-03-17 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 295材料求調(diào)劑,一志愿武漢理工085601專碩 +4 | Charlieyq 2026-03-19 | 4/200 |
|
|
[考研] 本人考085602 化學(xué)工程 專碩 +18 | 不知道叫什么! 2026-03-15 | 20/1000 |
|
|
[考研] 317求調(diào)劑 +4 | 申子申申 2026-03-19 | 8/400 |
|
|
[考研] 求調(diào)劑 +3 | 暗涌afhb 2026-03-16 | 3/150 |
|
|
[考研] 一志愿蘇州大學(xué)材料求調(diào)劑,總分315(英一) +3 | sbdksD 2026-03-19 | 3/150 |
|
|
[考研] 286求調(diào)劑 +6 | lemonzzn 2026-03-16 | 10/500 |
|
|
[考研] 化學(xué)求調(diào)劑 +3 | 臨澤境llllll 2026-03-17 | 4/200 |
|
|
[考研] 328求調(diào)劑,英語六級(jí)551,有科研經(jīng)歷 +4 | 生物工程調(diào)劑 2026-03-16 | 12/600 |
|
|
[考研] 一志愿中海洋材料工程專碩330分求調(diào)劑 +7 | 小材化本科 2026-03-18 | 7/350 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +4 | 守候夕陽(yáng)CF 2026-03-18 | 4/200 |
|
|
[考研] 070300化學(xué)319求調(diào)劑 +6 | 錦鯉0909 2026-03-17 | 6/300 |
|
|
[考研] 301求調(diào)劑 +9 | yy要上岸呀 2026-03-17 | 9/450 |
|
|
[考研] 301求調(diào)劑 +4 | A_JiXing 2026-03-16 | 4/200 |
|
|
[考研] 290求調(diào)劑 +3 | p asserby. 2026-03-15 | 4/200 |
|
|
[考研] 274求調(diào)劑 +5 | 時(shí)間點(diǎn) 2026-03-13 | 5/250 |
|
|
[考研] 333求調(diào)劑 +3 | 文思客 2026-03-16 | 7/350 |
|
|
[考研] 0703 物理化學(xué)調(diào)劑 +3 | 我可以上岸的對(duì)?/a> 2026-03-13 | 5/250 |
|
|
[考研] 288求調(diào)劑 +4 | 奇點(diǎn)0314 2026-03-14 | 4/200 |
|
|
[考研] 招收0805(材料)調(diào)劑 +3 | 18595523086 2026-03-13 | 3/150 |
|