Quantum stress tensor and one-electron density matrix
Posted: Wed May 19, 2010 3:54 am
by srk
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
Re: One-electron density matrix
Posted: Mon May 31, 2010 9:57 am
by srk
bump
Quantum stress tensor and one-electron density matrix (UPDAT
Posted: Tue Jun 01, 2010 11:52 am
by srk
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