本帖最后由 卡开发发 于 2017-5-20 21:34 编辑
若是Bader电荷我暂时还没啥办法,需要了解Bader程序本身以及电荷网格存储的子程序才行。但基于Wigner-Seiz半径积分的原子电荷还是可以简单实现的,可以修改主程序main.F(位置在7260 Format上面一行),我手头的版本是5.3.2的:- io_end ! vasp原始程序
- !======插入如下代码
- IF (JOBPAR/=0 .OR. IO%LORBIT>=10 ) THEN
-
- IF (IO%LORBIT==11 .OR. IO%LORBIT==1 .OR. IO%LORBIT==12 .OR. IO%LORBIT==2) THEN
- LPAR=LMDIMP
- ELSE
- LPAR=LDIMP
- ENDIF
- DEALLOCATE(PAR)
- ALLOCATE(PAR(WDES%NB_TOT,WDES%NKPTS,LPAR,T_INFO%NIONP,WDES%NCDIJ))
-
- IF (IO%LORBIT>=10) THEN
- CALL SPHPRO_FAST( &
- GRID,LATT_CUR, P,T_INFO,W, WDES, 71,IO%IU0,&
- INFO%LOVERL,LMDIM,CQIJ, LPAR, LDIMP, LMDIMP, .TRUE., IO%LORBIT,PAR)
- ELSE
- CALL SPHPRO( &
- GRID,LATT_CUR, P,T_INFO,W, WDES, 71,IO%IU0,&
- INFO%LOVERL,LMDIM,CQIJ, LPAR, LDIMP, LMDIMP, LTRUNC, IO%LORBIT,PAR)
- ENDIF
- ENDIF
- !======结束插入
- 7260 FORMAT(/ & ! vasp原始程序
复制代码
然后重新编译。设置完LORBIT=11之后每做完一个SCF loop都会把电荷打在屏幕上。有问题可以及时联系。
|