TB2J 0.9.9rc8__tar.gz → 0.9.9rc9__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 (219) hide show
  1. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/PKG-INFO +2 -1
  2. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/exchange.py +79 -64
  3. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/exchange_params.py +19 -0
  4. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J.egg-info/PKG-INFO +2 -1
  5. tb2j-0.9.9rc9/TB2J.egg-info/SOURCES.txt +101 -0
  6. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J.egg-info/requires.txt +1 -0
  7. tb2j-0.9.9rc9/scripts/abacus2J.py +59 -0
  8. tb2j-0.9.9rc9/scripts/siesta2J.py +75 -0
  9. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/wann2J.py +1 -0
  10. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/setup.py +2 -1
  11. tb2j-0.9.9rc8/.github/workflows/pylint.yml.bak +0 -23
  12. tb2j-0.9.9rc8/.github/workflows/python-app.yml +0 -44
  13. tb2j-0.9.9rc8/.gitignore +0 -131
  14. tb2j-0.9.9rc8/.pre-commit-config.yaml +0 -11
  15. tb2j-0.9.9rc8/.readthedocs.yml +0 -28
  16. tb2j-0.9.9rc8/.ruff.toml +0 -78
  17. tb2j-0.9.9rc8/.travis.yml +0 -33
  18. tb2j-0.9.9rc8/TB2J/.gitignore +0 -5
  19. tb2j-0.9.9rc8/TB2J/interfaces/abacus/.gitignore +0 -2
  20. tb2j-0.9.9rc8/TB2J.egg-info/SOURCES.txt +0 -214
  21. tb2j-0.9.9rc8/buildimage.sh +0 -51
  22. tb2j-0.9.9rc8/docs/Makefile +0 -20
  23. tb2j-0.9.9rc8/docs/conf.py +0 -61
  24. tb2j-0.9.9rc8/docs/index.rst +0 -44
  25. tb2j-0.9.9rc8/docs/make.bat +0 -35
  26. tb2j-0.9.9rc8/docs/requirements.txt +0 -3
  27. tb2j-0.9.9rc8/docs/src/BFOvarT.png +0 -0
  28. tb2j-0.9.9rc8/docs/src/Contributors.rst +0 -44
  29. tb2j-0.9.9rc8/docs/src/ReleaseNotes.md +0 -224
  30. tb2j-0.9.9rc8/docs/src/SrMnO3_DOS.png +0 -0
  31. tb2j-0.9.9rc8/docs/src/abacus.md +0 -103
  32. tb2j-0.9.9rc8/docs/src/applications.rst +0 -9
  33. tb2j-0.9.9rc8/docs/src/convention.rst +0 -18
  34. tb2j-0.9.9rc8/docs/src/development.md +0 -22
  35. tb2j-0.9.9rc8/docs/src/downfold.md +0 -28
  36. tb2j-0.9.9rc8/docs/src/ecosystem.md +0 -51
  37. tb2j-0.9.9rc8/docs/src/eigen.rst +0 -34
  38. tb2j-0.9.9rc8/docs/src/extend.rst +0 -45
  39. tb2j-0.9.9rc8/docs/src/faq.rst +0 -79
  40. tb2j-0.9.9rc8/docs/src/install.rst +0 -86
  41. tb2j-0.9.9rc8/docs/src/mae.md +0 -127
  42. tb2j-0.9.9rc8/docs/src/magnon_band.assets/exchange_magnon-1593690872101.png +0 -0
  43. tb2j-0.9.9rc8/docs/src/magnon_band.assets/exchange_magnon.png +0 -0
  44. tb2j-0.9.9rc8/docs/src/magnon_band.assets/magnon_dos.png +0 -0
  45. tb2j-0.9.9rc8/docs/src/magnon_band.rst +0 -98
  46. tb2j-0.9.9rc8/docs/src/multibinit.rst +0 -89
  47. tb2j-0.9.9rc8/docs/src/openmx.rst +0 -27
  48. tb2j-0.9.9rc8/docs/src/orbital_contribution.md +0 -80
  49. tb2j-0.9.9rc8/docs/src/output.rst +0 -52
  50. tb2j-0.9.9rc8/docs/src/parameters.rst +0 -28
  51. tb2j-0.9.9rc8/docs/src/references.rst +0 -36
  52. tb2j-0.9.9rc8/docs/src/roadmap.md +0 -8
  53. tb2j-0.9.9rc8/docs/src/rotate_and_merge.rst +0 -54
  54. tb2j-0.9.9rc8/docs/src/siesta.rst +0 -38
  55. tb2j-0.9.9rc8/docs/src/spin_model_assets/canting_DMI.png +0 -0
  56. tb2j-0.9.9rc8/docs/src/spin_model_assets/tmulti5_2.png +0 -0
  57. tb2j-0.9.9rc8/docs/src/symmetry.md +0 -42
  58. tb2j-0.9.9rc8/docs/src/tutorial.rst +0 -18
  59. tb2j-0.9.9rc8/docs/src/wannier.rst +0 -228
  60. tb2j-0.9.9rc8/examples/Siesta/BccFe/Fe.1.psml +0 -1181
  61. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/EigenJq.txt +0 -119
  62. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange.xml +0 -4126
  63. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_kpth.txt +0 -8
  64. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/exchange_magnon.png +0 -0
  65. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon.py +0 -3
  66. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.json +0 -3332
  67. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_band.pdf +0 -0
  68. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.png +0 -0
  69. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/magnon_dos.txt +0 -302
  70. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.files +0 -3
  71. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/mb.in +0 -33
  72. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/plot.sh +0 -1
  73. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_dos.sh +0 -1
  74. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/Multibinit/plot_magnon_from_json_file.py +0 -73
  75. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/TB2J.pickle +0 -0
  76. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.exch +0 -1381
  77. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/TomASD/exchange.ucf +0 -3
  78. tb2j-0.9.9rc8/examples/Siesta/BccFe/TB2J_results/exchange.out +0 -3097
  79. tb2j-0.9.9rc8/examples/Siesta/BccFe/getJ.sh +0 -2
  80. tb2j-0.9.9rc8/examples/Siesta/BccFe/run.sh +0 -3
  81. tb2j-0.9.9rc8/examples/Siesta/BccFe/siesta.fdf +0 -61
  82. tb2j-0.9.9rc8/examples/Siesta/HcpCo/Co.1.psml +0 -3174
  83. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Multibinit/exchange.xml +0 -7610
  84. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.files +0 -3
  85. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Multibinit/mb.in +0 -33
  86. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/TB2J.pickle +0 -0
  87. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.exch +0 -2556
  88. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/TomASD/exchange.ucf +0 -4
  89. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Vampire/input +0 -42
  90. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.UCF +0 -644
  91. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/Vampire/vampire.mat +0 -24
  92. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/exchange.out +0 -5708
  93. tb2j-0.9.9rc8/examples/Siesta/HcpCo/TB2J_results/summary.txt +0 -10
  94. tb2j-0.9.9rc8/examples/Siesta/HcpCo/getJ.sh +0 -1
  95. tb2j-0.9.9rc8/examples/Siesta/HcpCo/run.sh +0 -3
  96. tb2j-0.9.9rc8/examples/Siesta/HcpCo/siesta.fdf +0 -63
  97. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/JvsR.pdf +0 -0
  98. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/exchange.xml +0 -533
  99. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.files +0 -3
  100. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Multibinit/mb.in +0 -33
  101. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/TB2J.pickle +0 -0
  102. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.exch +0 -509
  103. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/TomASD/exchange.ucf +0 -3
  104. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/input +0 -42
  105. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.UCF +0 -135
  106. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/Vampire/vampire.mat +0 -13
  107. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/assigned_basis.txt +0 -14
  108. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/exchange.out +0 -406
  109. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/TB2J_results/exchange_orb_decomposition.out +0 -1274
  110. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinit.files +0 -8
  111. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinit.in +0 -83
  112. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_down.win +0 -113
  113. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_down_centres.xyz +0 -21
  114. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_down_hr.dat +0 -24512
  115. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_up.win +0 -113
  116. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_up_centres.xyz +0 -21
  117. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/abinito_w90_up_hr.dat +0 -24512
  118. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/get_J.sh +0 -1
  119. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/psp/Mn.GGA-PBESOL-JTH.xml +0 -16818
  120. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/psp/O.GGA-PBESOL-JTH.xml +0 -12782
  121. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/psp/Sr.GGA-PBESOL-JTH.xml +0 -12646
  122. tb2j-0.9.9rc8/examples/abinit-w90/SrMnO3/run.sh +0 -6
  123. tb2j-0.9.9rc8/requirements.txt +0 -10
  124. tb2j-0.9.9rc8/scripts/abacus2J.py +0 -146
  125. tb2j-0.9.9rc8/scripts/siesta2J.py +0 -163
  126. tb2j-0.9.9rc8/upload_to_pip.sh +0 -5
  127. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/LICENSE +0 -0
  128. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/README.md +0 -0
  129. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/Jdownfolder.py +0 -0
  130. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/Jtensor.py +0 -0
  131. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/MAE.py +0 -0
  132. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/MAEGreen.py +0 -0
  133. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/Oiju.py +0 -0
  134. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/Oiju_epc.py +0 -0
  135. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/__init__.py +0 -0
  136. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/anisotropy.py +0 -0
  137. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/basis.py +0 -0
  138. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/citation.py +0 -0
  139. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/contour.py +0 -0
  140. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/density_matrix.py +0 -0
  141. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/epc.py +0 -0
  142. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/exchangeCL2.py +0 -0
  143. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/exchange_pert.py +0 -0
  144. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/exchange_qspace.py +0 -0
  145. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/external/__init__.py +0 -0
  146. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/external/p_tqdm.py +0 -0
  147. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/gpaw_wrapper.py +0 -0
  148. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/green.py +0 -0
  149. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/greentest.py +0 -0
  150. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/__init__.py +0 -0
  151. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/__init__.py +0 -0
  152. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/abacus_api.py +0 -0
  153. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/abacus_wrapper.py +0 -0
  154. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/gen_exchange_abacus.py +0 -0
  155. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/orbital_api.py +0 -0
  156. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/stru_api.py +0 -0
  157. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/test_density_matrix.py +0 -0
  158. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/test_read_HRSR.py +0 -0
  159. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/abacus/test_read_stru.py +0 -0
  160. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/gpaw_interface.py +0 -0
  161. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/lawaf_interface.py +0 -0
  162. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/manager.py +0 -0
  163. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/siesta_interface.py +0 -0
  164. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/interfaces/wannier90_interface.py +0 -0
  165. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/__init__.py +0 -0
  166. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_exchange.py +0 -0
  167. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_multibinit.py +0 -0
  168. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_tomsasd.py +0 -0
  169. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_txt.py +0 -0
  170. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_uppasd.py +0 -0
  171. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_exchange/io_vampire.py +0 -0
  172. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/io_merge.py +0 -0
  173. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/kpoints.py +0 -0
  174. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/__init__.py +0 -0
  175. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/fermi.py +0 -0
  176. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/fibonacci_sphere.py +0 -0
  177. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/kR_convert.py +0 -0
  178. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/lowdin.py +0 -0
  179. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mathutils/rotate_spin.py +0 -0
  180. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/myTB.py +0 -0
  181. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/mycfr.py +0 -0
  182. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/orbital_magmom.py +0 -0
  183. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/orbmap.py +0 -0
  184. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/pauli.py +0 -0
  185. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/pert.py +0 -0
  186. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/plot.py +0 -0
  187. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/rotate_atoms.py +0 -0
  188. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/rotate_siestaDM.py +0 -0
  189. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/sisl_wrapper.py +0 -0
  190. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/__init__.py +0 -0
  191. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/base_parser.py +0 -0
  192. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/constants.py +0 -0
  193. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/hamiltonian.py +0 -0
  194. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/hamiltonian_terms.py +0 -0
  195. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/plot.py +0 -0
  196. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/qsolver.py +0 -0
  197. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/spin_api.py +0 -0
  198. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/spin_xml.py +0 -0
  199. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/spinham/supercell.py +0 -0
  200. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/symmetrize_J.py +0 -0
  201. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/tensor_rotate.py +0 -0
  202. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/thetaphi.py +0 -0
  203. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/utest.py +0 -0
  204. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/utils.py +0 -0
  205. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/versioninfo.py +0 -0
  206. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/wannier/__init__.py +0 -0
  207. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/wannier/w90_parser.py +0 -0
  208. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J/wannier/w90_tb_parser.py +0 -0
  209. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J.egg-info/dependency_links.txt +0 -0
  210. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J.egg-info/entry_points.txt +0 -0
  211. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/TB2J.egg-info/top_level.txt +0 -0
  212. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_downfold.py +0 -0
  213. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_eigen.py +0 -0
  214. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_magnon.py +0 -0
  215. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_magnon_dos.py +0 -0
  216. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_merge.py +0 -0
  217. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_rotate.py +0 -0
  218. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/scripts/TB2J_rotateDM.py +0 -0
  219. {tb2j-0.9.9rc8 → tb2j-0.9.9rc9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.9rc8
3
+ Version: 0.9.9rc9
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
@@ -24,6 +24,7 @@ Requires-Dist: packaging>=20.0
24
24
  Requires-Dist: HamiltonIO>=0.1.9
25
25
  Requires-Dist: pre-commit
26
26
  Requires-Dist: sympair>0.1.0
27
+ Requires-Dist: sisl>=0.9.0
27
28
  Dynamic: author
28
29
  Dynamic: author-email
29
30
  Dynamic: classifier
@@ -96,78 +96,93 @@ class Exchange(ExchangeParams):
96
96
 
97
97
  def _prepare_orb_dict(self):
98
98
  """
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]
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()
137
113
 
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)
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)
144
144
 
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:
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:
148
164
  raise ValueError(
149
- f"""Cannot find any orbital for atom {iatom}, which is supposed to be magnetic. Please check the Wannier functions."""
165
+ f"Atom {atom_idx} is magnetic but has no orbitals assigned. "
166
+ "Check Wannier function definitions."
150
167
  )
168
+
169
+ # For non-collinear case, check spin-orbital pairing
151
170
  if not self._is_collinear:
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:
171
+ for atom_idx, orbitals in self.orb_dict.items():
172
+ if len(orbitals) % 2 != 0:
156
173
  raise ValueError(
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
- """
174
+ f"Atom {atom_idx} has {len(orbitals)} spin-orbitals "
175
+ "(should be even). Check Wannier function localization."
163
176
  )
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
169
177
 
