-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathqsbsj.f
36 lines (36 loc) · 844 Bytes
/
qsbsj.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
subroutine qsbsj(dk,nk)
implicit none
integer nk
double precision dk
c
include 'qsglobal.h'
c
integer i,ir,ik
double precision k,x
double precision bessj0,bessj1,bessj
c
do ik=1,nk
k=dble(ik)*dk
do ir=1,nr
x=k*r(ir)
bsj(ik,0,ir)=bessj0(x)
bsj(ik,1,ir)=bessj1(x)
if(x.gt.2.d0)then
bsj(ik,2,ir)=bsj(ik,1,ir)*2.d0/x-bsj(ik,0,ir)
else
bsj(ik,2,ir)=bessj(2,x)
endif
if(x.gt.3.d0)then
bsj(ik,3,ir)=bsj(ik,2,ir)*4.d0/x-bsj(ik,1,ir)
else
bsj(ik,3,ir)=bessj(3,x)
endif
bsj(ik,-1,ir)=-bsj(ik,1,ir)
do i=-1,3
bsj(ik,i,ir)=bsj(ik,i,ir)*geospr(ir)
enddo
enddo
enddo
c
return
end