Page 1 of 1
BSE with / without symmetry give different results
Posted: Wed Apr 18, 2018 8:33 pm
by wufeng
Hi all,
I found in my BSE calculation of Si, with different symmetry setting in QE, the final BSE dielectric functions are different beyond numerical error.
The two calculations are attached. The only difference is nosym=.true. and noinv=.true. in QE nscf calculation before yambo runs.
I wonder if it is a correct behavior or there is something wrong in the input. Thanks.
Best,
Feng
Re: BSE with / without symmetry give different results
Posted: Thu Apr 19, 2018 9:18 am
by Daniele Varsano
Dear Feng,
thanks for reporting, we will look into it in detail.
Best,
Daniele
Re: BSE with / without symmetry give different results
Posted: Thu Apr 19, 2018 9:40 am
by Davide Sangalli
Dear Feng,
I think the reason of the differences is that yambo is imposing two different cutoff on the correlation.
See the two different messages:
Code: Select all
[BSE-W] W size forced by symmetry to be : 65
and
Code: Select all
[BSE-W] W size forced by symmetry to be : 27
I do not remember why it is doing that. The subroutine responsible for it is src/bse/K_driver.F
Code: Select all
!
! W RL size setup looking at the max index of G-G'
! =========
!
if (.not.l_rpa_IP) then
Max_G_m_G=eval_G_minus_G(BS_n_g_W,maxval(qindx_B(:,:,2)))
if (BS_n_g_W/= Max_G_m_G ) then
BS_n_g_W= Max_G_m_G
call warning (' W size reduced due to symmetry constraints')
call msg('s','[BSE-W] W size forced by symmetry to be :',BS_n_g_W)
endif
endif
Can you try to change the check into
recompile the code and run both cases with
?
The results should be identical (also you have to pay attention not to break degenerate bands when you select the band range in the BSE).
Then
i) I do not remember why the check is not just ">" but it is "/=" (it maybe an error to fix)
ii) I will test if we can avoid such reduction somehow. I think it is in principle possible. It just maybe more demanding numerically
Best,
D.
Re: BSE with / without symmetry give different results
Posted: Fri Apr 20, 2018 12:03 am
by wufeng
Davide Sangalli wrote:Dear Feng,
I think the reason of the differences is that yambo is imposing two different cutoff on the correlation.
See the two different messages:
Code: Select all
[BSE-W] W size forced by symmetry to be : 65
and
Code: Select all
[BSE-W] W size forced by symmetry to be : 27
I do not remember why it is doing that. The subroutine responsible for it is src/bse/K_driver.F
Code: Select all
!
! W RL size setup looking at the max index of G-G'
! =========
!
if (.not.l_rpa_IP) then
Max_G_m_G=eval_G_minus_G(BS_n_g_W,maxval(qindx_B(:,:,2)))
if (BS_n_g_W/= Max_G_m_G ) then
BS_n_g_W= Max_G_m_G
call warning (' W size reduced due to symmetry constraints')
call msg('s','[BSE-W] W size forced by symmetry to be :',BS_n_g_W)
endif
endif
Can you try to change the check into
recompile the code and run both cases with
?
The results should be identical (also you have to pay attention not to break degenerate bands when you select the band range in the BSE).
Then
i) I do not remember why the check is not just ">" but it is "/=" (it maybe an error to fix)
ii) I will test if we can avoid such reduction somehow. I think it is in principle possible. It just maybe more demanding numerically
Best,
D.
Dear Davide,
Thanks for the instruction, but I tested this code fix and unfortunately no change.
The qindx_B (and Max_G_m_G) is already different between two cases. The value maxval(qindx_B(:,:,2)) in the case with symmetry is 45 while that in the case without symmetry is 27.
This can be traced back to the difference of Xk%qtbz and q%qtbz between two cases.
Best,
Feng
Re: BSE with / without symmetry give different results
Posted: Fri Apr 20, 2018 8:18 am
by Davide Sangalli
The qindx_B (and Max_G_m_G) is already different between two cases. The value maxval(qindx_B(:,:,2)) in the case with symmetry is 45 while that in the case without symmetry is 27.
This can be traced back to the difference of Xk%qtbz and q%qtbz between two cases.
This is why I suggested to set:
in input. Together with the change in the code you'll have both cases running at that cutoff.
Then the check to the max value of qindx_B(:,:,2) can probably be overcome/changed.
But that would require some coding and testing.
Best,
D.
Re: BSE with / without symmetry give different results
Posted: Sat Apr 21, 2018 12:50 am
by wufeng
Davide Sangalli wrote:
The qindx_B (and Max_G_m_G) is already different between two cases. The value maxval(qindx_B(:,:,2)) in the case with symmetry is 45 while that in the case without symmetry is 27.
This can be traced back to the difference of Xk%qtbz and q%qtbz between two cases.
This is why I suggested to set:
in input. Together with the change in the code you'll have both cases running at that cutoff.
Then the check to the max value of qindx_B(:,:,2) can probably be overcome/changed.
But that would require some coding and testing.
Best,
D.
Hi Davide,
Thanks, yes that is true, with a low BSENGBlk = 27 RL two calculations are identical, as large Gvectors in qindx_B are removed.
Best,
Feng