ASPsol是一款由Cornell University大学Hennig和Arias两个课题组共同开发的程序,作者是Kiran Mathew和Dr. Richard Hennig。通过修改VASP代码,可以实现linearPCM(GLSSA13)溶剂化模型,官网https://github.com/henniggroup/VASPsol
VASPsol的修改及编译方法
(1)用下载的path_to_VASPsol/src/solvation.F文件覆盖path_to_VASP6_install/src/原有文件
(2)对vasp.6.3.2版来说,path_to_vasp.6.3.2_install/src/文件夹中的.objects文件(注意.隐藏文件的点),在111行已经包含solvation.o,无需再自行添加
(3)打补丁,patches文件夹包含pbz_patch_541和pbz_patch_610两个版本的补丁文件。对于更高的vasp.6.3.x版本,可以下载https://github.com/henniggroup/VASPsol/issues/64中的VASPsol_VASP630.patch文件,将其放在path_to_VASP6_install/src/中,运行以下命令打补丁。
patch -p0 < VASPsol_VASP630.patch
或自己对照patch文件,手动在相应位置修改源码文件。下面以vasp.6.3.2版为例:
① 打开vasp.6.3.2/src文件夹,编辑mpi.F文件,找到2041行(先在键盘输入2041,然后按大写字母G即可跳转),在#endif // MPI_INPLACE后添加如下内容:
! Subroutine for VASPsol - Added by D. Gaissmaier
!----------------------------------------------------------------------
!
! Global sum function - required for VASPsol
!
!----------------------------------------------------------------------
SUBROUTINE M_sum_1(COMM, v1)
USE mpimy
IMPLICIT NONE
TYPE(communic) COMM
REAL(q) vec(1),v1
vec(1)=v1
CALL M_sumb_d(COMM, vec, 1)
v1=vec(1)
RETURN
END SUBROUTINE
! End of VASPsol subroutine
② 保存退出后打开覆盖后的solvation.F文件进行编辑:
跳转到2206行,把
CALLMPI( M_sum_s(SP_GRIDC%COMM,1,Ecorr3,0,0,0))
替换为
CALLMPI( M_sum_1(SP_GRIDC%COMM,2206GEcorr3))
把2217行的
CALLMPI( M_sum_s(SP_GRIDC%COMM,1,Ecorr4,0,0,0))
替换为
CALLMPI( M_sum_1(SP_GRIDC%COMM,Ecorr4))
③ 之后保存退出,打开pot.F文件进行编辑:
跳转到408行,在其后添加如下内容:
! solvation__
! vaclevel
IF (LSOL) CALL GET_FERMISHIFT(LATT_CUR, T_INFO, GRIDC, WDES, CWORK, CHTOT)
! vaclevel
! solvation__
保存退出即可。
(4)在makefile.include中CPP_OPTIONS= 添加-Dsol_compat (并用\换行),之后重新make all或分别make std gam ncl即可。