afonari / emc

Effective Mass Calculator for Semiconductors
Other
102 stars 59 forks source link

effective mass at any point other than k=0 (using PWSCF+QE-to-vasp workaround) #10

Open chrisewolf opened 7 years ago

chrisewolf commented 7 years ago

Dear all!

I know that the interface for QE is not currently available but I am trying to circumvent the issue by using a script to generate the EIGENVAL from the nscf output on the stencil grid [1].

this worked well for a system where I had the band-gap opening at k=0 (gamma) but I fail to get the appropriate masses at any other point (I am assuming at this stage I am doing something wrong).

Assuming a cubic unit cell (a=11.1.. a.u) and the band-gap being at R(0.5/0.5/0.5) of the BZ, would the following input/output be appropriate?

0.500 0.500 0.500                       ! K-POINT in the reciprocal crystal coord. (3 floats)
0.001                                    ! step size in 1/Bohr units (1 float)
43                                     ! band number, (1 integer)
V                                       ! program identifier (1 char)
11.16828  0.000000000  0.000000000   ! direct lattice vectors (3 floats)
0.000000000  11.16828  0.000000000   ! direct lattice vectors (3 floats)
0.000000000  0.000000000  11.16828  ! direct lattice vectors (3 floats)

==========

No output file provided, entering the Generation regime...

-> generate_kpoints: K-point in reciprocal coordinates: 0.281 0.281 0.281 (=0.5*2*pi/alat)
KPOINTS file has been generated in the current directory...

I believe this is correct because the k-points give me lots of points approaching R(0.5/0.5/0.5), e.g.

Reciprocal
   0.5000000000    0.5000000000    0.5000000000 0.01
   0.4671492096    0.5000000000    0.5000000000 0.01
   0.5328507904    0.5000000000    0.5000000000 0.01
   0.5000000000    0.4671492096    0.5000000000 0.01
   0.5000000000    0.5328507904    0.5000000000 0.01
   0.5000000000    0.5000000000    0.4671492096 0.01
   0.5000000000    0.5000000000    0.5328507904 0.01
   ....

the EIGENVAL file then reads

    2    2    1    1
  0.2376594E+02  0.4065993E-09  0.4065993E-09  0.4065993E-09  0.5000000E-15
  1.000000000000000E-004
  CAR
 unknown system
   44    19    60

  2.5000000E-01   2.5000000E-01   2.5000000E-01   1.0000000E+00
   1      -17.644000
   2      -17.644000
   3      -14.305500
   4      -14.305500
   5      -14.305500
   6      -14.305500
   7      -11.754200
   8      -11.754200
   9      -11.754200

Holes (band 44):

Effective mass (0):       -0.023
Original eigenvectors: 1.00000 0.00000 0.00000
Normal fractional coordinates: 1.00000 0.00000 0.00000

Electrons:

Effective mass (0): 0.023

when I fit the band-structure manually I get around m*~0.08...0.1

can someone spot my mistake? Any help is greatly appreciated, I am quite lost where to start looking... all files can be found here: https://drive.google.com/open?id=0B4jAwkTrBEE8UENUNS02RjUyT00

Thank you for reading until here!

Best, Chris

[1] https://nanohub.org/resources/23040/download/QE-to-VASP.py

jaroli commented 7 years ago

Hi Chris, Is you lattice constant 11.1 atomic units or Angstrom? The direct lattice vectors in the INPCAR file should be in Angstrom.

What also seems suspect is that your first k-point in the EIGENVAL is (1/4,1/4,1/4) instead of (1/2,1/2,1/2). Regards, Karol

chrisewolf commented 7 years ago

Hi Karol!

Thank you for your swift reply! The lattice constant is 11.1 bohr (EMC has length units in bohr if I am not mistaken). The INCAR file shows the corresponding unit cell in Angstrom:

Converted Quantum ESPRESSO output to OUTCAR format suitable for aMoBT
  volume of cell :      206.43
      direct lattice vectors                 reciprocal lattice vectors
     0.000000000  0.000000000  5.909999261     0.000000000  0.000000000  0.169204759
     5.909999261  0.000000000  0.000000000     0.169204759  0.000000000  0.000000000
     0.000000000  5.909999261  0.000000000     0.000000000  0.169204759  0.000000000

and you are right, there is an interesting discrepancy between the pwscf out and EIGENVAL In terms of the (19) k-points:

