TB2J 0.9.10.4__py3-none-any.whl → 0.9.11.1__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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.o
2
+ *.x
3
+ *.mod
4
+ exchanges.sublime-project
5
+ exchanges.sublime-workspace
TB2J/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.9.9.14"
1
+ __version__ = "0.9.10.3"
@@ -0,0 +1,2 @@
1
+ TB2J_results/
2
+ *.png
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+
4
+ from TB2J.Jdownfolder import JDownfolder_pickle
5
+ from TB2J.versioninfo import print_license
6
+
7
+
8
+ def main():
9
+ parser = argparse.ArgumentParser(
10
+ description="TB2J_downfold: Downfold the exchange parameter with ligand spin as independent variable to that only with metal site spin as independent variables."
11
+ )
12
+ parser.add_argument(
13
+ "--inpath",
14
+ "-i",
15
+ type=str,
16
+ help="The path of the input TB2J results before the downfolding.",
17
+ default="TB2J_results",
18
+ )
19
+
20
+ parser.add_argument(
21
+ "--outpath",
22
+ "-o",
23
+ type=str,
24
+ help="The path of the output TB2J results path after the downfolding",
25
+ default="TB2J_results_downfolded",
26
+ )
27
+
28
+ parser.add_argument(
29
+ "--metals",
30
+ "-m",
31
+ type=str,
32
+ help="List of magnetic cation elements",
33
+ nargs="+",
34
+ default=[],
35
+ )
36
+
37
+ parser.add_argument(
38
+ "--ligands",
39
+ "-l",
40
+ type=str,
41
+ help="List of ligand elements",
42
+ nargs="+",
43
+ default=[],
44
+ )
45
+
46
+ parser.add_argument(
47
+ "--qmesh",
48
+ help="kmesh in the format of kx ky kz",
49
+ type=int,
50
+ nargs="*",
51
+ default=[5, 5, 5],
52
+ )
53
+
54
+ parser.add_argument(
55
+ "--iso_only",
56
+ help="whether to downfold only the isotropic part. The other parts will be neglected.",
57
+ action="store_true",
58
+ default=False,
59
+ )
60
+
61
+ parser.add_argument(
62
+ "--method",
63
+ help="The method to downfold the exchange parameter. Options are Lowdin and PWF (projected Wannier function). ",
64
+ type=str,
65
+ default="Lowdin",
66
+ )
67
+
68
+ args = parser.parse_args()
69
+
70
+ if len(args.metals) == []:
71
+ print("List of magnetic cation elements cannot be empty")
72
+
73
+ if len(args.ligands) == []:
74
+ print("List of ligand elements cannot be empty")
75
+
76
+ print_license()
77
+ print("Input path:", args.inpath)
78
+ print("Output path:", args.outpath)
79
+ print("Magnetic cation elements:", args.metals)
80
+ print("Ligand elements:", args.ligands)
81
+ print("k-mesh:", args.qmesh)
82
+ print("Downfolding method:", args.method)
83
+ print("Downfolding only isotropic part:", args.iso_only)
84
+ print("Begining downfolding the exchange parameters:")
85
+ JDownfolder_pickle(
86
+ inpath=args.inpath,
87
+ metals=args.metals,
88
+ ligands=args.ligands,
89
+ outpath=args.outpath,
90
+ qmesh=args.qmesh,
91
+ iso_only=args.iso_only,
92
+ method=args.method,
93
+ )
94
+ print("Downfolding finished. Results are saved in:", args.outpath)
95
+
96
+
97
+ main()
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env python3
2
+ from TB2J.plot import write_eigen
3
+ from TB2J.versioninfo import print_license
4
+ import argparse
5
+
6
+ """
7
+ The script to plot the magnon band structure.
8
+ """
9
+
10
+
11
+ def write_eigen_info():
12
+ print_license()
13
+ parser = argparse.ArgumentParser(
14
+ description="TB2J_eigen.py: Write the eigen values and eigen vectors to file."
15
+ )
16
+ parser.add_argument(
17
+ "--path", default="./", type=str, help="The path of the TB2J_results file"
18
+ )
19
+
20
+ parser.add_argument(
21
+ "--qmesh",
22
+ help="qmesh in the format of kx ky kz. Monkhorst pack or Gamma-centered.",
23
+ type=int,
24
+ nargs="*",
25
+ default=[8, 8, 8],
26
+ )
27
+
28
+ parser.add_argument(
29
+ "--gamma",
30
+ help="whether shift the qpoint grid to Gamma-centered. Default: False",
31
+ action="store_true",
32
+ default=True,
33
+ )
34
+
35
+ parser.add_argument(
36
+ "--output_fname",
37
+ type=str,
38
+ help="The file name of the output. Default: eigenJq.txt",
39
+ default="eigenJq.txt",
40
+ )
41
+
42
+ args = parser.parse_args()
43
+
44
+ write_eigen(args.qmesh, args.gamma, output_fname=args.output_fname)
45
+
46
+
47
+ write_eigen_info()
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env python3
2
+ from TB2J.plot import plot_magnon_band, write_eigen
3
+ from TB2J.versioninfo import print_license
4
+ import argparse
5
+
6
+ """
7
+ The script to plot the magnon band structure.
8
+ """
9
+
10
+
11
+ def plot_magnon():
12
+ print_license()
13
+ parser = argparse.ArgumentParser(
14
+ description="TB2J_magnon: Plot magnon band structure from the TB2J magnetic interaction parameters"
15
+ )
16
+ parser.add_argument(
17
+ "--fname",
18
+ default="exchange.xml",
19
+ type=str,
20
+ help="exchange xml file name. default: exchange.xml",
21
+ )
22
+
23
+ parser.add_argument(
24
+ "--qpath",
25
+ default=None,
26
+ type=str,
27
+ help="The names of special q-points. If not given, the path will be automatically choosen. See https://wiki.fysik.dtu.dk/ase/ase/dft/kpoints.html for the table of special kpoints and the default path.",
28
+ )
29
+
30
+ parser.add_argument(
31
+ "--figfname",
32
+ default=None,
33
+ type=str,
34
+ help="The file name of the figure. It should be e.g. png, pdf or other types of files which could be generated by matplotlib.",
35
+ )
36
+
37
+ parser.add_argument(
38
+ "--Jq",
39
+ action="store_true",
40
+ help="To plot the eigenvalues of -J(q) instead of the magnon band",
41
+ default=False,
42
+ )
43
+
44
+ parser.add_argument(
45
+ "--no_Jiso",
46
+ action="store_true",
47
+ help="switch off isotropic exchange",
48
+ default=None,
49
+ )
50
+
51
+ parser.add_argument(
52
+ "--no_dmi", action="store_true", help="switch off dmi", default=None
53
+ )
54
+
55
+ parser.add_argument(
56
+ "--no_Jani",
57
+ action="store_true",
58
+ help="switch off anisotropic exchange",
59
+ default=None,
60
+ )
61
+
62
+ parser.add_argument(
63
+ "--write_emin", action="store_true", help="switch to write emin", default=False
64
+ )
65
+
66
+ parser.add_argument(
67
+ "--show",
68
+ action="store_true",
69
+ help="whether to show magnon band structure.",
70
+ default=False,
71
+ )
72
+
73
+ args = parser.parse_args()
74
+ if args.Jq:
75
+ if args.figfname is None:
76
+ args.figfname = "Eigen_Jq.pdf"
77
+ print(
78
+ "Plotting the eigenvalues of -J(q). The figure is written to %s"
79
+ % (args.figfname)
80
+ )
81
+ else:
82
+ if args.figfname is None:
83
+ args.figfname = "magnon_band.pdf"
84
+ print(
85
+ "Plotting the magnon band structure. The figure is written to %s"
86
+ % (args.figfname)
87
+ )
88
+
89
+ def nonone(x):
90
+ if x is None:
91
+ return x
92
+ else:
93
+ return not x
94
+
95
+ if args.write_emin:
96
+ write_eigen(
97
+ has_exchange=nonone(args.no_Jiso),
98
+ has_dmi=nonone(args.no_dmi),
99
+ has_bilinear=nonone(args.no_Jani),
100
+ )
101
+ else:
102
+ plot_magnon_band(
103
+ fname=args.fname,
104
+ knames=args.qpath,
105
+ npoints=300,
106
+ Jq=args.Jq,
107
+ figfname=args.figfname,
108
+ show=args.show,
109
+ has_exchange=nonone(args.no_Jiso),
110
+ has_dmi=nonone(args.no_dmi),
111
+ has_bilinear=nonone(args.no_Jani),
112
+ )
113
+
114
+
115
+ if __name__ == "__main__":
116
+ plot_magnon()
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python3
2
+ from TB2J.magnon import plot_tb2j_magnon_bands
3
+
4
+
5
+ def plot_tb2j_magnon_bands_cli():
6
+ """Command line interface for plotting magnon band structures from TB2J data."""
7
+ import argparse
8
+
9
+ parser = argparse.ArgumentParser(
10
+ description="Plot magnon band structure from TB2J data",
11
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
12
+ )
13
+
14
+ parser.add_argument(
15
+ "-f", "--file", default="TB2J.pickle", help="Path to TB2J pickle file"
16
+ )
17
+
18
+ parser.add_argument(
19
+ "-p",
20
+ "--path",
21
+ help="High-symmetry k-point path (e.g., 'GXMG' for square lattice)",
22
+ )
23
+
24
+ parser.add_argument(
25
+ "-n",
26
+ "--npoints",
27
+ type=int,
28
+ default=300,
29
+ help="Number of k-points for band structure calculation",
30
+ )
31
+
32
+ parser.add_argument(
33
+ "-a",
34
+ "--anisotropic",
35
+ action="store_true",
36
+ help="Include anisotropic interactions",
37
+ )
38
+
39
+ parser.add_argument(
40
+ "-q",
41
+ "--quadratic",
42
+ action="store_true",
43
+ help="Include biquadratic interactions",
44
+ )
45
+
46
+ parser.add_argument("-o", "--output", help="Output filename for the plot")
47
+
48
+ parser.add_argument(
49
+ "--no-pbc",
50
+ nargs="+",
51
+ type=int,
52
+ choices=[0, 1, 2],
53
+ help="Disable periodic boundary conditions in specified directions (0=x, 1=y, 2=z)",
54
+ )
55
+
56
+ args = parser.parse_args()
57
+
58
+ # Set up periodic boundary conditions
59
+ pbc = [True, True, True]
60
+ if args.no_pbc:
61
+ for direction in args.no_pbc:
62
+ pbc[direction] = False
63
+ pbc = tuple(pbc)
64
+
65
+ # Plot the bands
66
+ plot_tb2j_magnon_bands(
67
+ pickle_file=args.file,
68
+ path=args.path,
69
+ npoints=args.npoints,
70
+ anisotropic=args.anisotropic,
71
+ quadratic=args.quadratic,
72
+ pbc=pbc,
73
+ filename=args.output,
74
+ )
75
+
76
+
77
+ if __name__ == "__main__":
78
+ plot_tb2j_magnon_bands_cli()
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env python3
2
+
3
+ from TB2J.plot import plot_magnon_dos, command_line_plot_magnon_dos
4
+
5
+ command_line_plot_magnon_dos()
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+
4
+ from TB2J.io_merge import merge
5
+ from TB2J.version_info import print_license
6
+
7
+
8
+ def main():
9
+ parser = argparse.ArgumentParser(
10
+ description="TB2J_merge: merge the exchange parameters calculated from different directions. It can accept two types of calculations, first, the lattice structures are rotated from the original structure, from z to x, y, and z, respectively. The structures could be generated using the TB2J_rotate.py command. The second type is the three calculations have the spins along the x, y, and z axis, respectively."
11
+ )
12
+ parser.add_argument(
13
+ "directories",
14
+ type=str,
15
+ nargs="+",
16
+ help="The three directories the TB2J calculations are done. Inside each of them, there should be a TB2J_results directory which contains the magnetic interaction parameter files. e.g. Fe_x Fe_y Fe_z. Alternatively, it could be the TB2J results directories.",
17
+ )
18
+
19
+ parser.add_argument(
20
+ "--type",
21
+ "-T",
22
+ type=str,
23
+ help="The type of calculations, either structure of spin, meaning that the three calculations are done by rotating the structure/spin. ",
24
+ )
25
+ parser.add_argument(
26
+ "--output_path",
27
+ help="The path of the output directory, default is TB2J_results",
28
+ type=str,
29
+ default="TB2J_results",
30
+ )
31
+ parser.add_argument(
32
+ "--main_path",
33
+ help="The path containning the reference structure.",
34
+ type=str,
35
+ default=None,
36
+ )
37
+
38
+ args = parser.parse_args()
39
+ # merge(*(args.directories), args.type.strip().lower(), path=args.output_path)
40
+ # merge(*(args.directories), method=args.type.strip().lower(), path=args.output_path)
41
+ # merge2(args.directories, args.type.strip().lower(), path=args.output_path)
42
+ print_license()
43
+ print("Merging the TB2J results from the following directories: ", args.directories)
44
+ merge(*args.directories, main_path=args.main_path, write_path=args.output_path)
45
+ print("Merging completed. The results are saved in:", args.output_path)
46
+
47
+
48
+ if __name__ == "__main__":
49
+ main()
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env python3
2
+
3
+
4
+ if __name__ == "__main__":
5
+ # add a warning messege that this functionality is under development and should not be used in production.
6
+ # make it visually distinct, e.g. with a different color or formatting.
7
+ import warnings
8
+
9
+ from TB2J.magnon.magnon3 import main
10
+
11
+ warnings.warn(
12
+ """
13
+ # !!!!!!!!!!!!!!!!!! WARNING: =============================
14
+ #
15
+ # This functionality is under development and should not be used in production.
16
+ # It is provided for testing and development purposes only.
17
+ # Please use with caution and report any issues to the developers.
18
+ #
19
+ # This warning will be removed in future releases.
20
+ # =====================================
21
+
22
+ """,
23
+ UserWarning,
24
+ stacklevel=2,
25
+ )
26
+ # Call the main function from the magnons module
27
+ main()
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ from TB2J.rotate_atoms import rotate_atom_xyz, rotate_xyz, check_ftype
4
+
5
+
6
+ def main():
7
+ parser = argparse.ArgumentParser(description="")
8
+ parser.add_argument(
9
+ "fname", help="name of the file containing the atomic structure", type=str
10
+ )
11
+ parser.add_argument(
12
+ "--ftype",
13
+ help="type of the output files, e.g. xyz. Please use the format which contains the full cell matrix. (e.g. .cif file should not be used) ",
14
+ default="xyz",
15
+ type=str,
16
+ )
17
+ parser.add_argument(
18
+ "--noncollinear",
19
+ action="store_true",
20
+ help="If present, six different configurations will be generated. These are required for non-collinear systems."
21
+ )
22
+
23
+ args = parser.parse_args()
24
+ rotate_xyz(args.fname, ftype=args.ftype, noncollinear=args.noncollinear)
25
+
26
+
27
+ if __name__ == "__main__":
28
+ main()
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ from TB2J.rotate_siestaDM import rotate_DM
4
+
5
+ def main():
6
+ parser = argparse.ArgumentParser(description="")
7
+ parser.add_argument(
8
+ "--fdf_fname", help="Name of the *.fdf siesta file."
9
+ )
10
+ parser.add_argument(
11
+ "--noncollinear",
12
+ action="store_true",
13
+ help="If present, six different configurations will be generated. These are required for non-collinear systems."
14
+ )
15
+
16
+ args = parser.parse_args()
17
+ rotate_DM(args.fdf_fname, noncollinear=args.noncollinear)
18
+
19
+
20
+ if __name__ == "__main__":
21
+ main()
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env python3
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_abacus
7
+ from TB2J.versioninfo import print_license
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
+ args = parser.parse_args()
30
+
31
+ index_magnetic_atoms = args.index_magnetic_atoms
32
+ if index_magnetic_atoms is not None:
33
+ index_magnetic_atoms = [i - 1 for i in index_magnetic_atoms]
34
+
35
+ if args.elements is None and index_magnetic_atoms is None:
36
+ print("Please input the magnetic elements, e.g. --elements Fe Ni")
37
+ sys.exit()
38
+
39
+ # include_orbs = {}
40
+
41
+ gen_exchange_abacus(
42
+ path=args.path,
43
+ suffix=args.suffix,
44
+ kmesh=args.kmesh,
45
+ magnetic_elements=args.elements,
46
+ include_orbs={},
47
+ Rcut=args.rcut,
48
+ emin=args.emin,
49
+ nz=args.nz,
50
+ description=args.description,
51
+ output_path=args.output_path,
52
+ use_cache=args.use_cache,
53
+ nproc=args.np,
54
+ exclude_orbs=args.exclude_orbs,
55
+ orb_decomposition=args.orb_decomposition,
56
+ index_magnetic_atoms=index_magnetic_atoms,
57
+ )
58
+
59
+
60
+ if __name__ == "__main__":
61
+ run_abacus2J()
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python3
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()
TB2J/scripts/wann2J.py ADDED
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env python3
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
7
+ from TB2J.versioninfo import print_license
8
+
9
+
10
+ def run_wann2J():
11
+ print_license()
12
+ parser = argparse.ArgumentParser(
13
+ description="wann2J: Using magnetic force theorem to calculate exchange parameter J from wannier functions"
14
+ )
15
+ parser.add_argument(
16
+ "--path", help="path to the wannier files", default="./", type=str
17
+ )
18
+ parser.add_argument(
19
+ "--posfile", help="name of the position file", default="POSCAR", type=str
20
+ )
21
+ parser.add_argument(
22
+ "--prefix_spinor",
23
+ help="prefix to the spinor wannier files",
24
+ default="wannier90",
25
+ type=str,
26
+ )
27
+ parser.add_argument(
28
+ "--prefix_up",
29
+ help="prefix to the spin up wannier files",
30
+ default="wannier90.up",
31
+ type=str,
32
+ )
33
+ parser.add_argument(
34
+ "--prefix_down",
35
+ help="prefix to the spin down wannier files",
36
+ default="wannier90.dn",
37
+ type=str,
38
+ )
39
+ parser.add_argument(
40
+ "--groupby",
41
+ help="In the spinor case, the order of the orbitals have two conventions: 1: group by spin (orb1_up, orb2_up,... orb1_down, ...), 2,group by orbital (orb1_up, orb1_down, orb2_up, ...,). Use 'spin' in the former case and 'orbital' in the latter case. The default is spin.",
42
+ default="spin",
43
+ type=str,
44
+ )
45
+ parser.add_argument(
46
+ "--wannier_type",
47
+ help="The type of Wannier function, either Wannier90 or banddownfolder",
48
+ type=str,
49
+ default="Wannier90",
50
+ )
51
+
52
+ # parser.add_argument("--qspace",
53
+ # action="store_true",
54
+ # help="Whether to calculate J in qspace first and transform to real space.",
55
+ # default=False)
56
+
57
+ add_exchange_args_to_parser(parser)
58
+
59
+ args = parser.parse_args()
60
+
61
+ if args.efermi is None:
62
+ print("Please input fermi energy using --efermi ")
63
+ sys.exit()
64
+ if args.elements is None and args.index_magnetic_atoms is None:
65
+ print("Please input the magnetic elements, e.g. --elements Fe Ni")
66
+ sys.exit()
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
+
72
+ gen_exchange(
73
+ path=args.path,
74
+ colinear=(not args.spinor),
75
+ groupby=args.groupby,
76
+ posfile=args.posfile,
77
+ efermi=args.efermi,
78
+ kmesh=args.kmesh,
79
+ magnetic_elements=args.elements,
80
+ Rcut=args.rcut,
81
+ prefix_SOC=args.prefix_spinor,
82
+ prefix_up=args.prefix_up,
83
+ prefix_dn=args.prefix_down,
84
+ emin=args.emin,
85
+ emax=args.emax,
86
+ nz=args.nz,
87
+ use_cache=args.use_cache,
88
+ nproc=args.np,
89
+ description=args.description,
90
+ output_path=args.output_path,
91
+ exclude_orbs=args.exclude_orbs,
92
+ wannier_type=args.wannier_type,
93
+ # qspace=args.qspace,
94
+ write_density_matrix=args.write_dm,
95
+ orb_decomposition=args.orb_decomposition,
96
+ index_magnetic_atoms=index_magnetic_atoms,
97
+ )
98
+
99
+
100
+ if __name__ == "__main__":
101
+ run_wann2J()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TB2J
3
- Version: 0.9.10.4
3
+ Version: 0.9.11.1
4
4
  Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
