9subroutine brzint(nsm,ngridk,nsk,ivkik,nw,wint,n,ld,e,f,g)
46integer,
intent(in) :: nsm,ngridk(3),nsk(3)
47integer,
intent(in) :: ivkik(0:ngridk(1)-1,0:ngridk(2)-1,0:ngridk(3)-1)
48integer,
intent(in) :: nw
49real(8),
intent(in) :: wint(2)
50integer,
intent(in) :: n,ld
51real(8),
intent(in) :: e(ld,*),f(ld,*)
52real(8),
intent(out) :: g(nw)
54integer nk,i1,i2,i3,j1,j2,j3,k1,k2,k3,i,iw,nthd
55integer i000,i001,i010,i011,i100,i101,i110,i111
56real(8) wd,dw,dwi,w1,t1,t2
58real(8) f0(n),f1(n),e0(n),e1(n)
59real(8) f00(n),f01(n),f10(n),f11(n)
60real(8) e00(n),e01(n),e10(n),e11(n)
61if ((ngridk(1) < 1).or.(ngridk(2) < 1).or.(ngridk(3) < 1))
then
63 write(*,
'("Error(brzint): ngridk < 1 : ",3I8)') ngridk
67if ((nsk(1) < 1).or.(nsk(2) < 1).or.(nsk(3) < 1))
then
69 write(*,
'("Error(brzint): nsk < 1 : ",3I8)') nsk
74nk=ngridk(1)*ngridk(2)*ngridk(3)
98 k1=mod(j1+1,ngridk(1))
99 k2=mod(j2+1,ngridk(2))
100 k3=mod(j3+1,ngridk(3))
101 i000=ivkik(j1,j2,j3); i001=ivkik(j1,j2,k3)
102 i010=ivkik(j1,k2,j3); i011=ivkik(j1,k2,k3)
103 i100=ivkik(k1,j2,j3); i101=ivkik(k1,j2,k3)
104 i110=ivkik(k1,k2,j3); i111=ivkik(k1,k2,k3)
106 t2=dble(i1)/dble(nsk(1))
108 f00(1:n)=f(1:n,i000)*t1+f(1:n,i100)*t2
109 f01(1:n)=f(1:n,i001)*t1+f(1:n,i101)*t2
110 f10(1:n)=f(1:n,i010)*t1+f(1:n,i110)*t2
111 f11(1:n)=f(1:n,i011)*t1+f(1:n,i111)*t2
114 e00(1:n)=e(1:n,i000)*t1+e(1:n,i100)*t2-w1
115 e01(1:n)=e(1:n,i001)*t1+e(1:n,i101)*t2-w1
116 e10(1:n)=e(1:n,i010)*t1+e(1:n,i110)*t2-w1
117 e11(1:n)=e(1:n,i011)*t1+e(1:n,i111)*t2-w1
119 t2=dble(i2)/dble(nsk(2))
121 f0(1:n)=f00(1:n)*t1+f10(1:n)*t2
122 f1(1:n)=f01(1:n)*t1+f11(1:n)*t2
123 e0(1:n)=e00(1:n)*t1+e10(1:n)*t2
124 e1(1:n)=e01(1:n)*t1+e11(1:n)*t2
126 t2=dble(i3)/dble(nsk(3))
129 iw=nint(e0(i)*t1+e1(i)*t2)+1
130 if ((iw >= 1).and.(iw <= nw)) g(iw)=g(iw)+f0(i)*t1+f1(i)*t2
141t1=dw*dble(nk)*dble(nsk(1)*nsk(2)*nsk(3))
145if (nsm > 0)
call fsmooth(nsm,nw,g)