TDAP報(bào)錯(cuò)指南

An error ocurred while starting the kernel

因?yàn)門DAP數(shù)據(jù)處理需要用到超哥寫的包pyramids,使用spyder的時(shí)候需要把這個(gè)包添加到PYTHONPATH中,在spyder里面點(diǎn)導(dǎo)航欄扳手右邊那個(gè)圖標(biāo)就可以了,這里是把路徑寫成
E:\Toolkit\TDAP\pyramids了,換成E:\Toolkit\TDAP就行了。

AttributeError: 'list' object has no attribute 'shape'

這是由于result.pygetAdiabaticEigenvalue函數(shù)打開文件的后綴對應(yīng)的是之前的后綴.EIG這個(gè)在新版本的TDAP中改成了A.EIGq.EIG同理,需要改成qA.EIG。注意getEIGSteps里面的i[-5:]也要改成i[-6:]

pip install ase==3.12.0

用pip安裝指定版本的ase

AttributeError: 'tdapOptions' object has no attribute 'label'

這種錯(cuò)誤一般是由于working dictionary指定的不對。

在Ubuntu上安裝TDAP

因?yàn)門DAP是基于siesta的,所以安裝方法和siesta相似,根據(jù)cndaqiang的推薦,我們最好使用openmpi+scalapack來安裝TDAP,參考他的這篇https://cndaqiang.github.io/2018/09/12/gun-openmpi-siesta/
不太一樣的地方在于,在Ubuntu上安裝gcc-4.8.0可能會遇到報(bào)錯(cuò),因?yàn)橄到y(tǒng)默認(rèn)的gcc已經(jīng)是gcc-9了,所以就直接用Ubuntu自帶的gcc,然后用apt安裝openmpi

sudo apt-get install mpich

然后安裝scalapck的時(shí)候遇到一些比較討厭的問題,首先是報(bào)錯(cuò)找不到mpi.h,這個(gè)自己搜索按照它指定的方法就行了,然后就是讓你指定mpi的位置,其次要加一個(gè)no-testing的標(biāo)簽,因?yàn)橛?-downwall的標(biāo)簽的時(shí)候,他在執(zhí)行/script/lapack.py的時(shí)候在368行會報(bào)錯(cuò),改成--no-testing就沒有這個(gè)煩惱了,綜合起來就是這樣

./setup.py --mpiincdir=/usr/include/x86_64-linux-gnu/mpich --prefix=/home/liu/Public/src/lib/scalapack --notesting

然后就是按照cndaqiang的那個(gè)日志安裝就行了,記得configure之后要修改arch.make,指定編譯器和blas、scalapck等的位置。
在松山湖上編譯TDAP的時(shí)候,會碰到“未定義的引用”的問題,是因?yàn)闆]有找到數(shù)學(xué)庫,只需要把a(bǔ)rch.make里邊的數(shù)學(xué)庫的位置指定為/public/home/xbliu/apps/lib/cnqlib就行了。

plt.label TypeError: 'str' object is not callable

這個(gè)問題可能是由很多問題導(dǎo)致的,我這里是由于前面使用plt.xlabel = '***',然后發(fā)現(xiàn)不是用這個(gè)方法設(shè)置得,改成plt.xlabel(),就出現(xiàn)了這個(gè)問題,重啟console就可以了。

今天組會談到一個(gè)光對物質(zhì)結(jié)構(gòu)的影響,里面提到兩個(gè)效應(yīng),關(guān)于光和晶格的相互作用,一個(gè)是場效應(yīng),就是光對晶格的拖拽,這個(gè)只有在強(qiáng)光場下才會比較明顯,另一個(gè)就是電子的激發(fā),通過電子激發(fā)和晶格的耦合導(dǎo)致物質(zhì)結(jié)構(gòu)發(fā)生變化。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 56: ordinal not in range(128)

這個(gè)最后發(fā)現(xiàn)是由于代碼里的中文注釋導(dǎo)致的,刪掉后解決

ValueError: too many values to unpack

在調(diào)用函數(shù)的時(shí)候,如果函數(shù)返回值是5個(gè),而你只寫了3個(gè)的話,也會報(bào)這個(gè)錯(cuò)誤

Fortran runtime error: End of file
Fortran runtime error: I/O past end of record on unformatted file
Fortran runtime error: Format present for UNFORMATTED data transfer

今天犯了一個(gè)很愚蠢的錯(cuò)誤,因?yàn)楣ぷ餍枰?,我要把一個(gè)數(shù)組保存到一個(gè)文件當(dāng)中再在另一個(gè)計(jì)算中讀取該文件,于是就在代碼里加了read和write,然后問題就來了,無論我怎么修改open文件的方式,無論是formatted還是unformatted,每次讀取數(shù)組文件的時(shí)候總是謎之報(bào)錯(cuò),比如上面三個(gè),然后各種搜索改open的方式,比如改access='direct','stream',status='old',什么的,都不管用,然后經(jīng)daqiang提醒,最后發(fā)現(xiàn)是因?yàn)槲以诔跏蓟瘮?shù)組的時(shí)候k點(diǎn)數(shù)目取得和寫得那個(gè)數(shù)組大小不一樣,才導(dǎo)致讀取得時(shí)候程序總是想要讀取更多于是報(bào)錯(cuò)。為了避免再次遇到同樣得錯(cuò)誤,記錄在這里。

記錄一個(gè)比較摸不著頭腦的bug,今天在算MoS_2的時(shí)候遇到在某一步原子受力忽然突變到很大的數(shù)值,這個(gè)會導(dǎo)致原子莫名其妙被施加了一個(gè)初速度。實(shí)際上這個(gè)問題之前也碰到過,應(yīng)該是由于并行的問題,因?yàn)樯弦淮斡鲆娺@個(gè)問題改變并行的核的個(gè)數(shù)就解決了??赡苁怯?jì)算力的時(shí)候所有節(jié)點(diǎn)沒有協(xié)調(diào)一致就產(chǎn)生了這個(gè)問題。

HDF5_utils.f90: error #7013: This module file was not generated by any release of this compiler.   [HDF5]

   use hdf5

-------^

在編譯pertubo的時(shí)候這個(gè)包需要使用hdf5這個(gè)包,于是就先編譯這個(gè)包,然后指定

IFLAGS += -I/public/home/xbliu/apps/lib/hdf5/hdf5-1.8.18/build/include
HDF5_LIB = -L/public/home/xbliu/apps/lib/hdf5/hdf5-1.8.18/build/lib -lhdf5 -lhdf5_fortran

看起來沒什么問題,但是依然報(bào)上面那個(gè)錯(cuò)誤,搜了一下發(fā)現(xiàn)是由于這里使用的編譯器不能識別hdf5編譯生成的模塊hdf5.mod,于是重新編譯hdf5并指定編譯器。

CC=icc F9X=ifort CXX=icpc ./configure --enable-fortran --prefix=/public/home/xbliu/apps/lib/hdf5/hdf5-1.8.18/build

這樣就解決問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容