Analytical Padé Fits README

This page provides usage notes for the analytical Padé fits package.

Download the original plain-text file

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 <vkarasev@qtp.ufl.edu>, Debajit Chakraborty <debajitc@gmail.com>,
Sam Trickey <trickey@qtp.ufl.edu>

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