170
- self._prepare_orb_mmat()
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
171
186
 
172
187
  def _prepare_orb_mmat(self):
173
188
  self.mmats = {}
@@ -15,6 +15,7 @@ class ExchangeParams:
15
15
  efermi: float
16
16
  basis = []
17
17
  magnetic_elements = []
18
+ index_magnetic_atoms = None
18
19
  include_orbs = {}
19
20
  _kmesh = [4, 4, 4]
20
21
  emin: float = -15
@@ -55,6 +56,7 @@ class ExchangeParams:
55
56
  mae_angles=None,
56
57
  orth=False,
57
58
  ibz=False,
59
+ index_magnetic_atoms=None,
58
60
  ):
59
61
  self.efermi = efermi
60
62
  self.basis = basis
@@ -79,6 +81,7 @@ class ExchangeParams:
79
81
  self.mae_angles = mae_angles
80
82
  self.orth = orth
81
83
  self.ibz = ibz
84
+ self.index_magnetic_atoms = index_magnetic_atoms
82
85
 
83
86
  def set_params(self, **kwargs):
84
87
  for key, val in kwargs.items():
@@ -229,6 +232,21 @@ def add_exchange_args_to_parser(parser: argparse.ArgumentParser):
229
232
  default=False,
230
233
  )
231
234
 
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
+
232
250
  return parser
