LCOV - code coverage report
Current view: top level - wannier - wann_plot_od_vac.F (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 43 0.0 %
Date: 2019-09-08 04:53:50 Functions: 0 1 0.0 %

          Line data    Source code
       1             :       module m_wann_plot_od_vac
       2             :       contains
       3           0 :       subroutine wann_plot_od_vac(point,
       4             :      >     z1,nmzd,nv2d,odi,nmz,delz,bmat,
       5           0 :      >     bkpt,nvd,nv,omtil,k3,ac,bc,u,ue,
       6             :      <     value)
       7             : c**************************************************************
       8             : c   Calculates the lattice periodic part of the Bloch function
       9             : c   in the vacuum. Used for plotting.  
      10             : c   FF, Sep. '06  ---->  1D version YM January 07  
      11             : c*************************************************************** 
      12             :       use m_constants, only : pimach
      13             :       use m_angle 
      14             :       use m_types
      15             :       implicit none
      16             : c     .. scalar Arguments..
      17             :       integer, intent (in) :: nmzd,nv2d,nmz,nvd,nv
      18             :       real,    intent (in) :: delz,z1,omtil,point(3)
      19             : 
      20             : c     ..array arguments..
      21             :       integer, intent (in) :: k3(nvd)
      22             :       real,    intent (in) :: bkpt(3),bmat(3,3)
      23             :       complex, intent (out) :: value
      24             :       type (od_inp), intent (in) :: odi
      25             : 
      26             : c     ..basis wavefunctions in the vacuum
      27             :       complex, intent(in) :: ac(nv2d,-odi%mb:odi%mb)
      28             :       complex, intent(in) :: bc(nv2d,-odi%mb:odi%mb)
      29             :       real,    intent(in) :: u(nmzd,nv2d,-odi%mb:odi%mb)
      30             :       real,    intent(in) :: ue(nmzd,nv2d,-odi%mb:odi%mb)
      31             : 
      32             : 
      33             : c     ..local scalars..
      34             :       real arg,zks,tpi,r,phi
      35             :       integer i,m,l,j,k,n,nv2,n2
      36             :       integer np1
      37             :       complex c_1
      38           0 :       integer, allocatable :: kvac3(:),map1(:)
      39             :       complex value1
      40             : c     ..intrinsic functions..
      41             :       intrinsic aimag,cmplx,conjg,real,sqrt
      42             : 
      43           0 :       allocate (kvac3(nv2d),map1(nvd))
      44             : 
      45           0 :       tpi = 2 * pimach() 
      46             : 
      47           0 :       np1 = nmz + 1
      48             : 
      49             : c.. determining the indexing array (in-plane stars)
      50             : c.. for the k-point
      51             : 
      52           0 :       n2 = 0
      53           0 :       do 35 k = 1,nv
      54           0 :          do 45 j = 1,n2
      55           0 :             if (k3(k).eq.kvac3(j)) then
      56           0 :                map1(k) = j
      57           0 :                goto 35
      58             :             end if
      59           0 :  45      continue
      60           0 :          n2 = n2 + 1
      61           0 :          if (n2.gt.nv2d) stop 'wann_plot:vac'
      62           0 :          kvac3(n2) =  k3(k)
      63           0 :          map1(k) = n2
      64           0 :  35   continue
      65           0 :       nv2 = n2
      66             : 
      67             : c.. the body of the routine
      68             : 
      69           0 :       value = cmplx(0.0,0.0)
      70           0 :       value1 = cmplx(0.0,0.0)
      71           0 :       r = sqrt(point(1)**2+point(2)**2)
      72           0 :       phi = angle(point(1),point(2))
      73             : 
      74             : c      print*,"difference=",(abs(point(3))-z1)/delz
      75             : 
      76           0 :          i=(r-z1)/delz + 1
      77             : 
      78           0 :          if (i.gt.nmz) then
      79           0 :             i=nmz
      80           0 :             print*,"i.gt.nmz in wann_plot_od_vac"
      81             :          endif
      82             : 
      83           0 :       do l = 1,nv2  !calculation for i
      84           0 :         do m = -odi%mb,odi%mb
      85           0 :           arg=kvac3(l)*bmat(3,3)*point(3) + m*phi
      86           0 :           c_1=cmplx(cos(arg),sin(arg))
      87           0 :           value = value + (u(i,l,m)*ac(l,m)+ue(i,l,m)*bc(l,m))*c_1
      88             : c         print*,"value=",value
      89           0 :           if (real(value).gt.10.or.real(value).lt.-10)then
      90           0 :           print*,"value=",value
      91           0 :           print*,"i=",i
      92           0 :           print*,"u(i,l)=",u(i,l,m)
      93           0 :           print*,"ac(l)=",ac(l,m)
      94           0 :           print*,"bc(l)=",bc(l,m)
      95           0 :           print*,"ue(i,l)=",ue(i,l,m)
      96             :           endif
      97             :         enddo !m
      98             :       enddo ! l
      99             : 
     100           0 :       i=i+1
     101             : 
     102           0 :       do l = 1,nv2  !calculation for i
     103             :         do m = -odi%mb,odi%mb
     104             :           arg=(kvac3(l)*bmat(3,3))*point(3) + m*phi
     105             :           c_1=cmplx(cos(arg),sin(arg))
     106             :           value1 = value1 + (u(i,l,m)*ac(l,m)+ue(i,l,m)*bc(l,m))*c_1
     107             :         enddo !m
     108             :       enddo ! l
     109             : 
     110             : c     value=(value1-value)*(r/delz+2-i) + value
     111             :     
     112           0 :       deallocate ( kvac3,map1 )
     113             : 
     114           0 :       end subroutine wann_plot_od_vac
     115             :       end module m_wann_plot_od_vac

Generated by: LCOV version 1.13