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--