Dipoles stored in ndb.dipoles

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
Franz Fischer
Posts: 51
Joined: Wed Jul 20, 2022 9:36 am

Dipoles stored in ndb.dipoles

Post by Franz Fischer » Tue Jan 21, 2025 1:31 pm

Dear all,

I want to use the dipoles, as stored in the ndb.dipoles data base, for some consecutive calculations.
Here, the header reads:

Code: Select all

	float DIP_iR(D_0000000001, D_0000000147, D_0000000046, D_0000000920, D_0000000003, D_0000000002) ;
	float DIP_P(D_0000000001, D_0000000147, D_0000000046, D_0000000920, D_0000000003, D_0000000002) ;
	float DIP_v(D_0000000001, D_0000000147, D_0000000046, D_0000000920, D_0000000003, D_0000000002) ;
I have read the yambo paper from 2019 [1] where you introduce the position operator dipoles in Eq. (3).

(1) Is DIP_iR the left-hand-side of Eq. (3) or does it contain an extra factor of i?

(2) What is the first dimension of DIP_iR?
The other dimension are:
  • number of ibz kpts,
  • valence bands,
  • conduction bands,
  • x, y, z and
  • real/imaginary?
(3) Are the units in atomic units?

Thanks for your help!

Best,
Franz


[1] D Sangalli et al 2019 J. Phys.: Condens. Matter 31 325902
Franz Fischer
PhD student / IMPRS-UFAST fellow
Institute of Physical Chemistry
University of Hamburg

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

Re: Dipoles stored in ndb.dipoles

Post by Daniele Varsano » Wed Jan 22, 2025 8:38 am

Dear Franz,

to read the dipoles databases you can use the yambopy platform, here you can find a tutorial:
https://wiki.yambo-code.eu/wiki/index.p ... absorption

and should be clear all the content of the database from the python scripts.

Yes, all the units are atomic units.

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/

Franz Fischer
Posts: 51
Joined: Wed Jul 20, 2022 9:36 am

Re: Dipoles stored in ndb.dipoles

Post by Franz Fischer » Wed Jan 22, 2025 1:35 pm

Dear Daniele,

that has helped, but I still have some questions.
I am actually interested in the numerator of equation (3) given in [1], where the left-hand-side is DIP_iR, right?.

(1)
Is the numerator stored in the ndb.dipoles and if so, is it DIP_P or DIP_v?
My guess was DIP_v, because v = velocity gauge, but I am not 100% sure.

(2)
In the python script an unfolding to the full Brillouin zone is shown, but only for DIP_P and DIP_iR, saying that the first is hermitian, whereas the second is non-hermitian. What about DIP_v? It says they are not supported.

(3)
To be more precise, I want to compute the orbital magnetization. Is this already implemented in yambo?

Thanks again!

Best,
Franz

[1] D Sangalli et al 2019 J. Phys.: Condens. Matter 31 325902
Franz Fischer
PhD student / IMPRS-UFAST fellow
Institute of Physical Chemistry
University of Hamburg

User avatar
Davide Sangalli
Posts: 662
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: Dipoles stored in ndb.dipoles

Post by Davide Sangalli » Thu Jan 23, 2025 5:30 pm

Dear Franz
I am actually interested in the numerator of equation (3) given in [1], where the left-hand-side is DIP_iR, right?.
There is a missing "i" factor in equation (3). It should be

Code: Select all

r_{nmk} = (-i*p_{nmk} + [r,Vnl]_{pnk})*Delta\eps_{nmk}
Yambo stores

Code: Select all

DIP_iR = i*r_{nmk} = (p_{nmk} +i*[r,Vnl]_{nmk})*Delta\eps_{nmk}
(1) Is the numerator stored in the ndb.dipoles and if so, is it DIP_P or DIP_v?
My guess was DIP_v, because v = velocity gauge, but I am not 100% sure.
Yambo also stores:

Code: Select all

DIP_P = p_{nmk} 
DIP_v = p_{nmk} +i*[r,Vnl]_{nmk}
(2) In the python script an unfolding to the full Brillouin zone is shown, but only for DIP_P and DIP_iR, saying that the first is hermitian, whereas the second is non-hermitian. What about DIP_v? It says they are not supported.
R, is hermitian
i*R is anti-hermitian due to the i.
P and v are again hermitian, having i*R*\eps_{nmk}, since both give a -1 factor
(3) To be more precise, I want to compute the orbital magnetization. Is this already implemented in yambo?
Orbital magnetization is ill defined in periodic boundary conditions (PBC), since it is

Code: Select all

L= r times v
In yambo there is an approximated strategy, which is exact for isolated systems.
See eq. (2) here: https://iopscience.iop.org/article/10.1 ... 12005/meta
In PBC there are issues, since the intra-band dipoles enter.

For a more exhaustive discussion on orbital magnetization, please check this paper:
https://journals.aps.org/prl/abstract/1 ... .95.137205
Also, recently there have been attempts to compute the orbital magnetization in PBC by different groups interested in circular dichroism in extended systems.

Best,
D.
Davide Sangalli, PhD
Piazza Leonardo Da Vinci, 32, 20133 – Milano
CNR, Istituto di Struttura della Materia (ISM)
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

Post Reply