5
5
  Author-email: Xu He <mailhexu@gmail.com>
6
6
  Maintainer-email: Xu He <mailhexu@gmail.com>
@@ -1,10 +1,11 @@
1
+ TB2J/.gitignore,sha256=0Q9EiAAZLJpONgoHwR1XcEskJykFEKfCc45KGH-C3zI,68
1
2
  TB2J/Jdownfolder.py,sha256=U6R8v6ZC-AgMA6wvvFPyacXX_lYJcRu1kzNr7aVB1tg,10827
2
3
  TB2J/Jtensor.py,sha256=WRhpp5N92a6lA1jeM1hc7jYUoTOLIdMnIIKpdOyzjR4,3192
3
4
  TB2J/MAE.py,sha256=fM8U-Dgp9HcQOEeC_kyZV1oVrygBvcux9BraUXVouvY,10994
4
5
  TB2J/MAEGreen.py,sha256=zVLjQtFDFcRmC8PYm7MOgKnkOuFJEMKr-eoNBABUsMc,15759
5
6
  TB2J/Oiju.py,sha256=cNGv8N5uH_swGq7cnAt2OyiDfqtjLlLrwseGu0E4iaM,3383
6
7
  TB2J/Oiju_epc.py,sha256=oytM3NYW7nWmklrGgNlqwIpI_JYv_hb7ZnR4o9nYNog,6809
