【分享】高斯對不收斂問題的對策
首先,我們必須理解收斂是什么意思。在自洽場(SCF)計算中,自洽循環(huán)中,首先產(chǎn)生一個軌道占據(jù)的初始猜測,
1)然后根據(jù)此軌道占據(jù)構(gòu)造電荷密度和哈密頓量。
2)對角化哈密頓量,得到新的軌道能級和占據(jù)。
3)產(chǎn)生新的電荷分布和哈密頓量,重復(fù)步驟2)
經(jīng)過一定次數(shù)的循環(huán)后,某次循環(huán)前和循環(huán)后的電荷密度差別小于一定的標準,我們稱之為收斂。
如果以上過程不能收斂,則gaussian給出convergence failure的警告。
如果SCF計算收斂失敗,你首先會采取哪些技巧呢?這里是我們強烈推薦的首選方法。
1 考慮使用更小的基組
由于一定的基組對應(yīng)于一定精度和速度,所以更換基組并不在所有的情況下都適用。方法是首先用小基組進行計算,由前一個波函得到用于大基組計算的初始猜測(Guess=Read自動進行)。
2 增加最大循環(huán)步數(shù)
Gaussian默認的最大循環(huán)步數(shù)為64 (SCF=DM或SCF=QC方法則為512),如果循環(huán)次數(shù)超過這個數(shù)目則會匯報convergence failure。在一定的情況下,不收斂的原因僅僅是因為最大循環(huán)步數(shù)不夠?梢酝ㄟ^設(shè)置maxcyc來增大最大循環(huán)步數(shù)。更多的SCF迭代(SCF(MaxCycle=N),其中N是迭代數(shù))。這很少有幫助,但值得一試。
3 放寬收斂標準
如果接近SCF但未達到,收斂標準就會放松或者忽略收斂標準。這通常用于不是在初始猜測而是在平衡結(jié)構(gòu)收斂的幾何優(yōu)化。SCF=Sleazy放松收斂標準,Conver選項給出更多的控制。
4 嘗試改變初始構(gòu)型
首先略微減小鍵長,接下來略微增加鍵長,接下來再對結(jié)構(gòu)作一點改變。
5 嘗試能級移動Level shifting (SCF=Vshift)
如果不收斂的原因是波函數(shù)的震蕩行為,通常是因為在相近的能量上的泰的混合。對于這種情況,我們可以采用level shifting的方法。Level shifting的含義是人工的升高非占據(jù)軌道的能級,以防止和最高占據(jù)軌道之間的混合,以達到收斂的目的。在Gaussian中此方法的關(guān)鍵詞為SCF=Vshift
6 使用強制的收斂方法SCF=QC
SCF=QC通常最佳,但在極少數(shù)情況下SCF=DM更快。此關(guān)鍵字將大大增加計算時間,但是收斂的機會更大。不要忘記給計算額外增加一千個左右的迭代。應(yīng)當測試這個方法獲得的波函,保證它最小,并且正好不是穩(wěn)定點(使用Stable關(guān)鍵字)。
7 對開殼層體系,嘗試收斂到同一分子的閉殼層離子,接下來用作開殼層計算的初始猜測。添加電子可以給出更合理的虛軌道,但是作為普遍的經(jīng)驗規(guī)則,陽離子比陰離子更容易收斂。選項Guess=Read定義初始猜測從Gaussian計算生成的checkpoint文件中讀取。
8 一些程序通過減小積分精度加速SCF。對于使用彌散函數(shù),長程作用或者低能量激發(fā)態(tài)的體系,必須使用高積分精度:SCF=NoVarAcc。
9 改變模型或方法
可以考慮改變模型方法。比較常見的方法有HF,GVB,MCSCF,CASSCF,MPn等。改變模型方法通常也會收斂性質(zhì)。通常,精度更高的方法更難收斂。精度比較低的方法產(chǎn)生的計算結(jié)果可以作為高精度計算的初始猜測?紤]使用不同理論級別的計算。這并不總是實用的,但除此之外,增加迭代數(shù)量總是使得計算時間和使用更高理論級別差不多。
10 關(guān)閉DIIS外推(SCF=NoDIIS)。同時進行更多的迭代(SCF=(MaxCycle=N))。
11 試著改用DIIS之外其它方法(SCF=SD或SCF=SSD)。
Gaussian不收斂的可能原因及對策:
1 由于體系有很多能量相近的能級,導(dǎo)致計算不收斂。
如果計算中采用的是Hartree-Fock方法或者其他的混合形式的交換相關(guān)勢(如B3LYP),則可以嘗試一下的方法進行改進。
scf=(noincfock,conver=11,maxcyc=1025) iop(5/22=20)
用以上的命令行將強制Gaussian采用EDIIS的算法。此算法計算量更大,但是更加穩(wěn)定。在命令行里也增加了最大循環(huán)數(shù),以增加收斂的到基態(tài)的可能性。
2. 檢查是否有初始文件錯誤
常見初級錯誤:
a. 自旋多重度錯誤
b. 變量賦值為整數(shù)
c. 變量沒有賦值或多重賦值
d. 鍵角小于等于0度,大于等于180度
e. 分子描述后面沒有空行
f. 二面角判斷錯誤,造成兩個原子距離過近
g. 分子描述一行內(nèi)兩次參考同一原子,或參考原子共線
3. SCF(自洽場)不收斂
則一般是L502錯誤,省卻情況做64個cycle迭代(G03缺省128 cycles)
a. 修改坐標,使之合理
b. 改變初始猜 Guess=Huckel 或其他的,看Guess關(guān)鍵詞。
c. 增加疊代次數(shù) SCFCYC=N (對小分子作計算時最好不要增加,很可能結(jié)構(gòu)不合理)
d. iop(5/13=1)這樣忽略不收斂,繼續(xù)往下做。
4. 分子對稱性改變
a. 修改坐標,強制高對稱性或放松對稱性
b. 給出精確的、對稱性確定的角度和二面角。 如CH4的角度給到109.47122
c. 放松對稱性判據(jù) Symm=loose
d. 不做對稱性檢查 iop(2/16=1) (最好加這個選項)
iop(2/16=2) 則保持新的對稱性來計算
5. Opt時收斂的問題
a. 修改坐標,使之合理
b. 增加疊代次數(shù)optcyc=N
6. 優(yōu)化過渡態(tài),若勢能面太平緩,則不好找到。
iop(1/8=10) 默認30(下一個結(jié)構(gòu)和該結(jié)構(gòu)的差別0.3Å),可改成10。如果每一步都要用到小的步長,應(yīng)該加opt(notrustupdate)
7. 在CI(組態(tài))方法中
如QCISD(T),CCSD(T),CID方法中,省卻最大循環(huán)50,若出錯(L913錯誤)
解決方法:#P QCISD(maxcyc=N) 注:N≤512
8. 優(yōu)化過渡態(tài)
opt=TS (給出過渡態(tài))
opt=qst2 (給出反應(yīng)物和產(chǎn)物)
opt=qst3 (給出反應(yīng)物和產(chǎn)物和過渡態(tài))
a. 用G03時的出錯 opt=ts 必須加FC (force constant)
寫法:opt=(TS, calcFc)
or opt=(TS,calchffc)計算HF力常數(shù),對QCISD,CCSD等方法用;
or opt=(TS,modRedundant) (最好寫這個)
b. 如果計算采用QCISD計算(不好計算FC)
則寫為QCISD opt=(TS, calcHFFC) (用HF計算FC)
9. 無法寫大的Scratch文件RWF
a. 劈裂RWF文件 %rwf=loc1,size1,loc2,size2,……..,locN,-1
b. 改變計算方法 MP2=Direct可以少占硬盤空間
c. 限制最大硬盤 maxdisk=N GB,****MB,有些系統(tǒng)寫2GB會出錯,可以寫2000MB
10. FOPT出錯 原因是變量數(shù)與分子自由度數(shù)不相等。 可用POPT 或直接用OPT
11. 優(yōu)化過渡態(tài)只能做一個STEP 原因是負本征數(shù)目不對 添加 iop(1/11)=1或者noeigentest (eigentest 是表示優(yōu)化過渡態(tài)檢測分子振動的本征值,過渡態(tài)只有一個負值,但優(yōu)化的時候往往出現(xiàn)兩個或者更多的情況,默認的是如果出現(xiàn)多于一個的情況就停止優(yōu)化計算,這往往時不必要的,noeigentest表示優(yōu)化時不坐此檢測,實際上優(yōu)化過渡態(tài)的時候出現(xiàn)兩個三個很正常的,只是第一個一般負的很大,接著的比較小,不會影響過渡態(tài)的搜尋,當然有時候需要自己判斷是不是接近真實的過渡態(tài)。其實經(jīng)驗上也是過渡態(tài)的本征虛頻越小,相對越難找。)
對于 (L502, L508, L9999)出錯的對策
對于一個優(yōu)化計算,它的過程是先做一個SCF計算,得到這個構(gòu)型下的能量,然后優(yōu)化構(gòu)型,再做SCF,然后再優(yōu)化構(gòu)型。。。因此,會有兩種不收斂的情況:一是在某一步的SCF不收斂(L502錯誤),或者構(gòu)型優(yōu)化沒有找到最后結(jié)果(L9999錯誤)。
預(yù)備知識:計算時保存chk文件,可以在后續(xù)計算中使用guess=read讀初始猜測.
對于SCF不收斂,通常有以下的解決方法:
1. 使用小基組,或低級算法計算,得到scf收斂的波函數(shù),用guess=read讀初始波函數(shù)。
2. 使用scf=qc,這個計算會慢,而且需要用stable關(guān)鍵字來測試結(jié)果是否波函數(shù)穩(wěn)定。如果這個還不收斂,會提示L508錯誤。
3. 改變鍵長,一般是縮小一點,有時會有用。
4. 計算相同體系的其他電子態(tài),比如相應(yīng)的陰離子、陽離子體系或單重態(tài)體系,得到的收斂波函數(shù)作為初始猜測進行計算。
對于優(yōu)化不收斂,即L9999錯誤,實際上是在規(guī)定的步數(shù)內(nèi)沒有完成優(yōu)化,即還沒有找到極小值點。(或者對于過渡態(tài)優(yōu)化,還沒有找到過渡態(tài))
這有幾種可能性:
1. 看一下能量的收斂的情況,可能正在單調(diào)減小,眼看有收斂的趨勢,這樣的情況下,只要加大循環(huán)的步數(shù)(opt(maxcycle=200)),可能就可以解決問題了。
2. 加大循環(huán)步數(shù)還不能解決的(循環(huán)步數(shù)有人說超過200再不收斂,再加也不會有用了,這雖然不一定絕對正確,但200步應(yīng)該也差不多了),有兩種可能。一是查看能量,發(fā)現(xiàn)能量在振蕩了,且變化已經(jīng)很小了,這時可能重新算一下,或者構(gòu)型稍微變一下,繼續(xù)優(yōu)化,就可以得到收斂的結(jié)果(當然也有麻煩的,看運氣和經(jīng)驗了);二是構(gòu)型變化太大,和你預(yù)計的差別過大,這很可能是你的初始構(gòu)型太差了,優(yōu)化不知道到哪里去了,這時最好檢查一下初始構(gòu)型,再從頭優(yōu)化。
3. 對于L9999快達到收斂時,考慮減小優(yōu)化步長有時對于能量振蕩的情況也是有用的,opt(maxstep=1).(flyingheart )
返回小木蟲查看更多
京公網(wǎng)安備 11010802022153號
很有用,頂上去
看了很受用~~
贊贊········
好文,頂上,為什么不能評價,
好帖子,頂!