TB2J 0.9.9rc9__tar.gz → 0.9.9rc10__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 (221) hide show
  1. tb2j-0.9.9rc10/.github/workflows/pylint.yml.bak +23 -0
  2. tb2j-0.9.9rc10/.github/workflows/python-app.yml +44 -0
  3. tb2j-0.9.9rc10/.gitignore +131 -0
  4. tb2j-0.9.9rc10/.pre-commit-config.yaml +11 -0
  5. tb2j-0.9.9rc10/.readthedocs.yml +28 -0
  6. tb2j-0.9.9rc10/.ruff.toml +78 -0
  7. tb2j-0.9.9rc10/.travis.yml +33 -0
  8. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/PKG-INFO +2 -2
  9. tb2j-0.9.9rc10/TB2J/.gitignore +5 -0
  10. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/exchange.py +64 -79
  11. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/exchange_params.py +0 -19
  12. tb2j-0.9.9rc10/TB2J/interfaces/abacus/.gitignore +2 -0
  13. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/rotate_siestaDM.py +1 -2
  14. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J.egg-info/PKG-INFO +2 -2
  15. tb2j-0.9.9rc10/TB2J.egg-info/SOURCES.txt +216 -0
  16. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J.egg-info/requires.txt +1 -1
  17. tb2j-0.9.9rc10/buildimage.sh +51 -0
  18. tb2j-0.9.9rc10/docs/Makefile +20 -0
  19. tb2j-0.9.9rc10/docs/_static/Logo-ULG.png +0 -0
  20. tb2j-0.9.9rc10/docs/_static/logo_TB2J_horizon.png +0 -0
  21. tb2j-0.9.9rc10/docs/conf.py +67 -0
  22. tb2j-0.9.9rc10/docs/index.rst +44 -0
  23. tb2j-0.9.9rc10/docs/make.bat +35 -0
  24. tb2j-0.9.9rc10/docs/requirements.txt +3 -0
  25. tb2j-0.9.9rc10/docs/src/BFOvarT.png +0 -0
  26. tb2j-0.9.9rc10/docs/src/Contributors.rst +44 -0
  27. tb2j-0.9.9rc10/docs/src/ReleaseNotes.md +224 -0
  28. tb2j-0.9.9rc10/docs/src/SrMnO3_DOS.png +0 -0
  29. tb2j-0.9.9rc10/docs/src/abacus.md +103 -0
  30. tb2j-0.9.9rc10/docs/src/applications.rst +9 -0
  31. tb2j-0.9.9rc10/docs/src/convention.rst +18 -0
  32. tb2j-0.9.9rc10/docs/src/development.md +22 -0
  33. tb2j-0.9.9rc10/docs/src/downfold.md +28 -0
  34. tb2j-0.9.9rc10/docs/src/ecosystem.md +51 -0
  35. tb2j-0.9.9rc10/docs/src/eigen.rst +34 -0
  36. tb2j-0.9.9rc10/docs/src/extend.rst +45 -0
  37. tb2j-0.9.9rc10/docs/src/faq.rst +79 -0
  38. tb2j-0.9.9rc10/docs/src/install.rst +86 -0
  39. tb2j-0.9.9rc10/docs/src/mae.md +127 -0
  40. tb2j-0.9.9rc10/docs/src/magnon_band.assets/exchange_magnon-1593690872101.png +0 -0
  41. tb2j-0.9.9rc10/docs/src/magnon_band.assets/exchange_magnon.png +0 -0
  42. tb2j-0.9.9rc10/docs/src/magnon_band.assets/magnon_dos.png +0 -0
  43. tb2j-0.9.9rc10/docs/src/magnon_band.rst +98 -0
  44. tb2j-0.9.9rc10/docs/src/multibinit.rst +89 -0
  45. tb2j-0.9.9rc10/docs/src/openmx.rst +27 -0
  46. tb2j-0.9.9rc10/docs/src/orbital_contribution.md +80 -0
  47. tb2j-0.9.9rc10/docs/src/output.rst +52 -0
  48. tb2j-0.9.9rc10/docs/src/parameters.rst +28 -0
  49. tb2j-0.9.9rc10/docs/src/references.rst +36 -0
  50. tb2j-0.9.9rc10/docs/src/roadmap.md +8 -0
  51. tb2j-0.9.9rc10/docs/src/rotate_and_merge.rst +54 -0
  52. tb2j-0.9.9rc10/docs/src/siesta.rst +38 -0
  53. tb2j-0.9.9rc10/docs/src/spin_model_assets/canting_DMI.png +0 -0
  54. tb2j-0.9.9rc10/docs/src/spin_model_assets/tmulti5_2.png +0 -0
  55. tb2j-0.9.9rc10/docs/src/symmetry.md +42 -0
  56. tb2j-0.9.9rc10/docs/src/tutorial.rst +18 -0
  57. tb2j-0.9.9rc10/docs/src/wannier.rst +228 -0
  58. tb2j-0.9.9rc10/examples/Siesta/BccFe/Fe.1.psml +1181 -0
  59. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/EigenJq.txt +119 -0
  60. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange.xml +4126 -0
  61. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_kpth.txt +8 -0
  62. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_magnon.png +0 -0
  63. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon.py +3 -0
  64. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.json +3332 -0
  65. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.pdf +0 -0
  66. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.png +0 -0
  67. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.txt +302 -0
  68. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.files +3 -0
  69. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.in +33 -0
  70. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/plot.sh +1 -0
  71. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_dos.sh +1 -0
  72. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_from_json_file.py +73 -0
  73. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/TB2J.pickle +0 -0
  74. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.exch +1381 -0
  75. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.ucf +3 -0
  76. tb2j-0.9.9rc10/examples/Siesta/BccFe/TB2J_results/exchange.out +3097 -0
  77. tb2j-0.9.9rc10/examples/Siesta/BccFe/getJ.sh +2 -0
  78. tb2j-0.9.9rc10/examples/Siesta/BccFe/run.sh +3 -0
  79. tb2j-0.9.9rc10/examples/Siesta/BccFe/siesta.fdf +61 -0
  80. tb2j-0.9.9rc10/examples/Siesta/HcpCo/Co.1.psml +3174 -0
  81. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Multibinit/exchange.xml +7610 -0
  82. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.files +3 -0
  83. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.in +33 -0
  84. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/TB2J.pickle +0 -0
  85. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.exch +2556 -0
  86. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.ucf +4 -0
  87. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Vampire/input +42 -0
  88. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.UCF +644 -0
  89. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.mat +24 -0
  90. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/exchange.out +5708 -0
  91. tb2j-0.9.9rc10/examples/Siesta/HcpCo/TB2J_results/summary.txt +10 -0
  92. tb2j-0.9.9rc10/examples/Siesta/HcpCo/getJ.sh +1 -0
  93. tb2j-0.9.9rc10/examples/Siesta/HcpCo/run.sh +3 -0
  94. tb2j-0.9.9rc10/examples/Siesta/HcpCo/siesta.fdf +63 -0
  95. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/JvsR.pdf +0 -0
  96. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/exchange.xml +533 -0
  97. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.files +3 -0
  98. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.in +33 -0
  99. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/TB2J.pickle +0 -0
  100. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.exch +509 -0
  101. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.ucf +3 -0
  102. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/input +42 -0
  103. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.UCF +135 -0
  104. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.mat +13 -0
  105. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/assigned_basis.txt +14 -0
  106. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/exchange.out +406 -0
  107. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/TB2J_results/exchange_orb_decomposition.out +1274 -0
  108. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinit.files +8 -0
  109. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinit.in +83 -0
  110. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_down.win +113 -0
  111. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_down_centres.xyz +21 -0
  112. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_down_hr.dat +24512 -0
  113. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_up.win +113 -0
  114. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_up_centres.xyz +21 -0
  115. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/abinito_w90_up_hr.dat +24512 -0
  116. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/get_J.sh +1 -0
  117. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/psp/Mn.GGA-PBESOL-JTH.xml +16818 -0
  118. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/psp/O.GGA-PBESOL-JTH.xml +12782 -0
  119. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/psp/Sr.GGA-PBESOL-JTH.xml +12646 -0
  120. tb2j-0.9.9rc10/examples/abinit-w90/SrMnO3/run.sh +6 -0
  121. tb2j-0.9.9rc10/requirements.txt +11 -0
  122. tb2j-0.9.9rc10/scripts/abacus2J.py +146 -0
  123. tb2j-0.9.9rc10/scripts/siesta2J.py +163 -0
  124. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/wann2J.py +0 -1
  125. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/setup.py +2 -2
  126. tb2j-0.9.9rc10/upload_to_pip.sh +5 -0
  127. tb2j-0.9.9rc9/TB2J.egg-info/SOURCES.txt +0 -101
  128. tb2j-0.9.9rc9/scripts/abacus2J.py +0 -59
  129. tb2j-0.9.9rc9/scripts/siesta2J.py +0 -75
  130. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/LICENSE +0 -0
  131. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/README.md +0 -0
  132. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/Jdownfolder.py +0 -0
  133. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/Jtensor.py +0 -0
  134. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/MAE.py +0 -0
  135. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/MAEGreen.py +0 -0
  136. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/Oiju.py +0 -0
  137. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/Oiju_epc.py +0 -0
  138. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/__init__.py +0 -0
  139. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/anisotropy.py +0 -0
  140. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/basis.py +0 -0
  141. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/citation.py +0 -0
  142. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/contour.py +0 -0
  143. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/density_matrix.py +0 -0
  144. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/epc.py +0 -0
  145. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/exchangeCL2.py +0 -0
  146. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/exchange_pert.py +0 -0
  147. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/exchange_qspace.py +0 -0
  148. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/external/__init__.py +0 -0
  149. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/external/p_tqdm.py +0 -0
  150. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/gpaw_wrapper.py +0 -0
  151. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/green.py +0 -0
  152. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/greentest.py +0 -0
  153. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/__init__.py +0 -0
  154. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/__init__.py +0 -0
  155. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/abacus_api.py +0 -0
  156. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/abacus_wrapper.py +0 -0
  157. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/gen_exchange_abacus.py +0 -0
  158. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/orbital_api.py +0 -0
  159. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/stru_api.py +0 -0
  160. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/test_density_matrix.py +0 -0
  161. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/test_read_HRSR.py +0 -0
  162. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/abacus/test_read_stru.py +0 -0
  163. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/gpaw_interface.py +0 -0
  164. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/lawaf_interface.py +0 -0
  165. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/manager.py +0 -0
  166. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/siesta_interface.py +0 -0
  167. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/interfaces/wannier90_interface.py +0 -0
  168. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/__init__.py +0 -0
  169. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_exchange.py +0 -0
  170. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_multibinit.py +0 -0
  171. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_tomsasd.py +0 -0
  172. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_txt.py +0 -0
  173. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_uppasd.py +0 -0
  174. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_exchange/io_vampire.py +0 -0
  175. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/io_merge.py +0 -0
  176. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/kpoints.py +0 -0
  177. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/__init__.py +0 -0
  178. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/fermi.py +0 -0
  179. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/fibonacci_sphere.py +0 -0
  180. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/kR_convert.py +0 -0
  181. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/lowdin.py +0 -0
  182. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mathutils/rotate_spin.py +0 -0
  183. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/myTB.py +0 -0
  184. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/mycfr.py +0 -0
  185. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/orbital_magmom.py +0 -0
  186. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/orbmap.py +0 -0
  187. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/pauli.py +0 -0
  188. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/pert.py +0 -0
  189. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/plot.py +0 -0
  190. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/rotate_atoms.py +0 -0
  191. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/sisl_wrapper.py +0 -0
  192. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/__init__.py +0 -0
  193. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/base_parser.py +0 -0
  194. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/constants.py +0 -0
  195. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/hamiltonian.py +0 -0
  196. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/hamiltonian_terms.py +0 -0
  197. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/plot.py +0 -0
  198. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/qsolver.py +0 -0
  199. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/spin_api.py +0 -0
  200. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/spin_xml.py +0 -0
  201. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/spinham/supercell.py +0 -0
  202. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/symmetrize_J.py +0 -0
  203. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/tensor_rotate.py +0 -0
  204. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/thetaphi.py +0 -0
  205. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/utest.py +0 -0
  206. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/utils.py +0 -0
  207. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/versioninfo.py +0 -0
  208. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/wannier/__init__.py +0 -0
  209. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/wannier/w90_parser.py +0 -0
  210. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J/wannier/w90_tb_parser.py +0 -0
  211. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J.egg-info/dependency_links.txt +0 -0
  212. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J.egg-info/entry_points.txt +0 -0
  213. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/TB2J.egg-info/top_level.txt +0 -0
  214. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_downfold.py +0 -0
  215. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_eigen.py +0 -0
  216. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_magnon.py +0 -0
  217. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_magnon_dos.py +0 -0
  218. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_merge.py +0 -0
  219. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_rotate.py +0 -0
  220. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/scripts/TB2J_rotateDM.py +0 -0
  221. {tb2j-0.9.9rc9 → tb2j-0.9.9rc10}/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.9rc9
