Package: effmass
Effmass💃 Effmass now has more options for locating extrema of a particular type: by direction or band type (conduction/valence/frontier).💃 Effmass supports Vasp, FHI-Aims, Castep, ASE, and Octopus.⚠️ TheDataclass was renamedDataVaspineffmassversions 2.0.0+. You may need to update your scripts!effmassis apeer-reviewedPython (3.6+) package for calculating various definitions of effective mass from the electronic bandstructure of a semiconducting material. It consists of a coreSegmentclass that calculates the effective mass and other associated properties of selected bandstructure segments. The programme also contains functions for locating bandstructure extrema, constructing segments and plotting approximations to the dispersion. There is a command line interface for calculating parabolic effective mass values, and an API for the more complex, non-parabolic definitions of effective mass.If you useeffmassfor your published researchplease cite accordingly.What's new?💃effmassnow has more options for locating extrema of a particular type: by direction or band type (conduction/valence/frontier). There are updated usage examples in thetutorial.💃effmassnow interfaces with more codes:it can read in Castep output data (in addition to Vasp and FHI-aims)it can work with ASE bandstructure objectsit can work with Octopus output files💃effmassnow includes a command line interfaceAs a result of these changes, and with view to supporting more DFT codes in the future, theDataclass has been renamed toDataVasp⚠️On updating to the latest version of effmass you may need to update your scripts / Jupyter Notebook to reflect this change⚠️Featureseffmasscan: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.effmassuses the Python packagevasppyfor parsingVASPoutput.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,effmasscan 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 fileDOSCAR.Plot fits to the dispersion:Selected bandstructure segments and approximations to the dispersion (assuming a Kane, quadratic, or higher order fit) can be visualised.Depending on the functionality and level of approximation you are looking for,
it may be that one of the packages listedherewill suit your needs better.Supported Codeseffmasscurrently supportsVASP,FHI-Aims,Castep,ASE, andOctopus. 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 makeeffmassavailable to more researchers.Other effective mass codesThere are other codes that can calculate effective mass. The best effective mass code depends on your use case.You may findSumo bandstatseasier to use if you are looking for a basic parabolic fit.Amsetcan be used to calculate the effective mass across the whole Brillouin Zone (useful if your CBM/VBM is not at a high symmetry point, for example). Further details can be found on MatSci discussion forumhereYou may find that someone else has already calculated the effective mass you need - there are 10,000's DFT-calculated effective mass values on MPContribshere.Installationeffmasscan be installed using the Python package managerpip:pip install effmassIf you use conda/anaconda, the safest thing to do is to create a new environment and then install effmass:conda create -n effmass python
conda activate effmass
pip install effmassIf you wish, you can install the very latest version ofeffmassfrom GitHub with the commands below.Note: The latest GitHub version may include more features and data format support that the latest release, but it is not a stable release, so may have more issues than usual. If you are unsure, use one of the above install methods instead.git clone https://github.com/lucydot/effmass.git
cd effmass
pip install .Command Line InterfaceThecommand line interfaceprovides basic functionality for calculating parabolic effective masses.
For those who have a basic familiarity with Python there is an API which provides access to all features, including non-parabolic effective mass definitions.To start the command line interface simply typeeffmassand follow the prompts. You are asked if you would like to print a plot of the segments found - we recommend that you do this, to check that the segments are "sensible". You are also asked if you would like to print a summary file - again, we recommend that you do this, so that you have a record of the CLI options chosen.DocumentationAn overview of the features of effmass, along with example code for Vasp and FHI-aims output data, is contained in a Jupyter notebookhere.Additional Jupyter notebook examples for the Castep and ASE interfaces arehere.The API documentation ishere.Further details about the various effective mass definitions implemented ineffmasscan be found in Phys. Rev. B99(8), 085207, which is alsoavailable on arXiv.The source code is available as a git repository athttps://github.com/lucydot/effmass.Running notebook examplesIf you want to run the jupyter notebook examples/tutorials you will also need to installnotebook:pip install notebookTo run the notebook, run the following command at the Terminal (Mac/Linux) or Command Prompt (Windows):jupyter notebookThis will open a web browser tab, which you can use to navigate to the notebook examples.Publications usingeffmassAnumber of publicationshave usedeffmass.effmasswas initially developed for a project that has been published asImpact of nonparabolic electronic band structure on the optical and transport properties of photovoltaic materialsPhys. Rev. B99(8), 085207. This paper is alsoavaiable on arXiv. Thepaper directorycontains the Vasp input data (POSCAR), Vasp output data (OUTCAR/PROCAR) and band structures generated for this study.Questions, bug reports, feature requestsPlease use the Githubissue trackerfor 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.DevelopmentIf you would like to contribute please do so via a pull request. All contributors must read and respect thecode of conduct. In particular, we welcome contributions which would extendeffmassso that it is able to parse output from other electronic structure codes.Version numbersFor versioning we are following the guidelineshere. This allows automatic versioning according to the latest tag on Github.Test PYPIWhen testing a build on the test PYPI site it is important to point to the actual PYPI for the dependencies..its aGOTCHA...pip install -i https://pypi.org/pypi/ --extra-index-url https://test.pypi.org/simple effmass==2.3.4.dev3TestsAutomated testing of the latest commit happenshere.You can also run tests locally:pip install effmass[tests]
cd effmass
python -m pytestCitingeffmassIf 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 paperhere.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}
}ContributorsLead developer:Lucy Whalley, a.k.alucydotContributors:Eisuke Kawashima (tests), a.k.ae-kwsm//Florian Knoop (bugs, tweaks and script improvements), a.k.aflokno//William Taylor (auto-versioning and build system requirements), a.k.amusicmrman99//Austin Fatt (support for Ocotpus), a.k.aafatt//Matthias Goloumb (Support for FHI-Aims), a.k.aMatthiasGolomb//Katarina Brlec (Support for vasprun files) a.k.abrlec//Sean Kavanagh (Documentation), a.k.akavanase//Benjamin Morgan (Vasppy compatability), a.k.abjmorgan//