An error ocurred while starting the kernel
因为TDAP数据处理需要用到超哥写的包pyramids,使用spyder的时候需要把这个包添加到PYTHONPATH中,在spyder里面点导航栏扳手右边那个图标就可以了,这里是把路径写成
E:\Toolkit\TDAP\pyramids
了,换成E:\Toolkit\TDAP
就行了。
AttributeError: 'list' object has no attribute 'shape'
这是由于result.py
里getAdiabaticEigenvalue
函数打开文件的后缀对应的是之前的后缀.EIG
这个在新版本的TDAP中改成了A.EIG
,q.EIG
同理,需要改成qA.EIG
。注意getEIGSteps
里面的i[-5:]
也要改成i[-6:]
pip install ase==3.12.0
用pip安装指定版本的ase
AttributeError: 'tdapOptions' object has no attribute 'label'
这种错误一般是由于working dictionary指定的不对。
在Ubuntu上安装TDAP
因为TDAP是基于siesta的,所以安装方法和siesta相似,根据cndaqiang的推荐,我们最好使用openmpi+scalapack来安装TDAP,参考他的这篇https://cndaqiang.github.io/2018/09/12/gun-openmpi-siesta/
不太一样的地方在于,在Ubuntu上安装gcc-4.8.0可能会遇到报错,因为系统默认的gcc已经是gcc-9了,所以就直接用Ubuntu自带的gcc,然后用apt安装openmpi
sudo apt-get install mpich
然后安装scalapck的时候遇到一些比较讨厌的问题,首先是报错找不到mpi.h,这个自己搜索按照它指定的方法就行了,然后就是让你指定mpi的位置,其次要加一个no-testing的标签,因为用--downwall的标签的时候,他在执行/script/lapack.py
的时候在368行会报错,改成--no-testing
就没有这个烦恼了,综合起来就是这样
./setup.py --mpiincdir=/usr/include/x86_64-linux-gnu/mpich --prefix=/home/liu/Public/src/lib/scalapack --notesting
然后就是按照cndaqiang的那个日志安装就行了,记得configure之后要修改arch.make,指定编译器和blas、scalapck等的位置。
在松山湖上编译TDAP的时候,会碰到“未定义的引用”的问题,是因为没有找到数学库,只需要把arch.make里边的数学库的位置指定为/public/home/xbliu/apps/lib/cnqlib
就行了。
plt.label TypeError: 'str' object is not callable
这个问题可能是由很多问题导致的,我这里是由于前面使用plt.xlabel = '***',然后发现不是用这个方法设置得,改成plt.xlabel(),就出现了这个问题,重启console就可以了。
今天组会谈到一个光对物质结构的影响,里面提到两个效应,关于光和晶格的相互作用,一个是场效应,就是光对晶格的拖拽,这个只有在强光场下才会比较明显,另一个就是电子的激发,通过电子激发和晶格的耦合导致物质结构发生变化。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 56: ordinal not in range(128)
这个最后发现是由于代码里的中文注释导致的,删掉后解决
ValueError: too many values to unpack
在调用函数的时候,如果函数返回值是5个,而你只写了3个的话,也会报这个错误
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
今天犯了一个很愚蠢的错误,因为工作需要,我要把一个数组保存到一个文件当中再在另一个计算中读取该文件,于是就在代码里加了read和write,然后问题就来了,无论我怎么修改open文件的方式,无论是formatted还是unformatted,每次读取数组文件的时候总是谜之报错,比如上面三个,然后各种搜索改open的方式,比如改access='direct','stream',status='old',什么的,都不管用,然后经daqiang提醒,最后发现是因为我在初始化数组的时候k点数目取得和写得那个数组大小不一样,才导致读取得时候程序总是想要读取更多于是报错。为了避免再次遇到同样得错误,记录在这里。
记录一个比较摸不着头脑的bug,今天在算的时候遇到在某一步原子受力忽然突变到很大的数值,这个会导致原子莫名其妙被施加了一个初速度。实际上这个问题之前也碰到过,应该是由于并行的问题,因为上一次遇见这个问题改变并行的核的个数就解决了。可能是计算力的时候所有节点没有协调一致就产生了这个问题。
网友评论