WAVEDERF depends on NCORE/NPAR?
Posted: Thu Jul 15, 2021 3:07 am
I think that I found a bug in the write out of matrix elements to at least the WAVEDERF file (and perhaps WAVEDER, but I don't know) when using different settings of NCORE/NPAR. I am currently using VASP 6.2.1 for these calculations compiled with Intel 18.0.1.163 and Intel MKL on NERSC's Cori supercomputer. The only modification to the VASP code that I made was to uncomment the line in linear_optics.F so that the WAVEDERF file would be written out. That way I can use a postprocessing code to recalculate the dielectric function or extract specific matrix elements for doing excitation rate and lifetime calculations.
As a test to play with dipole transition matrix elements, I was doing a relatively simple calculation of the primitive diamond unit cell with an 8x8x8 gamma centered grid (29 k-points) and NBANDS = 32 using the PBE functional and LOPTICS = .TRUE.
When I have NPAR = 1, I get sensible results for the dielectric function and the real part's limit is approximately equal (within convergence/numerics) to the value obtained through DFPT. Furthermore, running my python postprocessing script on the WAVEDERF file yields the same result.
The only issue that I have is that in the WAVEDERF, only information for matrix elements up to band 8 are outputted.
When I set NCORE to other values than the equivalent of NPAR = 1, for example NCORE = 2 or NCORE = 4, the density-density version of the dielectric function remains the same in the OUTCAR as before. However, the values of the matrix elements are no longer the same as those in the above file and I get different results with the postprocessing code.
In this case, all band pairs are included in the WAVEDERF though (despite the matrix elements in WAVEDERF being different than expected).
Below are the files I used for inputs. I can also provide any other information about the runs as needed.
As an aside, I have also run similar tests on a different supercomputer that I have access to and had similar issues as reported above with the values of the matrix elements in WAVEDERF changing depending upon the setting of NCORE/NPAR.
Thank you for any help and advice,
Andy
--------------
KPOINTS
--------------
Automatic mesh
0
Gamma
8 8 8
0 0 0
--------------
POSCAR
--------------
Diamond
3.574131
0.0000000000 0.5000000000 0.5000000000
0.5000000000 0.0000000000 0.5000000000
0.5000000000 0.5000000000 0.0000000000
C
2
Direct
0.000000000 0.000000000 0.000000000
0.250000000 0.250000000 0.250000000
--------------
INCAR
--------------
SYSTEM = Diamond
ISTART = 0
ICHARG = 2
INIWAV = 1
NBANDS = 32
ENCUT = 450
EDIFF = 1E-5
ALGO = Fast
NELMIN = 2
NELM = 80
LREAL = .FALSE.
ISPIN = 1
LOPTICS = .TRUE.
ISMEAR = 0
SIGMA = 0.05
NEDOS = 5000
NPAR = 1
!NCORE = 2
!NCORE = 32
As a test to play with dipole transition matrix elements, I was doing a relatively simple calculation of the primitive diamond unit cell with an 8x8x8 gamma centered grid (29 k-points) and NBANDS = 32 using the PBE functional and LOPTICS = .TRUE.
When I have NPAR = 1, I get sensible results for the dielectric function and the real part's limit is approximately equal (within convergence/numerics) to the value obtained through DFPT. Furthermore, running my python postprocessing script on the WAVEDERF file yields the same result.
The only issue that I have is that in the WAVEDERF, only information for matrix elements up to band 8 are outputted.
When I set NCORE to other values than the equivalent of NPAR = 1, for example NCORE = 2 or NCORE = 4, the density-density version of the dielectric function remains the same in the OUTCAR as before. However, the values of the matrix elements are no longer the same as those in the above file and I get different results with the postprocessing code.
In this case, all band pairs are included in the WAVEDERF though (despite the matrix elements in WAVEDERF being different than expected).
Below are the files I used for inputs. I can also provide any other information about the runs as needed.
As an aside, I have also run similar tests on a different supercomputer that I have access to and had similar issues as reported above with the values of the matrix elements in WAVEDERF changing depending upon the setting of NCORE/NPAR.
Thank you for any help and advice,
Andy
--------------
KPOINTS
--------------
Automatic mesh
0
Gamma
8 8 8
0 0 0
--------------
POSCAR
--------------
Diamond
3.574131
0.0000000000 0.5000000000 0.5000000000
0.5000000000 0.0000000000 0.5000000000
0.5000000000 0.5000000000 0.0000000000
C
2
Direct
0.000000000 0.000000000 0.000000000
0.250000000 0.250000000 0.250000000
--------------
INCAR
--------------
SYSTEM = Diamond
ISTART = 0
ICHARG = 2
INIWAV = 1
NBANDS = 32
ENCUT = 450
EDIFF = 1E-5
ALGO = Fast
NELMIN = 2
NELM = 80
LREAL = .FALSE.
ISPIN = 1
LOPTICS = .TRUE.
ISMEAR = 0
SIGMA = 0.05
NEDOS = 5000
NPAR = 1
!NCORE = 2
!NCORE = 32