Exciton postprocessing

Run-time issues concerning Yambo that are not covered in the above forums.

Moderators: myrta gruning, andrea marini, Daniele Varsano, Conor Hogan

Post Reply
bob
Posts: 42
Joined: Wed Aug 04, 2010 8:39 am
Location: Eindhoven, The Netherlands
Contact:

Exciton postprocessing

Post by bob » Wed Aug 04, 2010 12:14 pm

Hi all,

I am in the process of evaluating yambo for the determination of parameters required to describe charge/exciton transport in disordered compounds. One of the important parameters I need to calculate is essentially the overlap of the wave functions of two orbitals/excitons localized on two neighboring monomers.

So far, we have used localized basis sets to employ the following strategy:
1) Calculate the molecular orbitals |\phi_i^A> for molecule A.
2) Calculate the molecular orbitals |\phi_j^B> for molecule B.
3) Calculate overlap integrals <\phi_i^A | \phi_j^B>.

Step 3) is performed reading the expansion coefficients obtained in 1) and 2) and then doing simple matrix maths. Is anyone aware of an already implemented procedure that could be used to evaluate 3) in a plane wave basis? Also, how are the coefficients for excitonic wavefunctions stored/accessible for further use?

If anyone could assist by pointing me to the appropriate documentation, I'd really appreciate it.

Cheers,
Bjoern
Dr. Bjoern Baumeier
Eindhoven University of Technology
Eindhoven, The Netherlands

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

Re: Exciton postprocessing

Post by Daniele Varsano » Wed Aug 04, 2010 12:47 pm

Dear Bjoern,
if I well understood, you want to calculate the overlap matrix between KS orbitals
of two adjacent molecules. Am I right?

Of course you can do it in plane waves, analogously of what you are doing with localized basis set,
just doing dot product of plane wave coefficients.

May be there are other way to do that, one way could be, in the case the molecules
are NOT covalently bonded:

1) Put your two molecules in a supercell.
Perform 2 separate calculations without modifying the supercell, energy cutoff parameter, and
orientation of the molecules:

2) Remove one molecule, and do a scf calculation (in the big box): you will have Psi^A KS orbitals.
3) Remove the other molecule and do the same: you will have Psi^B
4) Save the coefficient in Yambo databases using the yambo interfaces
4) Perform a dot product between the KS orbitals.

If you want to use yambo you will have the wfs KS in the ./moleculeA/SAVE/ns.wf

Then, you will need a little bit of coding, where you can use the IO of yambo to read the coefficients
for the molecules, and then do a dot-product. In this way you can have the overlap matrix
of the KS orbitals of the two non-interacting monomers (not exciton!!!!)

Hope it helps,

Cheers,

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
andrea marini
Posts: 325
Joined: Mon Mar 16, 2009 4:27 pm
Contact:

Re: Exciton postprocessing

Post by andrea marini » Wed Aug 04, 2010 12:53 pm

bob wrote: I am in the process of evaluating yambo for the determination of parameters required to describe charge/exciton transport in disordered compounds. One of the important parameters I need to calculate is essentially the overlap of the wave functions of two orbitals/excitons localized on two neighboring monomers.
Welcome onboard Bjoern!

Daniele already gave you a first valuable help. Let me add something.

Let me fully understand first by doing some simple questions. How large is your unit cell and how many atoms/electrons does it contain ? What specific system do you have in mind ? Do you use gamma point or you have a k-point sampling ?
bob wrote: Step 3) is performed reading the expansion coefficients obtained in 1) and 2) and then doing simple matrix maths. Is anyone aware of an already implemented procedure that could be used to evaluate 3) in a plane wave basis? Also, how are the coefficients for excitonic wavefunctions stored/accessible for further use?
Daniele already told you that you can easily calculate overlaps of (localized) molecular orbitals. In the case of excitons the wavefunction is a function of two variables: the positions of the hole and of the electron. In the case of excitons you need first to define matematically the overlap. Once you have e definition we can easily help you with the implementation as all you need is calculated or stored in some database.
Andrea MARINI
Istituto di Struttura della Materia, CNR, (Italy)

bob
Posts: 42
Joined: Wed Aug 04, 2010 8:39 am
Location: Eindhoven, The Netherlands
Contact:

Re: Exciton postprocessing

Post by bob » Wed Aug 04, 2010 2:05 pm

Hi Daniele and Andrea,

Thanks for the answers. I figure I should have been a bit more specific in my original post. Let me try to clarify things a bit:
Daniele Varsano wrote:Dear Bjoern,
if I well understood, you want to calculate the overlap matrix between KS orbitals
of two adjacent molecules. Am I right?
[...]
Of course you can do it in plane waves, analogously of what you are doing with localized basis set,
just doing dot product of plane wave coefficients.

May be there are other way to do that, one way could be, in the case the molecules
are NOT covalently bonded:

1) Put your two molecules in a supercell.
Perform 2 separate calculations without modifying the supercell, energy cutoff parameter, and
orientation of the molecules:

