An effective mass package
Project description
effmass
💃 Effmass now has a command line interface
💃 Effmass now supports FHI-Aims, Castep and ASE
⚠️ The Data
class has now been renamed DataVasp
. You may need to update your scripts!
effmass
is a Python 3 package for calculating various definitions of effective mass from the electronic bandstructure of a semiconducting material. It consists of a core class that calculates the effective mass and other associated properties of selected bandstructure segments. The module also contains functions for locating bandstructure extrema and plotting approximations to the dispersion.
If you use effmass
for your published research please cite effmass.
Release 2.0.0
--> effmass
now interfaces with more codes:
effmass
can now read in Castep output data (in addition to Vasp and FHI-aims)effmass
can now work with ASE bandstructure objects
--> effmass
now includes a command line interface
As a result of these changes, and with view to supporting more DFT codes in the future, the Data
class has been renamed to DataVasp
. On updating to the latest version of effmass you may need to update your scripts / Jupyter Notebook to reflect this change.
Features
effmass
can:
Read in a bandstructure:
It is assumed you have used a DFT calculator to walk through a 1D slice of the Brillouin Zone, capturing the maxima and minima of interest. effmass
uses the Python package vasppy for parsing VASP
output.
Locate extrema: These correspond to the valence band maxima and conduction band minima. Maxima and minima within a certain energy range can also be located.
Calculate curvature, transport and optical effective masses: The curvature (aka inertial) and transport masses are calculated using the derivatives of a fitted polynomial function. The optical effective mass can also be calculated assuming a Kane dispersion.
Assess the extent of non-parabolicity: Parameters of the Kane quasi-linear dispersion are calculated to quantify the extent of non-parabolicity over a given energy range.
Calculate the quasi-fermi level for a given carrier concentration:
Using density-of-states data and assuming no thermal smearing, effmass
can calculate the energy to which states are occupied. This is a useful approximation to the quasi-Fermi level. Note: this is only supported for VASP and requires the output file DOSCAR
.
Plot fits to the dispersion: Selected bandstructure segments and approximations to the dispersion (assuming a Kane, quadratic, or higher order fit) can be visualised.
The [command line interface](## Installation) provides basic functionality for calculating parabolic effective masses. For those who have a basic familiarity with Python there is an API which provides access to more (non-parabolic) effective mass definitions.
Depending on the functionality and level of approximation you are looking for, it may be that one of the packages listed here will suit your needs better.
Supported Codes
effmass
currently supports VASP
, FHI-Aims
, Castep
and ASE
. In the near future we hope to play nicely with other codes that interface with the ASE bandstructure class, and pymatgen. We especially welcome contributions that will help make effmass
available to more researchers.
Installation
effmass
is a Python 3 package and requires key packages from the SciPy ecosystem: SciPy, NumPy and Matplotlib. If you have not installed these packages before, it may be best to install them using your preferred package manager (eg: Homebrew). Note that together they will use >100MB of disk space. effmass
can then be built using the Python package manager pip
:
pip install effmass
To start the command line interface simply type
effmass
To download and install the latest release from GitHub:
cd effmass
python3 setup.py install
Or clone the latest development version
git clone git@github.com:lucydot/effmass.git
and install the same way.
cd effmass
python3 setup.py install
Documentation
An overview of the features of effmass along with example code for Vasp and FHI-aims is contained in a Jupyter notebook here. Additional examples for the Castep and ASE interface are here. API documentation is here. Source code is available as a git repository at https://github.com/lucydot/effmass.
Publications using effmass
A number of publications have used effmass
.
The paper directory contains the Vasp input data (POSCAR), Vasp output data (OUTCAR/PROCAR) and band structures generated for Impact of nonparabolic electronic band structure on the optical and transport properties of photovoltaic materials Phys. Rev. B 99 (8), 085207 - also avaiable on arXiv.
Questions, bug reports, feature requests
Please use the Github issue tracker for any questions, feature requests or bug reports. Please do not contact the developers via email unless there is a specific reason you do not want the conversation to be public.
Development
If you would like to contribute please do so via a pull request. All contributors must read and respect the code of conduct. In particular, we welcome contributions which would extend effmass
so that it is able to parse output from other electronic structure codes.
Tests
Automated testing of the latest commit happens here.
Manual tests can be run using
python3 -m pytest
This code has been tested with Python versions 3.6.
Citing effmass
If you use this code in your research, please cite the following paper:
Whalley, Lucy D. (2018). effmass - an effective mass package. The Journal of Open Source Software, 3(28) 797. Link to paper here.
Bibtex
@misc{Whalley_JOSS2018,
author = {Lucy D. Whalley},
title = {effmass: An effective mass package},
volume = {3},
issue = {28},
pages = {797},
month = {Aug},
year = {2018},
doi = {10.21105/joss.00797},
url = {http://joss.theoj.org/papers/10.21105/joss.00797}
}
Contributors
Lead developer: Lucy Whalley, a.k.a lucydot
Contributors: Matthias Goloumb (Support for FHI-Aims), a.k.a MatthiasGolomb // Sean Kavanagh (Documentation), a.k.a kavanase // Benjamin Morgan (Vasppy compatability), a.k.a bjmorgan //
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.