7
- TB2J/__init__.py,sha256=VIRI2sifGP0sSwxkmWEp9IvuVn2fBhvrNpmqbwLrG8s,25
8
+ TB2J/__init__.py,sha256=YAAbxD7jmHcQEChxg_W2XC1XVHsnPVLBjD_rTl3amc4,25
8
9
  TB2J/anisotropy.py,sha256=0zmvXkmDmakbBOwGYLa3IIkv5cE99SHLAQJsGoZz7JQ,25463
9
10
  TB2J/basis.py,sha256=DFo6_QUwjBwisP6zGxvoO0lpGTMDPAOkiL9giNCjOjA,1558
10
11
  TB2J/citation.py,sha256=gcQeyJZaT1Qrtsl8Y3s4neOH3-vvgmIcCvXeV2o3vj0,2891
@@ -46,6 +47,7 @@ TB2J/interfaces/lawaf_interface.py,sha256=PieLnmppdafOYsgeHznqOou1g9L1sam5jOm3Ka
46
47
  TB2J/interfaces/manager.py,sha256=PQMLEfMCT5GnDWSl2nI4JOgRPm_fysyR-6Y6l97xWcw,860
47
48
  TB2J/interfaces/siesta_interface.py,sha256=Te9-Au0ZGAt-LfEnG8exUFD4lMj6uZu8RmHjopb0XLU,7595
