Exciton wavefunction: complex component for each e-h pair

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

Post Reply
Shixuan
Posts: 7
Joined: Tue Nov 29, 2022 6:08 am
Location: Hong Kong

Exciton wavefunction: complex component for each e-h pair

Post by Shixuan » Fri Dec 02, 2022 2:49 pm

Dear developers and users,

We have learned that the wavefunction of a exciton looks like:

Image

Where the A_eh marks the complex component of each electron-hole pair, it's necessary for dipole/quadrupole analysis of excitons.

So, from where can we find those complex component of e-h pairs?

All the best,
Shixuan

Department of PHY,
City University of Hong Kong,
Hong Kong SAR

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

Re: Exciton wavefunction: complex component for each e-h pair

Post by Daniele Varsano » Wed Dec 07, 2022 11:30 am

Dear Shixua,

by default, the square modulus of the A_eh is reported (weight)
if you want the complex A_eh you can probably use the yamopy utility (someone else can provide helps on that),
or you need to slightly modify the source:

./ypp/excitons/excitons_amplitudes.F

112 A_weight(neh)=A_weight(neh)+BS_mat(neh,i_l)*conjg(BS_mat(neh,i_l))*dip_factor

to print the BS_mat(neh,i_l)

here i_l is the exciton index and neh is a label for the eh transition.
From the neh you can recover the corresponding valence, conduction , spin and k point index as indicated above:

Code: Select all

ikbz  = BSS_eh_table(neh,1)
ikibz = Xk%sstar(ikbz,1)
iv    = BSS_eh_table(neh,2)
ic    = BSS_eh_table(neh,3)
i_spin= spin(BSS_eh_table(neh,:))
The yambopy option is surely the cleanest way.

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
palful
Posts: 56
Joined: Tue Jan 26, 2016 11:23 am
Location: Modena and Milan

Re: Exciton wavefunction: complex component for each e-h pair

Post by palful » Wed Dec 07, 2022 11:45 am

Hi Shixua,

Indeed, you can use yambopy to obtain these quantities in a straightforward way.

Yambopy reads the ndb.BS_diago databases and retrieves the complex A-coefficients as numpy arrays. If you instance the exciton class as `yexc`, then the numpy array `yexc.eigenvectors` will contain the quantities you want. Its dimensions are [N_excitons,N_transitions], where a transition corresponds to a (vk,ck) pair. In order to extract explicitly the v, c and k indices you can use the map `yexc.table` which is also read from the database.

You can find more info in this tutorial (section "Exciton intro 1: read and sort data") and in the tutorial/databases_yambopy/exc_read.py script inside the yambopy repository. You can get and install yambopy following these instructions.

Cheers,
Fulvio
Dr. Fulvio Paleari
S3-CNR Institute of Nanoscience and MaX Center
Modena, Italy

Shixuan
Posts: 7
Joined: Tue Nov 29, 2022 6:08 am
Location: Hong Kong

Re: Exciton wavefunction: complex component for each e-h pair

Post by Shixuan » Sat Dec 10, 2022 6:59 am

palful wrote: Wed Dec 07, 2022 11:45 am Hi Shixua,

Indeed, you can use yambopy to obtain these quantities in a straightforward way.

Yambopy reads the ndb.BS_diago databases and retrieves the complex A-coefficients as numpy arrays. If you instance the exciton class as `yexc`, then the numpy array `yexc.eigenvectors` will contain the quantities you want. Its dimensions are [N_excitons,N_transitions], where a transition corresponds to a (vk,ck) pair. In order to extract explicitly the v, c and k indices you can use the map `yexc.table` which is also read from the database.

You can find more info in this tutorial (section "Exciton intro 1: read and sort data") and in the tutorial/databases_yambopy/exc_read.py script inside the yambopy repository. You can get and install yambopy following these instructions.

Cheers,
Fulvio
Dear Palful and Dear Daniele Varsano,

Thank you both for your kind and helpful reply!

After read both of your reply, I have learned that there are also another method to get complex A-coeffcients in additional to rewriting "excitons_amplitudes.F" and using Yambopy: reading "ndb.BS_diago" (hdf5 format) directly. I'm quite confidence that A-coeffcients is hidding inside of "ndb.BS_diago/BS_EIGENSTATES", while I have not find such an array contains A-coefficients as a function of (vk,vc) pair. Did you have any ideas on reading A-coeffcient directiy from "ndb.BS_diago" database? If it doesn't work, I will try to rewriting "excitons_amplitudes.F", or using Yambopy. I do believe these will helps me.

Best,
Shixuan

Department of PHY,
City University of Hong Kong,
Hong Kong SAR

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

Re: Exciton wavefunction: complex component for each e-h pair

Post by Daniele Varsano » Mon Dec 12, 2022 9:08 am

Dear Shixuan,

in order to have eigenstate written in the database, be sure you have activated the keyword WRbsWF in your input file when diagonalizing the excitonic Hamiltonian (by default it is commented and not activated). Next, what the yambopy script does is indeed reading the database you mentioned.
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