TB2J 0.9.9rc19__tar.gz → 0.9.9.2__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.
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/PKG-INFO +3 -2
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/Jdownfolder.py +2 -3
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/MAEGreen.py +17 -22
- tb2j-0.9.9.2/TB2J/__init__.py +1 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/exchange_params.py +1 -6
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/siesta_interface.py +4 -15
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/__init__.py +0 -2
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_exchange.py +5 -2
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/__init__.py +0 -1
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/PKG-INFO +3 -2
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/SOURCES.txt +0 -6
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/requires.txt +2 -1
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/abacus2J.py +2 -6
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/siesta2J.py +1 -5
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/wann2J.py +2 -6
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/setup.py +3 -3
- tb2j-0.9.9rc19/TB2J/__init__.py +0 -1
- tb2j-0.9.9rc19/TB2J/magnon/__init__.py +0 -3
- tb2j-0.9.9rc19/TB2J/magnon/io_exchange2.py +0 -688
- tb2j-0.9.9rc19/TB2J/magnon/plot.py +0 -58
- tb2j-0.9.9rc19/TB2J/magnon/structure.py +0 -348
- tb2j-0.9.9rc19/TB2J/mathutils/magnons.py +0 -45
- tb2j-0.9.9rc19/scripts/TB2J_magnon2.py +0 -78
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/LICENSE +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/README.md +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/Jtensor.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/MAE.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/Oiju.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/Oiju_epc.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/anisotropy.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/basis.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/citation.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/contour.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/density_matrix.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/epc.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/exchange.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/exchangeCL2.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/exchange_pert.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/exchange_qspace.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/external/__init__.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/external/p_tqdm.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/gpaw_wrapper.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/green.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/greentest.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/__init__.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/__init__.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/abacus_api.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/abacus_wrapper.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/gen_exchange_abacus.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/orbital_api.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/stru_api.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/test_density_matrix.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/test_read_HRSR.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/abacus/test_read_stru.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/gpaw_interface.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/lawaf_interface.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/manager.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/interfaces/wannier90_interface.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_multibinit.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_tomsasd.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_txt.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_uppasd.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_exchange/io_vampire.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/io_merge.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/kpoints.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/fermi.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/fibonacci_sphere.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/kR_convert.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/lowdin.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mathutils/rotate_spin.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/myTB.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/mycfr.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/orbital_magmom.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/orbmap.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/pauli.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/pert.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/plot.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/rotate_atoms.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/rotate_siestaDM.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/sisl_wrapper.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/__init__.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/base_parser.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/constants.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/hamiltonian.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/hamiltonian_terms.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/plot.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/qsolver.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/spin_api.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/spin_xml.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/spinham/supercell.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/symmetrize_J.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/tensor_rotate.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/thetaphi.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/utest.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/utils.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/versioninfo.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/wannier/__init__.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/wannier/w90_parser.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J/wannier/w90_tb_parser.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/dependency_links.txt +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/entry_points.txt +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/TB2J.egg-info/top_level.txt +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_downfold.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_eigen.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_magnon.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_magnon_dos.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_merge.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_rotate.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/scripts/TB2J_rotateDM.py +0 -0
- {tb2j-0.9.9rc19 → tb2j-0.9.9.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.9.2
|
4
4
|
Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
|
5
5
|
Author: Xu He
|
6
6
|
Author-email: mailhexu@gmail.com
|
@@ -21,10 +21,11 @@ Requires-Dist: ase>=3.19
|
|
21
21
|
Requires-Dist: tqdm
|
22
22
|
Requires-Dist: pathos
|
23
23
|
Requires-Dist: packaging>=20.0
|
24
|
-
Requires-Dist: HamiltonIO>=0.
|
24
|
+
Requires-Dist: HamiltonIO>=0.1.10
|
25
25
|
Requires-Dist: pre-commit
|
26
26
|
Requires-Dist: sympair>0.1.0
|
27
27
|
Requires-Dist: sisl>=0.9.0
|
28
|
+
Requires-Dist: netcdf4
|
28
29
|
Dynamic: author
|
29
30
|
Dynamic: author-email
|
30
31
|
Dynamic: classifier
|
@@ -136,7 +136,7 @@ class JDownfolder_pickle:
|
|
136
136
|
outpath,
|
137
137
|
qmesh=[7, 7, 7],
|
138
138
|
iso_only=False,
|
139
|
-
method="
|
139
|
+
method="pwf",
|
140
140
|
**kwargs,
|
141
141
|
):
|
142
142
|
self.exc = SpinIO.load_pickle(path=inpath, fname="TB2J.pickle")
|
@@ -146,7 +146,6 @@ class JDownfolder_pickle:
|
|
146
146
|
self.ligands = ligands
|
147
147
|
self.outpath = outpath
|
148
148
|
self.method = method
|
149
|
-
print("Using method:", self.method)
|
150
149
|
|
151
150
|
# read atomic structure
|
152
151
|
self.atoms = self.exc.atoms
|
@@ -177,7 +176,7 @@ class JDownfolder_pickle:
|
|
177
176
|
|
178
177
|
def _downfold(self, **kwargs):
|
179
178
|
JR2 = self.exc.get_full_Jtensor_for_Rlist(asr=True)
|
180
|
-
if self.method
|
179
|
+
if self.method == "lowdin":
|
181
180
|
d = JDownfolder(
|
182
181
|
JR2,
|
183
182
|
self.exc.Rlist,
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import gc
|
2
2
|
from pathlib import Path
|
3
3
|
|
4
|
+
import matplotlib.pyplot as plt
|
4
5
|
import numpy as np
|
5
6
|
import tqdm
|
6
7
|
from HamiltonIO.abacus.abacus_wrapper import AbacusSplitSOCParser
|
@@ -31,9 +32,7 @@ class MAEGreen(ExchangeNCL):
|
|
31
32
|
"""
|
32
33
|
super().__init__(**kwargs)
|
33
34
|
self.natoms = len(self.atoms)
|
34
|
-
if angles is None or angles == "
|
35
|
-
self.set_angles_xyz()
|
36
|
-
elif angles == "axis":
|
35
|
+
if angles is None or angles == "axis":
|
37
36
|
self.set_angles_axis()
|
38
37
|
elif angles == "scan":
|
39
38
|
self.set_angles_scan()
|
@@ -52,11 +51,6 @@ class MAEGreen(ExchangeNCL):
|
|
52
51
|
self.es_atom = np.zeros((nangles, self.natoms), dtype=complex)
|
53
52
|
self.es_atom_orb = DefaultDict(lambda: 0)
|
54
53
|
|
55
|
-
def set_angles_xyz(self):
|
56
|
-
"""theta and phi are defined as the x, y, z, xy, yz, xz, xyz, x-yz, -xyz, -x-yz axis."""
|
57
|
-
self.thetas = [np.pi / 2, np.pi / 2, 0.0]
|
58
|
-
self.phis = [np.pi / 2, 0, 0.0]
|
59
|
-
|
60
54
|
def set_angles_axis(self):
|
61
55
|
"""theta and phi are defined as the x, y, z, xy, yz, xz, xyz, x-yz, -xyz, -x-yz axis."""
|
62
56
|
self.thetas = [0, np.pi / 2, np.pi / 2, np.pi / 2, np.pi, 0, np.pi / 2, 0, 0, 0]
|
@@ -81,6 +75,7 @@ class MAEGreen(ExchangeNCL):
|
|
81
75
|
self.thetas = thetas
|
82
76
|
self.phis = phis
|
83
77
|
self.angle_pairs = list(zip(thetas, phis))
|
78
|
+
# remove duplicates of angles using sets.
|
84
79
|
self.angle_pairs = list(set(self.angle_pairs))
|
85
80
|
self.thetas, self.phis = zip(*self.angle_pairs)
|
86
81
|
|
@@ -253,11 +248,11 @@ class MAEGreen(ExchangeNCL):
|
|
253
248
|
Path(output_path).mkdir(exist_ok=True)
|
254
249
|
fname = f"{output_path}/MAE.dat"
|
255
250
|
fname_orb = f"{output_path}/MAE_orb.dat"
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
251
|
+
fname_tensor = f"{output_path}/MAE_tensor.dat"
|
252
|
+
if figure3d is not None:
|
253
|
+
fname_fig3d = f"{output_path}/{figure3d}"
|
254
|
+
if figure_contourf is not None:
|
255
|
+
fname_figcontourf = f"{output_path}/{figure_contourf}"
|
261
256
|
|
262
257
|
# ouput with eigenvalues.
|
263
258
|
if with_eigen:
|
@@ -282,18 +277,18 @@ class MAEGreen(ExchangeNCL):
|
|
282
277
|
f.write(f"{ea*1e3:.8f} ")
|
283
278
|
f.write("\n")
|
284
279
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
280
|
+
self.ani = self.fit_anisotropy_tensor()
|
281
|
+
with open(fname_tensor, "w") as f:
|
282
|
+
f.write("# Anisotropy tensor in meV\n")
|
283
|
+
f.write(f"{self.ani.tensor_strings(include_isotropic=False)}\n")
|
289
284
|
|
290
|
-
|
291
|
-
|
285
|
+
if figure3d is not None:
|
286
|
+
self.ani.plot_3d(figname=fname_fig3d, show=False)
|
292
287
|
|
293
|
-
|
294
|
-
|
288
|
+
if figure_contourf is not None:
|
289
|
+
self.ani.plot_contourf(figname=fname_figcontourf, show=False)
|
295
290
|
|
296
|
-
|
291
|
+
plt.close()
|
297
292
|
gc.collect()
|
298
293
|
|
299
294
|
with open(fname_orb, "w") as f:
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.9.9.1"
|
@@ -251,11 +251,6 @@ def add_exchange_args_to_parser(parser: argparse.ArgumentParser):
|
|
251
251
|
|
252
252
|
|
253
253
|
def parser_argument_to_dict(args) -> dict:
|
254
|
-
ind_mag_atoms = args.index_magnetic_atoms
|
255
|
-
if ind_mag_atoms is not None:
|
256
|
-
ind_mag_atoms = [int(i) - 1 for i in ind_mag_atoms]
|
257
|
-
else:
|
258
|
-
ind_mag_atoms = None
|
259
254
|
return {
|
260
255
|
"efermi": args.efermi,
|
261
256
|
"magnetic_elements": args.elements,
|
@@ -273,5 +268,5 @@ def parser_argument_to_dict(args) -> dict:
|
|
273
268
|
"orb_decomposition": args.orb_decomposition,
|
274
269
|
"output_path": args.output_path,
|
275
270
|
"orth": args.orth,
|
276
|
-
"index_magnetic_atoms":
|
271
|
+
"index_magnetic_atoms": args.index_magnetic_atoms,
|
277
272
|
}
|
@@ -4,7 +4,6 @@ import numpy as np
|
|
4
4
|
|
5
5
|
from TB2J.exchange import ExchangeNCL
|
6
6
|
from TB2J.exchangeCL2 import ExchangeCL2
|
7
|
-
from TB2J.io_merge import merge
|
8
7
|
from TB2J.MAEGreen import MAEGreen
|
9
8
|
|
10
9
|
try:
|
@@ -157,7 +156,7 @@ Warning: The DMI component parallel to the spin orientation, the Jani which has
|
|
157
156
|
atoms=model.atoms,
|
158
157
|
basis=basis,
|
159
158
|
efermi=None,
|
160
|
-
angles="
|
159
|
+
angles="miller",
|
161
160
|
# magnetic_elements=magnetic_elements,
|
162
161
|
# include_orbs=include_orbs,
|
163
162
|
**exargs,
|
@@ -166,9 +165,9 @@ Warning: The DMI component parallel to the spin orientation, the Jani which has
|
|
166
165
|
# phis = [0, 0, 0, 0]
|
167
166
|
# MAE.set_angles(thetas=thetas, phis=phis)
|
168
167
|
MAE.run(output_path=f"{output_path}_anisotropy", with_eigen=False)
|
169
|
-
|
170
|
-
|
171
|
-
|
168
|
+
print(
|
169
|
+
f"MAE calculation finished. The results are in {output_path} directory."
|
170
|
+
)
|
172
171
|
|
173
172
|
angle = {"x": (np.pi / 2, 0), "y": (np.pi / 2, np.pi / 2), "z": (0, 0)}
|
174
173
|
for key, val in angle.items():
|
@@ -192,13 +191,3 @@ Warning: The DMI component parallel to the spin orientation, the Jani which has
|
|
192
191
|
print(
|
193
192
|
f"All calculation finished. The results are in {output_path_full} directory."
|
194
193
|
)
|
195
|
-
|
196
|
-
merge(
|
197
|
-
"TB2J_results_x",
|
198
|
-
"TB2J_results_y",
|
199
|
-
"TB2J_results_z",
|
200
|
-
main_path=None,
|
201
|
-
save=True,
|
202
|
-
write_path="TB2J_results",
|
203
|
-
)
|
204
|
-
print("Final TB2J_results written to TB2J_results directory.")
|
@@ -8,13 +8,16 @@ write not only xml output.
|
|
8
8
|
- tom's asd inputs.
|
9
9
|
"""
|
10
10
|
|
11
|
-
# matplotlib.use("Agg")
|
12
|
-
import gc
|
13
11
|
import os
|
14
12
|
import pickle
|
15
13
|
from collections.abc import Iterable
|
16
14
|
from datetime import datetime
|
17
15
|
|
16
|
+
import matplotlib
|
17
|
+
|
18
|
+
matplotlib.use("Agg")
|
19
|
+
import gc
|
20
|
+
|
18
21
|
import matplotlib.pyplot as plt
|
19
22
|
import numpy as np
|
20
23
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.9.2
|
4
4
|
Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
|
5
5
|
Author: Xu He
|
6
6
|
Author-email: mailhexu@gmail.com
|
@@ -21,10 +21,11 @@ Requires-Dist: ase>=3.19
|
|
21
21
|
Requires-Dist: tqdm
|
22
22
|
Requires-Dist: pathos
|
23
23
|
Requires-Dist: packaging>=20.0
|
24
|
-
Requires-Dist: HamiltonIO>=0.
|
24
|
+
Requires-Dist: HamiltonIO>=0.1.10
|
25
25
|
Requires-Dist: pre-commit
|
26
26
|
Requires-Dist: sympair>0.1.0
|
27
27
|
Requires-Dist: sisl>=0.9.0
|
28
|
+
Requires-Dist: netcdf4
|
28
29
|
Dynamic: author
|
29
30
|
Dynamic: author-email
|
30
31
|
Dynamic: classifier
|
@@ -70,16 +70,11 @@ TB2J/io_exchange/io_tomsasd.py
|
|
70
70
|
TB2J/io_exchange/io_txt.py
|
71
71
|
TB2J/io_exchange/io_uppasd.py
|
72
72
|
TB2J/io_exchange/io_vampire.py
|
73
|
-
TB2J/magnon/__init__.py
|
74
|
-
TB2J/magnon/io_exchange2.py
|
75
|
-
TB2J/magnon/plot.py
|
76
|
-
TB2J/magnon/structure.py
|
77
73
|
TB2J/mathutils/__init__.py
|
78
74
|
TB2J/mathutils/fermi.py
|
79
75
|
TB2J/mathutils/fibonacci_sphere.py
|
80
76
|
TB2J/mathutils/kR_convert.py
|
81
77
|
TB2J/mathutils/lowdin.py
|
82
|
-
TB2J/mathutils/magnons.py
|
83
78
|
TB2J/mathutils/rotate_spin.py
|
84
79
|
TB2J/spinham/__init__.py
|
85
80
|
TB2J/spinham/base_parser.py
|
@@ -97,7 +92,6 @@ TB2J/wannier/w90_tb_parser.py
|
|
97
92
|
scripts/TB2J_downfold.py
|
98
93
|
scripts/TB2J_eigen.py
|
99
94
|
scripts/TB2J_magnon.py
|
100
|
-
scripts/TB2J_magnon2.py
|
101
95
|
scripts/TB2J_magnon_dos.py
|
102
96
|
scripts/TB2J_merge.py
|
103
97
|
scripts/TB2J_rotate.py
|
@@ -28,11 +28,7 @@ def run_abacus2J():
|
|
28
28
|
|
29
29
|
args = parser.parse_args()
|
30
30
|
|
31
|
-
|
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:
|
31
|
+
if args.elements is None:
|
36
32
|
print("Please input the magnetic elements, e.g. --elements Fe Ni")
|
37
33
|
sys.exit()
|
38
34
|
|
@@ -53,7 +49,7 @@ def run_abacus2J():
|
|
53
49
|
nproc=args.nproc,
|
54
50
|
exclude_orbs=args.exclude_orbs,
|
55
51
|
orb_decomposition=args.orb_decomposition,
|
56
|
-
index_magnetic_atoms=index_magnetic_atoms,
|
52
|
+
index_magnetic_atoms=args.index_magnetic_atoms,
|
57
53
|
cutoff=args.cutoff,
|
58
54
|
)
|
59
55
|
|
@@ -47,10 +47,6 @@ def run_siesta2J():
|
|
47
47
|
# else:
|
48
48
|
# include_orbs[element] = None
|
49
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
50
|
gen_exchange_siesta(
|
55
51
|
fdf_fname=args.fdf_fname,
|
56
52
|
kmesh=args.kmesh,
|
@@ -70,7 +66,7 @@ def run_siesta2J():
|
|
70
66
|
orb_decomposition=args.orb_decomposition,
|
71
67
|
read_H_soc=args.split_soc,
|
72
68
|
orth=args.orth,
|
73
|
-
index_magnetic_atoms=index_magnetic_atoms,
|
69
|
+
index_magnetic_atoms=args.index_magnetic_atoms,
|
74
70
|
)
|
75
71
|
|
76
72
|
|
@@ -61,14 +61,10 @@ 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:
|
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
|
-
|
72
68
|
gen_exchange(
|
73
69
|
path=args.path,
|
74
70
|
colinear=(not args.spinor),
|
@@ -93,7 +89,7 @@ def run_wann2J():
|
|
93
89
|
# qspace=args.qspace,
|
94
90
|
write_density_matrix=args.write_dm,
|
95
91
|
orb_decomposition=args.orb_decomposition,
|
96
|
-
index_magnetic_atoms=index_magnetic_atoms,
|
92
|
+
index_magnetic_atoms=args.index_magnetic_atoms,
|
97
93
|
)
|
98
94
|
|
99
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.
|
4
|
+
__version__ = "0.9.9.2"
|
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
|
|
@@ -22,7 +22,6 @@ setup(
|
|
22
22
|
"scripts/TB2J_rotateDM.py",
|
23
23
|
"scripts/TB2J_merge.py",
|
24
24
|
"scripts/TB2J_magnon.py",
|
25
|
-
"scripts/TB2J_magnon2.py",
|
26
25
|
"scripts/TB2J_magnon_dos.py",
|
27
26
|
"scripts/TB2J_downfold.py",
|
28
27
|
"scripts/TB2J_eigen.py",
|
@@ -41,10 +40,11 @@ setup(
|
|
41
40
|
"tqdm",
|
42
41
|
"pathos",
|
43
42
|
"packaging>=20.0",
|
44
|
-
"HamiltonIO>=0.
|
43
|
+
"HamiltonIO>=0.1.10",
|
45
44
|
"pre-commit",
|
46
45
|
"sympair>0.1.0",
|
47
46
|
"sisl>=0.9.0",
|
47
|
+
"netcdf4"
|
48
48
|
],
|
49
49
|
classifiers=[
|
50
50
|
"Development Status :: 3 - Alpha",
|
tb2j-0.9.9rc19/TB2J/__init__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.9.0.1"
|