wannier90 icon indicating copy to clipboard operation
wannier90 copied to clipboard

Centers not being constrained to the given positions within SLWF

Open brunocucco opened this issue 2 years ago • 1 comments

Hello,

I'm trying to fix the WF positions using the SLWF method within wannier90. Yet, they always ended up fixed at the "0.0 0.0 0.0" even if I use the slwf_centres block to put them somewhere else or simply select them using slwf_num to lock them at the positions given on the projection block. In both cases the output always look like:

---------------------------------------------------------------------------- | Wannier# Original Centres Constrained centres | +----------------------------------------------------------------------------+ | 1 0.00000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 2 0.00000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 3 0.00000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 4 0.00000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 5 0.50000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 6 0.50000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 7 0.50000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 8 0.50000 0.00000 0.00000 | 0.00000 0.00000 0.00000 | | 9 0.00000 0.50000 0.00000 | 0.00000 0.00000 0.00000 | | 10 0.00000 0.50000 0.00000 | 0.00000 0.00000 0.00000 | | 11 0.00000 0.50000 0.00000 | 0.00000 0.00000 0.00000 | | 12 0.00000 0.50000 0.00000 | 0.00000 0.00000 0.00000 | | 13 0.00000 0.00000 0.50000 | 0.00000 0.00000 0.00000 | | 14 0.00000 0.00000 0.50000 | 0.00000 0.00000 0.00000 | | 15 0.00000 0.00000 0.50000 | 0.00000 0.00000 0.00000 | ----------------------------------------------------------------------------

Even when the original centres were in a different place, as shown above. Am I doing something wrong regarding the slwf centres block? My wannier90 input and output are attached.

Regards, Bruno Archive.zip

brunocucco avatar Dec 02 '22 12:12 brunocucco

Hi @brunocucco, Fom the output file you sent, it seems that in the last iteration you do get

Final State
 WF centre and spread    1  (  0.001715,  0.001715,  0.000141 )     1.84698466
 WF centre and spread    2  (  0.001756,  0.000238,  0.000245 )     2.80068215
 WF centre and spread    3  (  0.000238,  0.001755,  0.000246 )     2.80061753
 WF centre and spread    4  (  0.000241,  0.000240,  0.000021 )     2.72052750
 WF centre and spread    5  (  3.169384,  0.000205,  0.000110 )     1.69250243
 WF centre and spread    6  (  3.130821,  0.000314,  0.000270 )     1.87298382
 WF centre and spread    7  (  3.153639,  0.000308,  0.000039 )     2.30074620
 WF centre and spread    8  (  3.153815,  0.000040,  0.000082 )     2.29884253
 WF centre and spread    9  (  0.000205,  3.169385,  0.000110 )     1.69246473
 WF centre and spread   10  (  0.000308,  3.153639,  0.000039 )     2.30074967
 WF centre and spread   11  (  0.000314,  3.130822,  0.000270 )     1.87287230
 WF centre and spread   12  (  0.000040,  3.153815,  0.000082 )     2.29884226
 WF centre and spread   13  (  0.000172,  0.000172,  3.155222 )     1.69328520
 WF centre and spread   14  (  0.000299,  0.000039,  3.153639 )     2.30079140
 WF centre and spread   15  (  0.000039,  0.000299,  3.153639 )     2.30078775
 WF centre and spread   16  ( -0.000019, -0.000020,  3.154291 )     1.99126066
 Sum of centres and spreads ( 12.612968, 12.612966, 12.618445 )    34.78494079

i.e. the SLWFs are roughly centred where you want, so it is not clear why you say it always ends up at "0.0 0.0 0.0". Moreover, according to your input file, you want to selectively localise the first 15 WFs (slwf_num = 15) out of the 16 total (num_wann=16), and you are asking the code to fix the centres of the last 11. Is this what you want?

VVitale avatar Feb 12 '24 17:02 VVitale