233
251
 
234
252
 
@@ -250,4 +268,5 @@ def parser_argument_to_dict(args) -> dict:
250
268
  "orb_decomposition": args.orb_decomposition,
251
269
  "output_path": args.output_path,
252
270
  "orth": args.orth,
271
+ "index_magnetic_atoms": args.index_magnetic_atoms,
253
272
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.9rc8
3
+ Version: 0.9.9rc9
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
@@ -24,6 +24,7 @@ Requires-Dist: packaging>=20.0
24
24
  Requires-Dist: HamiltonIO>=0.1.9
25
25
  Requires-Dist: pre-commit
26
26
  Requires-Dist: sympair>0.1.0
27
+ Requires-Dist: sisl>=0.9.0
27
28
  Dynamic: author
28
29
  Dynamic: author-email
29
30
  Dynamic: classifier
@@ -0,0 +1,101 @@
1
+ LICENSE
2
+ README.md
3
+ setup.py
4
+ TB2J/Jdownfolder.py
5
+ TB2J/Jtensor.py
6
+ TB2J/MAE.py
7
+ TB2J/MAEGreen.py
8
+ TB2J/Oiju.py
9
+ TB2J/Oiju_epc.py
10
+ TB2J/__init__.py
11
+ TB2J/anisotropy.py
12
+ TB2J/basis.py
13
+ TB2J/citation.py
14
+ TB2J/contour.py
15
+ TB2J/density_matrix.py
16
+ TB2J/epc.py
17
+ TB2J/exchange.py
18
+ TB2J/exchangeCL2.py
19
+ TB2J/exchange_params.py
20
+ TB2J/exchange_pert.py
21
+ TB2J/exchange_qspace.py
22
+ TB2J/gpaw_wrapper.py
23
+ TB2J/green.py
24
+ TB2J/greentest.py
25
+ TB2J/io_merge.py
26
+ TB2J/kpoints.py
27
+ TB2J/myTB.py
28
+ TB2J/mycfr.py
29
+ TB2J/orbital_magmom.py
30
+ TB2J/orbmap.py
31
+ TB2J/pauli.py
32
+ TB2J/pert.py
33
+ TB2J/plot.py
34
+ TB2J/rotate_atoms.py
35
+ TB2J/rotate_siestaDM.py
36
+ TB2J/sisl_wrapper.py
37
+ TB2J/symmetrize_J.py
38
+ TB2J/tensor_rotate.py
39
+ TB2J/thetaphi.py
40
+ TB2J/utest.py
41
+ TB2J/utils.py
42
+ TB2J/versioninfo.py
43
+ TB2J.egg-info/PKG-INFO
44
+ TB2J.egg-info/SOURCES.txt
45
+ TB2J.egg-info/dependency_links.txt
46
+ TB2J.egg-info/entry_points.txt
47
+ TB2J.egg-info/requires.txt
48
+ TB2J.egg-info/top_level.txt
49
+ TB2J/external/__init__.py
50
+ TB2J/external/p_tqdm.py
51
+ TB2J/interfaces/__init__.py
52
+ TB2J/interfaces/gpaw_interface.py
53
+ TB2J/interfaces/lawaf_interface.py
54
+ TB2J/interfaces/manager.py
55
+ TB2J/interfaces/siesta_interface.py
56
+ TB2J/interfaces/wannier90_interface.py
57
+ TB2J/interfaces/abacus/__init__.py
58
+ TB2J/interfaces/abacus/abacus_api.py
59
+ TB2J/interfaces/abacus/abacus_wrapper.py
60
+ TB2J/interfaces/abacus/gen_exchange_abacus.py
61
+ TB2J/interfaces/abacus/orbital_api.py
62
+ TB2J/interfaces/abacus/stru_api.py
63
+ TB2J/interfaces/abacus/test_density_matrix.py
64
+ TB2J/interfaces/abacus/test_read_HRSR.py
65
+ TB2J/interfaces/abacus/test_read_stru.py
66
+ TB2J/io_exchange/__init__.py
67
+ TB2J/io_exchange/io_exchange.py
68
+ TB2J/io_exchange/io_multibinit.py
69
+ TB2J/io_exchange/io_tomsasd.py
70
+ TB2J/io_exchange/io_txt.py
71
+ TB2J/io_exchange/io_uppasd.py
72
+ TB2J/io_exchange/io_vampire.py
73
+ TB2J/mathutils/__init__.py
74
+ TB2J/mathutils/fermi.py
75
+ TB2J/mathutils/fibonacci_sphere.py
76
+ TB2J/mathutils/kR_convert.py
77
+ TB2J/mathutils/lowdin.py
78
+ TB2J/mathutils/rotate_spin.py
79
+ TB2J/spinham/__init__.py
80
+ TB2J/spinham/base_parser.py
81
+ TB2J/spinham/constants.py
82
+ TB2J/spinham/hamiltonian.py
83
+ TB2J/spinham/hamiltonian_terms.py
84
+ TB2J/spinham/plot.py
85
+ TB2J/spinham/qsolver.py
86
+ TB2J/spinham/spin_api.py
87
+ TB2J/spinham/spin_xml.py
88
+ TB2J/spinham/supercell.py
89
+ TB2J/wannier/__init__.py
90
+ TB2J/wannier/w90_parser.py
91
+ TB2J/wannier/w90_tb_parser.py
92
+ scripts/TB2J_downfold.py
93
+ scripts/TB2J_eigen.py
94
+ scripts/TB2J_magnon.py
95
+ scripts/TB2J_magnon_dos.py
96
+ scripts/TB2J_merge.py
97
+ scripts/TB2J_rotate.py
98
+ scripts/TB2J_rotateDM.py
99
+ scripts/abacus2J.py
100
+ scripts/siesta2J.py
101
+ scripts/wann2J.py
@@ -8,3 +8,4 @@ packaging>=20.0
8
8
  HamiltonIO>=0.1.9