48
49
  TB2J/interfaces/wannier90_interface.py,sha256=qzRgXUBb7t1Aiegrl_RV51BB8csdtVM0EP0Z4pjmTcs,4467
50
+ TB2J/interfaces/abacus/.gitignore,sha256=Iytg6TR3gOh014q9m7ReuCKYmx-Qi-o3SgILYB2WRtU,20
49
51
  TB2J/interfaces/abacus/__init__.py,sha256=leas71oCvM_HxrF4gnO5A_VKcJmDAgsI1BUctLU3OBw,177
50
52
  TB2J/interfaces/abacus/abacus_api.py,sha256=lNV4LNkLcKw7Zux4MQYM9wnh3eFTlcSqbf4Pb7pqhrk,7243
51
53
  TB2J/interfaces/abacus/abacus_wrapper.py,sha256=bQFnvvy-0hruTavH_VspMk1wD32t2UFybEkCgwkwle0,11941
@@ -79,6 +81,18 @@ TB2J/mathutils/fibonacci_sphere.py,sha256=1rqf5n3a9aDjSydA4qGkR1eIeLJKuoblA73cch
79
81
  TB2J/mathutils/kR_convert.py,sha256=p_9XWJVNanTzTK2rI6KRjTkbSq42la6N448-zJOsMwY,2671
