GW+BSE

Deals with issues related to computation of optical spectra in reciprocal space: RPA, TDDFT, local field effects.

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

Weiqing Zhou
Posts: 48
Joined: Thu Sep 06, 2018 7:57 am
Location: Wuhan University

GW+BSE

Post by Weiqing Zhou » Tue Dec 11, 2018 3:05 pm

Hi all,

I want to perform a full-frequency GW calculation and then perform a GW+BSE calculation.
If I have performed a full-frequency GW calculation (real-axis) and have dynamical screening stored in em1d file.

Q1 : I want to know can I use dielectric function from real-axis GW calculation (em1d) to skip the static screening calculation (-b) in following BSE calculation ?
From my test, it seem OK for PPA (pp) and COHSEX (em1s). For em1d, I always fail to proceed.

Q2 : Can I just make a BSE calculation without GW Quasi-particle energy correction? in other words, if I don't implement QP database or scissor operator into BSE procedure, is the dielectric function from BSE still meaningful or not ?

Weiqing
Weiqing Zhou
Phd student
Wuhan University
Wuhan, Hubei, 430072

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

Re: GW+BSE

Post by Daniele Varsano » Tue Dec 11, 2018 3:20 pm

Dear Weiqing,
Q1 : I want to know can I use dielectric function from real-axis GW calculation (em1d) to skip the static screening calculation (-b) in following BSE calculation ?
From my test, it seem OK for PPA (pp) and COHSEX (em1s). For em1d, I always fail to proceed.
A1: In line of principle it is ok to use the static limit of the em1d, but unfortunately, I'm afraid that this has not been implemented so you need to recalculate the static filectric matrix (em1s)
Q2 : Can I just make a BSE calculation without GW Quasi-particle energy correction? in other words, if I don't implement QP database or scissor operator into BSE procedure, is the dielectric function from BSE still meaningful or not ?
A2: I do not know if I have well understood your question. In line of principle you can do that. Note that QP energies or scissor-corrected energies enter in the diagonal part of the BSE kernel and not in the screening function which is calculated at RPA level unless you do not opt for a partial self-consistency. Anyway, the BSE equation is meant for quasi-particle and quasi-electron, let's in a standard derivation (e.g. from the vertex of the Hedin equation you recognize that QP corrections should be considered).

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/

Weiqing Zhou
Posts: 48
Joined: Thu Sep 06, 2018 7:57 am
Location: Wuhan University

Re: GW+BSE

Post by Weiqing Zhou » Wed Jan 16, 2019 2:38 pm

Dear Daniele,

Thanks for your kind reply.
I try to do a expensive GW+BSE calculation with thousand k-points. For real-axis GW calculation, I use 64 CPUs in fat node. In principle, the memory should be enough since there is 4TB memory in a fat node. The weird point is that my GW calculations usually exit without any error. I assume it is about memory problem. Q1: How can I estimate RAM before a Yambo calculation to ensure there is no problem in memory?
Besides that, when I use a QP energy from GW in BSE calculation by setting KfnQPdb,
Q2: is it possible to use a GW quasi-particle with a different k-mesh from BSE calculation? f.e 24*24*8 for BSE while 12*12*4 for GW.

Best,
Weiqing
Weiqing Zhou
Phd student
Wuhan University
Wuhan, Hubei, 430072

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

Re: GW+BSE

Post by Daniele Varsano » Wed Jan 16, 2019 5:46 pm

Dear Weiqing,
Q1: How can I estimate RAM before a Yambo calculation to ensure there is no problem in memory?
It is not very easy to do an estimation beforehand also because the memory per node strongly depends on the parallelization strategy.
What you can do is the following:
1. Configure adding the following line:
--enable-memory-profile
and next recompile. The code will print memory information at the moment of the allocation and in this way hopefully, you can have an idea.
2. Next, the run stops in the calculation of the screening or in the GW loop? In the first case, in order to distribute memory, the advise is to parallelize to "c" and "v" the more you can. If the second, it is better parallelize over "b".
Q2: is it possible to use a GW quasi-particle with a different k-mesh from BSE calculation? f.e 24*24*8 for BSE while 12*12*4 for GW.
Unfortunately not as you end-up in a different q-grid so the two setups are not compatible. Anyway, I can see a workaround:
1) You calculate the GW corrections for the 12*12*4
2) Next, you generate a QP database containing that value, paying attention to the corresponding K index from the two calculations. In order to generate the database, you need to use the ypp executable, ypp -q g and follow the syntax of the generated input file.

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/

Weiqing Zhou
Posts: 48
Joined: Thu Sep 06, 2018 7:57 am
Location: Wuhan University

Re: GW+BSE

Post by Weiqing Zhou » Thu Jan 17, 2019 7:11 am

Dear Daniele,

Thanks for you quick reply!
I tried real-axis GW calculation again and there is error information this time.

[ERROR] STOP signal received while in :[06.01] G0W0 on the real axis
[ERROR]Allocation of QP_W failed

Please check input and report in the attachment. Is it related with memory problem? What can I do to solve it ?

Best,
Weiqing
You do not have the required permissions to view the files attached to this post.
Weiqing Zhou
Phd student
Wuhan University
Wuhan, Hubei, 430072

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

Re: GW+BSE

Post by Daniele Varsano » Thu Jan 17, 2019 10:09 am

