# Relativistic magnetic interactions from non-orthogonal basis sets
More on the theoretical background can be seen on [arXiv](https://arxiv.org/abs/2309.02558).

# TODO
## Testing
- Test on lat3_791
- Test on varcell
- Test on varcell_myrun
- Test on varcell_myrun_2
- Test scaling
- Test rotations to x-y 30 and 60

## Developing
- Magnetic entities cannot handle orbitals, only shells
- Use ReadThe Docs [addons](https://docs.readthedocs.io/en/stable/addons.html)
- Check the symmetrization of the Hamiltonian and overlap matrix to make them hermitian
- Check if exchange field has scalar part
- Add more tests!!
- io stuff
- logging

# Building wheel
See detailed documentation on [PYPI](https://packaging.python.org/en/latest/tutorials/packaging-projects/).

- First you need some API Tokens for Test PYPI ,to be able to upload. You can read about it [here](https://test.pypi.org/help/#apitoken). I own the current project, so you have to contact me.


Use the following commands for a quick setup:
- Build wheel
```
python -m build
```

- Push to PYPI test repository
```
python -m twine upload --repository testpypi dist/*
```

# Usage
## For end users
Download and install from [PYPI](https://test.pypi.org/project/grogu-magn/) test repository. Be aware that this is not up to date yet!!!
```
python3 -m pip install --index-url https://test.pypi.org/simple/ grogu_magn
```

## For developers
- Clone repository from Gitea
```
git clone https://gitea.vo.elte.hu/et209d/grogu.git
```

- Create a virtual environment (.venv) (for example with VsCode)
    * Use python 3.9.6
    * install dependencies from:
        * requirements.txt
        * requirements-dev.txt
        * /docs/requirements.txt

- Install and run pre-commit
```
pre-commit install
pre-commit run --all-files
```

To build the documentation navigate to the `docs/source` folder. Then autogenerate the documentation and build. After this the html page can be found in `docs/source/_build/html`. Follow the commands below.
```
cd docs/source
sphinx-apidoc -o ./implementation/ ../../src/ 
make clean
make html
```
To build a pdf containing the documentation instead of make, first navigate to the `docs/source` folde, then use the rst2pdf extension.
```
cd docs/source
sphinx-apidoc -o ./implementation/ ../../src/ 
sphinx-build -b pdf . _build/pdf
```
