BSE with / without symmetry give different results

You can find here problems arising when using old releases of Yambo (< 5.0). Issues as parallelization strategy, performance issues and other technical aspects.

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano, Conor Hogan

Locked
wufeng
Posts: 24
Joined: Fri Dec 15, 2017 4:17 am

BSE with / without symmetry give different results

Post by wufeng » Wed Apr 18, 2018 8:33 pm

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
You do not have the required permissions to view the files attached to this post.
Feng Wu
Chemistry and Biochemistry department,
University of California, Santa Cruz
95064 CA, United States

User avatar
Daniele Varsano
Posts: 4231
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: BSE with / without symmetry give different results

Post by Daniele Varsano » Thu Apr 19, 2018 9:18 am

Dear Feng,
thanks for reporting, we will look into it in detail.

Best,
Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

User avatar
Davide Sangalli
Posts: 643
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: BSE with / without symmetry give different results

Post by Davide Sangalli » Thu Apr 19, 2018 9:40 am

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

Code: Select all

   if (BS_n_g_W> Max_G_m_G ) then
recompile the code and run both cases with

Code: Select all

BSENGBlk=  27          RL
?

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.
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

wufeng
Posts: 24
Joined: Fri Dec 15, 2017 4:17 am

Re: BSE with / without symmetry give different results

Post by wufeng » Fri Apr 20, 2018 12:03 am

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

Code: Select all

   if (BS_n_g_W> Max_G_m_G ) then
recompile the code and run both cases with

Code: Select all

BSENGBlk=  27          RL
?

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
Feng Wu
Chemistry and Biochemistry department,
University of California, Santa Cruz
95064 CA, United States

User avatar
Davide Sangalli
Posts: 643
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: BSE with / without symmetry give different results

Post by Davide Sangalli » Fri Apr 20, 2018 8:18 am

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:

Code: Select all

BSENGBlk=  27          RL
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.
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

wufeng
Posts: 24
Joined: Fri Dec 15, 2017 4:17 am

Re: BSE with / without symmetry give different results

Post by wufeng » Sat Apr 21, 2018 12:50 am

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:

Code: Select all

BSENGBlk=  27          RL
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
Feng Wu
Chemistry and Biochemistry department,
University of California, Santa Cruz
95064 CA, United States

Locked