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¶
pip install pytest
pytest
10.2.2. Coverage¶
pip install coverage pytest
coverage run -m pytest
coverage html
coverage run -m pytest
coverage report
10.2.3. Linting and formatting¶
pip install ruff
ruff check .
To format the code use
ruff format .
10.2.4. Type checking¶
pip install mypy
mypy .
10.2.5. Documentation¶
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