9
9
  pre-commit
10
10
  sympair>0.1.0
11
+ sisl>=0.9.0
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ import sys
4
+
5
+ from TB2J.interfaces import gen_exchange_abacus
6
+ from TB2J.versioninfo import print_license
7
+ from TB2J.exchange_params import add_exchange_args_to_parser
8
+
9
+
10
+ def run_abacus2J():
11
+ print_license()
12
+ parser = argparse.ArgumentParser(
13
+ description="abacus2J: Using magnetic force theorem to calculate exchange parameter J from abacus Hamiltonian in the LCAO mode"
14
+ )
15
+ # Add ABACUS specific arguments
16
+ parser.add_argument(
17
+ "--path", help="the path of the abacus calculation", default="./", type=str
18
+ )
19
+ parser.add_argument(
20
+ "--suffix",
21
+ help="the label of the abacus calculation. There should be an output directory called OUT.suffix",
22
+ default="abacus",
23
+ type=str,
24
+ )
25
+
26
+ # Add common exchange arguments
27
+ parser = add_exchange_args_to_parser(parser)
28
+
29
+
30
+ args = parser.parse_args()
31
+
32
+ if args.elements is None:
33
+ print("Please input the magnetic elements, e.g. --elements Fe Ni")
34
+ sys.exit()
35
+
36
+ # include_orbs = {}
37
+
38
+ gen_exchange_abacus(
39
+ path=args.path,
40
+ suffix=args.suffix,
41
+ kmesh=args.kmesh,
42
+ magnetic_elements=args.elements,
43
+ include_orbs={},
44
+ Rcut=args.rcut,
45
+ emin=args.emin,
46
+ nz=args.nz,
47
+ description=args.description,
48
+ output_path=args.output_path,
49
+ use_cache=args.use_cache,
50
+ nproc=args.nproc,
51
+ exclude_orbs=args.exclude_orbs,
52
+ orb_decomposition=args.orb_decomposition,
53
+ index_magnetic_atoms=args.index_magnetic_atoms,
54
+ cutoff=args.cutoff,
55
+ )
56
+
57
+
58
+ if __name__ == "__main__":
59
+ run_abacus2J()
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ import sys
4
+
5
+ from TB2J.interfaces import gen_exchange_siesta
6
+ from TB2J.versioninfo import print_license
7
+ from TB2J.exchange_params import add_exchange_args_to_parser
8
+
9
+
10
+ def run_siesta2J():
11
+ print_license()
12
+ parser = argparse.ArgumentParser(
13
+ description="siesta2J: Using magnetic force theorem to calculate exchange parameter J from siesta Hamiltonian"
14
+ )
15
+ # Add siesta specific arguments
16
+ parser.add_argument(
17
+ "--fdf_fname", help="path of the input fdf file", default="./", type=str
18
+ )
19
+ parser.add_argument(
20
+ "--fname",
21
+ default="exchange.xml",
22
+ type=str,
23
+ help="exchange xml file name. default: exchange.xml",
24
+ )
25
+ parser.add_argument(
26
+ "--split_soc",
27
+ help="whether the SOC part of the Hamiltonian can be read from the output of siesta. Default: False",
28
+ action="store_true",
29
+ default=False,
30
+ )
31
+
32
+ # Add common exchange arguments
33
+ parser = add_exchange_args_to_parser(parser)
34
+
35
+
36
+ args = parser.parse_args()
37
+
38
+ if args.elements is None:
39
+ print("Please input the magnetic elements, e.g. --elements Fe Ni")
40
+ sys.exit()
41
+
42
+ # include_orbs = {}
43
+ # for element in args.elements:
44
+ # if "_" in element:
45
+ # elem = element.split("_")[0]
46
+ # orb = element.split("_")[1:]
47
+ # include_orbs[elem] = orb
48
+ # else:
49
+ # include_orbs[element] = None
50
+
51
+ gen_exchange_siesta(
52
+ fdf_fname=args.fdf_fname,
53
+ kmesh=args.kmesh,
54
+ # magnetic_elements=list(include_orbs.keys()),
55
+ # include_orbs=include_orbs,
56
+ magnetic_elements=args.elements,
57
+ include_orbs={},
58
+ Rcut=args.rcut,
59
+ emin=args.emin,
60
+ emax=args.emax,
61
+ nz=args.nz,
62
+ description=args.description,
63
+ output_path=args.output_path,
64
+ use_cache=args.use_cache,
65
+ nproc=args.np,
66
+ exclude_orbs=args.exclude_orbs,
67
+ orb_decomposition=args.orb_decomposition,
68
+ read_H_soc=args.split_soc,
69
+ orth=args.orth,
70
+ index_magnetic_atoms=args.index_magnetic_atoms,
71
+ )
72
+
73
+
74
+ if __name__ == "__main__":
75
+ run_siesta2J()
@@ -89,6 +89,7 @@ def run_wann2J():
89
89
  # qspace=args.qspace,
