TB2J 0.9.9.4__py3-none-any.whl → 0.9.9.6__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/Jdownfolder.py +3 -2
- TB2J/MAEGreen.py +22 -17
- TB2J/__init__.py +1 -1
- TB2J/exchange_params.py +1 -2
- TB2J/interfaces/abacus/gen_exchange_abacus.py +3 -0
- TB2J/interfaces/siesta_interface.py +15 -7
- TB2J/io_exchange/__init__.py +2 -0
- TB2J/io_exchange/io_exchange.py +40 -12
- TB2J/magnon/__init__.py +3 -0
- TB2J/magnon/io_exchange2.py +695 -0
- TB2J/magnon/magnon3.py +334 -0
- TB2J/magnon/magnon_io.py +48 -0
- TB2J/magnon/magnon_math.py +53 -0
- TB2J/magnon/plot.py +58 -0
- TB2J/magnon/structure.py +348 -0
- TB2J/mathutils/__init__.py +2 -0
- TB2J/mathutils/fibonacci_sphere.py +1 -1
- TB2J/mathutils/rotate_spin.py +0 -3
- TB2J/symmetrize_J.py +1 -1
- tb2j-0.9.9.6.data/scripts/TB2J_magnon2.py +78 -0
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/METADATA +1 -2
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/RECORD +36 -28
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_downfold.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_eigen.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_magnon.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_magnon_dos.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_merge.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_rotate.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/TB2J_rotateDM.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/abacus2J.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/siesta2J.py +0 -0
- {tb2j-0.9.9.4.data → tb2j-0.9.9.6.data}/scripts/wann2J.py +0 -0
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/WHEEL +0 -0
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/entry_points.txt +0 -0
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/licenses/LICENSE +0 -0
- {tb2j-0.9.9.4.dist-info → tb2j-0.9.9.6.dist-info}/top_level.txt +0 -0
TB2J/magnon/structure.py
ADDED
@@ -0,0 +1,348 @@
|
|
1
|
+
from warnings import warn
|
2
|
+
|
3
|
+
import numpy as np
|
4
|
+
|
5
|
+
valid_symbols = [
|
6
|
+
# 0
|
7
|
+
"Ae",
|
8
|
+
# 1
|
9
|
+
"H",
|
10
|
+
"He",
|
11
|
+
# 2
|
12
|
+
"Li",
|
13
|
+
"Be",
|
14
|
+
"B",
|
15
|
+
"C",
|
16
|
+
"N",
|
17
|
+
"O",
|
18
|
+
"F",
|
19
|
+
"Ne",
|
20
|
+
# 3
|
21
|
+
"Na",
|
22
|
+
"Mg",
|
23
|
+
"Al",
|
24
|
+
"Si",
|
25
|
+
"P",
|
26
|
+
"S",
|
27
|
+
"Cl",
|
28
|
+
"Ar",
|
29
|
+
# 4
|
30
|
+
"K",
|
31
|
+
"Ca",
|
32
|
+
"Sc",
|
33
|
+
"Ti",
|
34
|
+
"V",
|
35
|
+
"Cr",
|
36
|
+
"Mn",
|
37
|
+
"Fe",
|
38
|
+
"Co",
|
39
|
+
"Ni",
|
40
|
+
"Cu",
|
41
|
+
"Zn",
|
42
|
+
"Ga",
|
43
|
+
"Ge",
|
44
|
+
"As",
|
45
|
+
"Se",
|
46
|
+
"Br",
|
47
|
+
"Kr",
|
48
|
+
# 5
|
49
|
+
"Rb",
|
50
|
+
"Sr",
|
51
|
+
"Y",
|
52
|
+
"Zr",
|
53
|
+
"Nb",
|
54
|
+
"Mo",
|
55
|
+
"Tc",
|
56
|
+
"Ru",
|
57
|
+
"Rh",
|
58
|
+
"Pd",
|
59
|
+
"Ag",
|
60
|
+
"Cd",
|
61
|
+
"In",
|
62
|
+
"Sn",
|
63
|
+
"Sb",
|
64
|
+
"Te",
|
65
|
+
"I",
|
66
|
+
"Xe",
|
67
|
+
# 6
|
68
|
+
"Cs",
|
69
|
+
"Ba",
|
70
|
+
"La",
|
71
|
+
"Ce",
|
72
|
+
"Pr",
|
73
|
+
"Nd",
|
74
|
+
"Pm",
|
75
|
+
"Sm",
|
76
|
+
"Eu",
|
77
|
+
"Gd",
|
78
|
+
"Tb",
|
79
|
+
"Dy",
|
80
|
+
"Ho",
|
81
|
+
"Er",
|
82
|
+
"Tm",
|
83
|
+
"Yb",
|
84
|
+
"Lu",
|
85
|
+
"Hf",
|
86
|
+
"Ta",
|
87
|
+
"W",
|
88
|
+
"Re",
|
89
|
+
"Os",
|
90
|
+
"Ir",
|
91
|
+
"Pt",
|
92
|
+
"Au",
|
93
|
+
"Hg",
|
94
|
+
"Tl",
|
95
|
+
"Pb",
|
96
|
+
"Bi",
|
97
|
+
"Po",
|
98
|
+
"At",
|
99
|
+
"Rn",
|
100
|
+
# 7
|
101
|
+
"Fr",
|
102
|
+
"Ra",
|
103
|
+
"Ac",
|
104
|
+
"Th",
|
105
|
+
"Pa",
|
106
|
+
"U",
|
107
|
+
"Np",
|
108
|
+
"Pu",
|
109
|
+
"Am",
|
110
|
+
"Cm",
|
111
|
+
"Bk",
|
112
|
+
"Cf",
|
113
|
+
"Es",
|
114
|
+
"Fm",
|
115
|
+
"Md",
|
116
|
+
"No",
|
117
|
+
"Lr",
|
118
|
+
"Rf",
|
119
|
+
"Db",
|
120
|
+
"Sg",
|
121
|
+
"Bh",
|
122
|
+
"Hs",
|
123
|
+
"Mt",
|
124
|
+
"Ds",
|
125
|
+
"Rg",
|
126
|
+
"Cn",
|
127
|
+
"Nh",
|
128
|
+
"Fl",
|
129
|
+
"Mc",
|
130
|
+
"Lv",
|
131
|
+
"Ts",
|
132
|
+
"Og",
|
133
|
+
]
|
134
|
+
|
135
|
+
|
136
|
+
def get_attribute_array(array, attribute, dtype=float):
|
137
|
+
try:
|
138
|
+
the_array = np.array(array, dtype=dtype)
|
139
|
+
except (IndexError, ValueError, TypeError) as err:
|
140
|
+
typename = dtype.__name__
|
141
|
+
raise type(err)(
|
142
|
+
f"'{attribute}' must be an arraylike object of '{typename}' elements."
|
143
|
+
)
|
144
|
+
|
145
|
+
return the_array
|
146
|
+
|
147
|
+
|
148
|
+
def validate_symbols(value):
|
149
|
+
try:
|
150
|
+
values_list = value.split()
|
151
|
+
except AttributeError:
|
152
|
+
try:
|
153
|
+
values_list = list(value)
|
154
|
+
except (ValueError, TypeError):
|
155
|
+
raise TypeError("'elements' must be an iterable of 'str' or 'int' entries.")
|
156
|
+
|
157
|
+
if all(isinstance(s, str) for s in values_list):
|
158
|
+
symbols = values_list
|
159
|
+
for symbol in symbols:
|
160
|
+
if symbol not in valid_symbols:
|
161
|
+
raise ValueError(f"Unrecognized element '{symbol}'.")
|
162
|
+
elif all(isinstance(i, (int, np.integer)) for i in values_list):
|
163
|
+
if any(i < 0 for i in values_list):
|
164
|
+
raise ValueError("Atomic numbers must be positive.")
|
165
|
+
try:
|
166
|
+
symbols = [valid_symbols[i] for i in values_list]
|
167
|
+
except IndexError:
|
168
|
+
raise ValueError("Atomic number exceeds 118.")
|
169
|
+
else:
|
170
|
+
raise ValueError("'elements' must be an iterable of 'str' or 'int' entries.")
|
171
|
+
|
172
|
+
return symbols
|
173
|
+
|
174
|
+
|
175
|
+
class BaseMagneticStructure:
|
176
|
+
def __init__(
|
177
|
+
self,
|
178
|
+
atoms=None,
|
179
|
+
cell=None,
|
180
|
+
elements=None,
|
181
|
+
positions=None,
|
182
|
+
magmoms=None,
|
183
|
+
pbc=None,
|
184
|
+
collinear=True,
|
185
|
+
):
|
186
|
+
if atoms is not None:
|
187
|
+
if any(arg is not None for arg in [cell, elements, positions]):
|
188
|
+
warn(
|
189
|
+
"WARNING: 'atoms' overrides the 'cell', 'elements', and 'positions' arguments."
|
190
|
+
)
|
191
|
+
cell = atoms.cell.array
|
192
|
+
elements = atoms.numbers
|
193
|
+
positions = atoms.get_scaled_positions()
|
194
|
+
pbc = atoms.pbc if pbc is None else pbc
|
195
|
+
else:
|
196
|
+
if cell is None:
|
197
|
+
cell = np.zeros((3, 3))
|
198
|
+
if elements is None:
|
199
|
+
elements = ()
|
200
|
+
if positions is None:
|
201
|
+
positions = np.zeros((len(elements), 3))
|
202
|
+
if pbc is None:
|
203
|
+
pbc = (True, True, True)
|
204
|
+
if magmoms is None:
|
205
|
+
magmoms_shape = positions.shape[0] if collinear else positions.shape
|
206
|
+
magmoms = np.zeros(magmoms_shape)
|
207
|
+
|
208
|
+
self.cell = cell
|
209
|
+
self.elements = elements
|
210
|
+
self.positions = positions
|
211
|
+
self.collinear = collinear
|
212
|
+
self.magmoms = magmoms
|
213
|
+
self.pbc = pbc
|
214
|
+
|
215
|
+
self._Q = None
|
216
|
+
self._n = np.array([0, 0, 1])
|
217
|
+
|
218
|
+
@property
|
219
|
+
def cell(self):
|
220
|
+
return self._cell
|
221
|
+
|
222
|
+
@property
|
223
|
+
def reciprocal_cell(self):
|
224
|
+
return 2 * np.pi * np.linalg.inv(self._cell)
|
225
|
+
|
226
|
+
@cell.setter
|
227
|
+
def cell(self, value):
|
228
|
+
cell_array = get_attribute_array(value, "cell")
|
229
|
+
if cell_array.shape != (3, 3):
|
230
|
+
raise ValueError("'cell' must have a (3, 3) shape.")
|
231
|
+
|
232
|
+
self._cell = cell_array
|
233
|
+
|
234
|
+
@property
|
235
|
+
def elements(self):
|
236
|
+
return self._symbols
|
237
|
+
|
238
|
+
@elements.setter
|
239
|
+
def elements(self, value):
|
240
|
+
symbols = validate_symbols(value)
|
241
|
+
self._symbols = symbols
|
242
|
+
|
243
|
+
@property
|
244
|
+
def numbers(self):
|
245
|
+
return [valid_symbols.index(symbol) for symbol in self._symbols]
|
246
|
+
|
247
|
+
@property
|
248
|
+
def positions(self):
|
249
|
+
return self._positions
|
250
|
+
|
251
|
+
@property
|
252
|
+
def cartesian_positions(self):
|
253
|
+
return self._positions @ self._cell
|
254
|
+
|
255
|
+
@positions.setter
|
256
|
+
def positions(self, value):
|
257
|
+
natoms = len(self.elements)
|
258
|
+
posarray = get_attribute_array(value, "positions")
|
259
|
+
if posarray.shape != (natoms, 3):
|
260
|
+
raise ValueError(
|
261
|
+
"'positions' must have a (natoms, 3) shape, where natoms is the length of 'elements'. Make sure to set 'elements' first."
|
262
|
+
)
|
263
|
+
|
264
|
+
self._positions = posarray
|
265
|
+
|
266
|
+
@property
|
267
|
+
def magmoms(self):
|
268
|
+
return self._magmoms
|
269
|
+
|
270
|
+
@magmoms.setter
|
271
|
+
def magmoms(self, value):
|
272
|
+
magarray = get_attribute_array(value, "magmoms")
|
273
|
+
if self.collinear and magarray.shape != (len(self._positions),):
|
274
|
+
raise ValueError(
|
275
|
+
"'magmoms' must be a 1dim array with the same length as 'positions'. Make sure to set 'positions' first."
|
276
|
+
)
|
277
|
+
elif not self.collinear and magarray.shape != self._positions.shape:
|
278
|
+
raise ValueError(
|
279
|
+
"'magmoms' must have the same shape as 'positions'. Make sure to set 'positions' first."
|
280
|
+
)
|
281
|
+
|
282
|
+
self._magmoms = magarray
|
283
|
+
|
284
|
+
@property
|
285
|
+
def pbc(self):
|
286
|
+
return self._pbc
|
287
|
+
|
288
|
+
@pbc.setter
|
289
|
+
def pbc(self, value):
|
290
|
+
try:
|
291
|
+
periodic_boundary_conditions = tuple(bool(b) for b in value)
|
292
|
+
except (ValueError, TypeError):
|
293
|
+
raise TypeError("'pbc' must be an iterable of 'bool' entries.")
|
294
|
+
|
295
|
+
if len(periodic_boundary_conditions) != 3:
|
296
|
+
raise ValueError("'pbc' must be of length 3.")
|
297
|
+
|
298
|
+
self._pbc = periodic_boundary_conditions
|
299
|
+
|
300
|
+
@property
|
301
|
+
def propagation_vector(self):
|
302
|
+
return self._Q
|
303
|
+
|
304
|
+
@propagation_vector.setter
|
305
|
+
def propagation_vector(self, value):
|
306
|
+
Q = get_attribute_array(value, "propagation_vector")
|
307
|
+
if Q.shape != (3,):
|
308
|
+
raise ValueError(
|
309
|
+
"The 'propagation_vector' must be a vector with 3 numbers."
|
310
|
+
)
|
311
|
+
|
312
|
+
self._Q = Q
|
313
|
+
|
314
|
+
@property
|
315
|
+
def normal_vector(self):
|
316
|
+
return self._n
|
317
|
+
|
318
|
+
@normal_vector.setter
|
319
|
+
def normal_vector(self, value):
|
320
|
+
n = get_attribute_array(value, "normal_vector")
|
321
|
+
if n.shape != (3,):
|
322
|
+
raise ValueError("The 'normal_vector' must be a vector with 3 numbers.")
|
323
|
+
|
324
|
+
self._n = n
|
325
|
+
|
326
|
+
def to_ase(self):
|
327
|
+
from ase.atoms import Atoms
|
328
|
+
|
329
|
+
atoms = Atoms(
|
330
|
+
cell=self.cell,
|
331
|
+
positions=self.cartesian_positions,
|
332
|
+
numbers=[valid_symbols.index(symbol) for symbol in self.elements],
|
333
|
+
pbc=self.pbc,
|
334
|
+
)
|
335
|
+
|
336
|
+
return atoms
|
337
|
+
|
338
|
+
@classmethod
|
339
|
+
def from_structure_file(
|
340
|
+
cls, filename, magmoms=None, collinear=True, pbc=(True, True, True)
|
341
|
+
):
|
342
|
+
from ase.io import read
|
343
|
+
|
344
|
+
atoms = read(filename)
|
345
|
+
atoms.pbc = pbc
|
346
|
+
obj = cls(atoms=atoms, magmoms=magmoms, collinear=collinear)
|
347
|
+
|
348
|
+
return obj
|
TB2J/mathutils/__init__.py
CHANGED
TB2J/mathutils/rotate_spin.py
CHANGED
@@ -11,7 +11,6 @@ def rotate_Matrix_from_z_to_axis(M, axis, normalize=True):
|
|
11
11
|
"""
|
12
12
|
MI, Mx, My, Mz = pauli_block_all(M)
|
13
13
|
axis = axis / np.linalg.norm(axis)
|
14
|
-
# M_new = s0* MI + Mz * (axis[0] * s1 + axis[1] * s2 + axis[2] * s3) *2
|
15
14
|
M_new = gather_pauli_blocks(MI, Mz * axis[0], Mz * axis[1], Mz * axis[2])
|
16
15
|
return M_new
|
17
16
|
|
@@ -96,7 +95,6 @@ def rotate_spinor_matrix_einsum(M, theta, phi):
|
|
96
95
|
n1 = np.product(shape[:-1]) // 2
|
97
96
|
n2 = M.shape[-1] // 2
|
98
97
|
Mnew = np.reshape(M, (n1, 2, n2, 2)) # .swapaxes(1, 2)
|
99
|
-
# print("Mnew:", Mnew)
|
100
98
|
U = rotation_matrix(theta, phi)
|
101
99
|
UT = U.conj().T
|
102
100
|
Mnew = np.einsum(
|
@@ -132,7 +130,6 @@ def rotate_spinor_matrix_reshape(M, theta, phi):
|
|
132
130
|
"""
|
133
131
|
N = M.shape[0] // 2
|
134
132
|
Mnew = np.reshape(M, (N, 2, N, 2)).swapaxes(1, 2)
|
135
|
-
# print("Mnew:", Mnew)
|
136
133
|
U = rotation_matrix(theta, phi)
|
137
134
|
UT = U.conj().T
|
138
135
|
Mnew = UT @ Mnew @ U
|
TB2J/symmetrize_J.py
CHANGED
@@ -102,7 +102,7 @@ def symmetrize_J_cli():
|
|
102
102
|
from argparse import ArgumentParser
|
103
103
|
|
104
104
|
parser = ArgumentParser(
|
105
|
-
description="Symmetrize exchange parameters. Currently, it take the crystal symmetry into account and not the magnetic moment
|
105
|
+
description="Symmetrize exchange parameters. Currently, it take the crystal symmetry into account and not the magnetic moment."
|
106
106
|
)
|
107
107
|
parser.add_argument(
|
108
108
|
"-i",
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#!python
|
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()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.9.
|
3
|
+
Version: 0.9.9.6
|
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
|
@@ -25,7 +25,6 @@ Requires-Dist: HamiltonIO>=0.2.1
|
|
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
|
29
28
|
Dynamic: author
|
30
29
|
Dynamic: author-email
|
31
30
|
Dynamic: classifier
|
@@ -1,10 +1,10 @@
|
|
1
|
-
TB2J/Jdownfolder.py,sha256=
|
1
|
+
TB2J/Jdownfolder.py,sha256=n5BeQCYP4mD9JsAPeE1F3ZKKR3SUxADfDbaG_rzi77k,9658
|
2
2
|
TB2J/Jtensor.py,sha256=t6OsqrSlYW6Im4H7ykVAW8Al_pFXN4C5yj2UEsV6r7g,3181
|
3
3
|
TB2J/MAE.py,sha256=fM8U-Dgp9HcQOEeC_kyZV1oVrygBvcux9BraUXVouvY,10994
|
4
|
-
TB2J/MAEGreen.py,sha256=
|
4
|
+
TB2J/MAEGreen.py,sha256=Iq4hlZrKEOycPvpV66_t13WIcJ1FJgBS79NleXYpFzw,15528
|
5
5
|
TB2J/Oiju.py,sha256=cNGv8N5uH_swGq7cnAt2OyiDfqtjLlLrwseGu0E4iaM,3383
|
6
6
|
TB2J/Oiju_epc.py,sha256=oytM3NYW7nWmklrGgNlqwIpI_JYv_hb7ZnR4o9nYNog,6809
|
7
|
-
TB2J/__init__.py,sha256=
|
7
|
+
TB2J/__init__.py,sha256=hcEWkag_UvLm1ZSbjsgcTWkGVlR3Bwmzg1QYAwsvf-g,24
|
8
8
|
TB2J/anisotropy.py,sha256=0zmvXkmDmakbBOwGYLa3IIkv5cE99SHLAQJsGoZz7JQ,25463
|
9
9
|
TB2J/basis.py,sha256=DFo6_QUwjBwisP6zGxvoO0lpGTMDPAOkiL9giNCjOjA,1558
|
10
10
|
TB2J/citation.py,sha256=gcQeyJZaT1Qrtsl8Y3s4neOH3-vvgmIcCvXeV2o3vj0,2891
|
@@ -13,7 +13,7 @@ TB2J/density_matrix.py,sha256=D5k8Oe21OCiLVORNYbo4TZOFG0slrQSbj91kJ3TMFjs,1514
|
|
13
13
|
TB2J/epc.py,sha256=zLbtqZJhDr8DnnGN6YENcXwrMb3Qxu6KB08mLy9Pw20,3474
|
14
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=VW9nGVio6M_Ub9-36L_LExhjgdD1E_joYpI8AxmM360,8029
|
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
|
@@ -31,7 +31,7 @@ TB2J/plot.py,sha256=AnFIFWE2vlmj7Z6f_7-dX_O1stJN-qbuiurPj43dUCM,4104
|
|
31
31
|
TB2J/rotate_atoms.py,sha256=Dwptn-wdDW4zYzjYb95yxTzuZOe9WPuLjh3d3-YcSs0,3277
|
32
32
|
TB2J/rotate_siestaDM.py,sha256=I4ytO8uFP8_GFyBs9-zMdiMSZS3Y3lj2dSLfNBNI2ZY,1078
|
33
33
|
TB2J/sisl_wrapper.py,sha256=A5x1-tt8efUSPeGY5wM5m6-pJYQFXTCzQHVqD6RBa2g,14792
|
34
|
-
TB2J/symmetrize_J.py,sha256=
|
34
|
+
TB2J/symmetrize_J.py,sha256=pv65f7TXW371kfnByIkg885XFEGg4UmWlzqY7cOUNAk,4474
|
35
35
|
TB2J/tensor_rotate.py,sha256=4-DfT_Mg5e40fbd74M5W0D5DqmUq-kVOOLDkkkI834A,8083
|
36
36
|
TB2J/thetaphi.py,sha256=Z7N3EOSM7rjHd7b9HxMYLPQO__uR0VwEiV9b471Yudc,399
|
37
37
|
TB2J/utest.py,sha256=z_ahi7tpHQF9WlHNQihcQ7qzfezRJQXQt28eB1X_z64,3897
|
@@ -43,30 +43,37 @@ TB2J/interfaces/__init__.py,sha256=4tiLoXQ73Nlyi9L4j8jJXOYzXluVNPxQZkwfkQZEGHg,3
|
|
43
43
|
TB2J/interfaces/gpaw_interface.py,sha256=GCDlJ-hRWfChvWwsgBDYSmVqO4sH9HAuGZTV9GqgN6c,1504
|
44
44
|
TB2J/interfaces/lawaf_interface.py,sha256=PieLnmppdafOYsgeHznqOou1g9L1sam5jOm3KaObdqo,4408
|
45
45
|
TB2J/interfaces/manager.py,sha256=PQMLEfMCT5GnDWSl2nI4JOgRPm_fysyR-6Y6l97xWcw,860
|
46
|
-
TB2J/interfaces/siesta_interface.py,sha256=
|
46
|
+
TB2J/interfaces/siesta_interface.py,sha256=nkb8CTjHtv3DgMok4njyiaE-vDGDJFCjLHat71R_Z48,7561
|
47
47
|
TB2J/interfaces/wannier90_interface.py,sha256=qzRgXUBb7t1Aiegrl_RV51BB8csdtVM0EP0Z4pjmTcs,4467
|
48
48
|
TB2J/interfaces/abacus/__init__.py,sha256=leas71oCvM_HxrF4gnO5A_VKcJmDAgsI1BUctLU3OBw,177
|
49
49
|
TB2J/interfaces/abacus/abacus_api.py,sha256=lNV4LNkLcKw7Zux4MQYM9wnh3eFTlcSqbf4Pb7pqhrk,7243
|
50
50
|
TB2J/interfaces/abacus/abacus_wrapper.py,sha256=8ZA8oA_YWvRF0Uj_SX1q1vl8ZyEVhHC_tu37JhV02gg,12041
|
51
|
-
TB2J/interfaces/abacus/gen_exchange_abacus.py,sha256=
|
51
|
+
TB2J/interfaces/abacus/gen_exchange_abacus.py,sha256=v-AUHGkJWeMNf4D5A4wOpCjM6DygQsFB6SWu-BGdTxM,3262
|
52
52
|
TB2J/interfaces/abacus/orbital_api.py,sha256=SpSm5fhyqLYbprNd6Lxx0oR1Fw5TUJHfNc-0x_4FW1U,1561
|
53
53
|
TB2J/interfaces/abacus/stru_api.py,sha256=Ac03ikHRsZRXqTul4IUge7D2iG_xLh4_oyYfeP9tzGE,67881
|
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=
|
58
|
-
TB2J/io_exchange/io_exchange.py,sha256=
|
57
|
+
TB2J/io_exchange/__init__.py,sha256=LqEnG67qDVKt4hCUywDEQvUIJ7jsQjmtueOW_J16NOE,54
|
58
|
+
TB2J/io_exchange/io_exchange.py,sha256=YEFJT8nPy-aGUgGRhIgrC73pf6IQfL7bgGovUkGKv60,21273
|
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=EcC3x6H13qq61WBsr__xKzHDtSvy_dMz1tEdUaqSG2I,23265
|
66
|
+
TB2J/magnon/magnon3.py,sha256=GNqJVf73xibVbI9wVvaN2_uigbnNJKbHZxqjICwz3vw,10958
|
67
|
+
TB2J/magnon/magnon_io.py,sha256=H4bmzCcnh1D3Sb6UBIIKWa6jIrA20dg9lX4wfLXHEjo,1241
|
68
|
+
TB2J/magnon/magnon_math.py,sha256=hJ2k24eR4TzdaFMxfxgCr10lWV4GEcfaf2WxhWj-uUk,1320
|
69
|
+
TB2J/magnon/plot.py,sha256=kwq9LL0FRVo-SLYNkE-ghlyjz8DZD-c4LAWg8si5GJo,1674
|
70
|
+
TB2J/magnon/structure.py,sha256=rKefzXgQlEjVvV-A7E2IogVDWwf5egZr3Wxxu6HuJU4,7685
|
71
|
+
TB2J/mathutils/__init__.py,sha256=E70Mx8mLXh3DJGmdN3TLWmGYMcsbvKxmgxUbAI6Mzmo,49
|
65
72
|
TB2J/mathutils/fermi.py,sha256=72tZ5CptGmYaBUD0xLWltuH7LBXcrMUwODyW6-WqlzI,638
|
66
|
-
TB2J/mathutils/fibonacci_sphere.py,sha256=
|
73
|
+
TB2J/mathutils/fibonacci_sphere.py,sha256=1rqf5n3a9aDjSydA4qGkR1eIeLJKuoblA73cchWJzNg,2342
|
67
74
|
TB2J/mathutils/kR_convert.py,sha256=p_9XWJVNanTzTK2rI6KRjTkbSq42la6N448-zJOsMwY,2671
|
68
75
|
TB2J/mathutils/lowdin.py,sha256=RYbm9OcnFnjcZFdC5YcNUsI9cOJmoDLsWSSCaP0GqKQ,499
|
69
|
-
TB2J/mathutils/rotate_spin.py,sha256=
|
76
|
+
TB2J/mathutils/rotate_spin.py,sha256=sPTnwJThfohCHIY7EuzBV2K3mIXcJI5y1QBytGmEKR4,8229
|
70
77
|
TB2J/spinham/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
78
|
TB2J/spinham/base_parser.py,sha256=oQRHvFE_BlUtTaTZykKgvicu40oXcbICB-D1aAt-qlA,2196
|
72
79
|
TB2J/spinham/constants.py,sha256=y4-hRyl5EAR42k24Oa5XhAsUQtKVn1MAgyqNf-p3PrM,762
|
@@ -80,19 +87,20 @@ TB2J/spinham/supercell.py,sha256=y17uUC6r3gQb278FhxIW4CABihfLTvKFj6flyXrCPR8,122
|
|
80
87
|
TB2J/wannier/__init__.py,sha256=7ojCbM84PYv1X1Tbo4NHI-d3gWmQsZB_xiYqbfxVV1E,80
|
81
88
|
TB2J/wannier/w90_parser.py,sha256=dbd63LuKyv2DVUzqRINGsbDzEsOxsQyE8_Ear_LQIRg,4620
|
82
89
|
TB2J/wannier/w90_tb_parser.py,sha256=qt8pnuprmPp9iIAYwPkPbmEzk6ZPgMq2xognoQp7vwc,4610
|
83
|
-
tb2j-0.9.9.
|
84
|
-
tb2j-0.9.9.
|
85
|
-
tb2j-0.9.9.
|
86
|
-
tb2j-0.9.9.
|
87
|
-
tb2j-0.9.9.
|
88
|
-
tb2j-0.9.9.
|
89
|
-
tb2j-0.9.9.
|
90
|
-
tb2j-0.9.9.
|
91
|
-
tb2j-0.9.9.
|
92
|
-
tb2j-0.9.9.
|
93
|
-
tb2j-0.9.9.
|
94
|
-
tb2j-0.9.9.
|
95
|
-
tb2j-0.9.9.
|
96
|
-
tb2j-0.9.9.
|
97
|
-
tb2j-0.9.9.
|
98
|
-
tb2j-0.9.9.
|
90
|
+
tb2j-0.9.9.6.data/scripts/TB2J_downfold.py,sha256=i4BVqnpDdgrX_amookVWeLGefGBn-qeAutWiwuY9SfQ,2099
|
91
|
+
tb2j-0.9.9.6.data/scripts/TB2J_eigen.py,sha256=Qs9v2hnMm2Tpfoa4h53muUKty2dZjwx8948MBoQooNg,1128
|
92
|
+
tb2j-0.9.9.6.data/scripts/TB2J_magnon.py,sha256=q7UwAmorRcFNk4tfE7gl_ny05l6p7pbD9Wm_LkIpKEw,3101
|
93
|
+
tb2j-0.9.9.6.data/scripts/TB2J_magnon2.py,sha256=tMa7Fg_Wd2UytnrH3C_AsgGM7BciUW0iy6NiPlWvar8,1920
|
94
|
+
tb2j-0.9.9.6.data/scripts/TB2J_magnon_dos.py,sha256=TMXQvD2dIbO5FZ4tUMmxJgCgH2O2hDAPUNfEKO4z-x4,110
|
95
|
+
tb2j-0.9.9.6.data/scripts/TB2J_merge.py,sha256=y834SF4rIRn1L1ptkhczvavQpC-8Px6DTmDOOSaq_DE,1854
|
96
|
+
tb2j-0.9.9.6.data/scripts/TB2J_rotate.py,sha256=zgiDFuYZNmzKK0rwDmTaYD2OpRlmKA_VGeBx83w2Xwc,873
|
97
|
+
tb2j-0.9.9.6.data/scripts/TB2J_rotateDM.py,sha256=kCvF7gotuqAX1VnJ06cwfVm7RrhrdtiV5v7d9P2Pn_E,567
|
98
|
+
tb2j-0.9.9.6.data/scripts/abacus2J.py,sha256=4vCY7eih6JBc92rG6WZhUfcgf_GMJq2H21TweRaWG3s,1823
|
99
|
+
tb2j-0.9.9.6.data/scripts/siesta2J.py,sha256=QJ6c0DbqxaqYEesxiL5R9nK9-flNLrr7hajKfCwirYc,2318
|
100
|
+
tb2j-0.9.9.6.data/scripts/wann2J.py,sha256=OA31VHEXbQMD-JozoLUHDF6vB9Sr62d804OApSKtSnU,3240
|
101
|
+
tb2j-0.9.9.6.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
|
102
|
+
tb2j-0.9.9.6.dist-info/METADATA,sha256=IgCZdXn3F2aPwgNULjxTLVW_5f9rarNR3gW-asYa3yU,1686
|
103
|
+
tb2j-0.9.9.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
104
|
+
tb2j-0.9.9.6.dist-info/entry_points.txt,sha256=Hdz1WC9waUzyFVmowKnbbZ6j-J4adHh_Ko6JpxGYAtE,131
|
105
|
+
tb2j-0.9.9.6.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
|
106
|
+
tb2j-0.9.9.6.dist-info/RECORD,,
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|