TB2J 0.9.9.9__tar.gz → 0.9.9.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/PKG-INFO +3 -1
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_exchange.py +53 -21
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_vampire.py +6 -3
- tb2j-0.9.9.10/TB2J/magnon/__init__.py +3 -0
- tb2j-0.9.9.10/TB2J/magnon/magnon3.py +824 -0
- tb2j-0.9.9.10/TB2J/magnon/magnon_band.py +180 -0
- tb2j-0.9.9.10/TB2J/magnon/plot.py +97 -0
- tb2j-0.9.9.10/TB2J/mathutils/auto_kpath.py +154 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J.egg-info/PKG-INFO +3 -1
- tb2j-0.9.9.10/TB2J.egg-info/SOURCES.txt +112 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J.egg-info/requires.txt +2 -0
- tb2j-0.9.9.10/scripts/TB2J_plot_magnon_bands.py +7 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/setup.py +4 -1
- tb2j-0.9.9.9/.github/workflows/pylint.yml.bak +0 -23
- tb2j-0.9.9.9/.github/workflows/python-app.yml +0 -44
- tb2j-0.9.9.9/.gitignore +0 -131
- tb2j-0.9.9.9/.pre-commit-config.yaml +0 -11
- tb2j-0.9.9.9/.readthedocs.yml +0 -28
- tb2j-0.9.9.9/.ruff.toml +0 -78
- tb2j-0.9.9.9/.travis.yml +0 -33
- tb2j-0.9.9.9/TB2J/.gitignore +0 -5
- tb2j-0.9.9.9/TB2J/downfold/Hdownfolder.py +0 -233
- tb2j-0.9.9.9/TB2J/interfaces/abacus/.gitignore +0 -2
- tb2j-0.9.9.9/TB2J/magnon/__init__.py +0 -3
- tb2j-0.9.9.9/TB2J/magnon/magnon3.py +0 -334
- tb2j-0.9.9.9/TB2J/magnon/plot.py +0 -58
- tb2j-0.9.9.9/TB2J.egg-info/SOURCES.txt +0 -225
- tb2j-0.9.9.9/buildimage.sh +0 -51
- tb2j-0.9.9.9/docs/Makefile +0 -20
- tb2j-0.9.9.9/docs/_static/Logo-ULG.png +0 -0
- tb2j-0.9.9.9/docs/_static/logo_TB2J_horizon.png +0 -0
- tb2j-0.9.9.9/docs/conf.py +0 -67
- tb2j-0.9.9.9/docs/index.rst +0 -44
- tb2j-0.9.9.9/docs/make.bat +0 -35
- tb2j-0.9.9.9/docs/requirements.txt +0 -3
- tb2j-0.9.9.9/docs/src/BFOvarT.png +0 -0
- tb2j-0.9.9.9/docs/src/Contributors.rst +0 -44
- tb2j-0.9.9.9/docs/src/ReleaseNotes.md +0 -226
- tb2j-0.9.9.9/docs/src/SrMnO3_DOS.png +0 -0
- tb2j-0.9.9.9/docs/src/abacus.md +0 -103
- tb2j-0.9.9.9/docs/src/applications.rst +0 -9
- tb2j-0.9.9.9/docs/src/convention.rst +0 -18
- tb2j-0.9.9.9/docs/src/development.md +0 -22
- tb2j-0.9.9.9/docs/src/downfold.md +0 -28
- tb2j-0.9.9.9/docs/src/ecosystem.md +0 -49
- tb2j-0.9.9.9/docs/src/eigen.rst +0 -34
- tb2j-0.9.9.9/docs/src/extend.rst +0 -45
- tb2j-0.9.9.9/docs/src/faq.rst +0 -79
- tb2j-0.9.9.9/docs/src/install.rst +0 -86
- tb2j-0.9.9.9/docs/src/mae.md +0 -127
- tb2j-0.9.9.9/docs/src/magnon_band.assets/exchange_magnon-1593690872101.png +0 -0
- tb2j-0.9.9.9/docs/src/magnon_band.assets/exchange_magnon.png +0 -0
- tb2j-0.9.9.9/docs/src/magnon_band.assets/magnon_dos.png +0 -0
- tb2j-0.9.9.9/docs/src/magnon_band.rst +0 -98
- tb2j-0.9.9.9/docs/src/multibinit.rst +0 -89
- tb2j-0.9.9.9/docs/src/openmx.rst +0 -27
- tb2j-0.9.9.9/docs/src/orbital_contribution.md +0 -80
- tb2j-0.9.9.9/docs/src/output.rst +0 -52
- tb2j-0.9.9.9/docs/src/parameters.rst +0 -89
- tb2j-0.9.9.9/docs/src/references.rst +0 -36
- tb2j-0.9.9.9/docs/src/roadmap.md +0 -8
- tb2j-0.9.9.9/docs/src/rotate_and_merge.rst +0 -54
- tb2j-0.9.9.9/docs/src/siesta.rst +0 -38
- tb2j-0.9.9.9/docs/src/spin_model_assets/canting_DMI.png +0 -0
- tb2j-0.9.9.9/docs/src/spin_model_assets/tmulti5_2.png +0 -0
- tb2j-0.9.9.9/docs/src/symmetry.md +0 -42
- tb2j-0.9.9.9/docs/src/tutorial.rst +0 -18
- tb2j-0.9.9.9/docs/src/wannier.rst +0 -228
- tb2j-0.9.9.9/examples/Siesta/BccFe/Fe.1.psml +0 -1181
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/EigenJq.txt +0 -119
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange.xml +0 -4126
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_kpth.txt +0 -8
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_magnon.png +0 -0
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon.py +0 -3
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.json +0 -3332
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.pdf +0 -0
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.png +0 -0
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.txt +0 -302
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.files +0 -3
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.in +0 -33
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/plot.sh +0 -1
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_dos.sh +0 -1
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_from_json_file.py +0 -73
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/TB2J.pickle +0 -0
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.exch +0 -1381
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.ucf +0 -3
- tb2j-0.9.9.9/examples/Siesta/BccFe/TB2J_results/exchange.out +0 -3097
- tb2j-0.9.9.9/examples/Siesta/BccFe/getJ.sh +0 -2
- tb2j-0.9.9.9/examples/Siesta/BccFe/run.sh +0 -3
- tb2j-0.9.9.9/examples/Siesta/BccFe/siesta.fdf +0 -61
- tb2j-0.9.9.9/examples/Siesta/HcpCo/Co.1.psml +0 -3174
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Multibinit/exchange.xml +0 -7610
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.files +0 -3
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.in +0 -33
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/TB2J.pickle +0 -0
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.exch +0 -2556
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.ucf +0 -4
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Vampire/input +0 -42
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.UCF +0 -644
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.mat +0 -24
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/exchange.out +0 -5708
- tb2j-0.9.9.9/examples/Siesta/HcpCo/TB2J_results/summary.txt +0 -10
- tb2j-0.9.9.9/examples/Siesta/HcpCo/getJ.sh +0 -1
- tb2j-0.9.9.9/examples/Siesta/HcpCo/run.sh +0 -3
- tb2j-0.9.9.9/examples/Siesta/HcpCo/siesta.fdf +0 -63
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/JvsR.pdf +0 -0
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/exchange.xml +0 -533
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.files +0 -3
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.in +0 -33
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/TB2J.pickle +0 -0
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.exch +0 -509
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.ucf +0 -3
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/input +0 -42
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.UCF +0 -135
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.mat +0 -13
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/assigned_basis.txt +0 -14
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/exchange.out +0 -406
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/TB2J_results/exchange_orb_decomposition.out +0 -1274
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinit.files +0 -8
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinit.in +0 -83
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_down.win +0 -113
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_down_centres.xyz +0 -21
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_down_hr.dat +0 -24512
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_up.win +0 -113
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_up_centres.xyz +0 -21
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/abinito_w90_up_hr.dat +0 -24512
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/get_J.sh +0 -1
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/psp/Mn.GGA-PBESOL-JTH.xml +0 -16818
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/psp/O.GGA-PBESOL-JTH.xml +0 -12782
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/psp/Sr.GGA-PBESOL-JTH.xml +0 -12646
- tb2j-0.9.9.9/examples/abinit-w90/SrMnO3/run.sh +0 -6
- tb2j-0.9.9.9/requirements.txt +0 -11
- tb2j-0.9.9.9/upload_to_pip.sh +0 -5
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/LICENSE +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/README.md +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/Jdownfolder.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/Jtensor.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/MAE.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/MAEGreen.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/Oiju.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/Oiju_epc.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/anisotropy.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/basis.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/citation.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/contour.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/density_matrix.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/epc.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/exchange.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/exchangeCL2.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/exchange_params.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/exchange_pert.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/exchange_qspace.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/external/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/external/p_tqdm.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/gpaw_wrapper.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/green.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/greentest.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/abacus_api.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/abacus_wrapper.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/gen_exchange_abacus.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/orbital_api.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/stru_api.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/test_density_matrix.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/test_read_HRSR.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/abacus/test_read_stru.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/gpaw_interface.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/lawaf_interface.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/manager.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/siesta_interface.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/interfaces/wannier90_interface.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_multibinit.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_tomsasd.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_txt.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_exchange/io_uppasd.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/io_merge.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/kpoints.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/magnon/io_exchange2.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/magnon/magnon_io.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/magnon/magnon_math.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/magnon/structure.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/fermi.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/fibonacci_sphere.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/kR_convert.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/lowdin.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mathutils/rotate_spin.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/myTB.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/mycfr.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/orbital_magmom.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/orbmap.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/pauli.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/pert.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/plot.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/rotate_atoms.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/rotate_siestaDM.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/sisl_wrapper.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/base_parser.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/constants.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/hamiltonian.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/hamiltonian_terms.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/plot.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/qsolver.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/spin_api.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/spin_xml.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/spinham/supercell.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/symmetrize_J.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/tensor_rotate.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/thetaphi.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/utest.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/utils.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/versioninfo.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/wannier/__init__.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/wannier/w90_parser.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J/wannier/w90_tb_parser.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J.egg-info/dependency_links.txt +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J.egg-info/entry_points.txt +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/TB2J.egg-info/top_level.txt +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_downfold.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_eigen.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_magnon.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_magnon2.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_magnon_dos.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_merge.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_rotate.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/TB2J_rotateDM.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/abacus2J.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/siesta2J.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/scripts/wann2J.py +0 -0
- {tb2j-0.9.9.9 → tb2j-0.9.9.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.9.
|
3
|
+
Version: 0.9.9.10
|
4
4
|
Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
|
5
5
|
Author: Xu He
|
6
6
|
Author-email: mailhexu@gmail.com
|
@@ -25,6 +25,8 @@ Requires-Dist: HamiltonIO>=0.2.3
|
|
25
25
|
Requires-Dist: pre-commit
|
26
26
|
Requires-Dist: sympair>0.1.0
|
27
27
|
Requires-Dist: sisl>=0.9.0
|
28
|
+
Requires-Dist: tomli>=2.0.0
|
29
|
+
Requires-Dist: tomli-w>=1.0.0
|
28
30
|
Dynamic: author
|
29
31
|
Dynamic: author-email
|
30
32
|
Dynamic: classifier
|
@@ -190,6 +190,7 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
190
190
|
def _build_Rlist(self):
|
191
191
|
Rset = set()
|
192
192
|
ispin_set = set()
|
193
|
+
Rset.add((0, 0, 0)) # always add the zero vector
|
193
194
|
for R, i, j in self.exchange_Jdict:
|
194
195
|
Rset.add(R)
|
195
196
|
ispin_set.add(i)
|
@@ -236,6 +237,23 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
236
237
|
i = self.i_spin(i)
|
237
238
|
return self.charges[self.iatom(i)]
|
238
239
|
|
240
|
+
def get_magnetic_moments(self):
|
241
|
+
"""Get magnetic moments for magnetic atoms only.
|
242
|
+
|
243
|
+
Returns
|
244
|
+
-------
|
245
|
+
np.ndarray
|
246
|
+
Array of shape (n_magnetic_atoms, 3) containing the magnetic moments.
|
247
|
+
For collinear calculations, only the z component is meaningful.
|
248
|
+
"""
|
249
|
+
mag_atoms = [i for i, idx in enumerate(self.index_spin) if idx >= 0]
|
250
|
+
if self.spinat.ndim == 1: # Handle collinear case with only z-component
|
251
|
+
moments = np.zeros((len(mag_atoms), 3))
|
252
|
+
moments[:, 2] = self.spinat[mag_atoms]
|
253
|
+
return moments
|
254
|
+
else: # Full 3D magnetic moments
|
255
|
+
return self.spinat[mag_atoms]
|
256
|
+
|
239
257
|
def get_spin_iatom(self, iatom):
|
240
258
|
return self.spinat[iatom]
|
241
259
|
|
@@ -312,7 +330,7 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
312
330
|
else:
|
313
331
|
return default
|
314
332
|
|
315
|
-
def get_J_tensor(self, i, j, R,
|
333
|
+
def get_J_tensor(self, i, j, R, Jiso=True, Jani=False, DMI=False):
|
316
334
|
"""
|
317
335
|
Return the full exchange tensor for atom i and j, and cell R.
|
318
336
|
param i : spin index i
|
@@ -321,21 +339,26 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
321
339
|
"""
|
322
340
|
i = self.i_spin(i)
|
323
341
|
j = self.i_spin(j)
|
324
|
-
|
325
|
-
|
326
|
-
if
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
342
|
+
Jtensor = combine_J_tensor(
|
343
|
+
Jiso=self.get_J(i, j, R) if Jiso else None,
|
344
|
+
D=self.get_DMI(i, j, R) if DMI else None,
|
345
|
+
Jani=self.get_Jani(i, j, R) if Jani else None,
|
346
|
+
)
|
347
|
+
# if iso_only:
|
348
|
+
# J = self.get_Jiso(i, j, R)
|
349
|
+
# if J is not None:
|
350
|
+
# Jtensor = np.eye(3) * self.get_J(i, j, R)
|
351
|
+
# else:
|
352
|
+
# Jtensor = np.eye(3) * 0
|
353
|
+
# else:
|
354
|
+
# Jtensor = combine_J_tensor(
|
355
|
+
# Jiso=self.get_J(i, j, R),
|
356
|
+
# D=self.get_DMI(i, j, R),
|
357
|
+
# Jani=self.get_Jani(i, j, R),
|
358
|
+
# )
|
336
359
|
return Jtensor
|
337
360
|
|
338
|
-
def get_full_Jtensor_for_one_R_i3j3(self, R,
|
361
|
+
def get_full_Jtensor_for_one_R_i3j3(self, R, Jiso=True, Jani=True, DMI=True):
|
339
362
|
"""
|
340
363
|
Return the full exchange tensor of all i and j for cell R.
|
341
364
|
param R (tuple of integers): cell index R
|
@@ -347,11 +370,11 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
347
370
|
for i in range(self.nspin):
|
348
371
|
for j in range(self.nspin):
|
349
372
|
Jmat[i * 3 : i * 3 + 3, j * 3 : j * 3 + 3] = self.get_J_tensor(
|
350
|
-
i, j, R,
|
373
|
+
i, j, R, Jiso=Jiso, Jani=Jani, DMI=DMI
|
351
374
|
)
|
352
375
|
return Jmat
|
353
376
|
|
354
|
-
def get_full_Jtensor_for_one_R_ij33(self, R,
|
377
|
+
def get_full_Jtensor_for_one_R_ij33(self, R, Jiso=True, Jani=True, DMI=True):
|
355
378
|
"""
|
356
379
|
Return the full exchange tensor of all i and j for cell R.
|
357
380
|
param R (tuple of integers): cell index R
|
@@ -362,27 +385,36 @@ Generation time: {now.strftime("%y/%m/%d %H:%M:%S")}
|
|
362
385
|
Jmat = np.zeros((n, n, 3, 3), dtype=float)
|
363
386
|
for i in range(self.nspin):
|
364
387
|
for j in range(self.nspin):
|
365
|
-
Jmat[i, j, :, :] = self.get_J_tensor(
|
388
|
+
Jmat[i, j, :, :] = self.get_J_tensor(
|
389
|
+
i, j, R, Jiso=Jiso, Jani=Jani, DMI=DMI
|
390
|
+
)
|
366
391
|
return Jmat
|
367
392
|
|
368
|
-
def get_full_Jtensor_for_Rlist(
|
393
|
+
def get_full_Jtensor_for_Rlist(
|
394
|
+
self, asr=False, Jiso=True, Jani=True, DMI=True, order="i3j3"
|
395
|
+
):
|
369
396
|
n = self.nspin
|
370
397
|
n3 = n * 3
|
371
398
|
nR = len(self.Rlist)
|
372
399
|
if order == "i3j3":
|
373
400
|
Jmat = np.zeros((nR, n3, n3), dtype=float)
|
374
401
|
for iR, R in enumerate(self.Rlist):
|
375
|
-
Jmat[iR] = self.get_full_Jtensor_for_one_R_i3j3(
|
402
|
+
Jmat[iR] = self.get_full_Jtensor_for_one_R_i3j3(
|
403
|
+
R, Jiso=Jiso, Jani=Jani, DMI=DMI
|
404
|
+
)
|
376
405
|
if asr:
|
377
406
|
iR0 = np.argmin(np.linalg.norm(self.Rlist, axis=1))
|
378
407
|
assert np.linalg.norm(self.Rlist[iR0]) == 0
|
379
408
|
for i in range(n3):
|
380
409
|
sum_JRi = np.sum(np.sum(Jmat, axis=0)[i])
|
381
|
-
Jmat[iR0][i, i] -= sum_JRi
|
410
|
+
Jmat[iR0][i, :, i, :] -= sum_JRi
|
382
411
|
|
383
412
|
elif order == "ij33":
|
384
413
|
Jmat = np.zeros((nR, n, n, 3, 3), dtype=float)
|
385
|
-
|
414
|
+
for iR, R in enumerate(self.Rlist):
|
415
|
+
Jmat[iR] = self.get_full_Jtensor_for_one_R_ij33(
|
416
|
+
R, Jiso=Jiso, Jani=Jani, DMI=DMI
|
417
|
+
)
|
386
418
|
if asr:
|
387
419
|
iR0 = np.argmin(np.linalg.norm(self.Rlist, axis=1))
|
388
420
|
assert np.linalg.norm(self.Rlist[iR0]) == 0
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import numpy as np
|
2
1
|
import os
|
2
|
+
|
3
|
+
import numpy as np
|
3
4
|
from ase.units import J
|
4
5
|
|
5
6
|
|
@@ -51,10 +52,12 @@ def write_vampire_unitcell_file(cls, fname):
|
|
51
52
|
R, ispin, jspin = key
|
52
53
|
Jtensor = cls.get_J_tensor(ispin, jspin, R)
|
53
54
|
counter += 1 # starts at 0
|
54
|
-
myfile.write(
|
55
|
+
myfile.write(
|
56
|
+
f"{counter:5d} {ispin:3d} {jspin:3d} {R[0]:3d} {R[1]:3d} {R[2]:3d} "
|
57
|
+
)
|
55
58
|
for i in range(3):
|
56
59
|
for j in range(3):
|
57
|
-
val =np.real(Jtensor[i,j]*2.0/J)
|
60
|
+
val = np.real(Jtensor[i, j] * 2.0 / J)
|
58
61
|
if np.abs(val) < 1e-30:
|
59
62
|
val = 0.0
|
60
63
|
myfile.write(f"{val:<012.5e} ")
|