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
Exciton postprocessing
Moderators: myrta gruning, andrea marini, Daniele Varsano, Conor Hogan
-
- Posts: 42
- Joined: Wed Aug 04, 2010 8:39 am
- Location: Eindhoven, The Netherlands
- Contact:
Exciton postprocessing
Dr. Bjoern Baumeier
Eindhoven University of Technology
Eindhoven, The Netherlands
Eindhoven University of Technology
Eindhoven, The Netherlands
- Daniele Varsano
- Posts: 3816
- Joined: Tue Mar 17, 2009 2:23 pm
- Contact:
Re: Exciton postprocessing
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
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/
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/
- andrea marini
- Posts: 325
- Joined: Mon Mar 16, 2009 4:27 pm
- Contact:
Re: Exciton postprocessing
Welcome onboard Bjoern!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.
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 ?
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.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?
Andrea MARINI
Istituto di Struttura della Materia, CNR, (Italy)
Istituto di Struttura della Materia, CNR, (Italy)
-
- Posts: 42
- Joined: Wed Aug 04, 2010 8:39 am
- Location: Eindhoven, The Netherlands
- Contact:
Re: Exciton postprocessing
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:
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
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:
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: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'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?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!!!!)
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: 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 ?
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.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.
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
Eindhoven University of Technology
Eindhoven, The Netherlands
- Daniele Varsano
- Posts: 3816
- Joined: Tue Mar 17, 2009 2:23 pm
- Contact:
Re: Exciton postprocessing
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
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
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
.....
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/
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/
- andrea marini
- Posts: 325
- Joined: Mon Mar 16, 2009 4:27 pm
- Contact:
Re: Exciton postprocessing
The Bethe-Salpter eigenvectors are defined in the on-line documentation, here.
Andrea MARINI
Istituto di Struttura della Materia, CNR, (Italy)
Istituto di Struttura della Materia, CNR, (Italy)