Symmetrization in the nlinopt subroutine

Documentation, Web site and code modifications

Moderators: baguetl, routerov

Locked
kurtg
Posts: 3
Joined: Tue Dec 06, 2016 1:29 am

Symmetrization in the nlinopt subroutine

Post by kurtg » Wed Sep 13, 2017 5:02 pm

Dear developers,

I am confused with the following lines in the nlinopt subroutine.

! symmetrize the momentum matrix elements
do lx=1,3
do ly=1,3
do lz=1,3
i1=sym(lx,ly,lz)+sym(lx,lz,ly)
i2=sym(ly,lx,lz)+sym(ly,lz,lx)
i3=sym(lz,lx,ly)+sym(lz,ly,lx)
px(ist1,ist2,lx,ly,lz)=i1*pmat(ist1,ist2,ik,lx,isp)
py(ist2,ist1,lx,ly,lz)=i2*pmat(ist2,ist1,ik,lx,isp) ! TODO: check if this should not be ly, lz on these lines
pz(ist2,ist1,lx,ly,lz)=i3*pmat(ist2,ist1,ik,lx,isp)
end do
end do
end do

Why do ly and lz not appear on the last two lines (red). Am I missing a trick in the symmetrization?

px(ist1,ist2,lx,ly,lz)=i1*pmat(ist1,ist2,ik,lx,isp)
py(ist2,ist1,lx,ly,lz)=i2*pmat(ist2,ist1,ik,ly,isp)
pz(ist2,ist1,lx,ly,lz)=i3*pmat(ist2,ist1,ik,lz,isp)


And If ist1 and ist2 correspond to valence and conduction band states why are the following lines for py and pz not consistent with px?

px(ist1,ist2,lx,ly,lz)=i1*pmat(ist1,ist2,ik,lx,isp)
py(ist2,ist1,lx,ly,lz)=i2*pmat(ist2,ist1,ik,lx,isp)
pz(ist2,ist1,lx,ly,lz)=i3*pmat(ist2,ist1,ik,lx,isp)

If you can shed some light on this implementation, I would appreciate it.

Locked