! ! Copyright (C) 2004 PWSCF group ! This file is distributed under the terms of the ! GNU General Public License. See the file `License' ! in the root directory of the present distribution, ! or http://www.gnu.org/copyleft/gpl.txt . ! function sph_ind(l,j,m,spin) ! This function calculates the m index of the spherical harmonic ! in a spinor with orbital angular momentum l, total angular ! momentum j, projection along z of the total angular momentum m+-1/2. ! Spin selects the up (spin=1) or down (spin=2) coefficient. ! use upf_kinds, only: dp implicit none integer :: sph_ind integer :: l, & ! orbital angular momentum m, & ! projection of the total angular momentum+-1/2 spin ! 1 or 2 select the component real(DP) :: j ! total angular momentum if (spin.ne.1.and.spin.ne.2) call upf_error('sph_ind','spin direction unknown',1) if (m.lt.-l-1.or.m.gt.l) call upf_error('sph_ind','m not allowed',1) if (abs(j-l-0.5d0).lt.1.d-8) then if (spin.eq.1) sph_ind= m if (spin.eq.2) sph_ind= m+1 elseif (abs(j-l+0.5d0).lt.1.d-8) then if (m.lt.-l+1) then sph_ind=0 else if (spin.eq.1) sph_ind= m-1 if (spin.eq.2) sph_ind= m endif else write(6,*) l, j call upf_error('sph_ind','l and j not compatible',1) endif if (sph_ind.lt.-l.or.sph_ind.gt.l) sph_ind=0 return end function sph_ind