Exact diagonalization for RPA calculation
Posted: Sun Dec 23, 2012 3:09 pm
Hi
I use VASP.5.3.2 and want to calculate rather big system (~ 100 atoms) by RPA method.
In vasp manual, there is general recipe for RPA calculation and in third step (exact diagonalization), the parameter "NBANDS" must be set to "maximum number of plane-waves". But I think that actually used number of wavefunction in ACFDT calculation is smaller than "maximum number of plane-waves" and "NBANDS" can be set to the lower number. Am I right?
And ,in third step (exact diagonalization) for RPA calculation, in main.F, I think that "PEAD_ELMIN" subroutine in "pead.F" has no function but matrix "CHAM" is rather huge. So can I command out the "PEAD_ELMIN" part in main.F ?
IF (NSTEP==1) THEN
IF (.NOT.INFO%LONESW) THEN
CALL ALLOCW(WDES,W_F,WTMP,WTMP)
CALL ALLOCW(WDES,W_G,WTMP,WTMP)
DEALLOCATE(CHAM, CHF)
ALLOCATE(CHAM(WDES%NB_TOT,WDES%NB_TOT,WDES%NKPTS,WDES%ISPIN), &
CHF (WDES%NB_TOT,WDES%NB_TOT,WDES%NKPTS,WDES%ISPIN))
! ! setup for scf subspace rotation
! INFO%LONESW=.TRUE.
! CALL SETUP_SUBROT_SCF(INFO,WDES,LATT_CUR,GRID,GRIDC,GRID_SOFT,SOFT_TO_C,IO%IU0,IO%IU5,IO%IU6)
! INFO%LONESW=.FALSE.
ENDIF
CALL PEAD_ELMIN( &
HAMILTONIAN,KINEDEN, &
P,WDES,NONLR_S,NONL_S,W,W_F,W_G,LATT_CUR,LATT_INI, &
T_INFO,DYN,INFO,IO,MIX,KPOINTS,SYMM,GRID,GRID_SOFT, &
GRIDC,GRIDB,GRIDUS,C_TO_US,B_TO_C,SOFT_TO_C,E, &
CHTOT,CHTOTL,DENCOR,CVTOT,CSTRF, &
CDIJ,CQIJ,CRHODE,N_MIX_PAW,RHOLM,RHOLM_LAST, &
CHDEN,SV,DOS,DOSI,CHF,CHAM,ECONV, &
NSTEP,LMDIM,IRDMAX,NEDOS, &
TOTEN,EFERMI,LDIMP,LMDIMP)
IF (.NOT.INFO%LONESW) THEN
CALL DEALLOCW(W_F)
CALL DEALLOCW(W_G)
DEALLOCATE(CHAM, CHF)
ALLOCATE(CHAM(1,1,1,1),CHF (1,1,1,1))
ENDIF
ENDIF
Thank you!
<span class='smallblacktext'>[ Edited ]</span>
I use VASP.5.3.2 and want to calculate rather big system (~ 100 atoms) by RPA method.
In vasp manual, there is general recipe for RPA calculation and in third step (exact diagonalization), the parameter "NBANDS" must be set to "maximum number of plane-waves". But I think that actually used number of wavefunction in ACFDT calculation is smaller than "maximum number of plane-waves" and "NBANDS" can be set to the lower number. Am I right?
And ,in third step (exact diagonalization) for RPA calculation, in main.F, I think that "PEAD_ELMIN" subroutine in "pead.F" has no function but matrix "CHAM" is rather huge. So can I command out the "PEAD_ELMIN" part in main.F ?
IF (NSTEP==1) THEN
IF (.NOT.INFO%LONESW) THEN
CALL ALLOCW(WDES,W_F,WTMP,WTMP)
CALL ALLOCW(WDES,W_G,WTMP,WTMP)
DEALLOCATE(CHAM, CHF)
ALLOCATE(CHAM(WDES%NB_TOT,WDES%NB_TOT,WDES%NKPTS,WDES%ISPIN), &
CHF (WDES%NB_TOT,WDES%NB_TOT,WDES%NKPTS,WDES%ISPIN))
! ! setup for scf subspace rotation
! INFO%LONESW=.TRUE.
! CALL SETUP_SUBROT_SCF(INFO,WDES,LATT_CUR,GRID,GRIDC,GRID_SOFT,SOFT_TO_C,IO%IU0,IO%IU5,IO%IU6)
! INFO%LONESW=.FALSE.
ENDIF
CALL PEAD_ELMIN( &
HAMILTONIAN,KINEDEN, &
P,WDES,NONLR_S,NONL_S,W,W_F,W_G,LATT_CUR,LATT_INI, &
T_INFO,DYN,INFO,IO,MIX,KPOINTS,SYMM,GRID,GRID_SOFT, &
GRIDC,GRIDB,GRIDUS,C_TO_US,B_TO_C,SOFT_TO_C,E, &
CHTOT,CHTOTL,DENCOR,CVTOT,CSTRF, &
CDIJ,CQIJ,CRHODE,N_MIX_PAW,RHOLM,RHOLM_LAST, &
CHDEN,SV,DOS,DOSI,CHF,CHAM,ECONV, &
NSTEP,LMDIM,IRDMAX,NEDOS, &
TOTEN,EFERMI,LDIMP,LMDIMP)
IF (.NOT.INFO%LONESW) THEN
CALL DEALLOCW(W_F)
CALL DEALLOCW(W_G)
DEALLOCATE(CHAM, CHF)
ALLOCATE(CHAM(1,1,1,1),CHF (1,1,1,1))
ENDIF
ENDIF
Thank you!
<span class='smallblacktext'>[ Edited ]</span>