wannier90
wannier90 copied to clipboard
Centers not being constrained to the given positions within SLWF
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
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?