3
+ Version: 0.9.9rc10
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
@@ -21,7 +21,7 @@ Requires-Dist: ase>=3.19
21
21
  Requires-Dist: tqdm
22
22
  Requires-Dist: pathos
23
23
  Requires-Dist: packaging>=20.0
24
- Requires-Dist: HamiltonIO>=0.1.9
24
+ Requires-Dist: HamiltonIO>=0.1.10
25
25
  Requires-Dist: pre-commit
26
26
  Requires-Dist: sympair>0.1.0
27
27
  Requires-Dist: sisl>=0.9.0
@@ -0,0 +1,5 @@
1
+ *.o
2
+ *.x
3
+ *.mod
4
+ exchanges.sublime-project
5
+ exchanges.sublime-workspace
@@ -96,93 +96,78 @@ class Exchange(ExchangeParams):
96
96
 
97
97
  def _prepare_orb_dict(self):
98
98
  """
99
- Generate orbital and magnetic atom mappings needed for exchange calculations.
100
-
101
- Creates:
102
- - self.orb_dict: Maps atom indices to their orbital indices
103
- - self.labels: Maps atom indices to their orbital labels
104
- - self.ind_mag_atoms: List of indices of magnetic atoms
105
- - self._spin_dict: Maps atom indices to spin indices
106
- - self._atom_dict: Maps spin indices back to atom indices
107
- """
108
- self._create_orbital_mappings()
109
- self._identify_magnetic_atoms()
110
- self._validate_orbital_assignments()
111
- self._create_spin_mappings()
112
- self._prepare_orb_mmat()
99
+ generate self.ind_mag_atoms and self.orb_dict
100
+ """
101
+ # adict: dictionary of {'Fe': ['dxy', 'dyz', ...], ...}
102
+ adict = OrderedDict()
103
+ # orb_dict: {ind_atom:[ind_orb,1,2], ...}
104
+ self.orb_dict = {}
105
+ # labels: {0:{dxy, ...}}
106
+ self.labels = {}
107
+ # magnetic atoms index
108
+ self.ind_mag_atoms = []
109
+
110
+ sdict = symbol_number(self.atoms)
111
+
112
+ for i, base in enumerate(self.basis):
113
+ if i not in self.exclude_orbs:
114
+ # e.g. Fe2, dxy, _, _
115
+ if isinstance(base, str):
116
+ atom_sym, orb_sym = base.split("|")[:2]
117
+ iatom = sdict[atom_sym]
118
+ else:
119
+ try:
120
+ atom_sym, orb_sym = base[:2]
121
+ iatom = sdict[atom_sym]
122
+ except Exception:
123
+ iatom = base.iatom
124
+ atom_sym = base.iatom
125
+ orb_sym = base.sym
126
+
127
+ if atom_sym in adict:
128
+ adict[atom_sym].append(orb_sym)
129
+ else:
130
+ adict[atom_sym] = [orb_sym]
131
+ if iatom not in self.orb_dict:
132
+ self.orb_dict[iatom] = [i]
133
+ self.labels[iatom] = [orb_sym]
134
+ else:
135
+ self.orb_dict[iatom] += [i]
136
+ self.labels[iatom] += [orb_sym]
113
137
 
114
- def _create_orbital_mappings(self):
115
- """Create mappings between atoms and their orbitals."""
116
- self.orb_dict = {} # {atom_index: [orbital_indices]}
117
- self.labels = {} # {atom_index: [orbital_labels]}
118
- atom_symbols = symbol_number(self.atoms)
119
-
120
- for orb_idx, base in enumerate(self.basis):
121
- if orb_idx in self.exclude_orbs:
122
- continue
123
-
124
- # Extract atom and orbital info
125
- if isinstance(base, str):
126
- atom_sym, orb_sym = base.split("|")[:2]
127
- atom_idx = atom_symbols[atom_sym]
128
- else:
129
- try:
130
- atom_sym, orb_sym = base[:2]
131
- atom_idx = atom_symbols[atom_sym]
132
- except Exception:
133
- atom_idx = base.iatom
134
- atom_sym = base.iatom
135
- orb_sym = base.sym
136
-
137
- # Update orbital mappings
138
- if atom_idx not in self.orb_dict:
139
- self.orb_dict[atom_idx] = [orb_idx]
140
- self.labels[atom_idx] = [orb_sym]
141
- else:
142
- self.orb_dict[atom_idx].append(orb_idx)
143
- self.labels[atom_idx].append(orb_sym)
138
+ # index of magnetic atoms
139
+ symbols = self.atoms.get_chemical_symbols()
140
+ tags = self.atoms.get_tags()
141
+ for i, (sym, tag) in enumerate(zip(symbols, tags)):
142
+ if sym in self.magnetic_elements or f"{sym}{tag}" in self.magnetic_elements:
143
+ self.ind_mag_atoms.append(i)
144
144
 
145
- def _identify_magnetic_atoms(self):
146
- """Identify which atoms are magnetic based on elements/tags."""
147
- if self.index_magnetic_atoms is not None:
148
- self.ind_mag_atoms = self.index_magnetic_atoms
149
- else:
150
- self.ind_mag_atoms = []
151
- symbols = self.atoms.get_chemical_symbols()
152
- tags = self.atoms.get_tags()
153
-
154
- for atom_idx, (sym, tag) in enumerate(zip(symbols, tags)):
155
- if sym in self.magnetic_elements or f"{sym}{tag}" in self.magnetic_elements:
156
- self.ind_mag_atoms.append(atom_idx)
157
- print(f"Magnetic atoms: {self.ind_mag_atoms}")
158
-
159
- def _validate_orbital_assignments(self):
160
- """Validate that magnetic atoms have proper orbital assignments."""
161
- # Check all magnetic atoms have orbitals
162
- for atom_idx in self.ind_mag_atoms:
163
- if atom_idx not in self.orb_dict:
145
+ # sanity check to see if some magnetic atom has no orbital.
146
+ for iatom in self.ind_mag_atoms:
147
+ if iatom not in self.orb_dict:
164
148
  raise ValueError(
165
- f"Atom {atom_idx} is magnetic but has no orbitals assigned. "
166
- "Check Wannier function definitions."
149
+ f"""Cannot find any orbital for atom {iatom}, which is supposed to be magnetic. Please check the Wannier functions."""
167
150
  )
168
-
169
- # For non-collinear case, check spin-orbital pairing
170
151
  if not self._is_collinear:
171
- for atom_idx, orbitals in self.orb_dict.items():
172
- if len(orbitals) % 2 != 0:
152
+ for iatom, orb in self.orb_dict.items():
153
+ # print(f"iatom: {iatom}, orb: {orb}")
154
+ nsorb = len(self.orb_dict[iatom])
155
+ if nsorb % 2 != 0 and False:
173
156
  raise ValueError(
174
- f"Atom {atom_idx} has {len(orbitals)} spin-orbitals "
175
- "(should be even). Check Wannier function localization."
157
+ f"""The number of spin-orbitals for atom {iatom} is not even,
158
+ {nsorb} spin-orbitals are found near this atom.
159
+ which means the spin up/down does not have same number of orbitals.
160
+ This is often because the Wannier functions are wrongly defined,
161
+ or badly localized. Please check the Wannier centers in the Wannier90 output file.
162
+ """
176
163
  )
164
+ self._spin_dict = {}
165
+ self._atom_dict = {}
166
+ for ispin, iatom in enumerate(self.ind_mag_atoms):
167
+ self._spin_dict[iatom] = ispin
168
+ self._atom_dict[ispin] = iatom
177
169
 
178
- def _create_spin_mappings(self):
179
- """Create mappings between atom indices and spin indices."""
180
- self._spin_dict = {} # {atom_index: spin_index}
181
- self._atom_dict = {} # {spin_index: atom_index}
182
-
183
- for spin_idx, atom_idx in enumerate(self.ind_mag_atoms):
184
- self._spin_dict[atom_idx] = spin_idx
185
- self._atom_dict[spin_idx] = atom_idx
170
+ self._prepare_orb_mmat()
186
171
 
187
172
  def _prepare_orb_mmat(self):
188
173
  self.mmats = {}
@@ -15,7 +15,6 @@ class ExchangeParams:
15
15
  efermi: float
16
16
  basis = []
17
17
  magnetic_elements = []
18
- index_magnetic_atoms = None
19
18
  include_orbs = {}
20
19
  _kmesh = [4, 4, 4]
21
20
  emin: float = -15
@@ -56,7 +55,6 @@ class ExchangeParams:
56
55
  mae_angles=None,
57
56
  orth=False,
58
57
  ibz=False,
59
- index_magnetic_atoms=None,
60
58
  ):
61
59
  self.efermi = efermi
62
60
  self.basis = basis
@@ -81,7 +79,6 @@ class ExchangeParams:
81
79
  self.mae_angles = mae_angles
82
80
  self.orth = orth
83
81
  self.ibz = ibz
84
- self.index_magnetic_atoms = index_magnetic_atoms
85
82
 
86
83
  def set_params(self, **kwargs):
87
84
  for key, val in kwargs.items():
@@ -232,21 +229,6 @@ def add_exchange_args_to_parser(parser: argparse.ArgumentParser):
232
229
  default=False,
233
230
  )
234
231
 
235
- parser.add_argument(
236
- "--mae_angles",
237
- help="angles for computing MAE, default is 0 0 0",
238
- type=float,
239
- nargs="*",
240
- default=[0.0, 0.0, 0.0],
241
- )
242
- parser.add_argument(
243
- "--index_magnetic_atoms",
244
- help="index of magnetic atoms in the unit cell, default is None. If specified, this will be used to determine the atoms to be considered as magnetic atoms, instead of determined from magnetic elements. Note that the index starts from 1 ",
245
- type=int,
246
- nargs="*",
247
- default=None,
248
- )
249
-
250
232
  return parser
251
233
 
252
234
 
@@ -268,5 +250,4 @@ def parser_argument_to_dict(args) -> dict:
268
250
  "orb_decomposition": args.orb_decomposition,
269
251
  "output_path": args.output_path,
270
252
  "orth": args.orth,
271
- "index_magnetic_atoms": args.index_magnetic_atoms,
272
253
  }
@@ -0,0 +1,2 @@
1
+ TB2J_results/
2
+ *.png
@@ -1,7 +1,7 @@
1
1
  import sisl
2
2
 
3
3
  def rotate_siesta_DM(DM, noncollinear=False):
4
-
4
+
5
5
  angles_list = [ [0.0, 90.0, 0.0], [0.0, 90.0, 90.0] ]
6
6
  if noncollinear:
7
7
  angles_list += [[0.0, 45.0, 0.0], [0.0, 90.0, 45.0], [0.0, 45.0, 90.0]]
@@ -10,7 +10,6 @@ def rotate_siesta_DM(DM, noncollinear=False):
10
10
  yield DM.spin_rotate(angles)
11
11
 
12
12
  def read_label(fdf_fname):
13
-
14
13
  label = 'siesta'
15
14
  with open(fdf_fname, 'r') as File:
16
15
  for line in File:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.9rc9
3
+ Version: 0.9.9rc10
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
@@ -21,7 +21,7 @@ Requires-Dist: ase>=3.19
21
21
  Requires-Dist: tqdm
22
22
  Requires-Dist: pathos
23
23
  Requires-Dist: packaging>=20.0
24
- Requires-Dist: HamiltonIO>=0.1.9
24
+ Requires-Dist: HamiltonIO>=0.1.10
25
25
  Requires-Dist: pre-commit
26
26
  Requires-Dist: sympair>0.1.0
27
27
  Requires-Dist: sisl>=0.9.0