10. Further information

  • The code has been described in a master thesis.

  • This thesis comes with an in-detail explanation of a minimalistic implementation called SimpleDFT.

  • There is also a version of SimpleDFT written in Julia, called SimpleDFT.jl.

  • A separate repository called eminus-benchmarks is available for performance and code comparisons.

  • A comparison of both SimpleDFT codes is available under the SimpleDFT pages.

  • For more information about implementing DFT using the DFT++ formulation, fantastic lectures from Tomas Arias can be found here.

  • The code JDFTx from Ravishankar Sundararaman et al. offers a great reference implementation in C++ using DFT++.

  • Another great read is the book by Fadjar Fathurrahman et al. called Implementing Density Functional Theory Calculations.

  • This book outlines an implementation in Julia using a different formulation called PWDFT.jl.

  • More open-source codes related to DFT, SIC, and more can be found on the ESP and OpenSIC pages.

10.1. Contact

  • If you encounter issues, please use the GitLab issue tracker file in bug reports.

  • Additionally, there is a Discord server where you can easily ask your questions.

  • If there are still open questions about anything, feel free to contact me.

10.2. Development

To apply changes to the code without reinstalling the code, install eminus with

git clone https://gitlab.com/wangenau/eminus.git
cd eminus
pip install -e .

To install all packages needed for development as listed below, use the following option

pip install -e .[dev]

10.2.1. Testing

To verify that changes work as intended, tests can be found in the tests folder.
They can be executed using the Python interpreter or with pytest.
pytest can be installed and executed with
pip install pytest
pytest

10.2.2. Coverage

To check that all functions have a test case a coverage report can be created.
To install the necessary pytest extensions, use
pip install coverage pytest
A detailed coverage report that gives a clear overview of the covered code is uploaded with every release.
To create this webpage, use
coverage run -m pytest
coverage html
To only create the total coverage percentage value for all files, use
coverage run -m pytest
coverage report

10.2.3. Linting and formatting

This code is lint-checked and formatted with Ruff, using a custom style configuration.
To install Ruff and do a lint check, use
pip install ruff
ruff check .

To format the code use

ruff format .

10.2.4. Type checking

This code is type-checked with mypy.
To install mypy and do a static type check, use
pip install mypy
mypy .

10.2.5. Documentation

The documentation is automatically generated with Sphinx, using a custom theme called Furo.
Both packages can be installed and the webpage can be built with
pip install sphinx furo sphinx-design sphinxcontrib-bibtex
sphinx-build -b html ./docs ./public

The documentation build time can be shortened by using more processes, e.g., with

sphinx-build -j $(nproc) -b html ./docs ./public