90
90
  write_density_matrix=args.write_dm,
91
91
  orb_decomposition=args.orb_decomposition,
92
+ index_magnetic_atoms=args.index_magnetic_atoms,
92
93
  )
93
94
 
94
95
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  from setuptools import find_packages, setup
3
3
 
4
- __version__ = "0.9.9_rc8"
4
+ __version__ = "0.9.9rc9"
5
5
 
6
6
  long_description = """TB2J is a Python package aimed to compute automatically the magnetic interactions (superexchange and Dzyaloshinskii-Moriya) between atoms of magnetic crystals from DFT Hamiltonian based on Wannier functions or Linear combination of atomic orbitals. It uses the Green's function method and take the local rigid spin rotation as a perturbation. The package can take the output from Wannier90, which is interfaced with many density functional theory codes or from codes based on localised orbitals. A minimal user input is needed, which allows for an easily integration into a high-throughput workflows. """
7
7
 
@@ -43,6 +43,7 @@ setup(
43
43
  "HamiltonIO>=0.1.9",
44
44
  "pre-commit",
45
45
  "sympair>0.1.0",
46
+ "sisl>=0.9.0",
46
47
  ],
47
48
  classifiers=[
48
49
  "Development Status :: 3 - Alpha",
@@ -1,23 +0,0 @@
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')
@@ -1,44 +0,0 @@
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