2) Remove one molecule, and do a scf calculation (in the big box): you will have Psi^A KS orbitals.
3) Remove the other molecule and do the same: you will have Psi^B
4) Save the coefficient in Yambo databases using the yambo interfaces
4) Perform a dot product between the KS orbitals.
That is essentially the idea. We are looking at large (amorphous) morphologies of organic molecules. To evaluate the rates for hopping transport between the not covalently bonded molecules, we need transfer integrals, which can be calculated from the kind of KS orbital overlaps I am interested in. So far we have done this using localized basis sets with a similar strategy as the one you outlined above.
Daniele Varsano wrote: If you want to use yambo you will have the wfs KS in the ./moleculeA/SAVE/ns.wf

Then, you will need a little bit of coding, where you can use the IO of yambo to read the coefficients
for the molecules, and then do a dot-product. In this way you can have the overlap matrix
of the KS orbitals of the two non-interacting monomers (not exciton!!!!)
That's what I thought. I did not dig too far into the yambo code structure but I guess I need to have a look at src/io and in particular ioWF.F to access the coefficients. Is that correct?
andrea marini wrote: Let me fully understand first by doing some simple questions. How large is your unit cell and how many atoms/electrons does it contain ? What specific system do you have in mind ? Do you use gamma point or you have a k-point sampling ?
What we are interested in (at the moment) are molecules of size ~50 atoms. The unit cell size would be chosen so that the periodic images won't interact and naturally there would only be Gamma-point sampling.
andrea marini wrote: Daniele already told you that you can easily calculate overlaps of (localized) molecular orbitals. In the case of excitons the wavefunction is a function of two variables: the positions of the hole and of the electron. In the case of excitons you need first to define matematically the overlap. Once you have e definition we can easily help you with the implementation as all you need is calculated or stored in some database.
The overlaps between molecular orbitals are used to get parameters for hopping rates for charge transport (electron or hole). Since we are also interested in exciton transport, I have started looking into ways of adapting a similar strategy for excitons and my first step was to have a look at how it is possible to determine the excitonic wave functions reliably. I don't know the exact formal definition of the overlap from the top of my head but the principle should be similar to the case of the molecular orbitals, i.e., reading some coefficients and calculate a somehow weighted dot product. But I'll dig out the definition.

To get a feeling for the coding, I guess I'll have a look at getting the molecular orbital overlaps first and then take the next step.

Thanks again!

Cheers,
Bjoern
Dr. Bjoern Baumeier
Eindhoven University of Technology
Eindhoven, The Netherlands

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

Re: Exciton postprocessing

Post by Daniele Varsano » Wed Aug 04, 2010 3:15 pm

Dear Bjorn,

Calculating the molecular orbital should be quite easy, and the easiest way to do it it's to look at the ypp post processing.
If you open the file ./ypp/electrons_driver.F

Code: Select all

  !
154  ! SYMMETRIZED WAVEFUNCTIONS (summed over all symmetries and degenerate states)
155  !==============================================================================
156  !
157  if (l_sp_wf) then
158    !
159    v2plot=0.
160    !
161    call section('*','Single Particle wavefunction Plot')
162    !
163    if (n_spinor==2) then
164      call warning ('Non collinear spin support still not implemented')
165      goto 1
166    endif
167    !
168    i_qp=1
169    !
170    do while (i_qp<=QP_n_states)
171      !
172      ! n   =QP_table(i_qp,1)
173      ! k   =QP_table(i_qp,3)
174      ! sp  =QP_table(i_qp,4)
175      !
176      ib    =QP_table(i_qp,1)
177      ik    =QP_table(i_qp,3)
178      i_spin=spin(QP_table(i_qp,:))
179      !
180      i_wf=wf_state(ib,ik,i_spin)
181      !
182      forall(ir=1:fft_size) v2plot(ir)=real( wf(ir,i_wf)*conjg( wf(ir,i_wf) ) )
183      !
184      i_qp=i_qp+1
185      !
186      if (ib/=Xen%nb.and.abs(Xen%E(ib,ik,i_spin)-X
.....
here to orbitals are loaded, in order then to be plotted. Here at line 182 you have the wfs. The i_wf is the index
of the orbitals. You can load how many orbitals you want, as it is controlled by input file. Now you want dot-product
from orbitals coming form different databases, but that should not be difficult to implement.

About excitons, in line of principle you can still use the ypp, looking at the wf_vc(neh) variable in exciton_driver.F,
but I'm not sure you will need it.
They comes from the solution of the Bethe-Salpeter equation, and they are two variables
function. You can have a quick look at the lecture notes page of the yambo website, and look at for instance at the part of Bthe-Salpeter equation in the lecture note by myself and M.Gatti. If you want a reference for
the Bethe-Salpeter equation I suggest you the review: Electronic Excitations: Density-Functional VS Many-body Green's , G. Onida, L. Reining, A. Rubio. That you can also find in the lecture note page, even if I do not remember if the excitonic wavefunction is defined there..

Hope it helps,

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
andrea marini
Posts: 325
Joined: Mon Mar 16, 2009 4:27 pm
Contact:

Re: Exciton postprocessing

Post by andrea marini » Wed Aug 04, 2010 3:24 pm

The Bethe-Salpter eigenvectors are defined in the on-line documentation, here.
Andrea MARINI
Istituto di Struttura della Materia, CNR, (Italy)

Post Reply