TB2J 0.9.11.2__tar.gz → 0.9.12.3__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.
Files changed (236) hide show
  1. tb2j-0.9.12.3/.github/workflows/pylint.yml.bak +23 -0
  2. tb2j-0.9.12.3/.github/workflows/python-app.yml +44 -0
  3. tb2j-0.9.12.3/.gitignore +131 -0
  4. tb2j-0.9.12.3/.pre-commit-config.yaml +11 -0
  5. tb2j-0.9.12.3/.readthedocs.yml +28 -0
  6. tb2j-0.9.12.3/.ruff.toml +78 -0
  7. tb2j-0.9.12.3/.travis.yml +33 -0
  8. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/PKG-INFO +1 -1
  9. tb2j-0.9.12.3/TB2J/.gitignore +5 -0
  10. tb2j-0.9.12.3/TB2J/interfaces/abacus/.gitignore +2 -0
  11. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/magnon3.py +76 -28
  12. tb2j-0.9.12.3/TB2J/magnon/plot_magnon_dos_cli.py +211 -0
  13. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_plot_magnon_bands.py +9 -14
  14. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J.egg-info/PKG-INFO +1 -1
  15. tb2j-0.9.12.3/TB2J.egg-info/SOURCES.txt +232 -0
  16. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J.egg-info/entry_points.txt +1 -1
  17. tb2j-0.9.12.3/buildimage.sh +51 -0
  18. tb2j-0.9.12.3/docs/Makefile +20 -0
  19. tb2j-0.9.12.3/docs/_static/Logo-ULG.png +0 -0
  20. tb2j-0.9.12.3/docs/_static/logo_TB2J_horizon.png +0 -0
  21. tb2j-0.9.12.3/docs/conf.py +67 -0
  22. tb2j-0.9.12.3/docs/index.rst +44 -0
  23. tb2j-0.9.12.3/docs/make.bat +35 -0
  24. tb2j-0.9.12.3/docs/requirements.txt +3 -0
  25. tb2j-0.9.12.3/docs/src/BFOvarT.png +0 -0
  26. tb2j-0.9.12.3/docs/src/Contributors.rst +44 -0
  27. tb2j-0.9.12.3/docs/src/ReleaseNotes.md +226 -0
  28. tb2j-0.9.12.3/docs/src/SrMnO3_DOS.png +0 -0
  29. tb2j-0.9.12.3/docs/src/abacus.md +103 -0
  30. tb2j-0.9.12.3/docs/src/applications.rst +9 -0
  31. tb2j-0.9.12.3/docs/src/convention.rst +18 -0
  32. tb2j-0.9.12.3/docs/src/development.md +22 -0
  33. tb2j-0.9.12.3/docs/src/downfold.md +28 -0
  34. tb2j-0.9.12.3/docs/src/ecosystem.md +49 -0
  35. tb2j-0.9.12.3/docs/src/eigen.rst +34 -0
  36. tb2j-0.9.12.3/docs/src/extend.rst +45 -0
  37. tb2j-0.9.12.3/docs/src/faq.rst +79 -0
  38. tb2j-0.9.12.3/docs/src/install.rst +123 -0
  39. tb2j-0.9.12.3/docs/src/mae.md +127 -0
  40. tb2j-0.9.12.3/docs/src/magnon_band.assets/exchange_magnon-1593690872101.png +0 -0
  41. tb2j-0.9.12.3/docs/src/magnon_band.assets/exchange_magnon.png +0 -0
  42. tb2j-0.9.12.3/docs/src/magnon_band.assets/magnon_dos.png +0 -0
  43. tb2j-0.9.12.3/docs/src/magnon_band.rst +74 -0
  44. tb2j-0.9.12.3/docs/src/magnon_bands.md +177 -0
  45. tb2j-0.9.12.3/docs/src/multibinit.rst +89 -0
  46. tb2j-0.9.12.3/docs/src/openmx.rst +27 -0
  47. tb2j-0.9.12.3/docs/src/orbital_contribution.md +80 -0
  48. tb2j-0.9.12.3/docs/src/output.rst +52 -0
  49. tb2j-0.9.12.3/docs/src/parameters.rst +89 -0
  50. tb2j-0.9.12.3/docs/src/references.rst +36 -0
  51. tb2j-0.9.12.3/docs/src/roadmap.md +8 -0
  52. tb2j-0.9.12.3/docs/src/rotate_and_merge.rst +54 -0
  53. tb2j-0.9.12.3/docs/src/siesta.rst +38 -0
  54. tb2j-0.9.12.3/docs/src/spin_model_assets/canting_DMI.png +0 -0
  55. tb2j-0.9.12.3/docs/src/spin_model_assets/tmulti5_2.png +0 -0
  56. tb2j-0.9.12.3/docs/src/symmetry.md +42 -0
  57. tb2j-0.9.12.3/docs/src/tutorial.rst +18 -0
  58. tb2j-0.9.12.3/docs/src/wannier.rst +228 -0
  59. tb2j-0.9.12.3/examples/Siesta/BccFe/Fe.1.psml +1181 -0
  60. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/EigenJq.txt +119 -0
  61. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange.xml +4126 -0
  62. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_kpth.txt +8 -0
  63. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_magnon.png +0 -0
  64. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon.py +3 -0
  65. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.json +3332 -0
  66. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.pdf +0 -0
  67. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.png +0 -0
  68. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.txt +302 -0
  69. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.files +3 -0
  70. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.in +33 -0
  71. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/plot.sh +1 -0
  72. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_dos.sh +1 -0
  73. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_from_json_file.py +73 -0
  74. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/TB2J.pickle +0 -0
  75. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.exch +1381 -0
  76. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.ucf +3 -0
  77. tb2j-0.9.12.3/examples/Siesta/BccFe/TB2J_results/exchange.out +3097 -0
  78. tb2j-0.9.12.3/examples/Siesta/BccFe/getJ.sh +2 -0
  79. tb2j-0.9.12.3/examples/Siesta/BccFe/run.sh +3 -0
  80. tb2j-0.9.12.3/examples/Siesta/BccFe/siesta.fdf +61 -0
  81. tb2j-0.9.12.3/examples/Siesta/HcpCo/Co.1.psml +3174 -0
  82. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Multibinit/exchange.xml +7610 -0
  83. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.files +3 -0
  84. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.in +33 -0
  85. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/TB2J.pickle +0 -0
  86. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.exch +2556 -0
  87. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.ucf +4 -0
  88. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Vampire/input +42 -0
  89. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.UCF +644 -0
  90. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.mat +24 -0
  91. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/exchange.out +5708 -0
  92. tb2j-0.9.12.3/examples/Siesta/HcpCo/TB2J_results/summary.txt +10 -0
  93. tb2j-0.9.12.3/examples/Siesta/HcpCo/getJ.sh +1 -0
  94. tb2j-0.9.12.3/examples/Siesta/HcpCo/run.sh +3 -0
  95. tb2j-0.9.12.3/examples/Siesta/HcpCo/siesta.fdf +63 -0
  96. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/JvsR.pdf +0 -0
  97. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/exchange.xml +533 -0
  98. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.files +3 -0
  99. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.in +33 -0
  100. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/TB2J.pickle +0 -0
  101. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.exch +509 -0
  102. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.ucf +3 -0
  103. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/input +42 -0
  104. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.UCF +135 -0
  105. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.mat +13 -0
  106. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/assigned_basis.txt +14 -0
  107. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/exchange.out +406 -0
  108. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/TB2J_results/exchange_orb_decomposition.out +1274 -0
  109. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinit.files +8 -0
  110. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinit.in +83 -0
  111. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_down.win +113 -0
  112. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_down_centres.xyz +21 -0
  113. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_down_hr.dat +24512 -0
  114. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_up.win +113 -0
  115. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_up_centres.xyz +21 -0
  116. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/abinito_w90_up_hr.dat +24512 -0
  117. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/get_J.sh +1 -0
  118. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/psp/Mn.GGA-PBESOL-JTH.xml +16818 -0
  119. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/psp/O.GGA-PBESOL-JTH.xml +12782 -0
  120. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/psp/Sr.GGA-PBESOL-JTH.xml +12646 -0
  121. tb2j-0.9.12.3/examples/abinit-w90/SrMnO3/run.sh +6 -0
  122. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/pyproject.toml +2 -2
  123. tb2j-0.9.12.3/requirements.txt +11 -0
  124. tb2j-0.9.12.3/upload_to_pip.sh +5 -0
  125. tb2j-0.9.11.2/TB2J/magnon/plot_magnon_dos_cli.py +0 -99
  126. tb2j-0.9.11.2/TB2J.egg-info/SOURCES.txt +0 -116
  127. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/LICENSE +0 -0
  128. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/README.md +0 -0
  129. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/Jdownfolder.py +0 -0
  130. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/Jtensor.py +0 -0
  131. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/MAE.py +0 -0
  132. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/MAEGreen.py +0 -0
  133. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/Oiju.py +0 -0
  134. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/Oiju_epc.py +0 -0
  135. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/__init__.py +0 -0
  136. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/anisotropy.py +0 -0
  137. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/basis.py +0 -0
  138. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/citation.py +0 -0
  139. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/contour.py +0 -0
  140. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/density_matrix.py +0 -0
  141. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/downfold/Hdownfolder.py +0 -0
  142. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/epc.py +0 -0
  143. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/exchange.py +0 -0
  144. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/exchangeCL2.py +0 -0
  145. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/exchange_params.py +0 -0
  146. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/exchange_pert.py +0 -0
  147. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/exchange_qspace.py +0 -0
  148. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/external/__init__.py +0 -0
  149. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/external/p_tqdm.py +0 -0
  150. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/gpaw_wrapper.py +0 -0
  151. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/green.py +0 -0
  152. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/greentest.py +0 -0
  153. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/__init__.py +0 -0
  154. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/__init__.py +0 -0
  155. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/abacus_api.py +0 -0
  156. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/abacus_wrapper.py +0 -0
  157. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/gen_exchange_abacus.py +0 -0
  158. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/orbital_api.py +0 -0
  159. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/stru_api.py +0 -0
  160. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/test_density_matrix.py +0 -0
  161. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/test_read_HRSR.py +0 -0
  162. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/abacus/test_read_stru.py +0 -0
  163. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/gpaw_interface.py +0 -0
  164. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/lawaf_interface.py +0 -0
  165. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/manager.py +0 -0
  166. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/siesta_interface.py +0 -0
  167. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/interfaces/wannier90_interface.py +0 -0
  168. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/__init__.py +0 -0
  169. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_exchange.py +0 -0
  170. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_multibinit.py +0 -0
  171. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_tomsasd.py +0 -0
  172. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_txt.py +0 -0
  173. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_uppasd.py +0 -0
  174. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_exchange/io_vampire.py +0 -0
  175. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/io_merge.py +0 -0
  176. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/kpoints.py +0 -0
  177. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/__init__.py +0 -0
  178. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/io_exchange2.py +0 -0
  179. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/magnon_band.py +0 -0
  180. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/magnon_dos.py +0 -0
  181. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/magnon_io.py +0 -0
  182. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/magnon_math.py +0 -0
  183. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/plot.py +0 -0
  184. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/magnon/structure.py +0 -0
  185. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/__init__.py +0 -0
  186. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/auto_kpath.py +0 -0
  187. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/fermi.py +0 -0
  188. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/fibonacci_sphere.py +0 -0
  189. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/kR_convert.py +0 -0
  190. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/lowdin.py +0 -0
  191. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mathutils/rotate_spin.py +0 -0
  192. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/myTB.py +0 -0
  193. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/mycfr.py +0 -0
  194. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/orbital_magmom.py +0 -0
  195. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/orbmap.py +0 -0
  196. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/pauli.py +0 -0
  197. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/pert.py +0 -0
  198. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/plot.py +0 -0
  199. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/rotate_atoms.py +0 -0
  200. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/rotate_siestaDM.py +0 -0
  201. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_downfold.py +0 -0
  202. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_eigen.py +0 -0
  203. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_magnon.py +0 -0
  204. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_magnon2.py +0 -0
  205. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_magnon_dos.py +0 -0
  206. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_merge.py +0 -0
  207. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_rotate.py +0 -0
  208. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/TB2J_rotateDM.py +0 -0
  209. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/__init__.py +0 -0
  210. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/abacus2J.py +0 -0
  211. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/siesta2J.py +0 -0
  212. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/scripts/wann2J.py +0 -0
  213. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/sisl_wrapper.py +0 -0
  214. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/__init__.py +0 -0
  215. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/base_parser.py +0 -0
  216. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/constants.py +0 -0
  217. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/hamiltonian.py +0 -0
  218. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/hamiltonian_terms.py +0 -0
  219. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/plot.py +0 -0
  220. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/qsolver.py +0 -0
  221. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/spin_api.py +0 -0
  222. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/spin_xml.py +0 -0
  223. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/spinham/supercell.py +0 -0
  224. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/symmetrize_J.py +0 -0
  225. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/tensor_rotate.py +0 -0
  226. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/thetaphi.py +0 -0
  227. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/utest.py +0 -0
  228. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/utils.py +0 -0
  229. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/versioninfo.py +0 -0
  230. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/wannier/__init__.py +0 -0
  231. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/wannier/w90_parser.py +0 -0
  232. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J/wannier/w90_tb_parser.py +0 -0
  233. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J.egg-info/dependency_links.txt +0 -0
  234. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J.egg-info/requires.txt +0 -0
  235. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/TB2J.egg-info/top_level.txt +0 -0
  236. {tb2j-0.9.11.2 → tb2j-0.9.12.3}/setup.cfg +0 -0