Dear Weiqing,
yes, it seems a memory problem.
As a solution you can try the following:
1)
SE_ROLEs= "q qp b"
SE_CPU= "8 2 4"

move all/or nearly all l the cpu distributions over b i.e.
SE_CPU= "1 1 64" or
SE_CPU= "1 2 32" or

this shoudl distribute the memory!
2)
QPkrange # [GW] QP generalized Kpoint/Band indices
1| 1214| 11|18|
%

These amre many corrections: 9712!

Are you sure you need the correction for all the k points? In any case you can split the load in different calculations and next merge the databases:
input1
1| 200| 11|18|
input2
201| 400| 11|18|
etc...

By the way I can see that you are using 1000 energy step:
ETStpsXd= 1000 # [Xd] Total Energy steps

This is a huge number, usually by using 200/300 frequencies convergence is reached.
In any case you have already calculated the screening so you need to be consistent.

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/

Weiqing Zhou
Posts: 48
Joined: Thu Sep 06, 2018 7:57 am
Location: Wuhan University

Re: GW+BSE

Post by Weiqing Zhou » Thu Jan 17, 2019 3:11 pm

Dear Daniele,

Many thanks! When I only take 50 k-points into account, Yambo can proceed well.
I assume it is impossible to get GW qp energy for all k-points in BZ.
Q1: Can Yambo use incomplete GW database (not all k-points qp energy corrected by GW) to do following BSE+GW calculation? If the answer is yes, what is the method to interpolate qp energy of other k-points' state in Yambo?
Q2 : So how can I choose some certain k-points to be corrected in GW to obtain reasonable BSE+GW dielectric function. Only high-symmetric k-points ? or there is some other strategy to choose k-point.
Q3 : By the way, similarly to Q1, can I plot a GW band structure (ypp -b) with incomplete GW database ?

Best,
Weiqing
Weiqing Zhou
Phd student
Wuhan University
Wuhan, Hubei, 430072

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

Re: GW+BSE

Post by Daniele Varsano » Thu Jan 17, 2019 4:07 pm

Dear Weiking,
Many thanks! When I only take 50 k-points into account, Yambo can proceed well.
I assume it is impossible to get GW qp energy for all k-points in BZ.
OK good.
Q1: Can Yambo use incomplete GW database (not all k-points qp energy corrected by GW) to do following BSE+GW calculation? If the answer is yes, what is the method to interpolate qp energy of other k-points' state in Yambo?
Yes, it is possible, and you do not have to do anything as Yambo will interpolate them using a scissor plus stretching parameters for valence and conduction bands. You will have in the report the details of the fit and in the output the results of the fit.
Q2 : So how can I choose some certain k-points to be corrected in GW to obtain reasonable BSE+GW dielectric function. Only high-symmetric k-points ? or there is some other strategy to choose k-point.
It is hard to consider high symmetry points as you need the corrections on a regular grid (the k point grid of your calculation). You can think about to calculate the corrections for a looser grid or calculate them for all the k points but for fewer bands than the ones you consider for the BSE:
Q3 : By the way, similarly to Q2, can I plot a GW band structure (ypp -b) with incomplete GW database ?
Yes you can, it is an interpolation so of course, the denser the more are the calculated value the more accurate will be the extrapolation on the missing points (segment of your path).

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/

Weiqing Zhou
Posts: 48
Joined: Thu Sep 06, 2018 7:57 am
Location: Wuhan University

Re: GW+BSE

Post by Weiqing Zhou » Sun Jan 20, 2019 7:57 am

Dear Daniele,

Many thanks! It helps me a lot.
I plan to finish my GW calculation by splitting it into many parts. Firstly, I set QPkrange by 1| 164| 14 |14| to correct valence band. After that, I would change QPkrange to 1| 164| 15 |15| to correct conduction band. Through this procedure, I want to get the same qp file ndb.QP as QPkrange 1| 164| 14 |15|. But I find ndb.QP would be recalculated instead of adding new corrected qp into previous ndb.QP.
For sake of future BSE+GW calculation, I want to obtain a full ndb.QP near the Fermi level. Is it possible to get a ndb.QP by many GW calculation with varying QPkrange ?

Best,
Weiqing
Weiqing Zhou
Phd student
Wuhan University
Wuhan, Hubei, 430072

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

Re: GW+BSE

Post by Daniele Varsano » Mon Jan 21, 2019 8:55 am

Dear Weiqing,
yes, it is possible.
You need to perform different calculations redirecting the ndb.QP in different directories, or reaming the ndb.QP file in the same directory in order to not overwrite it.
Let's say
>yambo -F yambo.in -J QP1
>yambo -F yambo.in -J QP1
etc.

next use ypp to merge the different databases:
> ypp -q m
will generate a ypp.in of the form:

Code: Select all

QPDBs                          # [R] Quasi-particle databases
QPDB_merge                     # [R] Mergering
%Actions_and_names             # [QPDB] Format is "what"|"OP"|"prefactor"|"DB"|. OP can be +/-/x(ony for Z).
 "E" | "+" | "1" | "none" |
%
in order to merge multiple ndb.QP file the syntax is:

Code: Select all

"E" | "+" | "1" | "./QP1/ndb.QP" |
"E" | "+" | "1" | "./QP2/ndb.QP" |
...
next by running:
> ypp -F ypp.in
ypp will produce a unique QP file containing all the quasiparticle corrections that can be used for BSE calculations.
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/

Post Reply