.. SPDX-FileCopyrightText: 2021 The eminus developers SPDX-License-Identifier: Apache-2.0 .. _further: 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. 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 `_. Development =========== To apply changes to the code without reinstalling the code, install eminus with .. code-block:: console 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 .. code-block:: console pip install -e .[dev] 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 .. code-block:: console pip install pytest pytest Coverage -------- | To check that all functions have a test case a coverage report can be created. | To install the necessary pytest extensions, use .. code-block:: console 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 .. code-block:: console coverage run -m pytest coverage html | To only create the total coverage percentage value for all files, use .. code-block:: console coverage run -m pytest coverage report 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 .. code-block:: console pip install ruff ruff check . To format the code use .. code-block:: console ruff format . Type checking ------------- | This code is type-checked with `mypy `_. | To install mypy and do a static type check, use .. code-block:: console pip install mypy mypy . 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 .. code-block:: console 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 .. code-block:: console sphinx-build -j $(nproc) -b html ./docs ./public