6 subroutine rotrfmt(rot,nr,nri,rfmt1,rfmt2)
10 real(8),
intent(in) :: rot(3,3)
11 integer,
intent(in) :: nr,nri
12 real(8),
intent(in) :: rfmt1(*)
13 real(8),
intent(out) :: rfmt2(*)
27 subroutine rotrflm(rot,lmax,n,ld,rflm1,rflm2)
50 real(8),
intent(in) :: rot(3,3)
51 integer,
intent(in) :: lmax,n,ld
52 real(8),
intent(in) :: rflm1(ld,*)
53 real(8),
intent(out) :: rflm2(ld,*)
56 real(8) det,ang(3),angi(3)
61 det=rot(1,1)*(rot(2,2)*rot(3,3)-rot(3,2)*rot(2,3)) &
62 +rot(2,1)*(rot(3,2)*rot(1,3)-rot(1,2)*rot(3,3)) &
63 +rot(3,1)*(rot(1,2)*rot(2,3)-rot(2,2)*rot(1,3))
77 call rlmrot(p,angi,lmax,ld,d)
82 call dgemm(
'N',
'N',nm,n,nm,1.d0,d(lm,lm),ld,rflm1(lm,1),ld,0.d0,rflm2(lm,1), &
91 subroutine rlmrot(p,ang,lmax,ld,d)
129 integer,
intent(in) :: p
130 real(8),
intent(in) :: ang(3)
131 integer,
intent(in) :: lmax,ld
132 real(8),
intent(out) :: d(ld,*)
134 integer l,m1,m2,lm0,lm1,lm2
135 real(8),
parameter :: sqtwo=1.4142135623730950488d0
136 real(8) s1,s2,t1,t2,t3,t4,t5,t6,t7,t8
138 integer lmi(-lmax:lmax)
139 real(8) ca(lmax),sa(lmax),cg(lmax),sg(lmax),dy(ld,ld)
141 call ylmroty(ang(2),lmax,ld,dy)
143 ca(m1)=cos(m1*ang(1)); sa(m1)=sin(m1*ang(1))
144 cg(m1)=cos(m1*ang(3)); sg(m1)=sin(m1*ang(3))
153 d(lm0,lm0)=dy(lm0,lm0)
155 if (mod(m1,2) == 0)
then 160 t1=sqtwo*dy(lm0,lmi(m1))
161 t2=sqtwo*dy(lmi(m1),lm0)
162 d(lmi(m1),lm0)=s1*t1*ca(m1)
163 d(lm0,lmi(m1))=s1*t2*cg(m1)
164 d(lmi(-m1),lm0)=-t1*sa(m1)
165 d(lm0,lmi(-m1))=t2*sg(m1)
167 if (mod(m2,2) == 0)
then 176 t5=dy(lmi(-m1),lmi(-m2))
177 t6=s1*dy(lmi(m1),lmi(-m2))
180 d(lmi(m1),lmi(m2))=s1*s2*(t1*t7-t2*t8)
181 d(lmi(m1),lmi(-m2))=s1*(t3*t8+t4*t7)
182 d(lmi(-m1),lmi(m2))=-s2*(t3*t7+t4*t8)
183 d(lmi(-m1),lmi(-m2))=t1*t8-t2*t7
192 d(lm1:lm2,lm1:lm2)=-d(lm1:lm2,lm1:lm2)
subroutine ylmroty(beta, lmax, ld, dy)
subroutine rotrflm(rot, lmax, n, ld, rflm1, rflm2)
subroutine rotrfmt(rot, nr, nri, rfmt1, rfmt2)
subroutine rlmrot(p, ang, lmax, ld, d)
subroutine roteuler(rot, ang)