TABLE OF CONTENTS
ABINIT/fexsGamma [ Functions ]
NAME
fexsGamma
FUNCTION
Free energy for the IIT finite temperautre XC functional
INPUTS
Gamma= ? t=temperature
OUTPUT
fexsGamma=free energy
SOURCE
128 function fexsGamma(Gamma,t) 129 130 131 !This section has been created automatically by the script Abilint (TD). 132 !Do not modify the following lines by hand. 133 #undef ABI_FUNC 134 #define ABI_FUNC 'fexsGamma' 135 !End of the abilint section 136 137 implicit none 138 139 !Arguments ------------------------------------ 140 real(dp) :: fexsGamma 141 real(dp),intent(in) :: Gamma,t 142 !Local variables------------------------------- 143 real(dp) :: lambda 144 real(dp) :: tanht,tanhst 145 real(dp) :: a,b,c,d,e 146 real(dp) :: bmcdse,amcse,sqrt4emd2 147 148 ! ************************************************************************* 149 150 lambda=(4.0_dp/(9.0_dp*pi))**(one/3.0_dp) 151 tanht=tanh(one/t) 152 tanhst=tanh(one/sqrt(t)) 153 154 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 155 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 156 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 157 c=(0.872496_dp+0.025248_dp*exp(-1./t))*e 158 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 159 160 bmcdse=b-c*d/e 161 amcse=a-c/e 162 sqrt4emd2=sqrt(4.0_dp*e-d**2) 163 164 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)- & 165 & 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))) 166 167 end function fexsGamma
ABINIT/Fxc_iit [ 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
188 function Fxc_iit(rs,t,deltavxc) 189 190 191 !This section has been created automatically by the script Abilint (TD). 192 !Do not modify the following lines by hand. 193 #undef ABI_FUNC 194 #define ABI_FUNC 'Fxc_iit' 195 !End of the abilint section 196 197 implicit none 198 199 !Arguments ------------------------------------ 200 real(dp) :: Fxc_iit 201 real(dp),intent(in) :: rs,t,deltavxc 202 !Local variables------------------------------- 203 real(dp) :: newrs,newt,newGamma 204 205 ! ************************************************************************* 206 207 newrs=rs/(one+deltavxc)**(one/3.0_dp) 208 newt=t/(one+deltavxc)**(2.0_dp/3.0_dp) 209 newGamma=2.0_dp*(4.0_dp/(9.0_dp*pi))**(2.0_dp/3.0_dp)*newrs/newt 210 Fxc_iit=3.0_dp/(4.0_dp*pi)*fexsGamma(newGamma,newt)/newrs**4 211 212 end function Fxc_iit
ABINIT/tdexcsdtiit [ 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
232 function tdexcsdtiit(rs,t) 233 234 235 !This section has been created automatically by the script Abilint (TD). 236 !Do not modify the following lines by hand. 237 #undef ABI_FUNC 238 #define ABI_FUNC 'tdexcsdtiit' 239 !End of the abilint section 240 241 implicit none 242 243 !Arguments ------------------------------------ 244 real(dp) :: tdexcsdtiit 245 real(dp),intent(in) :: rs,t 246 !Local variables------------------------------- 247 real(dp) :: ef,Gamma 248 real(dp) :: deltat=1.0d-2 249 250 ! ************************************************************************* 251 252 ef=half*(9.0_dp*pi/4.0_dp)**(2.0_dp/3.0_dp)/rs**2 253 Gamma=one/(t*ef)/rs 254 tdexcsdtiit=8.0_dp*(fexsGamma(Gamma/(one+deltat),(one+deltat)*t) & 255 & -fexsGamma(Gamma/(one-deltat),(one-deltat)*t)) & 256 & -(fexsGamma(Gamma/(one+2.0_dp*deltat),(one+2.0_dp*deltat)*t) & 257 & -fexsGamma(Gamma/(one-2.0_dp*deltat),(one-2.0_dp*deltat)*t)) 258 tdexcsdtiit=t*tdexcsdtiit/(12.0_dp*deltat*t)/rs 259 260 end function tdexcsdtiit
ABINIT/xciit [ 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)
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 .
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
36 #if defined HAVE_CONFIG_H 37 #include "config.h" 38 #endif 39 40 #include "abi_common.h" 41 42 subroutine xciit(exc,fxc,npt,order,rspts,temp,vxc, & 43 & dvxc)!Optional argument 44 45 use defs_basis 46 use m_errors 47 48 !This section has been created automatically by the script Abilint (TD). 49 !Do not modify the following lines by hand. 50 #undef ABI_FUNC 51 #define ABI_FUNC 'xciit' 52 !End of the abilint section 53 54 implicit none 55 56 !Arguments ------------------------------------ 57 !scalars 58 integer,intent(in) :: npt,order 59 real(dp),intent(in) :: temp 60 !arrays 61 real(dp),intent(in) :: rspts(npt) 62 real(dp),intent(out) :: exc(npt),fxc(npt),vxc(npt) 63 real(dp),intent(out),optional :: dvxc(npt) 64 65 !Local variables------------------------------- 66 !scalars 67 integer :: ipt 68 real(dp) :: ef,deltavxc,Gamma,rs,rsm1,tt 69 character(len=500) :: msg 70 71 ! ************************************************************************* 72 73 !Checks the values of order 74 if(order<0.or.order>2)then 75 write(msg, '(4a,i3,a)' ) ch10,& 76 & 'With Ishimaru-Iyetomi-Tanka xc functional, the only',ch10,& 77 & 'allowed values for order are 0, 1 or 2, while it is found to be ',order,'.' 78 MSG_BUG(msg) 79 end if 80 81 !Loop over grid points 82 do ipt=1,npt 83 84 rs=rspts(ipt) 85 rsm1=one/rs 86 ! Step for the Vxc computation 87 deltavxc=0.01_dp 88 ! Compute ef 89 ef=0.5_dp*(9.0_dp*pi/4.0_dp)**(2.0_dp/3.0_dp)*rsm1**2 90 ! Compute temperature 91 tt=max(temp/ef,tol12) 92 ! Compute Gamma 93 Gamma=one/(tt*ef)/rs 94 95 ! Exchange-correlation of Ichimaru functionnal 96 fxc(ipt)= fexsGamma(Gamma,tt)*rsm1 97 exc(ipt)=fxc(ipt) - tdexcsdtiit(rs,tt); 98 vxc(ipt)=(8.0_dp*(Fxc_iit(rs,tt,deltavxc)-Fxc_iit(rs,tt,-deltavxc)) & 99 & -(Fxc_iit(rs,tt,two*deltavxc)-Fxc_iit(rs,tt,-two*deltavxc)))/ & 100 & (12.0_dp*deltavxc*3.0_dp/(4.0_dp*pi)/rs**3) 101 if (order==2) then 102 dvxc(ipt)=(-30.0_dp*Fxc_iit(rs,tt,zero)+16.0_dp*(Fxc_iit(rs,tt,deltavxc)+Fxc_iit(rs,tt,-deltavxc)) & 103 & -(Fxc_iit(rs,tt,two*deltavxc)+Fxc_iit(rs,tt,two*deltavxc)))/ & 104 & (12.0_dp*(deltavxc*3.0_dp/(4.0_dp*pi)/rs**3)**2) 105 end if 106 end do 107 108 CONTAINS