Page 1 of 1

Exciton wavefunction: complex component for each e-h pair

Posted: Fri Dec 02, 2022 2:49 pm
by Shixuan
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

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

Posted: Wed Dec 07, 2022 11:30 am
by Daniele Varsano
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

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

Posted: Wed Dec 07, 2022 11:45 am
by palful
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

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

Posted: Sat Dec 10, 2022 6:59 am
by Shixuan
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

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

Posted: Mon Dec 12, 2022 9:08 am
by Daniele Varsano
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