[Wannier] Unitary property of U^{dis}

周哲弘 lion08130716 at gmail.com
Fri Mar 13 08:51:39 CET 2020


Hello Professor Arash Mostofi and Hung,



Thanks for replying my question so quickly and thank Hung for providing
your code.

I think that might be some problem with my seedname_u_dis.mat.

I tried to use Hung’s code to check my seedname_u_dis.mat but the result
showed the U^{dis} matrix is still not unitary, so I run the wannier90
again and I found that the segmentation fault (forrtl: severe (174):
SIGSEGV, segmentation fault occurred) appeared in my window. The wannier90
still can output the seedname_u.mat and seedname_u_dis.mat, and I have
checked the U matrix is unitary but U^{dis} matrix is not.

Is there any way to fix the segmentation fault error?



The link (
https://drive.google.com/drive/folders/1-FptFSxeMugjKk27V9OKiYKQdSbyPQkP?usp=sharing)
contains some of my input and output file.

The following is my input setting (seedname.win) .

num_wann = 11

num_bands = 32



!postproc_setup = T

guiding_centres = T



begin projections

S:p

Mo:d

end projections



!bands_plot = T

!begin kpoint_path

!K 0.333 -0.333 0.000 G 0.000 0.000 0.000

!G 0.000 0.000 0.000 M 0.500 0.000 0.000

!M 0.500 0.000 0.000 K 0.333 -0.333 0.000

!end kpoint_path

!bands_num_points = 79



dis_win_min = -8

dis_froz_min = -7

dis_froz_max = 3



!wannier_plot = T

!wannier_plot_supercell = 5 5 1



!write_xyz = T

write_u_matrices = T

write_hr = T



begin unit_cell_cart

     1.5900000     2.7539610     0.0000000

    -1.5900000     2.7539610     0.0000000

     0.0000000     0.0000000    15.0000000

end unit_cell_cart



begin atoms_cart

Mo      -0.0000000     3.6719461     7.5000000

S        0.0000000     1.8359713     9.0639323

S        0.0000000     1.8359713     5.9360677

end atoms_cart



mp_grid =    24    24     1


Hung Pham <phamx494 at umn.edu> 於 2020年3月4日 週三 上午9:15寫道:
>
> Hello Che-Hong,
>
> I think it is possible that the U_dis matrix wasn't read and stored
properly. U and U_dis matrix must be unitary.
> And the orthogonality of U_dis is always checked internally using the
internal_check_orthonorm() function in disentangle.F90 as Arash mentioned.
> I just included a function to read wannier90 U_matrices (either U_mat or
U_mat_opt) in my MCU package. Please see the function here.
>
> The unitary of U or U_dis can be checked by using a simple python script:
>
> import numpy as np
> import mcu
> kpts, U_kpts = mcu.read_U_matrix("wannier90_u_dis.mat")
> nkpts, nband, nwann = U_kpts.shape
> for i, kpt in enumerate(kpts):
>     is_unitary = np.linalg.norm(U_kpts[i].T.conj() @ U_kpts[i] -
np.eye(nwann)) < 1.e-8
>     print("kpt = {0:6.3f} {1:6.3f} {2:6.3f} ;Is U_kpt unitary?:
{3}".format(kpt[0], kpt[1], kpt[2], is_unitary))
>
> I attached the in/out files from my testing on the MoS2 layer so you can
check it out yourself.
> Let me know if it solves your problem.
>
> Best,
> Hung
>
>
> On Tue, Mar 3, 2020 at 11:42 AM Mostofi, Arash <a.mostofi at imperial.ac.uk>
wrote:
>>
>> Dear Che-Hong
>> I believe the code internally does this check (in subroutine dis_project
in src/disentangle.F90) and reports an error if it is not satisfied.
Admittedly, I’ve never explicitly checked that u_matrix_opt, as written to
the seed name_u_dis.mat file, satisfies it... Note that the order of the
matrix multiplication matters: U_{dis}^{\dagger}U_{dis} = 1, but not
U_{dis}U_{dis}^{\dagger}, so a little care is needed in the evaluation.
Perhaps you could check and, if you are sure it’s a problem, then post your
input and output files (and script to read the matrices and evaluate the
matrix product) and someone will try to take a look.
>> Best wishes,
>> Arash
>>
>>>> Professor Arash Mostofi — www.mostofigroup.org
>> Director, CDT in Theory and Simulation of Materials
>> Imperial College London
>>
>>
>>
>>
>> On 1 Mar 2020, at 14:00, 周哲弘 <lion08130716 at gmail.com> wrote:
>>
>> Dear Wannier developers
>>
>>
>>
>> I have used a combination of VASP (PAW-GGA package) and Wannier90 to
obtain
>>
>> MLWFs in the system of monolayer MoS2.
>>
>>
>>
>> Recently I am trying to output the U and U^{dis} matrices
(seedname_u.mat and seedname_u_dis.mat), and I find that U^{dis} doesn’t
follow the rule (U^{dis})dagger* U^{dis}=1 (User Guide v3.0, p.14, footnote
2).
>>
>>
>>
>> Could anyone help me with this problem?
>>
>>
>>
>> Che-Hong Chou
>>
>> Graduate Student
>>
>> Department of Electrophysics
>>
>> National Chiao Tung University
>>
>> Taiwan
>>
>>
>>
>>
>>
>> _______________________________________________
>> Wannier mailing list
>> Wannier at lists.quantum-espresso.org
>> https://lists.quantum-espresso.org/mailman/listinfo/wannier
>>
>>
>> _______________________________________________
>> Wannier mailing list
>> Wannier at lists.quantum-espresso.org
>> https://lists.quantum-espresso.org/mailman/listinfo/wannier
>
>
>
> --
>
> Hung Q. Pham
> Gagliardi Group
> Office: Smith 101
> Email: phamx494 at umn.edu
> Personal page: hungpham2017.github.io
> Department of Chemistry
> University of Minnesota - Twin Cities, Minneapolis, MN 55455

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/wannier/attachments/20200313/65d3adff/attachment.html>


More information about the Wannier mailing list