Line data Source code
1 : !--------------------------------------------------------------------------------
2 : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
3 : ! This file is part of FLEUR and available as free software under the conditions
4 : ! of the MIT license as expressed in the LICENSE file in more detail.
5 : !--------------------------------------------------------------------------------
6 :
7 : MODULE m_wann_lapw_int_plot
8 : use m_juDFT
9 : c***************************************************************
10 : c plot wannierfunction in interstitial
11 : c Frank Freimuth, November 2006
12 : c***************************************************************
13 :
14 : CONTAINS
15 0 : SUBROUTINE wann_lapw_int_plot(point,bmat,unigrid,wannint,
16 : < xdnout)
17 : use m_constants
18 : implicit none
19 : real,intent(in)::point(3)
20 : real,intent(in)::bmat(3,3)
21 : integer,intent(in)::unigrid(4)
22 : complex,intent(in)::wannint(-unigrid(4):unigrid(4),
23 : , -unigrid(4):unigrid(4),
24 : , -unigrid(4):unigrid(4))
25 : complex,intent(out)::xdnout
26 :
27 : real xiiu(3),tpi,arg
28 : complex factor1,factor2,factor3
29 : complex factor1p,factor2p,factor3p,factor
30 : integer pw1,pw2,pw3
31 :
32 0 : call timestart("wann_lapw_int_plot")
33 :
34 0 : tpi=2*pimach()
35 0 : xiiu=matmul(bmat,point)/tpi_const
36 :
37 :
38 :
39 0 : xdnout=cmplx(0.0,0.0)
40 :
41 : if(.false.)then
42 :
43 : arg=(tpi*xiiu(1))/unigrid(1)
44 : factor1=cmplx(cos(arg),sin(arg))
45 : arg=(tpi*xiiu(2))/unigrid(2)
46 : factor2=cmplx(cos(arg),sin(arg))
47 : arg=(tpi*xiiu(3))/unigrid(3)
48 : factor3=cmplx(cos(arg),sin(arg))
49 :
50 : do pw3=-unigrid(4),unigrid(4)
51 : factor3p=(factor3)**pw3
52 : do pw2=-unigrid(4),unigrid(4)
53 : factor2p=(factor2)**pw2
54 : do pw1=-unigrid(4),unigrid(4)
55 : factor1p=(factor1)**pw1
56 :
57 : factor=factor1p*factor2p*factor3p
58 : xdnout=xdnout+factor*wannint(pw1,pw2,pw3)
59 :
60 : enddo
61 : enddo
62 : enddo
63 :
64 : else
65 :
66 0 : do pw3=-unigrid(4),unigrid(4)
67 0 : do pw2=-unigrid(4),unigrid(4)
68 0 : do pw1=-unigrid(4),unigrid(4)
69 : arg=tpi*(pw1*xiiu(1)/unigrid(1)+pw2*xiiu(2)/unigrid(2)+
70 0 : + pw3*xiiu(3)/unigrid(3))
71 0 : factor=cmplx(cos(arg),sin(arg))
72 0 : xdnout=xdnout+factor*wannint(pw1,pw2,pw3)
73 :
74 : enddo
75 : enddo
76 : enddo
77 :
78 :
79 : endif
80 0 : call timestop("wann_lapw_int_plot")
81 0 : END SUBROUTINE wann_lapw_int_plot
82 : END MODULE m_wann_lapw_int_plot
|