44integer,
intent(in) :: l,k,p,ld
45real(8),
intent(in) :: wkp(-ld:ld,-1:1)
46real(8),
intent(out) :: dm(ld,2,ld,2)
53real(8) dlm(2*l+1,2*l+1,-k:k),dsp(2,2,-p:p)
55real(8),
external :: wigner3j,wigner3jf
58 write(*,
'("Error(tm2todm): l < 0 : ",I8)') l
64 write(*,
'("Error(tm2todm): k < 0 : ",I8)') k
70 write(*,
'("Error(tm2todm): k > 2*l : ",2I8)') k,2*l
74if ((p < 0).or.(p > 1))
then
76 write(*,
'("Error(tm2todm): p should be 0 or 1 : ",I8)') p
87 if (mod(l-m2,2) == 0)
then
95 dlm(lm1,lm2,x)=t1*
wigner3j(l,k,l,-m2,x,m1)
110 dsp(ispn,jspn,y)=t1*
wigner3jf(1,2*p,1,2*jspn-3,2*y,3-2*ispn)
121 if (abs(t1) < 1.d-8) cycle
126 dm(lm0+lm1,ispn,lm0+lm2,jspn)=dm(lm0+lm1,ispn,lm0+lm2,jspn) &
127 +t1*dlm(lm1,lm2,x)*dsp(ispn,jspn,y)