TABLE OF CONTENTS


ABINIT/fexsGamma [ Functions ]

[ Top ] [ Functions ]

NAME

 fexsGamma

FUNCTION

 Free energy for the IIT finite temperautre XC functional

INPUTS

 Gamma= ?
 t=temperature

OUTPUT

 fexsGamma=free energy

SOURCE

156  function fexsGamma(Gamma,t)
157 
158 
159 !This section has been created automatically by the script Abilint (TD).
160 !Do not modify the following lines by hand.
161 #undef ABI_FUNC
162 #define ABI_FUNC 'fexsGamma'
163 !End of the abilint section
164 
165  implicit none
166 
167 !Arguments ------------------------------------
168  real(dp) :: fexsGamma
169  real(dp),intent(in) :: Gamma,t
170 !Local variables-------------------------------
171  real(dp) :: lambda
172  real(dp) :: tanht,tanhst
173  real(dp) :: a,b,c,d,e
174  real(dp) :: bmcdse,amcse,sqrt4emd2
175 
176 ! *************************************************************************
177 
178    lambda=(4.0_dp/(9.0_dp*pi))**(one/3.0_dp)
179    tanht=tanh(one/t)
180    tanhst=tanh(one/sqrt(t))
181 
182    a=one/(pi*lambda)*(0.75_dp+3.04363_dp*t**2-0.09227_dp*t**3+1.7035_dp*t**4)/(one+8.31051_dp*t**2+5.1105_dp*t**4)*tanht
183    b=(0.341308_dp+12.070873_dp*t**2+1.148889_dp*t**4)/(one+10.495346_dp*t**2+1.326623_dp*t**4)*sqrt(t)*tanhst
184    e=(0.539409_dp+2.522206_dp*t**2+0.178484_dp*t**4)/(one+2.555501_dp*t**2+0.146319_dp*t**4)*t*tanht
185    c=(0.872496_dp+0.025248_dp*exp(-1./t))*e
186    d=(0.614925_dp+16.996055_dp*t**2+1.489056_dp*t**4)/(one+10.10935_dp*t**2+1.22184_dp*t**4)*sqrt(t)*tanhst
187 
188    bmcdse=b-c*d/e
189    amcse=a-c/e
190    sqrt4emd2=sqrt(4.0_dp*e-d**2)
191 
192    fexsGamma=-one/Gamma*(c/e*Gamma+2.0_dp/e*bmcdse*sqrt(Gamma)+one/e*(amcse-d/e*bmcdse)*log(e*Gamma+d*sqrt(Gamma)+one)- &
193 &   2.0_dp/(e*sqrt4emd2)*(d*amcse+(2.0_dp-d**2/e)*bmcdse)*(atan((2.0_dp*e*sqrt(Gamma)+d)/sqrt4emd2)-atan(d/sqrt4emd2)))
194 
195  end function fexsGamma

ABINIT/Fxc_iit [ Functions ]

[ Top ] [ Functions ]

NAME

 Fxc_iit

FUNCTION

 Auxiliary function for the IIT finite temperature XC functional

INPUTS

 deltavxc= ?
 rs=Wigner-Seitz radius
 t=temperature

OUTPUT

 Fxc_iit=auxiliary function

SOURCE

216  function Fxc_iit(rs,t,deltavxc)
217 
218 
219 !This section has been created automatically by the script Abilint (TD).
220 !Do not modify the following lines by hand.
221 #undef ABI_FUNC
222 #define ABI_FUNC 'Fxc_iit'
223 !End of the abilint section
224 
225  implicit none
226 
227 !Arguments ------------------------------------
228  real(dp) :: Fxc_iit
229  real(dp),intent(in) :: rs,t,deltavxc
230 !Local variables-------------------------------
231  real(dp) :: newrs,newt,newGamma
232 
233 ! *************************************************************************
234 
235    newrs=rs/(one+deltavxc)**(one/3.0_dp)
236    newt=t/(one+deltavxc)**(2.0_dp/3.0_dp)
237    newGamma=2.0_dp*(4.0_dp/(9.0_dp*pi))**(2.0_dp/3.0_dp)*newrs/newt
238    Fxc_iit=3.0_dp/(4.0_dp*pi)*fexsGamma(newGamma,newt)/newrs**4
239 
240  end function Fxc_iit

ABINIT/m_xciit [ Modules ]

[ Top ] [ Modules ]

NAME

  m_xciit

FUNCTION

 Exchange-correlation at finite temperature of an electron gas
 Ichimaru S., Iyetomi H., Tanaka S., Phys. Rep. 149, 91-205 (1987) [[cite:Ichimaru1987]]

COPYRIGHT

  Copyright (C) 2002-2018 ABINIT group (JFD,LK)
  This file is distributed under the terms of the
  GNU General Public License, see ~abinit/COPYING
  or http://www.gnu.org/copyleft/gpl.txt .

PARENTS

CHILDREN

SOURCE

22 #if defined HAVE_CONFIG_H
23 #include "config.h"
24 #endif
25 
26 #include "abi_common.h"
27 
28 module m_xciit
29 
30  use defs_basis
31  use m_errors
32 
33  implicit none
34 
35  private

ABINIT/tdexcsdtiit [ Functions ]

[ Top ] [ Functions ]

NAME

 tdexcsdtiit

FUNCTION

 Auxiliary function for the IIT finite temperature XC functional

INPUTS

 rs=Wigner-Seitz radius
 t=temperature

