[Wannier] k-gradient implementation

Lun Yue lun_yue at msn.com
Wed Nov 8 23:15:28 CET 2023


Hi Junfeng,

Thank you for the useful information! Indeed I looked into the kmesh.f90 
file and they have a defined the internal_maxloc function for this 
purpose of getting repeatable ordering.

I have now implemented the shell-search-approach in my own 
time-dependent code and it works very well. I can confirm that is much 
more accurate (spherically symmetric) than the 6-point approach to 
calculate the gradient. I implemented the gradient with both second 
accuracy and third order accuracy (in this case the A in Aw=q is a 
21xN_s matrix instead of 6xN_s matrix), and I can see improvements in 
the resulting observables.

Thanks again Junfeng, Nicola, and Jonathan for all your help!

Best regards,

Lun

Louisiana State University


On 11/7/23 4:38 AM, Junfeng Qiao wrote:
> Hi Lun,
>
> I did some experimentations with bvectors some while ago, as far as I understand, in principle, the bvectors can be independent of k-points. However, W90 sorts the bvecotors such that they are ordered according to some rules: this removes some arbitrariness so that the bvectors thus the MMN file can be generated in a deterministic way, i.e., you could run wannier90.x multiple times and there won't be collision between the current bvectors and the ones in MMN file.
>
> The rules are somewhat difficult to explain in plain sentence, the best resource should be the src/kmesh.F90 file. In short, (at each kpoint) the bvectors are first sorted by their norm in ascending order, then by the index of the supercell used to generate a large mesh for searching bvectors, then the index of the kpoints.
>
> You could also manually write a nnkp file with fixed bvector ordering at each kpoint, then use that nnkp to compute MMN file, then restart Wannierization with such bvector order. As long as bvector orderings during the whole process are consistent, there will be no issue.
>
> Best,
> Junfeng
>
> THEOS, EPFL
>
>> On 6 Nov 2023, at 6:42 PM, Lun Yue <lun_yue at msn.com> wrote:
>>
>> Dear Nicola and Jonathan,
>>
>> Thank you for the expedient reply! This has been very helpful!
>>
>> I have a followup question: in the output ".bvec" file, is there any particular reason why the set of b-vectors are written out for each k-point? Are there situations where the set of b-vectors differs from k-point to k-point?
>>
>> Best regards,
>>
>> Lun
>>
>> Louisiana State University
>>
>>
>> On 11/4/23 6:04 AM, Jonathan Yates wrote:
>>> Dear Yue,
>>>
>>>   In support of Nicola’s comments: a long time I did some comparisons of the B1 approach from MV97, and the simpler 6 neighbour approach. I didn’t look at the resulting MLWF - rather I looked at the form of the position operator they lead to. Indeed, for the same k-point mesh the B1 approach gives a more accurate position operator - and also a more symmetric representation. See
>>> http://www.tcm.phy.cam.ac.uk/~jry20/wannier/pos_op.html
>>>
>>>   Jonathan
>>>>>> Prof. Jonathan Yates
>>> Professor of Materials Modelling, Dept of Materials, University of Oxford
>>> Tutor for Materials Science, St Edmund Hall, Oxford.
>>>
>>>> On 4 Nov 2023, at 02:55, Nicola Marzari <nicola.marzari at epfl.ch> wrote:
>>>>
>>>>
>>>> Dear Yue,
>>>>
>>>> admittedly both are easy - but think e.g. at a fcc lattice - its reciprocal lattice is bcc, 8 neighbours, and calculating the gradient using those 8 b_k vectors will be more accurate, at a given sampling, than just using 3.
>>>>
>>>> nicola
>>>>
>>>>
>>>>
>>>> On 03/11/2023 23:55, Lun Yue wrote:
>>>>> Dear all,
>>>>> I have a question regarding the implementation of the k-gradient.
>>>>> 1) In Wannier90, it is implemented by constructing the weights such that the completeness relation is fully satisfied [Eq. (B1), PRB 56, 12847 (1997)].
>>>>> 2) Another approach would be to calculate the numerical derivatives along the reciprocal lattice vectors (which is easy as the quantities are given in a Monkhorst-Pack grid), and then transform to the Cartesian coordinates using the metric tensor and the reciprocal lattice vectors.
>>>>> I am wondering why approach 1) was implemented over approach 2) in Wannier90. The second approach seems to be easier, or does approach 2) fail in some cases?
>>>>> Best regards,
>>>>> Lun Yue
>>>>> Louisiana State University
>>>>> _______________________________________________
>>>>> Wannier mailing list
>>>>> Wannier at lists.quantum-espresso.org
>>>>> https://lists.quantum-espresso.org/mailman/listinfo/wannier
>>>> -- 
>>>> ----------------------------------------------------------------------
>>>> Prof Nicola Marzari, Chair of Theory and Simulation of Materials, EPFL
>>>> Director, National Centre for Competence in Research NCCR MARVEL, SNSF
>>>> Head, Laboratory for Materials Simulations, Paul Scherrer Institut
>>>> Contact info and websites at http://theossrv1.epfl.ch/Main/Contact
>>>>
>>>> _______________________________________________
>>>> 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


More information about the Wannier mailing list