TB2J 0.9.9rc5__py3-none-any.whl → 0.9.9rc7__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 +11 -9
- TB2J/MAEGreen.py +123 -19
- TB2J/anisotropy.py +104 -30
- TB2J/contour.py +16 -0
- TB2J/exchange.py +14 -17
- TB2J/exchangeCL2.py +20 -11
- TB2J/exchange_params.py +8 -0
- TB2J/green.py +15 -1
- TB2J/interfaces/siesta_interface.py +2 -1
- TB2J/io_exchange/io_exchange.py +44 -5
- TB2J/io_exchange/io_matjes.py +225 -0
- TB2J/kpoints.py +15 -1
- TB2J/mathutils/fibonacci_sphere.py +74 -0
- TB2J/mycfr.py +114 -0
- TB2J/orbital_magmom.py +36 -0
- TB2J/orbmap.py +4 -4
- TB2J/symmetrize_J.py +24 -11
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info}/METADATA +16 -7
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info}/RECORD +33 -29
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info}/WHEEL +1 -1
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_downfold.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_eigen.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_magnon.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_magnon_dos.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_merge.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_rotate.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/TB2J_rotateDM.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/abacus2J.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/siesta2J.py +0 -0
- {TB2J-0.9.9rc5.data → tb2j-0.9.9rc7.data}/scripts/wann2J.py +0 -0
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info}/entry_points.txt +0 -0
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info/licenses}/LICENSE +0 -0
- {TB2J-0.9.9rc5.dist-info → tb2j-0.9.9rc7.dist-info}/top_level.txt +0 -0
TB2J/mycfr.py
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# File: mycfr.py
|
3
|
+
# Time: 2017/12/10 19:29:43
|
4
|
+
"""
|
5
|
+
Continued fraction representation.
|
6
|
+
"""
|
7
|
+
|
8
|
+
import numpy as np
|
9
|
+
from scipy.linalg import eig
|
10
|
+
|
11
|
+
kb = 8.61733e-5 # Boltzmann constant in eV
|
12
|
+
|
13
|
+
|
14
|
+
class CFR:
|
15
|
+
"""
|
16
|
+
Integration with the continued fraction representation.
|
17
|
+
"""
|
18
|
+
|
19
|
+
def __init__(self, nz=50, T=60):
|
20
|
+
self.nz = nz
|
21
|
+
self.T = 600
|
22
|
+
self.beta = 1 / (kb * self.T)
|
23
|
+
self.Rinf = 1e10
|
24
|
+
if nz <= 0:
|
25
|
+
raise ValueError("nz should be larger than 0.")
|
26
|
+
else:
|
27
|
+
self.prepare_poles()
|
28
|
+
|
29
|
+
def prepare_poles(self):
|
30
|
+
##b_mat = [1 / (2.0 * np.sqrt((2 * (j + 1) - 1) * (2 * (j + 1) + 1)) / (kb * self.#T)) for j in range(0, self.nz- 1)]
|
31
|
+
jmat = np.arange(0, self.nz - 1)
|
32
|
+
b_mat = 1 / (2.0 * np.sqrt((2 * (jmat + 1) - 1) * (2 * (jmat + 1) + 1)))
|
33
|
+
b_mat = np.diag(b_mat, -1) + np.diag(b_mat, 1)
|
34
|
+
self.poles, residules = eig(b_mat)
|
35
|
+
|
36
|
+
residules = 0.25 * np.abs(residules[0, :]) ** 2 / self.poles**2
|
37
|
+
# residules = 0.25 * np.diag(residules) ** 2 / self.poles**2
|
38
|
+
|
39
|
+
# self.weights = np.where(
|
40
|
+
# #np.real(self.poles) > 0, 4.0j / self.beta * residules, 0.0
|
41
|
+
# #np.real(self.poles) > 0, 2.0j / self.beta * residules, 2.0j / self.beta * residules
|
42
|
+
# np.real(self.poles) > 0, 2.0j / self.beta * residules, 0.0
|
43
|
+
# )
|
44
|
+
|
45
|
+
# self.path = 1j / self.poles * kb * self.T
|
46
|
+
|
47
|
+
self.path = []
|
48
|
+
self.weights = []
|
49
|
+
for p, r in zip(self.poles, residules):
|
50
|
+
if p > 0:
|
51
|
+
self.path.append(1j / p * kb * self.T)
|
52
|
+
w = 2.0j / self.beta * r
|
53
|
+
self.weights.append(w)
|
54
|
+
self.path.append(-1j / p * kb * self.T)
|
55
|
+
self.weights.append(w)
|
56
|
+
|
57
|
+
self.path = np.array(self.path)
|
58
|
+
self.weights = np.array(self.weights)
|
59
|
+
|
60
|
+
# from J. Phys. Soc. Jpn. 88, 114706 (2019)
|
61
|
+
# A_mat = -1/2 *np.diag(1, -1) + np.diag(1, 1)
|
62
|
+
# B_mat = np.diag([2*i-1 for i in range(1, self.nz)])
|
63
|
+
# eigp, eigv = eig(A_mat, B_mat)
|
64
|
+
# zp = 1j / eigp * kb * self.T
|
65
|
+
# Rp = 0.25 * np.diag(eigv)**2 * zp **2
|
66
|
+
|
67
|
+
# add a point to the poles: 1e10j
|
68
|
+
self.path = np.concatenate((self.path, [self.Rinf * 1j]))
|
69
|
+
# self.path = np.concatenate((self.path, [0.0]))
|
70
|
+
self.npoles = len(self.poles)
|
71
|
+
|
72
|
+
# add weights for the point 1e10j
|
73
|
+
# self.weights = np.concatenate((self.weights, [-self.Rinf]))
|
74
|
+
self.weights = np.concatenate((self.weights, [00.0]))
|
75
|
+
# zeros moment is 1j * R * test_gf(1j * R), but the real part of it will be taken. In contrast to the other part, where the imaginary part is taken.
|
76
|
+
|
77
|
+
def integrate_values(self, gf_vals, imag=False):
|
78
|
+
ret = 0
|
79
|
+
for i in range(self.npoles + 1):
|
80
|
+
ret += self.weights[i] * gf_vals[i]
|
81
|
+
ret *= (
|
82
|
+
-np.pi / 2
|
83
|
+
) # This is to be compatible with the integration of contour, where /-np.pi is used after the integration. And the factor of 2 is because the Fermi function here is 2-fold degenerate.
|
84
|
+
if imag:
|
85
|
+
return np.imag(ret)
|
86
|
+
return ret
|
87
|
+
|
88
|
+
def integrate_func(self, gf, ef=0):
|
89
|
+
"""
|
90
|
+
Integration with the continued fraction representation.
|
91
|
+
|
92
|
+
:param gf: Green's function
|
93
|
+
:param ef: Fermi energy
|
94
|
+
:return: integration result
|
95
|
+
"""
|
96
|
+
path = self.path
|
97
|
+
gf_vals = gf(path, ef=ef)
|
98
|
+
return self.integrate_values(gf_vals)
|
99
|
+
|
100
|
+
|
101
|
+
def test_cfr():
|
102
|
+
cfr = CFR(nz=100)
|
103
|
+
|
104
|
+
def test_gf(z, ef=0.1):
|
105
|
+
return 1 / (z - 3 + ef)
|
106
|
+
|
107
|
+
r = cfr.integrate_func(test_gf, ef=2)
|
108
|
+
r = -np.imag(r) / np.pi * 2
|
109
|
+
print(r)
|
110
|
+
return r
|
111
|
+
|
112
|
+
|
113
|
+
if __name__ == "__main__":
|
114
|
+
test_cfr()
|
TB2J/orbital_magmom.py
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
"""
|
2
|
+
utilities to handel orbital magnetic moments
|
3
|
+
"""
|
4
|
+
|
5
|
+
import numpy as np
|
6
|
+
|
7
|
+
|
8
|
+
def complex_spherical_harmonic_to_real_spherical_harmonic(l=1):
|
9
|
+
"""
|
10
|
+
matrix to convert the complex spherical harmonics to real spherical harmonics
|
11
|
+
"""
|
12
|
+
MCR = np.zeros((2 * l + 1, 2 * l + 1), dtype=np.complex128)
|
13
|
+
MCR[0 + l, 0 + l] = 1.0
|
14
|
+
for m in range(1, l + 1):
|
15
|
+
mi = m + l
|
16
|
+
mpi = -m + l
|
17
|
+
MCR[mi, mi] = (-1) ** m / 2
|
18
|
+
MCR[mi, mpi] = 1.0 / 2
|
19
|
+
MCR[mpi, mi] = -1j * (-1) ** m / 2
|
20
|
+
MCR[mpi, mpi] = 1j / 2
|
21
|
+
|
22
|
+
return MCR
|
23
|
+
|
24
|
+
|
25
|
+
def test_complex_spherical_harmonic_to_real_spherical_harmonic():
|
26
|
+
"""
|
27
|
+
test the conversion matrix
|
28
|
+
"""
|
29
|
+
l = 3
|
30
|
+
MCR = complex_spherical_harmonic_to_real_spherical_harmonic(l)
|
31
|
+
# print(MCR*np.sqrt(2))
|
32
|
+
print(MCR * 2)
|
33
|
+
|
34
|
+
|
35
|
+
if __name__ == "__main__":
|
36
|
+
test_complex_spherical_harmonic_to_real_spherical_harmonic()
|
TB2J/orbmap.py
CHANGED
@@ -28,14 +28,14 @@ def map_orbs_matrix(orblist, spinor=False, include_only=None):
|
|
28
28
|
|
29
29
|
norb = len(orblist)
|
30
30
|
|
31
|
-
print("orblist: ", orblist)
|
31
|
+
# print("orblist: ", orblist)
|
32
32
|
ss = [split_orb_name(orb) for orb in orblist]
|
33
33
|
orbdict = dict(zip(ss, range(norb)))
|
34
34
|
|
35
35
|
reduced_orbdict = defaultdict(lambda: [])
|
36
36
|
|
37
|
-
print(f"Orbital dictionary: {orbdict}")
|
38
|
-
print("include_only: ", include_only)
|
37
|
+
# print(f"Orbital dictionary: {orbdict}")
|
38
|
+
# print("include_only: ", include_only)
|
39
39
|
|
40
40
|
if include_only is None:
|
41
41
|
for key, val in orbdict.items():
|
@@ -46,7 +46,7 @@ def map_orbs_matrix(orblist, spinor=False, include_only=None):
|
|
46
46
|
# [:2] for 3d, 4d, 5d, etc. and [:1] for s, p, d, etc
|
47
47
|
reduced_orbdict[key[0]].append(val)
|
48
48
|
|
49
|
-
print(f"reduced_orbdict: {reduced_orbdict}")
|
49
|
+
# print(f"reduced_orbdict: {reduced_orbdict}")
|
50
50
|
reduced_orbs = tuple(reduced_orbdict.keys())
|
51
51
|
ngroup = len(reduced_orbdict)
|
52
52
|
mmat = np.zeros((norb, ngroup), dtype=int)
|
TB2J/symmetrize_J.py
CHANGED
@@ -9,11 +9,12 @@ from TB2J.versioninfo import print_license
|
|
9
9
|
|
10
10
|
|
11
11
|
class TB2JSymmetrizer:
|
12
|
-
def __init__(self, exc, symprec=1e-8, verbose=True, Jonly=
|
12
|
+
def __init__(self, exc, symprec=1e-8, verbose=True, Jonly=True):
|
13
13
|
# list of pairs with the index of atoms
|
14
14
|
ijRs = exc.ijR_list_index_atom()
|
15
15
|
finder = SymmetryPairFinder(atoms=exc.atoms, pairs=ijRs, symprec=symprec)
|
16
16
|
self.verbose = verbose
|
17
|
+
self.Jonly = Jonly
|
17
18
|
|
18
19
|
if verbose:
|
19
20
|
print("=" * 30)
|
@@ -24,6 +25,12 @@ class TB2JSymmetrizer:
|
|
24
25
|
)
|
25
26
|
print("-" * 30)
|
26
27
|
if exc.has_dmi:
|
28
|
+
# raise NotImplementedError(
|
29
|
+
# "Symmetrization of DMI is not yet implemented."
|
30
|
+
# )
|
31
|
+
# raise Warning(
|
32
|
+
# "WARNING: Symmetrization of DMI is not yet implemented."
|
33
|
+
# )
|
27
34
|
print(
|
28
35
|
"WARNING: Currently only the isotropic exchange is symmetrized. Symmetrization of DMI and anisotropic exchange are not yet implemented."
|
29
36
|
)
|
@@ -32,7 +39,7 @@ class TB2JSymmetrizer:
|
|
32
39
|
print("Symmetry found:")
|
33
40
|
print(finder.spacegroup)
|
34
41
|
print("-" * 30)
|
35
|
-
self.
|
42
|
+
self.pldict = finder.get_symmetry_pair_list_dict()
|
36
43
|
self.exc = exc
|
37
44
|
self.new_exc = copy.deepcopy(exc)
|
38
45
|
self.Jonly = Jonly
|
@@ -45,21 +52,25 @@ class TB2JSymmetrizer:
|
|
45
52
|
Symmetrize the exchange parameters J.
|
46
53
|
"""
|
47
54
|
symJdict = {}
|
55
|
+
reduced_symJdict = {}
|
48
56
|
# Jdict = self.exc.exchange_Jdict
|
49
|
-
|
50
|
-
|
51
|
-
ijRs = pairgroup.get_all_ijR()
|
57
|
+
for ishell, pairlist in enumerate(self.pldict.pairlists):
|
58
|
+
ijRs = pairlist.get_all_ijR()
|
52
59
|
ijRs_spin = [self.exc.ijR_index_atom_to_spin(*ijR) for ijR in ijRs]
|
53
60
|
Js = [self.exc.get_J(*ijR_spin) for ijR_spin in ijRs_spin]
|
54
61
|
Javg = np.average(Js)
|
55
62
|
for i, j, R in ijRs_spin:
|
56
63
|
symJdict[(R, i, j)] = Javg
|
64
|
+
ijRs_ref = ijRs_spin[0]
|
65
|
+
i, j, R = ijRs_ref
|
66
|
+
reduced_symJdict[(R, i, j)] = Javg
|
57
67
|
self.new_exc.exchange_Jdict = symJdict
|
58
68
|
if self.Jonly:
|
59
69
|
self.new_exc.has_dmi = False
|
60
70
|
self.new_exc.dmi_ddict = None
|
61
71
|
self.new_exc.has_bilinear = False
|
62
72
|
self.new_exc.Jani_dict = None
|
73
|
+
self.new_exc.reduced_exchange_Jdict = reduced_symJdict
|
63
74
|
self.has_uniaxial_anisotropy = False
|
64
75
|
self.k1 = None
|
65
76
|
self.k1dir = None
|
@@ -123,11 +134,12 @@ def symmetrize_J_cli():
|
|
123
134
|
help="precision for symmetry detection. default is 1e-5 Angstrom",
|
124
135
|
)
|
125
136
|
|
126
|
-
parser.add_argument(
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
137
|
+
# parser.add_argument(
|
138
|
+
# "--Jonly",
|
139
|
+
# action="store_true",
|
140
|
+
# help="symmetrize only the exchange parameters and discard the DMI and anisotropic exchange",
|
141
|
+
# default=True,
|
142
|
+
# )
|
131
143
|
|
132
144
|
args = parser.parse_args()
|
133
145
|
if args.inpath is None:
|
@@ -137,7 +149,8 @@ def symmetrize_J_cli():
|
|
137
149
|
path=args.inpath,
|
138
150
|
output_path=args.outpath,
|
139
151
|
symprec=args.symprec,
|
140
|
-
Jonly=args.Jonly,
|
152
|
+
# Jonly=args.Jonly,
|
153
|
+
Jonly=True,
|
141
154
|
)
|
142
155
|
|
143
156
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.9rc7
|
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
|
@@ -14,15 +14,24 @@ Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
14
|
Classifier: License :: OSI Approved :: BSD License
|
15
15
|
Requires-Python: >=3.6
|
16
16
|
License-File: LICENSE
|
17
|
-
Requires-Dist: numpy
|
17
|
+
Requires-Dist: numpy<2.0
|
18
18
|
Requires-Dist: scipy
|
19
19
|
Requires-Dist: matplotlib
|
20
|
-
Requires-Dist: ase
|
20
|
+
Requires-Dist: ase>=3.19
|
21
21
|
Requires-Dist: tqdm
|
22
22
|
Requires-Dist: pathos
|
23
|
-
Requires-Dist: packaging
|
24
|
-
Requires-Dist: HamiltonIO
|
23
|
+
Requires-Dist: packaging>=20.0
|
24
|
+
Requires-Dist: HamiltonIO>=0.1.9
|
25
25
|
Requires-Dist: pre-commit
|
26
|
-
Requires-Dist: sympair
|
26
|
+
Requires-Dist: sympair>0.1.0
|
27
|
+
Dynamic: author
|
28
|
+
Dynamic: author-email
|
29
|
+
Dynamic: classifier
|
30
|
+
Dynamic: description
|
31
|
+
Dynamic: license
|
32
|
+
Dynamic: license-file
|
33
|
+
Dynamic: requires-dist
|
34
|
+
Dynamic: requires-python
|
35
|
+
Dynamic: summary
|
27
36
|
|
28
37
|
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.
|
@@ -1,35 +1,37 @@
|
|
1
|
-
TB2J/Jdownfolder.py,sha256=
|
1
|
+
TB2J/Jdownfolder.py,sha256=xs0gmcKwOA3ejXqk3JPPgnYVu8CvkK8cteuvHuu1oSk,9603
|
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=pCX12GDNaOz8XgMlui8NjAERM43Ux3HyOKfiD80czXI,15306
|
5
5
|
TB2J/Oiju.py,sha256=cNGv8N5uH_swGq7cnAt2OyiDfqtjLlLrwseGu0E4iaM,3383
|
6
6
|
TB2J/Oiju_epc.py,sha256=oytM3NYW7nWmklrGgNlqwIpI_JYv_hb7ZnR4o9nYNog,6809
|
7
7
|
TB2J/__init__.py,sha256=hcEWkag_UvLm1ZSbjsgcTWkGVlR3Bwmzg1QYAwsvf-g,24
|
8
|
-
TB2J/anisotropy.py,sha256=
|
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
|
11
|
-
TB2J/contour.py,sha256=
|
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=
|
15
|
-
TB2J/exchangeCL2.py,sha256=
|
16
|
-
TB2J/exchange_params.py,sha256=
|
14
|
+
TB2J/exchange.py,sha256=742vEE8DQJuWBTlq45RQoPy0-_n_TT6BZOb_DoTpDKI,25739
|
15
|
+
TB2J/exchangeCL2.py,sha256=P7bklMXVYX_tn9DbjEPqeTir1SeZyfPBIP1fhWUzLmY,11419
|
16
|
+
TB2J/exchange_params.py,sha256=AcGYYky27DXSF3yDZWVjksr_3rt6im6qeIzpOwvqssk,7141
|
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
|
20
|
-
TB2J/green.py,sha256=
|
20
|
+
TB2J/green.py,sha256=ySXjoV3Cj_E2C41dRfc3TkS7M4vmM6qcHXkt-_-jxsY,17071
|
21
21
|
TB2J/greentest.py,sha256=2ISSfhor9ecSEOi_E6b4Cv26wEIQlwlzca0ru8z44_E,1603
|
22
22
|
TB2J/io_merge.py,sha256=E1_GfAB2HGpW-ipaO2lqU9SvaslwkiLxssn4DqJpMT8,6899
|
23
|
-
TB2J/kpoints.py,sha256=
|
23
|
+
TB2J/kpoints.py,sha256=9L7tBarFBHoIhpuc9zuwA6HdnlgH834SQrPek4yRoWk,3191
|
24
24
|
TB2J/myTB.py,sha256=ok_B4my29bOIghMSZfx0Es6G8FaXaIiLP4gPxTdSj00,17659
|
25
|
-
TB2J/
|
25
|
+
TB2J/mycfr.py,sha256=Wgj6PpA-oVuxm8Hh32FVw_vthozVBrDJhRV1hA1ku44,3752
|
26
|
+
TB2J/orbital_magmom.py,sha256=JTwO9ZDgRRQndqR9aFIua4eTvwLMoGsTiY_HaIPMZ2I,889
|
27
|
+
TB2J/orbmap.py,sha256=XLQjKMxCy2eADaM5eb2F_zG08V7lzpXJxp5uEtTeVYI,7194
|
26
28
|
TB2J/pauli.py,sha256=ESpAhk6LG5ugzuW1YFUTqiDxcg-pQ7wNnzR2FtUnvKM,5295
|
27
29
|
TB2J/pert.py,sha256=RaCJfewl0doht4cjAnzzGKe-uj2le4aqe0iPKFrq9fo,1192
|
28
30
|
TB2J/plot.py,sha256=AnFIFWE2vlmj7Z6f_7-dX_O1stJN-qbuiurPj43dUCM,4104
|
29
31
|
TB2J/rotate_atoms.py,sha256=Dwptn-wdDW4zYzjYb95yxTzuZOe9WPuLjh3d3-YcSs0,3277
|
30
32
|
TB2J/rotate_siestaDM.py,sha256=eR97rspdrRaK9YTwQwUKfobI0S9UnEcbEZ2f5IgR7Tk,1070
|
31
33
|
TB2J/sisl_wrapper.py,sha256=A5x1-tt8efUSPeGY5wM5m6-pJYQFXTCzQHVqD6RBa2g,14792
|
32
|
-
TB2J/symmetrize_J.py,sha256=
|
34
|
+
TB2J/symmetrize_J.py,sha256=gN6Y8zV4IrO5rPh0SG8KHkekrJjMQzNY4GGe2ZBtwbc,4993
|
33
35
|
TB2J/tensor_rotate.py,sha256=4-DfT_Mg5e40fbd74M5W0D5DqmUq-kVOOLDkkkI834A,8083
|
34
36
|
TB2J/utest.py,sha256=z_ahi7tpHQF9WlHNQihcQ7qzfezRJQXQt28eB1X_z64,3897
|
35
37
|
TB2J/utils.py,sha256=DHkc7BK0KUGesfoAv1OxMgIw_iZzcFXh--3ybsFSd_c,12535
|
@@ -40,7 +42,7 @@ TB2J/interfaces/__init__.py,sha256=4tiLoXQ73Nlyi9L4j8jJXOYzXluVNPxQZkwfkQZEGHg,3
|
|
40
42
|
TB2J/interfaces/gpaw_interface.py,sha256=GCDlJ-hRWfChvWwsgBDYSmVqO4sH9HAuGZTV9GqgN6c,1504
|
41
43
|
TB2J/interfaces/lawaf_interface.py,sha256=PieLnmppdafOYsgeHznqOou1g9L1sam5jOm3KaObdqo,4408
|
42
44
|
TB2J/interfaces/manager.py,sha256=PQMLEfMCT5GnDWSl2nI4JOgRPm_fysyR-6Y6l97xWcw,860
|
43
|
-
TB2J/interfaces/siesta_interface.py,sha256=
|
45
|
+
TB2J/interfaces/siesta_interface.py,sha256=olvo2xdBOSNk3zn67nuKrxbW--EKPoWwEzKRBwJbrVY,7366
|
44
46
|
TB2J/interfaces/wannier90_interface.py,sha256=qzRgXUBb7t1Aiegrl_RV51BB8csdtVM0EP0Z4pjmTcs,4467
|
45
47
|
TB2J/interfaces/abacus/__init__.py,sha256=leas71oCvM_HxrF4gnO5A_VKcJmDAgsI1BUctLU3OBw,177
|
46
48
|
TB2J/interfaces/abacus/abacus_api.py,sha256=lNV4LNkLcKw7Zux4MQYM9wnh3eFTlcSqbf4Pb7pqhrk,7243
|
@@ -52,7 +54,8 @@ TB2J/interfaces/abacus/test_density_matrix.py,sha256=bMWWJYtDS57SpPZ-eZXZ9Hr_UK4
|
|
52
54
|
TB2J/interfaces/abacus/test_read_HRSR.py,sha256=W1oO_yigT50Yb5_u-KB_IfTpM7kArGkBuMSMs0H4CTs,1235
|
53
55
|
TB2J/interfaces/abacus/test_read_stru.py,sha256=hoKPHVco8vwzC7Gao4bOPCdAPhh29x-9DTJJqRr7AYM,788
|
54
56
|
TB2J/io_exchange/__init__.py,sha256=KfGHum7B8E4G_KKfillqw0lErtoyKEuFUUttHLs-mg4,32
|
55
|
-
TB2J/io_exchange/io_exchange.py,sha256=
|
57
|
+
TB2J/io_exchange/io_exchange.py,sha256=7-Xt7_K5FKVrFkFvBrHhJGCRrL2Sw7zY-93GRBBv2GM,21050
|
58
|
+
TB2J/io_exchange/io_matjes.py,sha256=klM5Z_t2kk0y_1IoqIILLnhUgjHQmXXmsXiono2LeMU,8594
|
56
59
|
TB2J/io_exchange/io_multibinit.py,sha256=8PDmWxzGuv-GwJosj2ZTmiyNY_duFVWJ4ekCuSqGdd8,6739
|
57
60
|
TB2J/io_exchange/io_tomsasd.py,sha256=NqkAC1Fl-CUnFA21eBzSy_S5F_oeQFJysw4UukQbN8o,4173
|
58
61
|
TB2J/io_exchange/io_txt.py,sha256=BMr1eSILlKpgtjvDx7uw2VMAkEKSvGEPNxpaT_zev0I,10547
|
@@ -60,6 +63,7 @@ TB2J/io_exchange/io_uppasd.py,sha256=bI4iPEgnK4TvCZNvb6x2xYXgjW7pEehCqmcizy2pqFU
|
|
60
63
|
TB2J/io_exchange/io_vampire.py,sha256=UllC4twf06_q2vBCnAYFzEDGvS8mSefwQXDquBuyc0M,5583
|
61
64
|
TB2J/mathutils/__init__.py,sha256=tQLBfHkZqdVfVxPOahy42qMUkFYnFFFhM-uc4QsYFxI,27
|
62
65
|
TB2J/mathutils/fermi.py,sha256=72tZ5CptGmYaBUD0xLWltuH7LBXcrMUwODyW6-WqlzI,638
|
66
|
+
TB2J/mathutils/fibonacci_sphere.py,sha256=l0USn25ZCAWF6l4UleyWaeLthsj9TThV9iWmfi6DbaM,2344
|
63
67
|
TB2J/mathutils/kR_convert.py,sha256=p_9XWJVNanTzTK2rI6KRjTkbSq42la6N448-zJOsMwY,2671
|
64
68
|
TB2J/mathutils/lowdin.py,sha256=RYbm9OcnFnjcZFdC5YcNUsI9cOJmoDLsWSSCaP0GqKQ,499
|
65
69
|
TB2J/mathutils/rotate_spin.py,sha256=lbGzve_36FyNjanXqdxYDb102kA4_5OycRlBcm-tH-g,8360
|
@@ -76,19 +80,19 @@ TB2J/spinham/supercell.py,sha256=y17uUC6r3gQb278FhxIW4CABihfLTvKFj6flyXrCPR8,122
|
|
76
80
|
TB2J/wannier/__init__.py,sha256=7ojCbM84PYv1X1Tbo4NHI-d3gWmQsZB_xiYqbfxVV1E,80
|
77
81
|
TB2J/wannier/w90_parser.py,sha256=dbd63LuKyv2DVUzqRINGsbDzEsOxsQyE8_Ear_LQIRg,4620
|
78
82
|
TB2J/wannier/w90_tb_parser.py,sha256=qt8pnuprmPp9iIAYwPkPbmEzk6ZPgMq2xognoQp7vwc,4610
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
83
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_downfold.py,sha256=i4BVqnpDdgrX_amookVWeLGefGBn-qeAutWiwuY9SfQ,2099
|
84
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_eigen.py,sha256=Qs9v2hnMm2Tpfoa4h53muUKty2dZjwx8948MBoQooNg,1128
|
85
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_magnon.py,sha256=q7UwAmorRcFNk4tfE7gl_ny05l6p7pbD9Wm_LkIpKEw,3101
|
86
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_magnon_dos.py,sha256=TMXQvD2dIbO5FZ4tUMmxJgCgH2O2hDAPUNfEKO4z-x4,110
|
87
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_merge.py,sha256=y834SF4rIRn1L1ptkhczvavQpC-8Px6DTmDOOSaq_DE,1854
|
88
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_rotate.py,sha256=zgiDFuYZNmzKK0rwDmTaYD2OpRlmKA_VGeBx83w2Xwc,873
|
89
|
+
tb2j-0.9.9rc7.data/scripts/TB2J_rotateDM.py,sha256=kCvF7gotuqAX1VnJ06cwfVm7RrhrdtiV5v7d9P2Pn_E,567
|
90
|
+
tb2j-0.9.9rc7.data/scripts/abacus2J.py,sha256=0HLXoJhAkiZ-ZM1cs26lncccxE8-TzC8JiDTba1h1uM,4163
|
91
|
+
tb2j-0.9.9rc7.data/scripts/siesta2J.py,sha256=gp31LioqpPkDmMY0y_5gXIjOBPNnf080P37pRo0yjw8,4886
|
92
|
+
tb2j-0.9.9rc7.data/scripts/wann2J.py,sha256=pTFDf6h72I_LN_NX5UivyCoJPgwvyAyHW175nSAJvLo,2987
|
93
|
+
tb2j-0.9.9rc7.dist-info/licenses/LICENSE,sha256=CbZI-jyRTjiqIcWa244cRSHJdjjtUNqGR4HeJkgEwJw,1332
|
94
|
+
tb2j-0.9.9rc7.dist-info/METADATA,sha256=H5g8ApE237zxKx8_mx0Fr1fUCz2m97VkgDY5LBFYzlg,1660
|
95
|
+
tb2j-0.9.9rc7.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
96
|
+
tb2j-0.9.9rc7.dist-info/entry_points.txt,sha256=Hdz1WC9waUzyFVmowKnbbZ6j-J4adHh_Ko6JpxGYAtE,131
|
97
|
+
tb2j-0.9.9rc7.dist-info/top_level.txt,sha256=whYa5ByLYhl5XnTPBHSWr-IGD6VWmr5Ql2bye2qwV_s,5
|
98
|
+
tb2j-0.9.9rc7.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
|