@@ -0,0 +1,23 @@
1
+ name: Pylint
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ python-version: ["3.8", "3.9", "3.10"]
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ - name: Set up Python ${{ matrix.python-version }}
14
+ uses: actions/setup-python@v3
15
+ with:
16
+ python-version: ${{ matrix.python-version }}
17
+ - name: Install dependencies
18
+ run: |
19
+ python -m pip install --upgrade pip
20
+ pip install pylint
21
+ - name: Analysing the code with pylint
22
+ run: |
23
+ pylint $(git ls-files '*.py')
@@ -0,0 +1,44 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a single version of Python
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
3
+
4
+ name: Python application
5
+
6
+ on:
7
+ push:
8
+ branches: [ "master" ]
9
+ pull_request:
10
+ branches: [ "master" ]
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ build:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - name: Set up Python 3.10
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.10"
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install flake8 pytest
28
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
29
+ - name: Lint with flake8
30
+ run: |
31
+ # stop the build if there are Python syntax errors or undefined names
32
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
33
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
34
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
35
+ - name: Test with pytest
36
+ run: |
37
+ #pytest
38
+ # - pwd
39
+ python -m pip install .
40
+ cd examples/abinit-w90/SrMnO3
41
+ ls -lah
42
+ sh get_J.sh
43
+ cd TB2J_results/Multibinit
44
+ TB2J_magnon.py --figfname magnon.png
@@ -0,0 +1,131 @@
1
+ doc/refs/*.pdf
2
+
3
+
4
+ *.swp
5
+
6
+ # Latex
7
+ *.aux
8
+
9
+ # xyz files
10
+
11
+ .DS_Store
12
+
13
+ # Byte-compiled / optimized / DLL files
14
+ __pycache__/
15
+ *.py[cod]
16
+ *$py.class
17
+
18
+ # numpy results
19
+ *.npy
20
+
21
+ # png files
22
+
23
+ # C extensions
24
+ *.so
25
+ *.a
26
+
27
+ # Fortran extensions
28
+ *.fpp
29
+ *.mod
30
+ *.o
31
+
32
+ # F90wrap files
33
+ *.plist
34
+
35
+ # Distribution / packaging
36
+ .Python
37
+ env/
38
+ build/
39
+ develop-eggs/
40
+ dist/
41
+ downloads/
42
+ eggs/
43
+ .eggs/
44
+ lib/
45
+ lib64/
46
+ parts/
47
+ sdist/
48
+ var/
49
+ wheels/
50
+ *.egg-info/
51
+ *.egg-info/*
52
+ .installed.cfg
53
+ *.egg
54
+
55
+ # temporary files
56
+ temp/
57
+
58
+ # PyInstaller
59
+ # Usually these files are written by a python script from a template
60
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
61
+ *.manifest
62
+ *.spec
63
+
64
+ # Installer logs
65
+ pip-log.txt
66
+ pip-delete-this-directory.txt
67
+
68
+ # Unit test / coverage reports
69
+ htmlcov/
70
+ .tox/
71
+ .coverage
72
+ .coverage.*
73
+ .cache
74
+ nosetests.xml
75
+ coverage.xml
76
+ *.cover
77
+ .hypothesis/
78
+
79
+ # Translations
80
+ *.mo
81
+ *.pot
82
+
83
+ # Django stuff:
84
+ *.log
85
+ local_settings.py
86
+
87
+ # Flask stuff:
88
+ instance/
89
+ .webassets-cache
90
+
91
+ # Scrapy stuff:
92
+ .scrapy
93
+
94
+ # Sphinx documentation
95
+ docs/_build/
96
+
97
+ # PyBuilder
98
+ target/
99
+
100
+ # Jupyter Notebook
101
+ .ipynb_checkpoints
102
+
103
+ # pyenv
104
+ .python-version
105
+
106
+ # celery beat schedule file
107
+ celerybeat-schedule
108
+
109
+ # SageMath parsed files
110
+ *.sage.py
111
+
112
+ # dotenv
113
+ .env
114
+
115
+ # virtualenv
116
+ .venv
117
+ venv/
118
+ ENV/
119
+
120
+ # Spyder project settings
121
+ .spyderproject
122
+ .spyproject
123
+
124
+ # Rope project settings
125
+ .ropeproject
126
+
127
+ # mkdocs documentation
128
+ /site
129
+
130
+ # mypy
131
+ .mypy_cache/
@@ -0,0 +1,11 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.3.5
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ # --select I sorts imports
9
+ args: [ --fix, --extend-select, I ]
10
+ # Run the formatter.
11
+ - id: ruff-format
@@ -0,0 +1,28 @@
1
+ # .readthedocs.yml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+ build:
8
+ os: "ubuntu-22.04"
9
+ tools:
10
+ python: "3.11"
11
+
12
+ # Build documentation in the docs/ directory with Sphinx
13
+ sphinx:
14
+ configuration: docs/conf.py
15
+
16
+ # Build documentation with MkDocs
17
+ #mkdocs:
18
+ # configuration: mkdocs.yml
19
+
20
+ # Optionally build your docs in additional formats such as PDF
21
+ formats:
22
+ - pdf
23
+
24
+ # Optionally set the version of Python and requirements required to build your docs
25
+ python:
26
+ install:
27
+ - requirements: requirements.txt
28
+ - requirements: docs/requirements.txt
@@ -0,0 +1,78 @@
1
+ # Exclude a variety of commonly ignored directories.
2
+ exclude = [
3
+ ".bzr",
4
+ ".direnv",
5
+ ".eggs",
6
+ ".git",
7
+ ".git-rewrite",
8
+ ".hg",
9
+ ".ipynb_checkpoints",
10
+ ".mypy_cache",
11
+ ".nox",
12
+ ".pants.d",
13
+ ".pyenv",
14
+ ".pytest_cache",
15
+ ".pytype",
16
+ ".ruff_cache",
17
+ ".svn",
18
+ ".tox",
19
+ ".venv",
20
+ ".vscode",
21
+ "__pypackages__",
22
+ "_build",
23
+ "buck-out",
24
+ "build",
25
+ "dist",
26
+ "node_modules",
27
+ "site-packages",
28
+ "venv",
29
+ ]
30
+
31
+ # Same as Black.
32
+ line-length = 88
33
+ indent-width = 4
34
+
35
+ # Assume Python 3.8
36
+ target-version = "py38"
37
+
38
+ [lint]
39
+ # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
40
+ # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
41
+ # McCabe complexity (`C901`) by default.
42
+ select = ["E4", "E7", "E9", "F"]
43
+ ignore = ["E741"]
44
+
45
+ # Allow fix for all enabled rules (when `--fix`) is provided.
46
+ fixable = ["ALL"]
47
+ unfixable = []
48
+
49
+ # Allow unused variables when underscore-prefixed.
50
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
51
+
52
+ [format]
53
+ # Like Black, use double quotes for strings.
54
+ quote-style = "double"
55
+
56
+ # Like Black, indent with spaces, rather than tabs.
57
+ indent-style = "space"
58
+
59
+ # Like Black, respect magic trailing commas.
60
+ skip-magic-trailing-comma = false
61
+
62
+ # Like Black, automatically detect the appropriate line ending.
63
+ line-ending = "auto"
64
+
65
+ # Enable auto-formatting of code examples in docstrings. Markdown,
66
+ # reStructuredText code/literal blocks and doctests are all supported.
67
+ #
68
+ # This is currently disabled by default, but it is planned for this
69
+ # to be opt-out in the future.
70
+ docstring-code-format = false
71
+
72
+ # Set the line length limit used when formatting code snippets in
73
+ # docstrings.
74
+ #
75
+ # This only has an effect when the `docstring-code-format` setting is
76
+ # enabled.
77
+ docstring-code-line-length = "dynamic"
78
+
@@ -0,0 +1,33 @@
1
+ language: python
2
+ python:
3
+ - "3.7"
4
+ - "3.8"
5
+ - "3.9"
6
+ - "3.10"
7
+ - "3.11"
8
+ cache: pip
9
+
10
+ addons:
11
+ apt:
12
+ packages: &common_packages
13
+ - gfortran
14
+ - libatlas-base-dev
15
+ - liblapack-dev
16
+ - libnetcdf-dev
17
+ - libnetcdff-dev
18
+ - eatmydata
19
+ - ccache
20
+ before_install:
21
+ - if [[ $TRAVIS_PYTHON_VERSION == 3.7 ]]; then pip install -U importlib_metadata; fi
22
+
23
+ install:
24
+ - pip install -r requirements.txt
25
+ - pip install sisl
26
+ - pip install -e .
27
+ script:
28
+ - pwd
29
+ - cd examples/abinit-w90/SrMnO3
30
+ - ls -lah
31
+ - sh get_J.sh
32
+ - cd TB2J_results/Multibinit
33
+ - TB2J_magnon.py --figfname magnon.png
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.11.2
3
+ Version: 0.9.12.3
4
4
  Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
5
5
  Author-email: Xu He <mailhexu@gmail.com>
6
6
  Maintainer-email: Xu He <mailhexu@gmail.com>
@@ -0,0 +1,5 @@
1
+ *.o
2
+ *.x
3
+ *.mod
4
+ exchanges.sublime-project
5
+ exchanges.sublime-workspace
@@ -0,0 +1,2 @@
1
+ TB2J_results/
2
+ *.png
@@ -31,6 +31,7 @@ class MagnonParameters:
31
31
  Q: Optional[List[float]] = None
32
32
  uz_file: Optional[str] = None
33
33
  n: Optional[List[float]] = None
34
+ spin_conf_file: Optional[str] = None
34
35
  show: bool = False
35
36
 
36
37
  @classmethod
@@ -57,6 +58,8 @@ class MagnonParameters:
57
58
  # Convert path to absolute path if uz_file is relative to it
58
59
  if self.uz_file and not Path(self.uz_file).is_absolute():
59
60
  self.uz_file = str(Path(self.path) / self.uz_file)
61
+ if self.spin_conf_file and not Path(self.spin_conf_file).is_absolute():
62
+ self.spin_conf_file = str(Path(self.path) / self.spin_conf_file)
60
63
 
61
64
 
62
65
  @dataclass
@@ -76,7 +79,7 @@ class Magnon:
76
79
  _n: np.ndarray
77
80
  pbc: tuple = (True, True, True)
78
81
 
79
- def set_reference(self, Q, uz, n):
82
+ def set_reference(self, Q, uz, n, magmoms=None):
80
83
  """
81
84
  Set reference propagation vector and quantization axis
82
85
 
@@ -92,6 +95,8 @@ class Magnon:
92
95
  self.set_propagation_vector(Q)
93
96
  self._uz = np.array(uz, dtype=float)
94
97
  self._n = np.array(n, dtype=float)
98
+ if magmoms is not None:
99
+ self.magmom = np.array(magmoms, dtype=float)
95
100
 
96
101
  def set_propagation_vector(self, Q):
97
102
  """Set propagation vector"""
@@ -653,26 +658,40 @@ def plot_magnon_bands_from_TB2J(
653
658
  )
654
659
 
655
660
  # Set reference vectors if provided
656
- if any(x is not None for x in [params.Q, params.uz_file, params.n]):
657
- Q = [0, 0, 0] if params.Q is None else params.Q
658
- n = [0, 0, 1] if params.n is None else params.n
659
-
660
- # Handle quantization axes
661
- if params.uz_file is not None:
662
- uz = np.loadtxt(params.uz_file)
663
- if uz.shape[1] != 3:
664
- raise ValueError(
665
- f"Quantization axes file should contain a natom×3 array. Got shape {uz.shape}"
666
- )
667
- if uz.shape[0] != magnon.nspin:
668
- raise ValueError(
669
- f"Number of spins in uz file ({uz.shape[0]}) does not match the system ({magnon.nspin})"
670
- )
671
- else:
672
- # Default: [0, 0, 1] for all spins
673
- uz = np.array([[0.0, 0.0, 1.0] for _ in range(magnon.nspin)])
661
+ Q = [0, 0, 0] if params.Q is None else params.Q
662
+ n = [0, 0, 1] if params.n is None else params.n
663
+
664
+ # Handle quantization axes
665
+ if params.uz_file is not None:
666
+ uz = np.loadtxt(params.uz_file)
667
+ if uz.shape[1] != 3:
668
+ raise ValueError(
669
+ f"Quantization axes file should contain a natom×3 array. Got shape {uz.shape}"
670
+ )
671
+ if uz.shape[0] != magnon.nspin:
672
+ raise ValueError(
673
+ f"Number of spins in uz file ({uz.shape[0]}) does not match the system ({magnon.nspin})"
674
+ )
675
+ else:
676
+ # Default: [0, 0, 1] for all spins
677
+ # uz = np.array([[0.0, 0.0, 1.0] for _ in range(magnon.nspin)])
678
+ uz = np.array([[0, 0, 1]], dtype=float)
679
+
680
+ print(params)
681
+ if params.spin_conf_file is not None:
682
+ magmoms = np.loadtxt(params.spin_conf_file)
683
+ if magmoms.shape[1] != 3:
684
+ raise ValueError(
685
+ f"Spin configuration file should contain a nspin×3 array. Got shape {magmoms.shape}"
686
+ )
687
+ if magmoms.shape[0] != magnon.nspin:
688
+ raise ValueError(
689
+ f"Number of spins in spin configuration file ({magmoms.shape[0]}) does not match the system ({magnon.nspin})"
690
+ )
691
+ else:
692
+ magmoms = None
674
693
 
675
- magnon.set_reference(Q, uz, n)
694
+ magnon.set_reference(Q, uz, n, magmoms)
676
695
 
677
696
  # Get band structure data
678
697
  print(f"\nCalculating bands along path {params.kpath}...")
@@ -714,10 +733,25 @@ def plot_magnon_bands_from_TB2J(
714
733
  return magnon
715
734
 
716
735
 
717
- def main():
718
- """Command line interface for plotting magnon bands from TB2J results."""
736
+ def plot_magnon_bands_cli():
719
737
  import argparse
720
-
738
+ import warnings
739
+
740
+ warnings.warn(
741
+ """
742
+ # !!!!!!!!!!!!!!!!!! WARNING: =============================
743
+ #
744
+ # This functionality is under development and should not be used in production.
745
+ # It is provided for testing and development purposes only.
746
+ # Please use with caution and report any issues to the developers.
747
+ #
748
+ # This warning will be removed in future releases.
749
+ # =====================================
750
+
751
+ """,
752
+ UserWarning,
753
+ stacklevel=2,
754
+ )
721
755
  parser = argparse.ArgumentParser(
722
756
  description="Plot magnon band structure from TB2J results"
723
757
  )
@@ -737,27 +771,32 @@ def main():
737
771
 
738
772
  # Command line arguments (used if no config file is provided)
739
773
  parser.add_argument(
774
+ "-p",
740
775
  "--path",
741
776
  default="TB2J_results",
742
777
  help="Path to TB2J results directory (default: TB2J_results)",
743
778
  )
744
779
  parser.add_argument(
780
+ "-k",
745
781
  "--kpath",
746
782
  default=None,
747
783
  help="k-path specification (default: auto-detected from type of cell)",
748
784
  )
749
785
  parser.add_argument(
786
+ "-n",
750
787
  "--npoints",
751
788
  type=int,
752
789
  default=300,
753
790
  help="Number of k-points along the path (default: 300)",
754
791
  )
755
792
  parser.add_argument(
793
+ "-o",
756
794
  "--output",
757
795
  default="magnon_bands.png",
758
796
  help="Output file name (default: magnon_bands.png)",
759
797
  )
760
798
  parser.add_argument(
799
+ "-j",
761
800
  "--Jiso",
762
801
  action="store_true",
763
802
  default=True,
@@ -770,18 +809,21 @@ def main():
770
809
  help="Exclude isotropic exchange interactions",
771
810
  )
772
811
  parser.add_argument(
812
+ "-a",
773
813
  "--Jani",
774
814
  action="store_true",
775
815
  default=False,
776
816
  help="Include anisotropic exchange interactions (default: False)",
777
817
  )
778
818
  parser.add_argument(
819
+ "-d",
779
820
  "--DMI",
780
821
  action="store_true",
781
822
  default=False,
782
823
  help="Include Dzyaloshinskii-Moriya interactions (default: False)",
783
824
  )
784
825
  parser.add_argument(
826
+ "-q",
785
827
  "--Q",
786
828
  nargs=3,
787
829
  type=float,
@@ -789,11 +831,19 @@ def main():
789
831
  help="Propagation vector [Qx, Qy, Qz] (default: [0, 0, 0])",
790
832
  )
791
833
  parser.add_argument(
834
+ "-u",
792
835
  "--uz-file",
793
836
  type=str,
794
- help="Path to file containing quantization axes for each spin (natom×3 array)",
837
+ help="Path to file containing quantization axes for each spin (nspin×3 array)",
838
+ )
839
+ parser.add_argument(
840
+ "-c",
841
+ "--spin-conf-file",
842
+ type=str,
843
+ help="Path to file containing magnetic moments for each spin (nspin×3 array)",
795
844
  )
796
845
  parser.add_argument(
846
+ "-v",
797
847
  "--n",
798
848
  nargs=3,
799
849
  type=float,
@@ -802,6 +852,7 @@ def main():
802
852
  )
803
853
 
804
854
  parser.add_argument(
855
+ "-s",
805
856
  "--show",
806
857
  action="store_true",
807
858
  default=False,
@@ -833,6 +884,7 @@ def main():
833
884
  DMI=args.DMI,
834
885
  Q=args.Q if args.Q is not None else None,
835
886
  uz_file=args.uz_file,
887
+ spin_conf_file=args.spin_conf_file,
836
888
  n=args.n if args.n is not None else None,
837
889
  show=args.show,
838
890
  )
@@ -840,10 +892,6 @@ def main():
840
892
  plot_magnon_bands_from_TB2J(params)
841
893
 
842
894
 
843
- if __name__ == "__main__":
844
- main()
845
-
846
-
847
895
  class MagnonASEWrapper:
848
896
  def __init__(self, magnon: Magnon):
849
897
  self.magnon = magnon