Re: [Wannier] k-gradient implementation

2023-11-08 Thread Lun Yue

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  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  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@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@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier

___
Wannier mailing list
Wannier@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier

___
Wannier mailing list
Wannier@lists.quantum-espresso.org

Re: [Wannier] k-gradient implementation

2023-11-07 Thread Junfeng Qiao
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  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  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@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@lists.quantum-espresso.org
>>> https://lists.quantum-espresso.org/mailman/listinfo/wannier
> ___
> Wannier mailing list
> Wannier@lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/wannier

___
Wannier mailing list
Wannier@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier


Re: [Wannier] k-gradient implementation

2023-11-06 Thread Lun Yue

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  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@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@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier

___
Wannier mailing list
Wannier@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier


Re: [Wannier] k-gradient implementation

2023-11-04 Thread Jonathan Yates
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  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@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@lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/wannier

___
Wannier mailing list
Wannier@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier


Re: [Wannier] k-gradient implementation

2023-11-03 Thread Nicola Marzari



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@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@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier


[Wannier] k-gradient implementation

2023-11-03 Thread Lun Yue

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@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/wannier