nscf:

    number of k points=    19
                       cart. coord. in units 2pi/alat
        k(    1) = (   0.5000000   0.5000000   0.5000000), wk =   0.0526316
        k(    2) = (   0.4966410   0.5000000   0.5000000), wk =   0.0526316
        k(    3) = (   0.5033590   0.5000000   0.5000000), wk =   0.0526316
        k(    4) = (   0.5000000   0.4966410   0.5000000), wk =   0.0526316
        k(    5) = (   0.5000000   0.5033590   0.5000000), wk =   0.0526316
        k(    6) = (   0.5000000   0.5000000   0.4966410), wk =   0.0526316
        k(    7) = (   0.5000000   0.5000000   0.5033590), wk =   0.0526316
        k(    8) = (   0.4966410   0.4966410   0.5000000), wk =   0.0526316
        k(    9) = (   0.5033590   0.5033590   0.5000000), wk =   0.0526316
        k(   10) = (   0.5033590   0.4966410   0.5000000), wk =   0.0526316
        k(   11) = (   0.4966410   0.5033590   0.5000000), wk =   0.0526316
        k(   12) = (   0.4966410   0.5000000   0.4966410), wk =   0.0526316
        k(   13) = (   0.5033590   0.5000000   0.5033590), wk =   0.0526316
        k(   14) = (   0.5033590   0.5000000   0.4966410), wk =   0.0526316
        k(   15) = (   0.4966410   0.5000000   0.5033590), wk =   0.0526316
        k(   16) = (   0.5000000   0.4966410   0.4966410), wk =   0.0526316
        k(   17) = (   0.5000000   0.5033590   0.5033590), wk =   0.0526316
        k(   18) = (   0.5000000   0.5033590   0.4966410), wk =   0.0526316
        k(   19) = (   0.5000000   0.4966410   0.5033590), wk =   0.0526316

EIGENVAL:

  2.5000000E-01   2.5000000E-01   2.5000000E-01   1.0000000E+00
  2.4830000E-01   2.5000000E-01   2.5000000E-01   1.0000000E+00
  2.5170000E-01   2.5000000E-01   2.5000000E-01   1.0000000E+00
  2.5000000E-01   2.4830000E-01   2.5000000E-01   1.0000000E+00
  2.5000000E-01   2.5170000E-01   2.5000000E-01   1.0000000E+00
  2.5000000E-01   2.5000000E-01   2.4830000E-01   1.0000000E+00
 2.5000000E-01   2.5000000E-01   2.5170000E-01   1.0000000E+00
  2.4830000E-01   2.4830000E-01   2.5000000E-01   1.0000000E+00
  2.5170000E-01   2.5170000E-01   2.5000000E-01   1.0000000E+00
  2.5170000E-01   2.4830000E-01   2.5000000E-01   1.0000000E+00
  2.4830000E-01   2.5170000E-01   2.5000000E-01   1.0000000E+00
  2.4830000E-01   2.5000000E-01   2.4830000E-01   1.0000000E+00
  2.5170000E-01   2.5000000E-01   2.5170000E-01   1.0000000E+00
  2.5170000E-01   2.5000000E-01   2.4830000E-01   1.0000000E+00
  2.4830000E-01   2.5000000E-01   2.5170000E-01   1.0000000E+00
  2.5000000E-01   2.4830000E-01   2.4830000E-01   1.0000000E+00
  2.5000000E-01   2.5170000E-01   2.5170000E-01   1.0000000E+00
  2.5000000E-01   2.5170000E-01   2.4830000E-01   1.0000000E+00
  2.5000000E-01   2.4830000E-01   2.5170000E-01   1.0000000E+00

I thought this might be a difference in convention (as the factor is exactly 2). Unfortunately I am not familiar with VASP to know if this breaks the emc.py (as the k-distances would be wrong, most likely)?

Thank you for your time and assistance!

Best, Chris

jaroli commented 7 years ago

Hi Chris, The units in emc.py are mixed, the step size is in 1/Bohr but the lattice vectors are in Angstrom. So your input file for emc.py should be:

0.500 0.500 0.500 0.001 43 V 5.9099 0.0000 0.0000 0.0000 5.9099 0.0000 0.0000 0.0000 5.9099

Regards, Karol

dwaipayanroni commented 5 years ago

@chrisewolf Can you please tell me how to fit the band manually to calculate the effective mass? What unit conversion do I need to implement?

estherori commented 5 years ago

@https://github.com/chrisewolf, I tried to use the QE-to-Vasp.py to convert the nscf.out file to EIGENVAL and OUTCAR but it keep complaining. It gives me this error: File "QE-to-VASP.py", line 102, in with file(args.destination_energy, 'w') as endata: NameError: name 'file' is not defined Please, what am I missing here. Your kind response will go a long way to me resolve the issue. Thank you. Esther