OUTPUT

 tdexcsdtiit=auxiliary function

SOURCE

260  function tdexcsdtiit(rs,t)
261 
262 
263 !This section has been created automatically by the script Abilint (TD).
264 !Do not modify the following lines by hand.
265 #undef ABI_FUNC
266 #define ABI_FUNC 'tdexcsdtiit'
267 !End of the abilint section
268 
269  implicit none
270 
271 !Arguments ------------------------------------
272  real(dp) :: tdexcsdtiit
273  real(dp),intent(in) :: rs,t
274 !Local variables-------------------------------
275  real(dp) :: ef,Gamma
276  real(dp) :: deltat=1.0d-2
277 
278 ! *************************************************************************
279 
280    ef=half*(9.0_dp*pi/4.0_dp)**(2.0_dp/3.0_dp)/rs**2
281    Gamma=one/(t*ef)/rs
282    tdexcsdtiit=8.0_dp*(fexsGamma(Gamma/(one+deltat),(one+deltat)*t) &
283 &   -fexsGamma(Gamma/(one-deltat),(one-deltat)*t)) &
284 &   -(fexsGamma(Gamma/(one+2.0_dp*deltat),(one+2.0_dp*deltat)*t) &
285 &   -fexsGamma(Gamma/(one-2.0_dp*deltat),(one-2.0_dp*deltat)*t))
286    tdexcsdtiit=t*tdexcsdtiit/(12.0_dp*deltat*t)/rs
287 
288  end function tdexcsdtiit

ABINIT/xciit [ Functions ]

[ Top ] [ Functions ]

NAME

  xciit

FUNCTION

 Exchange-correlation at finite temperature of an electron gas
 Ichimaru S., Iyetomi H., Tanaka S., Phys. Rep. 149, 91-205 (1987) [[cite:Ichimaru1987]]

INPUTS

  temp= (electronic) temperature
  npt=number of real space points
  order=gives the maximal derivative of Exc computed.
  rspts(npt)=Wigner-Seitz radii at each point

OUTPUT

  exc(npt)=exchange-correlation energy density
  fxc(npt)=exchange-correlation free energy at finite temperature
  vxc(npt)=exchange-correlation potential
  --- optional output ---
  [dvxc(npt)]=partial second derivatives of the xc energy

PARENTS

      drivexc

CHILDREN

SOURCE

 72 subroutine xciit(exc,fxc,npt,order,rspts,temp,vxc, &
 73 &                dvxc)!Optional argument
 74 
 75 
 76 !This section has been created automatically by the script Abilint (TD).
 77 !Do not modify the following lines by hand.
 78 #undef ABI_FUNC
 79 #define ABI_FUNC 'xciit'
 80 !End of the abilint section
 81 
 82  implicit none
 83 
 84 !Arguments ------------------------------------
 85 !scalars
 86  integer,intent(in) :: npt,order
 87  real(dp),intent(in) :: temp
 88 !arrays
 89  real(dp),intent(in) :: rspts(npt)
 90  real(dp),intent(out) :: exc(npt),fxc(npt),vxc(npt)
 91  real(dp),intent(out),optional :: dvxc(npt)
 92 
 93 !Local variables-------------------------------
 94 !scalars
 95  integer :: ipt
 96  real(dp) :: ef,deltavxc,Gamma,rs,rsm1,tt
 97  character(len=500) :: msg
 98 
 99 ! *************************************************************************
100 
101 !Checks the values of order
102  if(order<0.or.order>2)then
103    write(msg, '(4a,i3,a)' ) ch10,&
104 &   'With Ishimaru-Iyetomi-Tanka xc functional, the only',ch10,&
105 &   'allowed values for order are 0, 1 or 2, while it is found to be ',order,'.'
106    MSG_BUG(msg)
107  end if
108 
109 !Loop over grid points
110  do ipt=1,npt
111 
112    rs=rspts(ipt)
113    rsm1=one/rs
114 !  Step for the Vxc computation
115    deltavxc=0.01_dp
116 !  Compute ef
117    ef=0.5_dp*(9.0_dp*pi/4.0_dp)**(2.0_dp/3.0_dp)*rsm1**2
118 !  Compute temperature
119    tt=max(temp/ef,tol12)
120 !  Compute Gamma
121    Gamma=one/(tt*ef)/rs
122 
123 !  Exchange-correlation of Ichimaru functional
124    fxc(ipt)= fexsGamma(Gamma,tt)*rsm1
125    exc(ipt)=fxc(ipt) - tdexcsdtiit(rs,tt);
126    vxc(ipt)=(8.0_dp*(Fxc_iit(rs,tt,deltavxc)-Fxc_iit(rs,tt,-deltavxc)) &
127 &   -(Fxc_iit(rs,tt,two*deltavxc)-Fxc_iit(rs,tt,-two*deltavxc)))/ &
128 &   (12.0_dp*deltavxc*3.0_dp/(4.0_dp*pi)/rs**3)
129    if (order==2) then
130      dvxc(ipt)=(-30.0_dp*Fxc_iit(rs,tt,zero)+16.0_dp*(Fxc_iit(rs,tt,deltavxc)+Fxc_iit(rs,tt,-deltavxc)) &
131 &     -(Fxc_iit(rs,tt,two*deltavxc)+Fxc_iit(rs,tt,two*deltavxc)))/ &
132 &     (12.0_dp*(deltavxc*3.0_dp/(4.0_dp*pi)/rs**3)**2)
133    end if
134  end do
135 
136  CONTAINS