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: 47
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: 4198
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: 47
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: 640
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
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

Post Reply