Skip to content

Commit 2689171

Browse files
phibeckthe-hampel
authored andcommitted
[fix] WannierBerri velocity updates
This commit simplifies the WannierBerri/numpy import, and fixes an issue in the velocity matrix elements in the Wannier gauge.
1 parent 55847d7 commit 2689171

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

python/triqs_dft_tools/sumk_dft_transport.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323

2424
##########################################################################
2525
import sys
26+
try: # try wannierberri import - needs to be placed before importing numpy
27+
import wannierberri as wb
28+
except ImportError:
29+
pass
2630
import numpy
2731
from warnings import warn
2832
from triqs.gf import *
@@ -253,23 +257,18 @@ def recompute_w90_input_on_different_mesh(sum_k, seedname, nk_optics, pathname='
253257
inverse_mass = None
254258

255259
if mpi.is_master_node():
256-
# try wannierberri import
257-
try:
258-
import wannierberri as wb
259-
except ImportError:
260+
261+
if 'wannierberri' not in sys.modules:
260262
print('ImportError: WannierBerri needs to be installed to run optics calculations with Wannier90')
261263
try:
262264
mpi.MPI.COMM_WORLD.Abort(1)
263265
except:
264266
sys.exit()
265267
# initialize WannierBerri system
266268
shift_gamma = numpy.array([0.0, 0.0, 0.0])
267-
# wberri = wb.System_w90(pathname + seedname, berry=True, fft='numpy')
268-
# WannierBerri uses python multiprocessing which might conflict with mpi.
269-
# if there's a segfault, uncomment the following line
270-
wberri = wb.System_w90(pathname + seedname, berry=True, fftlib='numpy', npar=16)
269+
wberri = wb.System_w90(pathname + seedname, berry=True)
271270
grid = wb.Grid(wberri, NKdiv=1, NKFFT=[nk_x, nk_y, nk_z])
272-
dataK = wb.data_K.Data_K_R(wberri, dK=shift_gamma, grid=grid, fftlib='numpy')
271+
dataK = wb.data_K.Data_K_R(wberri, dK=shift_gamma, grid=grid)
273272

274273
assert dataK.HH_K.shape == hopping[:, 0, :, :].shape, 'wberri / wannier Hamiltonian has different number of orbitals than SumK object. Disentanglement is not supported as of now.'
275274

@@ -327,11 +326,12 @@ def _commutator(A, B):
327326
# in the orbital basis
328327
# vw_alpha = Hw_alpha + i [Hw, Aw_alpha]
329328
elif oc_basis == 'w':
330-
# first term, taken from
331-
# github.com/wannier-berri/wannier-berri/blob/2d3982331c02775f5ee033c664849d5f2d41d0c1/wannierberri/data_K.py#L687
332-
Hw_alpha = wb.data_K.Data_K_R._R_to_k_H(dataK, dataK.Ham_R, der=1, hermitian=True)
329+
# first term
330+
Hw_R = dataK.get_R_mat('Ham').copy()
331+
Hw_alpha = dataK.rvec.R_to_k(Hw_R, hermitian=True, der=1)[dataK.select_K]
333332
# second term
334-
Aw_alpha = dataK.fft_R_to_k(dataK.get_R_mat('AA'), hermitian=True)
333+
Aw_R = dataK.get_R_mat('AA').copy()
334+
Aw_alpha = dataK.rvec.R_to_k(Aw_R, hermitian=True)[dataK.select_K]
335335
c_Hw_Aw_alpha = _commutator(hopping[:, 0, :, :], Aw_alpha)
336336
velocities_k = (Hw_alpha + 1j * c_Hw_Aw_alpha) / HARTREETOEV / BOHRTOANG
337337

0 commit comments

Comments
 (0)