9 subroutine gradzfmt(nr,nri,ri,wcr,zfmt,ld,gzfmt)
51 integer,
intent(in) :: nr,nri
52 real(8),
intent(in) :: ri(nr),wcr(12,nr)
53 complex(8),
intent(in) :: zfmt(*)
54 integer,
intent(in) :: ld
55 complex(8),
intent(out) :: gzfmt(ld,3)
59 integer np,np1,npi,npi1
60 integer i0,i1,j0,j1,i,k
62 real(8),
parameter :: c1=0.7071067811865475244d0
66 complex(8) f(nr),df(nr),drmt(ld)
68 real(8),
external :: clebgor
79 i1=npi1+lm; j0=npi+lm; j1=np1+lm
80 f(1:nri)=zfmt(lm:i1:
lmmaxi)
81 f(iro:nr)=zfmt(j0:j1:
lmmaxo)
83 drmt(lm:i1:
lmmaxi)=df(1:nri)
84 drmt(j0:j1:
lmmaxo)=df(iro:nr)
88 f(iro:nr)=zfmt(i0:i1:
lmmaxo)
89 call splined(nro,wcr(1,iro),f(iro),df(iro))
90 drmt(i0:i1:
lmmaxo)=df(iro:nr)
100 t1=-sqrt(dble(l+1)/dble(2*l+1))
101 t2=merge(sqrt(dble(l)/dble(2*l+1)),0.d0,l > 0)
109 if (l+1 <=
lmaxi)
then 111 lm1=(l+1)*(l+2)+(m-mu)+1
113 t3=t1*clebgor(l+1,1,l,m-mu,mu,m)
117 if (abs(m-mu) <= l-1)
then 121 t3=t2*clebgor(l-1,1,l,m-mu,mu,m)
123 +t3*(drmt(lm:i1:
lmmaxi)+(l+1)*ri(1:nri)*zfmt(lm:i1:
lmmaxi))
131 t1=-sqrt(dble(l+1)/dble(2*l+1))
132 t2=merge(sqrt(dble(l)/dble(2*l+1)),0.d0,l > 0)
140 if (l+1 <=
lmaxo)
then 141 lm1=(l+1)*(l+2)+(m-mu)+1
142 j0=npi+lm1; j1=np1+lm1
143 t3=t1*clebgor(l+1,1,l,m-mu,mu,m)
145 +t3*(drmt(i0:i1:
lmmaxo)-l*ri(iro:nr)*zfmt(i0:i1:
lmmaxo))
147 if (abs(m-mu) <= l-1)
then 149 j0=npi+lm1; j1=np1+lm1
150 t3=t2*clebgor(l-1,1,l,m-mu,mu,m)
152 +t3*(drmt(i0:i1:
lmmaxo)+(l+1)*ri(iro:nr)*zfmt(i0:i1:
lmmaxo))
166 gzfmt(i,1)=c1*(z1-gzfmt(i,2))
167 z1=c1*(z1+gzfmt(i,2))
168 gzfmt(i,2)=cmplx(z1%im,-z1%re,8)
175 gzfmt(i,1)=c1*(z1-gzfmt(i,2))
176 z1=c1*(z1+gzfmt(i,2))
177 gzfmt(i,2)=cmplx(z1%im,-z1%re,8)
183 pure subroutine splined(n,wc,f,df)
186 integer,
intent(in) :: n
187 real(8),
intent(in) :: wc(12,n)
188 complex(8),
intent(in) :: f(n)
189 complex(8),
intent(out) :: df(n)
192 df(1)=wc(1,1)*f(1)+wc(2,1)*f(2)+wc(3,1)*f(3)+wc(4,1)*f(4)
193 df(2)=wc(1,2)*f(1)+wc(2,2)*f(2)+wc(3,2)*f(3)+wc(4,2)*f(4)
195 df(i)=wc(1,i)*f(i-1)+wc(2,i)*f(i)+wc(3,i)*f(i+1)+wc(4,i)*f(i+2)
198 df(i)=wc(1,i)*f(n-3)+wc(2,i)*f(n-2)+wc(3,i)*f(n-1)+wc(4,i)*f(n)
199 df(n)=wc(1,n)*f(n-3)+wc(2,n)*f(n-2)+wc(3,n)*f(n-1)+wc(4,n)*f(n)
subroutine gradzfmt(nr, nri, ri, wcr, zfmt, ld, gzfmt)
pure subroutine splined(n, wc, f, df)