.. SPDX-FileCopyrightText: 2021 The eminus developers SPDX-License-Identifier: Apache-2.0 .. _further: Further information ******************* - An early version of the code has been described in a `master thesis `_. - This thesis includes 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 `_. 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 questions. - If there are still open questions, 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, use the following option. Note that at least Python 3.10 is required to use all dev dependencies. .. code-block:: console pip install --group 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 To skip test that can run for a longer time, one can use .. code-block:: console pytest -m "not slow" 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 . To test the stub files against the implementation files, use .. code-block:: console stubtest eminus 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