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.
- TB2J/exchange.py +83 -65
- TB2J/exchange_params.py +24 -0
- TB2J/io_exchange/__init__.py +2 -0
- TB2J/magnon/__init__.py +3 -0
- TB2J/magnon/io_exchange2.py +688 -0
- TB2J/magnon/plot.py +58 -0
- TB2J/magnon/structure.py +348 -0
- TB2J/mathutils/__init__.py +1 -0
- TB2J/mathutils/magnons.py +45 -0
- TB2J/rotate_siestaDM.py +11 -9
- tb2j-0.9.9rc17.data/scripts/TB2J_magnon2.py +77 -0
- tb2j-0.9.9rc17.data/scripts/abacus2J.py +62 -0
- tb2j-0.9.9rc17.data/scripts/siesta2J.py +78 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/wann2J.py +6 -1
- {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/METADATA +2 -1
- {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/RECORD +27 -21
- {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/WHEEL +1 -1
- tb2j-0.9.9rc14.data/scripts/abacus2J.py +0 -146
- tb2j-0.9.9rc14.data/scripts/siesta2J.py +0 -163
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_downfold.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_eigen.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_magnon.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_magnon_dos.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_merge.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_rotate.py +0 -0
- {tb2j-0.9.9rc14.data → tb2j-0.9.9rc17.data}/scripts/TB2J_rotateDM.py +0 -0
- {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/entry_points.txt +0 -0
- {tb2j-0.9.9rc14.dist-info → tb2j-0.9.9rc17.dist-info}/licenses/LICENSE +0 -0
- {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.
|
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=
|
14
|
+
TB2J/exchange.py,sha256=HSvB_keITEeaoNG661feoEcCwjkQlavQQiIi1ONsI3Y,27035
|
15
15
|
TB2J/exchangeCL2.py,sha256=P7bklMXVYX_tn9DbjEPqeTir1SeZyfPBIP1fhWUzLmY,11419
|
16
|
-
TB2J/exchange_params.py,sha256=
|
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=
|
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=
|
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/
|
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.
|
84
|
-
tb2j-0.9.
|
85
|
-
tb2j-0.9.
|
86
|
-
tb2j-0.9.
|
87
|
-
tb2j-0.9.
|
88
|
-
tb2j-0.9.
|
89
|
-
tb2j-0.9.
|
90
|
-
tb2j-0.9.
|
91
|
-
tb2j-0.9.
|
92
|
-
tb2j-0.9.
|
93
|
-
tb2j-0.9.
|
94
|
-
tb2j-0.9.
|
95
|
-
tb2j-0.9.
|
96
|
-
tb2j-0.9.
|
97
|
-
tb2j-0.9.
|
98
|
-
tb2j-0.9.
|
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,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()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|