Hello,
I have a question involving wannier90 and the convergence of the spread. When following through the tutorial on wannier90 "Tutorial preparing Wannier90 run" I follow the exact steps in the tutorial. cp ../tw90_1.files, cp ../tw90_1.in, and cp ../wannier90.win. To the best of my knowledge and by looking through these simple files this is all I should need for this wannier calculation on Si.
I run the calculation using: abinit < tw90_1.files >& log, and it completes with a wannier.wout file. If I: grep DIS wannier90.wout, I get nothing.
However, if I: grep CONV wannier90.wout I get the following output:
+--------------------------------------------------------------------+<-- CONV
| Iter Delta Spread RMS Gradient Spread (Ang^2) Time |<-- CONV
+--------------------------------------------------------------------+<-- CONV
0 0.525E+02 0.0000000000 52.4606835457 0.06 <-- CONV
1 0.000E+00 0.0000000000 52.4606835457 2.14 <-- CONV
2 0.000E+00 0.0000000000 52.4606835457 4.20 <-- CONV
3 0.000E+00 0.0000000000 52.4606835457 6.27 <-- CONV
4 0.000E+00 0.0000000000 52.4606835457 8.36 <-- CONV
.
.
.
197 0.000E+00 0.0000000000 52.4606835457 412.07 <-- CONV
198 0.000E+00 0.0000000000 52.4606835457 414.16 <-- CONV
199 0.000E+00 0.0000000000 52.4606835457 416.25 <-- CONV
200 0.000E+00 0.0000000000 52.4606835457 418.35 <-- CONV
As can be seen the spread has not converged at all and has stayed at the same initial spread of 52.46 Ang^2. I have completed other tests using wannier90 with abinit and they do not converge either. My question is if I have a problem with the code or is the tutorial simply outdated and I should be using different parameters in my input.
Thank you for your time!
wannier90 convergence
Re: wannier90 convergence
Hi,
It's normal that grep DIS wannier90.wout returns nothing become no disentanglement is done in this tutorial.
For the convergence though, your results are perplexing. I tried to run the tutorial and it worked great. The spread started at 52.46 like yours but quickly converged to 4 (or something like that). Have you modified the input?
Else, did you check the tests results from you compilation of ABINIT? (make tests_min)
Cheers,
Simon
It's normal that grep DIS wannier90.wout returns nothing become no disentanglement is done in this tutorial.
For the convergence though, your results are perplexing. I tried to run the tutorial and it worked great. The spread started at 52.46 like yours but quickly converged to 4 (or something like that). Have you modified the input?
Else, did you check the tests results from you compilation of ABINIT? (make tests_min)
Cheers,
Simon
Re: wannier90 convergence
Hi,
Sorry if this is interrupting your discussion but I'd like to ask a question concerning the spread convergence. Does spread convergence only mean that the spread remains constant after a certain number of iterations? or Does it mean that the spread remains constant after a certain number of iterations and the final value (the good value of the spread) must also be small, let's say less than 10 for Si?
Kind regards,
Thanusit
Sorry if this is interrupting your discussion but I'd like to ask a question concerning the spread convergence. Does spread convergence only mean that the spread remains constant after a certain number of iterations? or Does it mean that the spread remains constant after a certain number of iterations and the final value (the good value of the spread) must also be small, let's say less than 10 for Si?
Kind regards,
Thanusit
Re: wannier90 convergence
Hello,
First I want to say thank you for the extremely fast reply by Blackburn. It is much appreciated.
In the main abinit directory I ran the test: make tests_in.
For all of the tests but wannier I get :
OK for total energy
OK for nuclei positions
OK for forces
OK for stresses
But for the wannier test I get:
echo "Running built-in test in_wannier90"
Running built-in test in_wannier90
timeout="0" /usr/bin/perl ../tests/Scripts/run-basic-tests.pl built-in in_wannier90 /home/azmaniac/azprogs/abinit-6.4.3
Status file, with repetition rate 49, status number 295
Level abinit : call driver
Level driver : call gstateimg
Level gstateimg : enter
Level gstate : call scfcv
Level scfcv : call outscfcv
istep = 3
Status file, with repetition rate 49, status number 295
Level abinit : call driver
Level driver : call gstateimg
Level gstateimg : enter
Level gstate : call scfcv
Level scfcv : call outscfcv
istep = 3
.
.
.
These last lines are repeated several times.
This seems to me that there is a problem in the self consistent field calculation subroutines? What should I do to fix this problem?
Thanks again for the help!
First I want to say thank you for the extremely fast reply by Blackburn. It is much appreciated.
In the main abinit directory I ran the test: make tests_in.
For all of the tests but wannier I get :
OK for total energy
OK for nuclei positions
OK for forces
OK for stresses
But for the wannier test I get:
echo "Running built-in test in_wannier90"
Running built-in test in_wannier90
timeout="0" /usr/bin/perl ../tests/Scripts/run-basic-tests.pl built-in in_wannier90 /home/azmaniac/azprogs/abinit-6.4.3
Status file, with repetition rate 49, status number 295
Level abinit : call driver
Level driver : call gstateimg
Level gstateimg : enter
Level gstate : call scfcv
Level scfcv : call outscfcv
istep = 3
Status file, with repetition rate 49, status number 295
Level abinit : call driver
Level driver : call gstateimg
Level gstateimg : enter
Level gstate : call scfcv
Level scfcv : call outscfcv
istep = 3
.
.
.
These last lines are repeated several times.
This seems to me that there is a problem in the self consistent field calculation subroutines? What should I do to fix this problem?
Thanks again for the help!
Re: wannier90 convergence
@ Thanusit
HI,
From what I have read on Wannier functions. There is a steepest-descent algorithm applied to minimize the spread. In that way the wannier functions that you get are maximally localized. Hence, the Maximally Localized Wannier Functions (MLWF). From what I have seen in abinit this spread is nothing other than the function of: omega = Sum_n[ <w_n0| r^2 | w_n0> - <w_n0 | r| w_n0>^2 ]. So the value of the omega (spread) is given at each steepest-descent step as an output.
HI,
From what I have read on Wannier functions. There is a steepest-descent algorithm applied to minimize the spread. In that way the wannier functions that you get are maximally localized. Hence, the Maximally Localized Wannier Functions (MLWF). From what I have seen in abinit this spread is nothing other than the function of: omega = Sum_n[ <w_n0| r^2 | w_n0> - <w_n0 | r| w_n0>^2 ]. So the value of the omega (spread) is given at each steepest-descent step as an output.
Re: wannier90 convergence
Hello,
I have noticed that when I build abinit using the default compiler gfortran instead of my choice of ifort I do not get this convergence error. Does anyone know what could be causing this?
I have noticed that when I build abinit using the default compiler gfortran instead of my choice of ifort I do not get this convergence error. Does anyone know what could be causing this?