| 5 | 1/1 | 返回列表 |
| 查看: 4277 | 回復(fù): 12 | |||||||
| 本帖產(chǎn)生 1 個 QC強帖 ,點擊這里進行查看 | |||||||
| 當(dāng)前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||||||
ChemiAndy木蟲 (正式寫手)
|
[交流]
【ChemiAndy個人文集】NBO5.G Standalone (GENNBO) Linux下的編譯和使用 已有9人參與
|
||||||
|
(此帖已在mdbbs.org發(fā)過,所帶附件可去那邊下載) 我需要計算Guanidinium ion的多個resonance structure對overall structure的相對貢獻(百分比)。經(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計算 NBO_5GB.SRC: nbo_5g.src的其余部分,即后27070行,此部分包括所有的NRT計算 格式轉(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前補2個右括號 (2) 搜索 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 在THEN前補1個右括號 (所補括號要跟在原括號后, 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計算不太消耗內(nèi)存,源代碼所設(shè)定的20M對于大型體系也應(yīng)該是足夠的。否則可以通過查找gennbo.f中的"MEMORY = 20000000" 然后修改為你所需的。注意20后面6個0表示20M。 關(guān)于如何通過GENNBO計算各共振結(jié)構(gòu)的貢獻,請看下一篇博文。 參考: 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,編譯成功后,測試表明得到的程序不能正常計算,因為一般一個NBO分析應(yīng)該是1-2分鐘的事情,但是它既不退出,也不報錯,查看log file,只有聊聊數(shù)行,因此,只能強行退出。 后來,仔細看了看NBO_5GA.SRC, 和NBO_5GB.SRC,發(fā)現(xiàn)它切割的地方很奇怪,于是從5GA的末端找到NRT部分開始的地方,全部復(fù)制到5GB的前面,重新編譯。還是不行,運算陷入死循環(huán)。 后來還按照NBO5 FAQ 使用古老的g77編譯,但是編譯無法通過,提示COMMON BLOCK的大小不匹配。就在已經(jīng)絕望之后,發(fā)生了一件古怪的事情,我再次用ifort編譯,得到的程序運算一切正常。所有的計算在幾十秒內(nèi)成功完成。。。哥,這到底是為什么? 后來用UltraCompare仔細比較,原來是我無意中在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計算某一分子(Guanidinium as an example)個共振式對總體結(jié)構(gòu)的相對貢獻百分比。 Guanidinium離子(C+(NH2)3) 理論上有4種最可能的共振式,下面的計算表明只有3種共振式對總體結(jié)構(gòu)有貢獻。 過程很簡單,用gauss03/09生成.47文件,然后.47作為輸入文件用gennbo跑一下即可。 gennbo的運行很簡單: $> gennbo < input.47 > output.log //PS: replace "input / output" with your file name 關(guān)鍵是input.47文件的生成。它是由gaussian 98/03/09 計算生成的。 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: 此行前后均需一空行 運行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. 然后運行g(shù)ennbo $> gennbo < MYJOB.47 > MYJOB.log 即可得到結(jié)果 STR1: 0% STR2: 31.65% STR3: 31.65% STR4: 31.65% 為什么總和不是100%呢?還有5%哪去了?看來要仔細閱讀manual,看看這個百分比貢獻是如何計算出來的,也歡迎指教。 參考: 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)計 - 熱力學(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 請多指教! |
新蟲 (正式寫手)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料學(xué)碩333求調(diào)劑 +10 | 北道巷 2026-03-24 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 0703化學(xué)調(diào)劑,求導(dǎo)師收 +9 | 天天好運來上岸?/a> 2026-03-24 | 10/500 |
|
|
[考研] 083000學(xué)碩274求調(diào)劑 +8 | Li李魚 2026-03-26 | 8/400 |
|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 材料與化工(0856)304求B區(qū)調(diào)劑 +8 | 邱gl 2026-03-27 | 8/400 |
|
|
[考研] 材料277求調(diào)劑 +7 | min3 2026-03-24 | 7/350 |
|
|
[考研] 藥學(xué)105500求調(diào)劑 +3 | Ssun。。 2026-03-28 | 3/150 |
|
|
[考研] 一志愿南京航空航天大學(xué)材料學(xué)碩求調(diào)劑 +3 | @taotao 2026-03-28 | 3/150 |
|
|
[考研]
|
孅華 2026-03-22 | 17/850 |
|
|
[考研] 張芳銘-中國農(nóng)業(yè)大學(xué)-環(huán)境工程專碩-298 +4 | 手機用戶 2026-03-26 | 4/200 |
|
|
[考研] 求調(diào)劑 +8 | 張zz111 2026-03-27 | 9/450 |
|
|
[考研] 274求調(diào)劑 +17 | 顧九笙要謙虛 2026-03-24 | 23/1150 |
|
|
[考研] 08開頭275求調(diào)劑 +4 | 拉誰不重要 2026-03-26 | 4/200 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 329求調(diào)劑 +5 | 1() 2026-03-22 | 5/250 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研] 309求調(diào)劑 +4 | gajsj 2026-03-25 | 5/250 |
|
|
[考研]
|
黃粱一夢千年 2026-03-24 | 3/150 |
|
|
[考研] 361求調(diào)劑 +3 | Glack 2026-03-22 | 3/150 |
|