|
上面是2020年2月份的博客备份:
最近一直在调试EPW和wannier90的东西。结果发现了一个非常奇怪的问题:
epw在初始化wannier函数的时候会莫名其妙的卡住,多次更改参数发现无效。更有意思的是小体系不卡,大体系卡。
经过了大量的断点输出和调试,最终结果发现是在fortran的一个神奇bug里面
wannier90的io.f90文件里面有一段如下:
do while (file_open)
unit = unit + 1
inquire (unit, OPENED=file_open)
end do
作用是从9开始测试一个空的文件通道,但是神奇的地方在于在intel2013的版本,在unit=11的通道被占用时,inquire (unit, OPENED=file_open) 就莫名其妙的卡住了,也不知道为什么。
解决方法是用一个intel2015的编译器试一下,看看能否解决卡死的问题。哎,什么时候linux玄学的稳定性问题够达到windos和mac水平就开心了。
测试过了,intel2015也不好使,下一个尝试的办法看看将ifort改成gfortran是否有效
下面未解决方案:
现在证实上述问题是wannier3.0.0和编译器版本不匹配造成的,将wannier3.00换成wannier2.1.0(为了保障epw的编译成功,仍然要命名为wannier3.0.0)即可。另外实际计算证明,epw前的声子谱计算不能使用reduce_io,而且epw不能计算40个原子以上的电声耦合(io_error: 读写文件过大,无法创建)。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 13:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社