2
* $Id: integrate_kbpp_e_band_ray.F 22503 2012-05-20 06:58:57Z d3y133 $
4
subroutine integrate_kbpp_e_band_ray(version,
5
> nrho,drho,lmax,locp,nmax,
6
> n_extra,n_expansion,zv,
8
> nray,G_ray,vl_ray,vnl_ray,
9
> semicore,rho_sc_r,rho_sc_k_ray,
18
integer n_extra,n_expansion(0:lmax)
20
double precision vp(nrho,0:lmax)
21
double precision wp(nrho,0:(lmax+n_extra))
22
double precision rho(nrho)
23
double precision f(nrho)
24
double precision cs(nrho)
25
double precision sn(nrho)
28
double precision G_ray(nray)
29
double precision vl_ray(nray)
30
double precision vnl_ray(nray,0:(lmax+n_extra))
33
double precision rho_sc_r(nrho,2)
34
double precision rho_sc_k_ray(nray,2)
39
* *** local variables ****
40
integer np,taskid,MASTER
43
integer lcount,task_count
45
double precision pi,twopi,forpi
46
double precision p0,p1,p2,p3,p
50
* **** external functions ****
51
double precision dsum,simp
54
* **** set up indx(n,l) --> to wp ****
65
call Parallel_taskid(taskid)
67
if ((nrho/2)*2.eq.nrho) then
68
call errquit('integrate_kbpp_band_ray - psp grid not odd',0,
79
p2=DSQRT(15.0d0*forpi)
80
p3=DSQRT(105.0d0*forpi)
83
*====================== Fourier transformation ======================
84
call dcopy(nray,0.0d0,0,vl_ray,1)
85
call dcopy((lmax+1+n_extra)*nray,0.0d0,0,vnl_ray,1)
86
call dcopy(2*nray,0.0d0,0,rho_sc_k_ray,1)
89
task_count = task_count + 1
90
if (mod(task_count,np).ne.taskid) go to 700
99
GO TO (500,400,300,200), lmax+1
101
*:::::::::::::::::::::::::::::: f-wave ::::::::::::::::::::::::::::::
104
do n=1,n_expansion(3)
108
A=15.0d0*(A-CS(I))/(Q*RHO(I))**2 - 6*A + CS(I)
109
F(I)=A*WP(I,indx(n,3))*VP(I,3)
111
vnl_ray(k1,indx(n,3))=P3*SIMP(NRHO,F,DRHO)/Q
115
*:::::::::::::::::::::::::::::: d-wave ::::::::::::::::::::::::::::::
118
do n=1,n_expansion(2)
121
A=3.0d0*(SN(I)/(Q*RHO(I))-CS(I))/(Q*RHO(I))-SN(I)
122
F(I)=A*WP(I,indx(n,2))*VP(I,2)
124
vnl_ray(k1,indx(n,2))=P2*SIMP(NRHO,F,DRHO)/Q
128
*:::::::::::::::::::::::::::::: p-wave ::::::::::::::::::::::::::::::
131
do n=1,n_expansion(1)
134
F(I)=(SN(I)/(Q*RHO(I))-CS(I))*WP(I,indx(n,1))*VP(I,1)
136
vnl_ray(k1,indx(n,1))=P1*SIMP(NRHO,F,DRHO)/Q
140
*:::::::::::::::::::::::::::::: s-wave :::::::::::::::::::::::::::::::
143
do n=1,n_expansion(0)
145
F(I)=SN(I)*WP(I,indx(n,0))*VP(I,0)
148
vnl_ray(k1,indx(n,0))=P0*SIMP(NRHO,F,DRHO)/Q
152
*:::::::::::::::::::::::::: local potentials ::::::::::::::::::::::::::
155
f(i)=rho(i)*vp(i,locp)*sn(i)
157
vl_ray(k1)=SIMP(nrho,f,drho)*FORPI/Q-ZV*FORPI*cs(nrho)/(Q*Q)
159
*::::::::::::::::::::: semicore density :::::::::::::::::::::::::::::::
162
f(i) = rho(i)*dsqrt(rho_sc_r(i,1))*sn(i)
164
rho_sc_k_ray(k1,1) = SIMP(nrho,f,drho)*forpi/Q
167
f(i)=(sn(i)/(Q*rho(i))-cs(i))*rho_sc_r(i,2)*rho(i)
169
P = SIMP(nrho,f,drho)*forpi/Q
174
call Parallel_Vector_SumAll(2*nray,rho_sc_k_ray)
175
call Parallel_Vector_SumAll(nray,vl_ray)
176
call Parallel_Vector_Sumall((lmax+1+n_extra)*nray,vnl_ray)
178
*::::::::::::::::::::::::::::::: G=0 ::::::::::::::::::::::::::::::::
180
f(i)=vp(i,locp)*rho(i)**2
182
vl_ray(1)=FORPI*SIMP(nrho,f,drho)+TWOPI*ZV*rho(nrho)**2
184
* **** semicore density ****
187
f(i) = dsqrt(rho_sc_r(i,1))*rho(i)**2
189
rho_sc_k_ray(1,1) = forpi*SIMP(nrho,f,drho)
190
rho_sc_k_ray(1,2) = 0.0d0
194
do n=1,n_expansion(l)
195
vnl_ray(1,indx(n,l))=0.0d0
198
* *** only j0 is non-zero at zero ****
200
do n=1,n_expansion(0)
202
F(I)=RHO(I)*WP(I,indx(n,0))*VP(I,0)
204
vnl_ray(1,indx(n,0))=P0*SIMP(NRHO,F,DRHO)