README
Analytical Pad\'e fits to combinations of Fermi-Dirac integrals for
finite-temperature density functional theory
Univ. Florida OFDFT group
Last revised: 19 Nov 2014 (v1b)
I. Description
==============
This package provides Fortran 90 subroutines to calculate
analytical Pad\'e fits to combinations of Fermi-Dirac integrals (including
their first and second derivatives) that occur commonly in free-energy
DFT.
Authors: Valentin V. Karasiev , Debajit Chakraborty ,
Sam Trickey
Licensure: GNU GPL
II. Main references
===================
[1] "Improved analytical representation of combinations of
Fermi-Dirac integrals for finite-temperature density
functional calculations", V.V. Karasiev, D. Chakraborty,
and S.B. Trickey, Computer Physics Communications (submitted) (2014).
[2] "Gradient corrections to the statistical electronic free energy
at nonzero temperatures: Application to equation-of-state calculations",
F. Perrot, Physical Review A, 20, 586 (1979).
III. Distribution and File list
===============================
The distribution consists of this README and a tarball, PadeFits.yyyy.mm.dd.tgz
("yyyy.mm.dd" gives year, month, day of software revision) containing the following files, all
in a directory named PadeFits:
kappa.f90 Subroutine for fit to kappa, Eq. (10) of Ref.[1], and Appendix A of Ref.[2]
tildeB.f90 Subroutine for fit to tilde B, Eqs. (12), (37) and Table III of Ref. [1]
tildeC.f90 Subroutine for fit to tilde C, Eqs. (14), (38) and Table IV of Ref. [1]
tildeD.f90 Subroutine for fit to tilde D, Eqs. (15), (38) and Table V of Ref. [1]
tildeE.f90 Subroutine for fit to tilde E, Eqs. (16), (38) and Table VI of Ref. [1]
tildeAx.f90 Subroutine for fit to tilde A_x, Eqs. (19), (39) and Table VII of Ref. [1]
tildeBx.f90 Subroutine for fit to tilde B_x, Eqs. (21), (40) and Table VIII of Ref. [1]
eta_half.f90 Subroutine for fit to eta_{1/2}, Eqs. (41), (37) and Table IX of Ref. [1]
test.f90 Test program
y-kappa.dat Reference data for kappa(y), kappa'(y), kappa''(y)
y-tildeB.dat Reference data for tilde B(y), tilde B'(y), tilde B''(y)
y-tildeC.dat Reference data for tilde C(y), tilde C'(y), tilde C''(y)
y-tildeD.dat Reference data for tilde D(y), tilde D'(y), tilde D''(y)
y-tildeE.dat Reference data for tilde E(y), tilde E'(y), tilde E''(y)
y-tildeAx.dat Reference data for tilde A_x(y), tilde A_x'(y), tilde A_x''(y)
y-tildeBx.dat Reference data for tilde B_x(y), tilde B_x'(y), tilde B_x''(y)
y-eta_half.dat Reference data for eta_{1/2}(y), eta_{1/2}'(y), eta_{1/2}''(y)
test.out output for test.f90 [see below]
IV. Running test
================
Compile (e.g. with Intel compiler) and execute:
ifort test.f90 -o test.x
./test.x
Results show mean absolute relative error (MARE) of fits as compared to reference data
(calculated directly) for the function, first and second derivatives calculated with respect
to the y variable. See Perrot and Pad\'e MARE fits in Table II of Ref. [1] and associated discussion.
The subroutines also have been tested with the gfortran compiler and produce identical test results.
V. How to call subroutines
==========================
Ref. [1] presents the fits as analytical functions of the variable y.
Often the reduced temperature t=T/T_F is more convenient variable for DFT implementations.
Hence the variable t is used as the input to the subroutines and all derivatives calculated
analytically with respect to the variable y in the subroutines are converted to derivatives
with respect to the variable t via the trivial transformation
dF/dt=dF/dy*dy/dt
d^2F/dt^2=d^2F/dy^2*(dy/dt)^2 + dF/dy*d^2y/dt^2
Examples of calls are as follows:
call kappa(t,kappa0,dkappa,d2kappa)
call tildeB(t,B,dB,d2B)
call tildeC(t,C,dC,d2C)
call tildeD(t,D,dD,d2D)
call tildeE(t,E,dE,d2E)
call tildeAx(t,Ax,dAx,d2Ax)
call tildeBx(t,Bx,dBx,d2Bx)
call eta_half(t,eta,deta,d2eta)
First argument: reduced temperature t
second argument: the function itself
third argument: its first derivative w/r t
fourth argument: its second derivative w/r t
--end--