Quantum stress tensor and one-electron density matrix

Total energy, geometry optimization, DFT+U, spin....

Moderator: bguster

Locked
srk
Posts: 4
Joined: Wed Jan 20, 2010 1:16 pm
Contact:

Quantum stress tensor and one-electron density matrix

Post by srk » Wed May 19, 2010 3:54 am

Hello,

I am looking for a way to calculate the quantum stress tensor at an arbitrary point in the simulation cell. I have it on good authority that the quantum stress tensor can be calculated from the one-electron density matrix.

Can the one-electron density matrix be extracted from the results of an ABINIT calculation (e.g. through postprocessing, verbose output options etc.), or would it be essential to first project onto, e.g. Wannier functions using Wannier90? If so, how could this be done?

Many thanks!
Steve Kirk
Last edited by srk on Tue Jun 01, 2010 1:20 pm, edited 1 time in total.

srk
Posts: 4
Joined: Wed Jan 20, 2010 1:16 pm
Contact:

Re: One-electron density matrix

Post by srk » Mon May 31, 2010 9:57 am

bump

srk
Posts: 4
Joined: Wed Jan 20, 2010 1:16 pm
Contact:

Quantum stress tensor and one-electron density matrix (UPDAT

Post by srk » Tue Jun 01, 2010 11:52 am

Hello,

OK, I have found some useful code from another piece of software which uses molecular orbitals instead of plane waves:

In terms of MOs (canonical SCF MOs, natural MOs, or whatever) and Fortran code, the upper-triangular part of the (symmetric) stress-tensor Sigma at a point is calculated as:

Pt5=0.5d0
Call ArrayZero(9,Sigma)
Do L=1,NMO
Sigma(1,1)=Sigma(1,1)-Pt5*Occ(L)*(Psi(L,2)*Psi(L,2)-
$ Psi(L,1)*Psi(L,5))
Sigma(1,2)=Sigma(1,2)-Pt5*Occ(L)*(Psi(L,2)*Psi(L,3)-
$ Psi(L,1)*Psi(L,6))
Sigma(1,3)=Sigma(1,3)-Pt5*Occ(L)*(Psi(L,2)*Psi(L,4)-
$ Psi(L,1)*Psi(L,7))
Sigma(2,2)=Sigma(2,2)-Pt5*Occ(L)*(Psi(L,3)*Psi(L,3)-
$ Psi(L,1)*Psi(L,8))
Sigma(2,3)=Sigma(2,3)-Pt5*Occ(L)*(Psi(L,3)*Psi(L,4)-
$ Psi(L,1)*Psi(L,9))
Sigma(3,3)=Sigma(3,3)-Pt5*Occ(L)*(Psi(L,4)*Psi(L,4)-
$ Psi(L,1)*Psi(L,10))
EndDo

where NMO is the number of MOs, Occ is the array of MO occupancies and
Psi is the array of MO values and their first and second derivatives.

Psi(L,1) = Value of the Lth MO
Psi(L,2) = X 1st derivative of the Lth MO
Psi(L,3) = Y 1st derivative of the Lth MO
Psi(L,4) = Z 1st derivative of the Lth MO
Psi(L,5) = XX 2nd derivative of the Lth MO
Psi(L,6) = XY 2nd derivative of the Lth MO
Psi(L,7) = XZ 2nd derivative of the Lth MO
Psi(L,8) = YY 2nd derivative of the Lth MO
Psi(L,9) = YZ 2nd derivative of the Lth MO
Psi(L,10) = ZZ 2nd derivative of the Lth MO

Can anyone please suggest a) what the equivalent quantities would be in ABINIT, and b) what part of the source should I look at to make the modifications. I want be able to evaluate this matrix at any point in the simulation cell, so perhaps it might be best used as a post-processing tool.

Again, very grateful for any helpful advice!

Dr. Steven R. Kirk
College of Chemistry and Chemical Engineering
Hunan Normal University
Changsha 410000, Hunan Province, PRC

Locked