80
82
  TB2J/mathutils/lowdin.py,sha256=RYbm9OcnFnjcZFdC5YcNUsI9cOJmoDLsWSSCaP0GqKQ,499
81
83
  TB2J/mathutils/rotate_spin.py,sha256=sPTnwJThfohCHIY7EuzBV2K3mIXcJI5y1QBytGmEKR4,8229
84
+ TB2J/scripts/TB2J_downfold.py,sha256=f1CPuka_uOcvwBKDWAaseRZ04Bqyx_Cor5PvU6LyIsU,2600
85
+ TB2J/scripts/TB2J_eigen.py,sha256=Pz2c9ZwWx2io5uW6QFI_XRs-3-HtCwlEi1Dzd2swsAY,1142
86
+ TB2J/scripts/TB2J_magnon.py,sha256=YwjXMvH_dl5CljjkqcpYSlvYUd6sK78PVyMcUkz9jS8,3115
87
+ TB2J/scripts/TB2J_magnon2.py,sha256=mfDrkjK9DpXeKl6jLdACzAD6ArAWBCmC-TPb-vCWpJs,1934
88
+ TB2J/scripts/TB2J_magnon_dos.py,sha256=uuNLuLadwgdzVb4OKfsY_92wRx9y7qdzK6vzH4AK1Ps,124
89
+ TB2J/scripts/TB2J_merge.py,sha256=Fw9Y4fVmptWWMtOXA71xi4ebPWhsvb6dCSVOga6GguA,2110
90
+ TB2J/scripts/TB2J_plot_magnon_bands.py,sha256=0HxjN5-gYrlqQsppQs94BCp6aynBGt-QMK-5QiFPgDg,888
91
+ TB2J/scripts/TB2J_rotate.py,sha256=d4CSJB2bmlsGI8eKxHU8dm072_CONQ86i6uZE1ZCkMk,887
92
+ TB2J/scripts/TB2J_rotateDM.py,sha256=zJ2pepVaLHeZdvewAOHbtYukq_Wxf3yzAaUGc6elQoQ,581
93
+ TB2J/scripts/abacus2J.py,sha256=3DE3EjRIcI0ydBQoH3WTGpYKYMEVL53hnB8PQ4gojdk,1809
94
+ TB2J/scripts/siesta2J.py,sha256=2CrS-wfVr0W2NaGvY9niNslC0xoX0WgDZFlrmIWUr20,2332
95
+ TB2J/scripts/wann2J.py,sha256=djLBG3t4oEimokMG6TIFHyjp8u8DtnizN9coQXOTN7U,3254
82
96
  TB2J/spinham/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
