Line data Source code
1 : module m_wann_gwf_auxovlp
2 : use m_juDFT
3 : implicit none
4 : contains
5 :
6 0 : subroutine wann_gwf_auxovlp(q1,q2,a,mmnaux)
7 : use m_constants, only : pimach
8 :
9 : implicit none
10 : real, intent(in) :: q1(3),q2(3),a
11 : complex, intent(out) :: mmnaux
12 :
13 : integer :: i
14 : real :: pi, a_aux, b_aux, tau(3)
15 : complex :: ov(3)
16 :
17 0 : call timestart("wann_gwf_auxovlp")
18 0 : pi = pimach()
19 0 : a_aux = a
20 0 : b_aux = 0.98*a
21 0 : tau = 2.0*pi*(q1-q2)/a_aux
22 0 : ov = cmplx(1.,0.)
23 :
24 0 : do i=1,3
25 0 : if(abs(tau(i)).lt.1e-10) cycle
26 0 : ov(i) = 8.0*pi*pi*sin(tau(i)*b_aux/2.0)
27 0 : ov(i) = ov(i) / ( 4.0*pi*pi - (tau(i)*b_aux)**2 )
28 0 : ov(i) = ov(i) / ( tau(i)*b_aux )
29 : enddo
30 0 : mmnaux = ov(1)*ov(2)*ov(3)
31 :
32 0 : write(*,*)'ov(1) =',ov(1)
33 0 : write(*,*)'ov(2) =',ov(2)
34 0 : write(*,*)'ov(3) =',ov(3)
35 0 : write(*,*)'mmnaux=',mmnaux
36 :
37 0 : call timestop("wann_gwf_auxovlp")
38 0 : end subroutine wann_gwf_auxovlp
39 :
40 : end module m_wann_gwf_auxovlp
|