||
vasp6.3使用了部分fortran08以上写法,导致ifc2015版本不支持的问题。之前用ifc2018编译过了,不过天河上的ifc2018动么动就抽风,报dapl fabic 错误(原因似乎是某些节点上的dapl版本太老,不同节点上的文件版本竟然不一致,也不知道怎么配出来的)。于是今天晚上心一横,索性强行改一下vasp的源代码,看看能不能编译通过,还真别说花了3个多小时,熬夜竟然最后改通了。虽然不知道有没有bug,不过测试之后再说吧。如果测试通过,请叫我铁手。
注意,该程序靠bug运行,请勿随意修改,出现任何问题后果自负。
1号错误:main.F不识别msymmetry: PRIM_CELL_T,不知道是什么鬼。解决方法:USE msymmetry加上
ONLY: MIN_IMAGE_T, &
PRIM_CELL_T
这应该是今天做的改动中最危险的,强烈怀疑这种修改会带来一些函数未定义引来报错,但所幸没有,那就先这么着吧。
diff -r src/main.F ../vasp.6.3.back/vasp.6.3.0/src/main.F
96,98c96
< !USE msymmetry
< USE msymmetry, ONLY: MIN_IMAGE_T, &
< PRIM_CELL_T
---
> USE msymmetry
2号错误:老版本的TAGLIST没有GET_DESCRIPTION_WIDTH()和TAGLIST_GET_DESCRIPTION_WIDTH()
解决方法:改成动态数组,并添加相应字符串长度
解决方法2:貌似改成动态数组会有内存泄漏导致程序卡死的问题。改为256长度定态字符串
diff -r src/ml_ff_logfile.F ../vasp.6.3.back/vasp.6.3.0/src/ml_ff_logfile.F
693,694c693
< !CHARACTER(LEN=TAGLIST_GET_DESCRIPTION_WIDTH()) :: TMP_STRING
< CHARACTER(LEN=256) :: TMP_STRING
---
> CHARACTER(LEN=TAGLIST_GET_DESCRIPTION_WIDTH()) :: TMP_STRING
716,717c715
< CHARACTER(LEN=:), ALLOCATABLE :: TMP_STRING
< !CHARACTER(LEN=TAGLIST_GET_DESCRIPTION_WIDTH() - 3) :: TMP_STRING
---
> CHARACTER(LEN=253) :: TMP_STRING
737c735
< CHARACTER(LEN=256), &
---
> CHARACTER(LEN=TAGLIST_GET_TAG_WIDTH()), &
3号错误:之前已经发现的老版本fortran的procedure, private一行只能写一个。
解决方法:见错误分析。
diff -r src/random.F ../vasp.6.3.back/vasp.6.3.0/src/random.F
69,74c69,71
< procedure, private :: random_real_scalar
< procedure, private :: random_real_array
< procedure, private :: uniform_real_scalar
< procedure, private :: uniform_real_array
< procedure, private :: uniform_complex_scalar
< procedure, private :: uniform_complex_array
---
> procedure, private :: random_real_scalar, random_real_array
> procedure, private :: uniform_real_scalar, uniform_real_array, &
> uniform_complex_scalar, uniform_complex_array
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-10 16:50
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社