97
  TB2J/spinham/base_parser.py,sha256=oQRHvFE_BlUtTaTZykKgvicu40oXcbICB-D1aAt-qlA,2196
84
98
  TB2J/spinham/constants.py,sha256=y4-hRyl5EAR42k24Oa5XhAsUQtKVn1MAgyqNf-p3PrM,762
@@ -92,9 +106,9 @@ TB2J/spinham/supercell.py,sha256=y17uUC6r3gQb278FhxIW4CABihfLTvKFj6flyXrCPR8,122
92
106
  TB2J/wannier/__init__.py,sha256=7ojCbM84PYv1X1Tbo4NHI-d3gWmQsZB_xiYqbfxVV1E,80
93
107
  TB2J/wannier/w90_parser.py,sha256=dbd63LuKyv2DVUzqRINGsbDzEsOxsQyE8_Ear_LQIRg,4620
94
108
  TB2J/wannier/w90_tb_parser.py,sha256=qt8pnuprmPp9iIAYwPkPbmEzk6ZPgMq2xognoQp7vwc,4610
95
- tb2j-0.9.10.4.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
96
- tb2j-0.9.10.4.dist-info/METADATA,sha256=qcarQwqMRNfT44leUOrTTyqfjHR3A2E7q1owE4UZqJE,4138
97
- tb2j-0.9.10.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
98
- tb2j-0.9.10.4.dist-info/entry_points.txt,sha256=RuFfrRenhXgzZA1ND_4j4D8ylTXl6VbWLyV3fDx6KKw,734
99
- tb2j-0.9.10.4.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
100
- tb2j-0.9.10.4.dist-info/RECORD,,
109
+ tb2j-0.9.11.1.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
110
+ tb2j-0.9.11.1.dist-info/METADATA,sha256=ssXsEP9mkpL3viTxoA6YkhpMXr0LrZwNqufo0mn5MmA,4138
111
+ tb2j-0.9.11.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
112
+ tb2j-0.9.11.1.dist-info/entry_points.txt,sha256=_URI37R-iFE-WZoz1hOWTveskbyXYbA2gIn4cIunwOo,794
113
+ tb2j-0.9.11.1.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
114
+ tb2j-0.9.11.1.dist-info/RECORD,,
@@ -0,0 +1,16 @@
1
+ [console_scripts]
2
+ TB2J_downfold.py = TB2J.scripts.TB2J_downfold:main
3
+ TB2J_eigen.py = TB2J.scripts.TB2J_eigen:main
4
+ TB2J_magnon.py = TB2J.scripts.TB2J_magnon:main
5
+ TB2J_magnon2.py = TB2J.scripts.TB2J_magnon2:main
6
+ TB2J_magnon_dos.py = TB2J.scripts.TB2J_magnon_dos:main
7
+ TB2J_merge.py = TB2J.scripts.TB2J_merge:main
8
+ TB2J_plot_magnon_bands.py = TB2J.scripts.TB2J_plot_magnon_bands:main
9
+ TB2J_plot_magnon_dos.py = TB2J.magnon.plot_magnon_dos_cli:main
10
+ TB2J_rotate.py = TB2J.scripts.TB2J_rotate:main
11
+ TB2J_rotateDM.py = TB2J.scripts.TB2J_rotateDM:main
12
+ TB2J_symmetrize.py = TB2J.symmetrize_J:symmetrize_J_cli
13
+ abacus2J.py = TB2J.scripts.abacus2J:run_abacus2J
14
+ lawaf2J.py = TB2J.interfaces.lawaf_interface:lawaf2J_cli
15
+ siesta2J.py = TB2J.scripts.siesta2J:run_siesta2J
16
+ wann2J.py = TB2J.scripts.wann2J:run_wann2J
@@ -1,16 +0,0 @@
1
- [console_scripts]
2
- TB2J_downfold.py = scripts.TB2J_downfold:main
3
- TB2J_eigen.py = scripts.TB2J_eigen:main
4
- TB2J_magnon.py = scripts.TB2J_magnon:main
5
- TB2J_magnon2.py = scripts.TB2J_magnon2:main
6
- TB2J_magnon_dos.py = scripts.TB2J_magnon_dos:main
7
- TB2J_merge.py = scripts.TB2J_merge:main
8
- TB2J_plot_magnon_bands.py = scripts.TB2J_plot_magnon_bands:main
9
- TB2J_plot_magnon_dos.py = TB2J.magnon.plot_magnon_dos_cli:main
10
- TB2J_rotate.py = scripts.TB2J_rotate:main
11
- TB2J_rotateDM.py = scripts.TB2J_rotateDM:main
12
- TB2J_symmetrize.py = TB2J.symmetrize_J:symmetrize_J_cli
13
- abacus2J.py = scripts.abacus2J:run_abacus2J
14
- lawaf2J.py = TB2J.interfaces.lawaf_interface:lawaf2J_cli
15
- siesta2J.py = scripts.siesta2J:run_siesta2J
16
- wann2J.py = scripts.wann2J:run_wann2J