TB2J 0.9.9rc14__py3-none-any.whl → 0.9.9rc17__py3-none-any.whl

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 (29) hide show
  1. TB2J/exchange.py +83 -65
  2. TB2J/exchange_params.py +24 -0
  3. TB2J/io_exchange/__init__.py +2 -0
  4. TB2J/magnon/__init__.py +3 -0
  5. TB2J/magnon/io_exchange2.py +688 -0
  6. TB2J/magnon/plot.py +58 -0
  7. TB2J/magnon/structure.py +348 -0
  8. TB2J/mathutils/__init__.py +1 -0
  9. TB2J/mathutils/magnons.py +45 -0
  10. TB2J/rotate_siestaDM.py +11 -9
  11. tb2j-0.9.9rc17.data/scripts/TB2J_magnon2.py +77 -0
  12. tb2j-0.9.9rc17.data/scripts/abacus2J.py +62 -0
  13. tb2j-0.9.9rc17.data/scripts/siesta2J.py +78 -0
  14. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/wann2J.py +6 -1
  15. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/METADATA +2 -1
  16. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/RECORD +27 -21
  17. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/WHEEL +1 -1
  18. tb2j-0.9.9rc14.data/scripts/abacus2J.py +0 -146
  19. tb2j-0.9.9rc14.data/scripts/siesta2J.py +0 -163
  20. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_downfold.py +0 -0
  21. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_eigen.py +0 -0
  22. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_magnon.py +0 -0
  23. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_magnon_dos.py +0 -0
  24. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_merge.py +0 -0
  25. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_rotate.py +0 -0
  26. {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_rotateDM.py +0 -0
  27. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/entry_points.txt +0 -0
  28. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/licenses/LICENSE +0 -0
  29. {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,78 @@
1
+ #!python
2
+ import argparse
3
+ import sys
4
+
5
+ from TB2J.exchange_params import add_exchange_args_to_parser
6
+ from TB2J.interfaces import gen_exchange_siesta
7
+ from TB2J.versioninfo import print_license
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
+ args = parser.parse_args()
36
+
37
+ if args.elements is None:
38
+ print("Please input the magnetic elements, e.g. --elements Fe Ni")
39
+ sys.exit()
40
+
41
+ # include_orbs = {}
42
+ # for element in args.elements:
43
+ # if "_" in element:
44
+ # elem = element.split("_")[0]
45
+ # orb = element.split("_")[1:]
46
+ # include_orbs[elem] = orb
47
+ # else:
48
+ # include_orbs[element] = None
49
+
50
+ index_magnetic_atoms = args.index_magnetic_atoms
51
+ if index_magnetic_atoms is not None:
52
+ index_magnetic_atoms = [i - 1 for i in index_magnetic_atoms]
53
+
54
+ gen_exchange_siesta(
55
+ fdf_fname=args.fdf_fname,
56
+ kmesh=args.kmesh,
57
+ # magnetic_elements=list(include_orbs.keys()),
58
+ # include_orbs=include_orbs,
59
+ magnetic_elements=args.elements,
60
+ include_orbs={},
61
+ Rcut=args.rcut,
62
+ emin=args.emin,
63
+ emax=args.emax,
64
+ nz=args.nz,
65
+ description=args.description,
66
+ output_path=args.output_path,
67
+ use_cache=args.use_cache,
68
+ nproc=args.np,
69
+ exclude_orbs=args.exclude_orbs,
70
+ orb_decomposition=args.orb_decomposition,
71
+ read_H_soc=args.split_soc,
72
+ orth=args.orth,
73
+ index_magnetic_atoms=index_magnetic_atoms,
74
+ )
75
+
76
+
77
+ if __name__ == "__main__":
78
+ run_siesta2J()
@@ -61,10 +61,14 @@ def run_wann2J():
61
61
  if args.efermi is None:
62
62
  print("Please input fermi energy using --efermi ")
63
63
  sys.exit()
64
- if args.elements is None:
64
+ if args.elements is None and args.index_magnetic_atoms is None:
65
65
  print("Please input the magnetic elements, e.g. --elements Fe Ni")
66
66
  sys.exit()
67
67
 
68
+ index_magnetic_atoms = args.index_magnetic_atoms
69
+ if index_magnetic_atoms is not None:
70
+ index_magnetic_atoms = [i - 1 for i in index_magnetic_atoms]
71
+
68
72
  gen_exchange(
69
73
  path=args.path,
70
74
  colinear=(not args.spinor),
@@ -89,6 +93,7 @@ def run_wann2J():
89
93
  # qspace=args.qspace,
90
94
  write_density_matrix=args.write_dm,
91
95
  orb_decomposition=args.orb_decomposition,
96
+ index_magnetic_atoms=index_magnetic_atoms,
92
97
  )
93
98
 
94
99
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.9rc14
3
+ Version: 0.9.9rc17
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.2.1
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
@@ -11,9 +11,9 @@ TB2J/citation.py,sha256=gcQeyJZaT1Qrtsl8Y3s4neOH3-vvgmIcCvXeV2o3vj0,2891
11
11
  TB2J/contour.py,sha256=zLHQZZ3hhgLkLFPATCraLOJyLJKLC0fba_L_5sRz23o,3246
12
12
  TB2J/density_matrix.py,sha256=D5k8Oe21OCiLVORNYbo4TZOFG0slrQSbj91kJ3TMFjs,1514
13
13
  TB2J/epc.py,sha256=zLbtqZJhDr8DnnGN6YENcXwrMb3Qxu6KB08mLy9Pw20,3474
14
- TB2J/exchange.py,sha256=1kkrrQvmoOaPgT_rKG7wgLy31rWpbFGNYXai1ysd58M,26221
14
+ TB2J/exchange.py,sha256=HSvB_keITEeaoNG661feoEcCwjkQlavQQiIi1ONsI3Y,27035
15
15
  TB2J/exchangeCL2.py,sha256=P7bklMXVYX_tn9DbjEPqeTir1SeZyfPBIP1fhWUzLmY,11419
16
- TB2J/exchange_params.py,sha256=AcGYYky27DXSF3yDZWVjksr_3rt6im6qeIzpOwvqssk,7141
16
+ TB2J/exchange_params.py,sha256=d1nFBFwut9SvxUmPRzPzRxD6y0KAP2IvGoEOQ2Jec9U,8049
17
17
  TB2J/exchange_pert.py,sha256=jmFMtQbYa_uczM4VAeS6TijkIHRFIqEzZJswzE9Wfuo,8523
18
18
  TB2J/exchange_qspace.py,sha256=ZL68qBGFUaQ9BsSPsJaaoWOr9RssPiqX34R_9I3nk_8,8436
19
19
  TB2J/gpaw_wrapper.py,sha256=aJ--9Dtyq7jOP1Hkh-Sh1nWcfXm6zKcljOCO0DNCAr0,6890
@@ -29,7 +29,7 @@ TB2J/pauli.py,sha256=ESpAhk6LG5ugzuW1YFUTqiDxcg-pQ7wNnzR2FtUnvKM,5295
29
29
  TB2J/pert.py,sha256=RaCJfewl0doht4cjAnzzGKe-uj2le4aqe0iPKFrq9fo,1192
30
30
  TB2J/plot.py,sha256=AnFIFWE2vlmj7Z6f_7-dX_O1stJN-qbuiurPj43dUCM,4104
31
31
  TB2J/rotate_atoms.py,sha256=Dwptn-wdDW4zYzjYb95yxTzuZOe9WPuLjh3d3-YcSs0,3277
32
- TB2J/rotate_siestaDM.py,sha256=eR97rspdrRaK9YTwQwUKfobI0S9UnEcbEZ2f5IgR7Tk,1070
32
+ TB2J/rotate_siestaDM.py,sha256=I4ytO8uFP8_GFyBs9-zMdiMSZS3Y3lj2dSLfNBNI2ZY,1078
33
33
  TB2J/sisl_wrapper.py,sha256=A5x1-tt8efUSPeGY5wM5m6-pJYQFXTCzQHVqD6RBa2g,14792
34
34
  TB2J/symmetrize_J.py,sha256=IypvLL0JxExq-cmqc4o0nLL8psE7OC9ijj9YMcsqJeA,4487
35
35
  TB2J/tensor_rotate.py,sha256=4-DfT_Mg5e40fbd74M5W0D5DqmUq-kVOOLDkkkI834A,8083
@@ -54,18 +54,23 @@ TB2J/interfaces/abacus/stru_api.py,sha256=Ac03ikHRsZRXqTul4IUge7D2iG_xLh4_oyYfeP
54
54
  TB2J/interfaces/abacus/test_density_matrix.py,sha256=bMWWJYtDS57SpPZ-eZXZ9Hr_UK4mv8ZHM7SzItG3IVA,774
55
55
  TB2J/interfaces/abacus/test_read_HRSR.py,sha256=W1oO_yigT50Yb5_u-KB_IfTpM7kArGkBuMSMs0H4CTs,1235
56
56
  TB2J/interfaces/abacus/test_read_stru.py,sha256=hoKPHVco8vwzC7Gao4bOPCdAPhh29x-9DTJJqRr7AYM,788
57
- TB2J/io_exchange/__init__.py,sha256=KfGHum7B8E4G_KKfillqw0lErtoyKEuFUUttHLs-mg4,32
57
+ TB2J/io_exchange/__init__.py,sha256=LqEnG67qDVKt4hCUywDEQvUIJ7jsQjmtueOW_J16NOE,54
58
58
  TB2J/io_exchange/io_exchange.py,sha256=6fefcfYAyRojkCJA5bFwAa2Hjwx6epysfyX8Snj9DWc,20102
59
59
  TB2J/io_exchange/io_multibinit.py,sha256=8PDmWxzGuv-GwJosj2ZTmiyNY_duFVWJ4ekCuSqGdd8,6739
60
60
  TB2J/io_exchange/io_tomsasd.py,sha256=NqkAC1Fl-CUnFA21eBzSy_S5F_oeQFJysw4UukQbN8o,4173
61
61
  TB2J/io_exchange/io_txt.py,sha256=BMr1eSILlKpgtjvDx7uw2VMAkEKSvGEPNxpaT_zev0I,10547
62
62
  TB2J/io_exchange/io_uppasd.py,sha256=bI4iPEgnK4TvCZNvb6x2xYXgjW7pEehCqmcizy2pqFU,3301
63
63
  TB2J/io_exchange/io_vampire.py,sha256=UllC4twf06_q2vBCnAYFzEDGvS8mSefwQXDquBuyc0M,5583
64
- TB2J/mathutils/__init__.py,sha256=tQLBfHkZqdVfVxPOahy42qMUkFYnFFFhM-uc4QsYFxI,27
64
+ TB2J/magnon/__init__.py,sha256=jdUFkOlhrpHRmKavAXVcFdZgtY7lKZVzMPFlLmmCErM,113
65
+ TB2J/magnon/io_exchange2.py,sha256=vKKQXhPSvoeKNIc0Kh0GaTFph36jSW0Z46nAAbSEcAg,22993
66
+ TB2J/magnon/plot.py,sha256=kwq9LL0FRVo-SLYNkE-ghlyjz8DZD-c4LAWg8si5GJo,1674
67
+ TB2J/magnon/structure.py,sha256=rKefzXgQlEjVvV-A7E2IogVDWwf5egZr3Wxxu6HuJU4,7685
68
+ TB2J/mathutils/__init__.py,sha256=u3QCXBUmKOtJc5PWMFS65e1WhP43UpSf48S7aJZCohc,50
65
69
  TB2J/mathutils/fermi.py,sha256=72tZ5CptGmYaBUD0xLWltuH7LBXcrMUwODyW6-WqlzI,638
66
70
  TB2J/mathutils/fibonacci_sphere.py,sha256=l0USn25ZCAWF6l4UleyWaeLthsj9TThV9iWmfi6DbaM,2344
67
71
  TB2J/mathutils/kR_convert.py,sha256=p_9XWJVNanTzTK2rI6KRjTkbSq42la6N448-zJOsMwY,2671
68
72
  TB2J/mathutils/lowdin.py,sha256=RYbm9OcnFnjcZFdC5YcNUsI9cOJmoDLsWSSCaP0GqKQ,499
73
+ TB2J/mathutils/magnons.py,sha256=o9O7OR39RK1cl46MtiUO9Kd1IZYDOR3ANe82FZ7laY8,1085
69
74
  TB2J/mathutils/rotate_spin.py,sha256=lbGzve_36FyNjanXqdxYDb102kA4_5OycRlBcm-tH-g,8360
70
75
  TB2J/spinham/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
76
  TB2J/spinham/base_parser.py,sha256=oQRHvFE_BlUtTaTZykKgvicu40oXcbICB-D1aAt-qlA,2196
@@ -80,19 +85,20 @@ TB2J/spinham/supercell.py,sha256=y17uUC6r3gQb278FhxIW4CABihfLTvKFj6flyXrCPR8,122
80
85
  TB2J/wannier/__init__.py,sha256=7ojCbM84PYv1X1Tbo4NHI-d3gWmQsZB_xiYqbfxVV1E,80
81
86
  TB2J/wannier/w90_parser.py,sha256=dbd63LuKyv2DVUzqRINGsbDzEsOxsQyE8_Ear_LQIRg,4620
82
87
  TB2J/wannier/w90_tb_parser.py,sha256=qt8pnuprmPp9iIAYwPkPbmEzk6ZPgMq2xognoQp7vwc,4610
83
- tb2j-0.9.9rc14.data/scripts/TB2J_downfold.py,sha256=i4BVqnpDdgrX_amookVWeLGefGBn-qeAutWiwuY9SfQ,2099
84
- tb2j-0.9.9rc14.data/scripts/TB2J_eigen.py,sha256=Qs9v2hnMm2Tpfoa4h53muUKty2dZjwx8948MBoQooNg,1128
85
- tb2j-0.9.9rc14.data/scripts/TB2J_magnon.py,sha256=q7UwAmorRcFNk4tfE7gl_ny05l6p7pbD9Wm_LkIpKEw,3101
86
- tb2j-0.9.9rc14.data/scripts/TB2J_magnon_dos.py,sha256=TMXQvD2dIbO5FZ4tUMmxJgCgH2O2hDAPUNfEKO4z-x4,110
87
- tb2j-0.9.9rc14.data/scripts/TB2J_merge.py,sha256=y834SF4rIRn1L1ptkhczvavQpC-8Px6DTmDOOSaq_DE,1854
88
- tb2j-0.9.9rc14.data/scripts/TB2J_rotate.py,sha256=zgiDFuYZNmzKK0rwDmTaYD2OpRlmKA_VGeBx83w2Xwc,873
89
- tb2j-0.9.9rc14.data/scripts/TB2J_rotateDM.py,sha256=kCvF7gotuqAX1VnJ06cwfVm7RrhrdtiV5v7d9P2Pn_E,567
90
- tb2j-0.9.9rc14.data/scripts/abacus2J.py,sha256=0HLXoJhAkiZ-ZM1cs26lncccxE8-TzC8JiDTba1h1uM,4163
91
- tb2j-0.9.9rc14.data/scripts/siesta2J.py,sha256=gp31LioqpPkDmMY0y_5gXIjOBPNnf080P37pRo0yjw8,4886
92
- tb2j-0.9.9rc14.data/scripts/wann2J.py,sha256=pTFDf6h72I_LN_NX5UivyCoJPgwvyAyHW175nSAJvLo,2987
93
- tb2j-0.9.9rc14.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
94
- tb2j-0.9.9rc14.dist-info/METADATA,sha256=EIyzpsZFIW8RLeCDLgJDZGnwwqmlFobdrx1kqvs9S_Y,1661
95
- tb2j-0.9.9rc14.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
96
- tb2j-0.9.9rc14.dist-info/entry_points.txt,sha256=Hdz1WC9waUzyFVmowKnbbZ6j-J4adHh_Ko6JpxGYAtE,131
97
- tb2j-0.9.9rc14.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
98
- tb2j-0.9.9rc14.dist-info/RECORD,,
88
+ tb2j-0.9.9rc17.data/scripts/TB2J_downfold.py,sha256=i4BVqnpDdgrX_amookVWeLGefGBn-qeAutWiwuY9SfQ,2099
89
+ tb2j-0.9.9rc17.data/scripts/TB2J_eigen.py,sha256=Qs9v2hnMm2Tpfoa4h53muUKty2dZjwx8948MBoQooNg,1128
90
+ tb2j-0.9.9rc17.data/scripts/TB2J_magnon.py,sha256=q7UwAmorRcFNk4tfE7gl_ny05l6p7pbD9Wm_LkIpKEw,3101
91
+ tb2j-0.9.9rc17.data/scripts/TB2J_magnon2.py,sha256=9HKNXwPlwaEnAlJXVLrbQFhWj3fGLlBAp-nMXWDTbE0,1911
92
+ tb2j-0.9.9rc17.data/scripts/TB2J_magnon_dos.py,sha256=TMXQvD2dIbO5FZ4tUMmxJgCgH2O2hDAPUNfEKO4z-x4,110
93
+ tb2j-0.9.9rc17.data/scripts/TB2J_merge.py,sha256=y834SF4rIRn1L1ptkhczvavQpC-8Px6DTmDOOSaq_DE,1854
94
+ tb2j-0.9.9rc17.data/scripts/TB2J_rotate.py,sha256=zgiDFuYZNmzKK0rwDmTaYD2OpRlmKA_VGeBx83w2Xwc,873
95
+ tb2j-0.9.9rc17.data/scripts/TB2J_rotateDM.py,sha256=kCvF7gotuqAX1VnJ06cwfVm7RrhrdtiV5v7d9P2Pn_E,567
96
+ tb2j-0.9.9rc17.data/scripts/abacus2J.py,sha256=VD1ldQP-PIMyxo3Rzzwk_06fJEbbU7oiU3aRXNHK0a0,1826
97
+ tb2j-0.9.9rc17.data/scripts/siesta2J.py,sha256=QJ6c0DbqxaqYEesxiL5R9nK9-flNLrr7hajKfCwirYc,2318
98
+ tb2j-0.9.9rc17.data/scripts/wann2J.py,sha256=OA31VHEXbQMD-JozoLUHDF6vB9Sr62d804OApSKtSnU,3240
99
+ tb2j-0.9.9rc17.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
100
+ tb2j-0.9.9rc17.dist-info/METADATA,sha256=r-lDBhH1xqc2V1ekn53vtmh6yUSfXzjEW0vJ8B7BDGA,1688
101
+ tb2j-0.9.9rc17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
102
+ tb2j-0.9.9rc17.dist-info/entry_points.txt,sha256=Hdz1WC9waUzyFVmowKnbbZ6j-J4adHh_Ko6JpxGYAtE,131
103
+ tb2j-0.9.9rc17.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
104
+ tb2j-0.9.9rc17.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,146 +0,0 @@
1
- #!python
2
- import argparse
3
- import sys
4
-
5
- from TB2J.interfaces import gen_exchange_abacus
6
- from TB2J.versioninfo import print_license
7
-
8
-
9
- def run_abacus2J():
10
- print_license()
11
- parser = argparse.ArgumentParser(
12
- description="abacus2J: Using magnetic force theorem to calculate exchange parameter J from abacus Hamiltonian in the LCAO mode"
13
- )
14
-
15
- parser.add_argument(
16
- "--path", help="the path of the abacus calculation", default="./", type=str
17
- )
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
- parser.add_argument(
27
- "--elements",
28
- help="list of elements to be considered in Heisenberg model.",
29
- # , For each element, a postfixes can be used to specify the orbitals(Only with Siesta backend), eg. Fe_3d, or Fe_3d_4s ",
30
- default=None,
31
- type=str,
32
- nargs="*",
33
- )
34
- parser.add_argument(
35
- "--rcut",
36
- help="range of R. The default is all the commesurate R to the kmesh",
37
- default=None,
38
- type=float,
39
- )
40
- parser.add_argument(
41
- "--efermi", help="Fermi energy in eV. For test only. ", default=None, type=float
42
- )
43
- parser.add_argument(
44
- "--kmesh",
45
- help="kmesh in the format of kx ky kz. Monkhorst pack. If all the numbers are odd, it is Gamma cenetered. (strongly recommended), Default: 5 5 5",
46
- type=int,
47
- nargs="*",
48
- default=[5, 5, 5],
49
- )
50
- parser.add_argument(
51
- "--emin",
52
- help="energy minimum below efermi, default -14 eV",
53
- type=float,
54
- default=-14.0,
55
- )
56
-
57
- parser.add_argument(
58
- "--use_cache",
59
- help="whether to use disk file for temporary storing wavefunctions and hamiltonian to reduce memory usage. Default: False",
60
- action="store_true",
61
- default=False,
62
- )
63
-
64
- parser.add_argument(
65
- "--nz", help="number of integration steps. Default: 50", default=50, type=int
66
- )
67
-
68
- parser.add_argument(
69
- "--cutoff",
70
- help="The minimum of J amplitude to write, (in eV). Default: 1e-7 eV",
71
- default=1e-7,
72
- type=float,
73
- )
74
-
75
- parser.add_argument(
76
- "--exclude_orbs",
77
- help="the indices of wannier functions to be excluded from magnetic site. counting start from 0. Default is none.",
78
- default=[],
79
- type=int,
80
- nargs="+",
81
- )
82
-
83
- parser.add_argument(
84
- "--nproc",
85
- "--np",
86
- help="number of cpu cores to use in parallel, default: 1",
87
- default=1,
88
- type=int,
89
- )
90
-
91
- parser.add_argument(
92
- "--description",
93
- help="add description of the calculatiion to the xml file. Essential information, like the xc functional, U values, magnetic state should be given.",
94
- type=str,
95
- default="Calculated with TB2J.",
96
- )
97
-
98
- parser.add_argument(
99
- "--orb_decomposition",
100
- default=False,
101
- action="store_true",
102
- help="whether to do orbital decomposition in the non-collinear mode. Default: False.",
103
- )
104
-
105
- parser.add_argument(
106
- "--fname",
107
- default="exchange.xml",
108
- type=str,
109
- help="exchange xml file name. default: exchange.xml",
110
- )
111
-
112
- parser.add_argument(
113
- "--output_path",
114
- help="The path of the output directory, default is TB2J_results",
115
- type=str,
116
- default="TB2J_results",
117
- )
118
-
119
- args = parser.parse_args()
120
-
121
- if args.elements is None:
122
- print("Please input the magnetic elements, e.g. --elements Fe Ni")
123
- sys.exit()
124
-
125
- # include_orbs = {}
126
-
127
- gen_exchange_abacus(
128
- path=args.path,
129
- suffix=args.suffix,
130
- kmesh=args.kmesh,
131
- magnetic_elements=args.elements,
132
- include_orbs={},
133
- Rcut=args.rcut,
134
- emin=args.emin,
135
- nz=args.nz,
136
- description=args.description,
137
- output_path=args.output_path,
138
- use_cache=args.use_cache,
139
- nproc=args.nproc,
140
- exclude_orbs=args.exclude_orbs,
141
- orb_decomposition=args.orb_decomposition,
142
- )
143
-
144
-
145
- if __name__ == "__main__":
146
- run_abacus2J()
@@ -1,163 +0,0 @@
1
- #!python
2
- import argparse
3
- import sys
4
-
5
- from TB2J.interfaces import gen_exchange_siesta
6
- from TB2J.versioninfo import print_license
7
-
8
-
9
- def run_siesta2J():
10
- print_license()
11
- parser = argparse.ArgumentParser(
12
- description="siesta2J: Using magnetic force theorem to calculate exchange parameter J from siesta Hamiltonian"
13
- )
14
- parser.add_argument(
15
- "--fdf_fname", help="path of the input fdf file", default="./", type=str
16
- )
17
- parser.add_argument(
18
- "--elements",
19
- help="list of elements to be considered in Heisenberg model. For each element, a postfixes can be used to specify the orbitals(Only with Siesta backend), eg. Fe_3d, or Fe_3d_4s ",
20
- default=None,
21
- type=str,
22
- nargs="*",
23
- )
24
- parser.add_argument(
25
- "--rcut",
26
- help="range of R. The default is all the commesurate R to the kmesh",
27
- default=None,
28
- type=float,
29
- )
30
- parser.add_argument(
31
- "--efermi", help="Fermi energy in eV. For test only. ", default=None, type=float
32
- )
33
- parser.add_argument(
34
- "--kmesh",
35
- help="kmesh in the format of kx ky kz. Monkhorst pack. If all the numbers are odd, it is Gamma cenetered. (strongly recommended), Default: 5 5 5",
36
- type=int,
37
- nargs="*",
38
- default=[5, 5, 5],
39
- )
40
- parser.add_argument(
41
- "--emin",
42
- help="energy minimum below efermi, default -14 eV",
43
- type=float,
44
- default=-14.0,
45
- )
46
- parser.add_argument(
47
- "--emax",
48
- help="energy maximum above efermi. Default 0.0 eV",
49
- type=float,
50
- default=0.05,
51
- )
52
- parser.add_argument(
53
- "--use_cache",
54
- help="whether to use disk file for temporary storing wavefunctions and hamiltonian to reduce memory usage. Default: False",
55
- action="store_true",
56
- default=False,
57
- )
58
- parser.add_argument(
59
- "--nz", help="number of integration steps. Default: 50", default=50, type=int
60
- )
61
- parser.add_argument(
62
- "--cutoff",
63
- help="The minimum of J amplitude to write, (in eV). Default: 1e-5 eV",
64
- default=1e-5,
65
- type=float,
66
- )
67
-
68
- parser.add_argument(
69
- "--exclude_orbs",
70
- help="the indices of wannier functions to be excluded from magnetic site. counting start from 0. Default is none.",
71
- default=[],
72
- type=int,
73
- nargs="+",
74
- )
75
-
76
- parser.add_argument(
77
- "--np",
78
- help="number of cpu cores to use in parallel, default: 1",
79
- default=1,
80
- type=int,
81
- )
82
-
83
- parser.add_argument(
84
- "--description",
85
- help="add description of the calculatiion to the xml file. Essential information, like the xc functional, U values, magnetic state should be given.",
86
- type=str,
87
- default="Calculated with TB2J.",
88
- )
89
-
90
- parser.add_argument(
91
- "--orb_decomposition",
92
- default=False,
93
- action="store_true",
94
- help="whether to do orbital decomposition in the non-collinear mode. Default: False.",
95
- )
96
-
97
- parser.add_argument(
98
- "--fname",
99
- default="exchange.xml",
100
- type=str,
101
- help="exchange xml file name. default: exchange.xml",
102
- )
103
-
104
- parser.add_argument(
105
- "--output_path",
106
- help="The path of the output directory, default is TB2J_results",
107
- type=str,
108
- default="TB2J_results",
109
- )
110
-
111
- parser.add_argument(
112
- "--split_soc",
113
- help="whether the SOC part of the Hamiltonian can be read from the output of siesta. Default: False",
114
- action="store_true",
115
- default=False,
116
- )
117
-
118
- parser.add_argument(
119
- "--orth",
120
- help="whether to use orthogonalization before the diagonization of the electron Hamiltonian. Default: False",
121
- action="store_true",
122
- default=False,
123
- )
124
-
125
- args = parser.parse_args()
126
-
127
- if args.elements is None:
128
- print("Please input the magnetic elements, e.g. --elements Fe Ni")
129
- sys.exit()
130
-
131
- # include_orbs = {}
132
- # for element in args.elements:
133
- # if "_" in element:
134
- # elem = element.split("_")[0]
135
- # orb = element.split("_")[1:]
136
- # include_orbs[elem] = orb
137
- # else:
138
- # include_orbs[element] = None
139
-
140
- gen_exchange_siesta(
141
- fdf_fname=args.fdf_fname,
142
- kmesh=args.kmesh,
143
- # magnetic_elements=list(include_orbs.keys()),
144
- # include_orbs=include_orbs,
145
- magnetic_elements=args.elements,
146
- include_orbs={},
147
- Rcut=args.rcut,
148
- emin=args.emin,
149
- emax=args.emax,
150
- nz=args.nz,
151
- description=args.description,
152
- output_path=args.output_path,
153
- use_cache=args.use_cache,
154
- nproc=args.np,
155
- exclude_orbs=args.exclude_orbs,
156
- orb_decomposition=args.orb_decomposition,
157
- read_H_soc=args.split_soc,
158
- orth=args.orth,
159
- )
160
-
161
-
162
- if __name__ == "__main__":
163
- run_siesta2J()