Effective mass calculator (EMC) implements calculation of the effective masses at the bands extrema using finite difference method (not the band fitting method). There are two versions of the program: written in FORTRAN and Python. Currently CRYSTAL, VASP, CASTEP are supported, Quantum Espresso is coming!
Effective mass (m*) is defined as:
where x, y, z are the directions in the reciprocal Cartesian space (2π/A), En(k) is the dispersion relation for the n-th electronic band. The explicit form of the right-side symmetric tensor from the above eq. is:
where the derivatives can be evaluated numerically using the finite difference method. Eigenvalues of the above matrix are inverses of the effective masses, eigenvectors are the directions of the principal effective mass components.
For the theory behind the code and validation of the code against known data see the paper. Let us know if you find any bugs or mistakes, thanks!
emc.py
is a Python script, that depends only on the Python Standard Library. Code is being tested with Python v 2.7.
To install:
ls -la
, if it doesn't, do chmod +x ./emc.py
$PATH
(to print the $PATH
variable do echo $PATH
)FORTRAN version is considered deprecated: Download and unpack the current version: 1.50.
Fortran version depends on LAPACK and BLAS libraries.
To install:
make
$PATH
(to print the $PATH
variable do echo $PATH
)NOTE: emc.py
uses STENCIL=3 by default. It is possible to use STENCIL=5. For that purpose change the third line in emc.py
file from STENCIL=3
to STENCIL=5
.
0.000 0.000 0.000 ! K-POINT in the reciprocal crystal coord. (3 floats)
0.01 ! step size in 1/Bohr units (1 float)
81 ! band number, (1 integer)
V ! program identifier (1 char)
6.291999817 0.000000000 0.000000000 ! direct lattice vectors (3 floats)
0.755765092 7.652872670 0.000000000 ! direct lattice vectors (3 floats)
0.462692761 3.245907103 14.032346772 ! direct lattice vectors (3 floats)
cry-getE.pl
reads-in the desired band number (see below). For VASP valence band number can be obtained as a half of the NELECT
variable from the OUTCAR file (for non spin-polarized calculations).C
for CRYSTAL or V
for VASP. (TODO: Quantum Espresso)DIRECT LATTICE VECTORS COMPON. (A.U.)
, in VASP in the OUTCAR under: direct lattice vectors
.emc.py input_file
emc_gen
. Note: FORTRAN version requires input file to be named inp
ICHARG=11
in the INCAR. Don't forget to copy CHGCAR file from the converged SCF runemc.py input_file EIGENVAL_file
emc_calc
. Current folder should contain both inp and EIGENVAL filesIn case of CRYSTAL, cry-getE.pl script should be used in order to obtain file with the energies on the grid. The script takes two k-points at a time and runs band structure calculations (using runprop script from the CRYSTAL package).
cry-getE.pl has the following command line options:
-f
SCF output filename (.f98)-b
band numberExample: cry-getE.pl -f ../input.f98 -b 131
Note that runprop
needs to be in the current $PATH
, otherwise script will quit.
Contribution by Genadi Naydenov
0.000 0.000 0.000 ! K-POINT in the reciprocal crystal coord. (3 floats)
0.01 ! step size in 1/Bohr units (1 float)
17 ! band number, (1 integer)
P ! program identifier (1 char) - P is the CASTEP identifier
6.291999817 0.000000000 0.000000000 ! direct lattice vectors in Angs (3 floats)
0.755765092 7.652872670 0.000000000 ! direct lattice vectors in Angs (3 floats)
0.462692761 3.245907103 14.032346772 ! direct lattice vectors in Angs (3 floats)
./emc.py emc-input
. This will generate a KPOINTS
file, which contains a list of k-points.%BLOCK SPECTRAL_KPOINTS_LIST
*paste k-points list here*
%ENDBLOCK SPECTRAL_KPOINTS_LIST
./emc.py emc-input <seedname>.bands
to obtain the effective mass for the desired band. You can change the band number and repeat step 5 to calculate the effective mass for a different band.To run tests, in the distribution directory run:
python -m unittest discover
Tests are located in the test folder.
Alexandr Fonari and Christopher Sutton
If you have any questions or suggestions don't hesitate to contact us at: alexandr[dot]fonari[nospam]gmail.com or csutton[nospam]gatech.edu. You can also submit as issue.
Copyright (c) 2012, Alexandr Fonari, Christopher Sutton
Cite as: "Effective Mass Calculator, A. Fonari, C. Sutton, (2012)."
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.