The Elk Code
 
Loading...
Searching...
No Matches
xc_wc06.f90
Go to the documentation of this file.
1
2! Copyright (C) 2006 Zhigang Wu and R. E. Cohen.
3! This file is distributed under the terms of the GNU Lesser General Public
4! License. See the file COPYING for license details.
5
6subroutine xc_wc06(n,rho,grho,g2rho,g3rho,ex,ec,vx,vc)
7implicit none
8! arguments
9integer, intent(in) :: n
10real(8), intent(in) :: rho(n),grho(n),g2rho(n),g3rho(n)
11real(8), intent(out) :: ex(n),ec(n),vx(n),vc(n)
12! local variables
13integer i
14real(8), parameter :: pi=3.1415926535897932385d0
15real(8), parameter :: thrd=1.d0/3.d0
16! default PBE beta
17real(8), parameter :: beta=0.06672455060314922d0
18real(8) r,grho_,g2rho_,g3rho_
19real(8) kf,s,u,v,rs,z,g
20real(8) ks,ksg,t,uu,vv,ww
21do i=1,n
22 r=rho(i)
23 if (r > 1.d-12) then
24 grho_=grho(i)
25 g2rho_=g2rho(i)
26 g3rho_=g3rho(i)
27 kf=(r*3.d0*pi**2)**thrd
28 s=grho_/(2.d0*kf*r)
29 u=g3rho_/((r**2)*(2.d0*kf)**3)
30 v=g2rho_/(r*(2.d0*kf)**2)
31! Wu-Cohen exchange
32 call x_wc06(r,s,u,v,ex(i),vx(i))
33! Perdew-Burke-Ernzerhof correlation
34 rs=(3.d0/(4.d0*pi*r))**thrd
35 z=0.d0
36 g=1.d0
37 ks=sqrt(4.d0*kf/pi)
38 ksg=2.d0*ks*g
39 t=grho_/(ksg*r)
40 uu=g3rho_/((r**2)*ksg**3)
41 vv=g2rho_/(r*ksg**2)
42 ww=0.d0
43 call c_pbe(beta,rs,z,t,uu,vv,ww,ec(i),vc(i),vc(i))
44 else
45 ex(i)=0.d0
46 ec(i)=0.d0
47 vx(i)=0.d0
48 vc(i)=0.d0
49 end if
50end do
51end subroutine
52
subroutine c_pbe(beta, rs, z, t, uu, vv, ww, ec, vcup, vcdn)
Definition c_pbe.f90:5
elemental subroutine x_wc06(rho, s, u, v, ex, vx)
Definition x_wc06.f90:7
subroutine xc_wc06(n, rho, grho, g2rho, g3rho, ex, ec, vx, vc)
Definition xc_wc06.f90:7