Profess@Quantum-ESPRESSO README

Installation and usage notes for the Profess@Quantum-ESPRESSO interface.

Download the original plain-text README

README 
Profess@Quantum-ESPRESSO interface 
vers. 2.0.1 based on Profess vers. 3.0 and Quantum-Espresso vers. 5.2.1
Univ. Florida orbital-free DFT for warm dense matter goup
README last revised: 12 JUN 2017
New in 2.0.1 version:
  * Known problem of getting stuck with "line step"=0.0 value during 
    molecular dynamics runs is resolved
  * Compatibility with our KGEC package, 
    now KGEC could be compiled with Profess@Quantum-ESPRESSO,
    otherwise the functionality is exactly the same as in 2.0

I. Description
==============
This package provides patches to build the Profess@Quantum-ESPRESSO interface 
and modified version of Profess.

Author: Valentin V. Karasiev <vkarasev@qtp.ufl.edu>
Tester and editor: Sam Trickey <trickey@qtp.ufl.edu>

Licensure: GNU GPL  

Modifications of Profess include:
---------------------------------
  - Finite-T non-interacting free-energy functionals, among them: Thomas-Fermi,
    VT84F and KST2 
  - Implementation of XC free-energy functionals: KSDT restricted path integral 
    Monte-Carlo (RPIMC) based (Ref. 5 below) and Perrot-Dharma-wardana 2000

Profess@Quantum-ESPRESSO interface includes:
--------------------------------------------
  - Software coupling Profess and Quantum-ESPRESSO which permits use of OFDFT 
    forces from Profess to drive molecular dynamics simulations in Quantum- 
    ESPRESSO.
  - Modified part of Kohn-Sham code PWscf includes implementation of the same 
    XC free-energy functionals as listed above: KSDT restricted path integral 
    Monte-Carlo (RPIMC) based, Perrot-Dharma-wardana (1984 and 2000).

II. Main references
===================
  -1- "Born - Oppenheimer interatomic forces from simple,
    local kinetic energy density functionals", V.V. Karasiev, S.B. Trickey, 
    and Frank E. Harris, Journal of Computer-Aided Materials Design 13, 
    111 - 129 (2006).

  -2- "Properties of constraint-based single-point approximate kinetic energy 
    functionals", V. V. Karasiev, R. S. Jones, S. B. Trickey, and 
    Frank E. Harris, Physical Review B 80, 245120 (2009); erratum 
    Physical Review  B 87, 239902 (2013)

  -3- "Generalized-gradient-approximation noninteracting free-energy functionals 
    for orbital-free density functional calculations", Valentin V. Karasiev, 
    Travis Sjostrom, and S. B. Trickey, Physical Review B 86, 115101 (2012).

  -4- "Nonempirical generalized gradient approximation free-energy functional
    for orbital-free simulations", Valentin V. Karasiev, Debajit Chakraborty, 
    Olga A. Shukruto, and S. B. Trickey, Physical Review B 88, 161108(R) 
    (2013).

  -5- "Accurate homogeneous electron gas exchange-correlation free energy for 
    local spin-density calculations", Valentin V. Karasiev, Travis Sjostrom, 
    James Dufty, and S.B. Trickey, Physical Review Letters 112, 076403 (2014).

  -6- "Innovations in finite-temperature density functionals", V.V. Karasiev, 
    T. Sjostrom, D.Chakraborty, J.W. Dufty, F.E. Harris, K. Runge, and S.B. 
    Trickey, chapter in "Computational Challenges in Warm Dense Matter", F. 
    Graziani et al. eds., Springer Verlag (2014); 61-75.

  -7- "Finite-temperature orbital-free DFT molecular dynamics: Coupling Profess 
    and Quantum Espresso", V.V. Karasiev, T. Sjostrom, and S.B. Trickey,
    Computer Physics Communications 185, 3240-3249 (2014).

  - See also references in the original Profess and Quantum-Espresso packages.

  - Also see http://www.qtp.ufl.edu/ofdft for occasional updates, bug fixes, etc. 


III. Pre-requisites and convention
==================================
Linux with Bourne-again shell (bash)
Intel ifort and icc compilers
Open MPI for parallel compilation

Note about Intel compiler versions: 
Package compiled with Intel compiler vers. 14.0.3 and openmpi vers. 1.8.6
exhibits a memory leak problem when used for Kohn-Sham MD runs, and it 
frequently terminates with "Bus error" message when used for Orbital-free MD. 
Compilation with Intel compiler vers. 14.0.0 and openmpi vers. 1.6.5 provides
stable executables. Intel compiler vers. 16.0.0 and openmpi vers. 1.10.2
also produce stable executables. Other versions and compilers not tested.

Convention:  in paths, the tilde (~) indicates (and is translated by bash as)
your home directory:
~/OFQE2.0.1 is /home/<user_name>/OFQE2.0.1
If you install the package in a different directory, change "~" to <your_local_path>

IV. Distribution and File list
==============================
Distribution consists of this README and a tarball, ProfAtQE2.0.1.tgz 
containing the following files, all in a directory named OFQE2.0.1 :

patches/espresso-5.2.1-5.2.1m5.diff	Patch for Quantum-ESPRESSO v.5.2.1
patches/PROFESS3.0-PROFESS3.0m5B.diff	Patch for Profess v.3.0
patches/fftw-2.1.5-profftw-2.1.5.diff	Patch for fftw-2.1.5
examples-OFDFT				Examples to run OFDFT Profess
examples-PROFESS@QE			Examples to run Profess@Quantum-ESPRESSO
PP					Directory with pseudopotential files, 
					PP/recpot - local in reciprocal space,
					PP/UPF - local and PAW (in UPF format) 
					transferable to high material density.
tools					Directory with script(s) for extracting 
					key output
download				Directory (empty) for downloading 3rd party 
					sources
lib					Directory (empty) to install libraries

V. Download
===========
Download the following files and place them in the directory ~/OFQE2.0.1/download :
  - Profess 3.0 (catalog ID AEBN_v3_0) from http://www.cpc.cs.qub.ac.uk/
  - Quantum-ESPRESSO 5.2.1 (espresso-5.2.1.tar.gz file)
    direct links to the files:
    http://www.qe-forge.org/gf/download/frsrelease/199/855/espresso-5.2.1.tar.gz
  - FFTW 2.1.5 (fftw-2.1.5.tar.gz file) 
    from direct link http://www.fftw.org/fftw-2.1.5.tar.gz 
    or from http://www.fftw.org/
    NOTE: required only for parallel compilation of Profess@Quantum-Espresso interface
  - FFTW 3.3.4 (fftw-3.3.4.tar.gz file) 
    from direct link http://www.fftw.org/fftw-3.3.4.tar.gz 
    or from http://www.fftw.org/download.html
  - LAPACK 3.5.0 (lapack-3.5.0.tgz file) 
    from direct link http://www.netlib.org/lapack/lapack-3.5.0.tgz 
    or from http://www.netlib.org/lapack/
    NOTE: required only for compilation of modified Profess as a stand-alone package
  - LibXC 2.0.1 (libxc-2.0.1.tar.gz file) from direct link  
    http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.0.1.tar.gz 
    or from http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:download
     
VI. Applying patches
====================
Place the distribution file ProfAtQE2.0.1-yyyy.mm.dd.tgz in the installation directory 
(home directory in our case), unpack all files and apply patches:

tar xzvf ProfAtQE2.0.1-yyyy.mm.dd.tgz 
cd ~/OFQE2.0.1/lib
tar xzvf ../download/fftw-2.1.5.tar.gz
tar xzvf ../download/fftw-3.3.4.tar.gz
tar xzvf ../download/lapack-3.5.0.tgz
tar xzvf ../download/libxc-2.0.1.tar.gz
mv fftw-2.1.5 profftw-2.1.5
cd profftw-2.1.5
patch -p1 < ../../patches/fftw-2.1.5-profftw-2.1.5.diff
cd ../..

tar xzvf download/aebn_v3_0.tar.gz
tar xzvf download/espresso-5.2.1.tar.gz
mv espresso-5.2.1 espresso-5.2.1m5
cd espresso-5.2.1m5
patch -p1 < ../patches/espresso-5.2.1-5.2.1m5.diff
cd ..
mv PROFESS3.0 PROFESS3.0m5B
cd PROFESS3.0m5B
patch -p1 < ../patches/PROFESS3.0-PROFESS3.0m5B.diff

Choose either parallel (Sect. VII) or serial (Sect. VIII) compilation.
If both compilations are to be done at once, be sure to execute "make clean" 
each time and be sure to install the two Profess@Quantum-ESPRESSO interfaces 
in separate directories, for example
~/OFQE2.0.1/espresso-5.2.1m5 and ~/OFQE2.0.1/espresso-5.2.1m5_ser
or use different root directories for parallel and serial compilation,
for example ~/OFQE2.0.1 and ~/OFQE2.0.1_ser
 
VII. Parallel compilation
=========================
(Be sure that modules required for parallel compilation/execution 
like openmpi etc. are loaded, e.g. "module load intel openmpi",
request interactive session and load the following modules on HighPerGator at UF:
srun -p hpg2-dev --time=03:00:00 --mem-per-cpu=3600 --pty -u bash -i
module load intel/2016.0.109 openmpi/1.10.2
or
module load intel/2017.1.132 openmpi/1.10.2 (*** not tested)
NOTE: compilation of the LAPACK library with intel/2017.1.132 gets stuck 
at one of the internal tests running together with compilation. 
To avoid that, replace "-O2" with "-O1" or with "-O3" in make.inc,
see instructions below.
)

A1. Compile fftw-3.3.4 library:
-------------------------------

cd ~/OFQE2.0.1/lib/fftw-3.3.4
./configure --prefix="`pwd`/../fftw-3.3.4_intel_mpi" CC=mpicc F77=mpif77 --enable-mpi
make clean
make
make install

A2. Compile profftw library:
----------------------------

cd ~/OFQE2.0.1/lib/profftw-2.1.5
./configure --prefix="`pwd`/../profftw-2.1.5_intel_mpi" CC=mpicc F77=mpif77 --enable-mpi
make clean
make
make install

B. Compile lapack library: 
--------------------------
required only for compilation of modified Profess as a stand-alone package

cd ~/OFQE2.0.1/lib
cp -R lapack-3.5.0 lapack-3.5.0_intel_mpi
cd lapack-3.5.0_intel_mpi
cp make.inc.example make.inc
(*edit make.inc: 
replace "gfortran" with "mpif90"
comment or remove "-frecursive" option in two places
uncomment 25th line: "TIMER    = EXT_ETIME"
comment 29th line: "TIMER    = INT_ETIME"
if intel/2017.1.132 compiler is used, replace also "-O2" with "-O1" or with "-O3"
)
cd BLAS/SRC
make
cd ../..
make

C. Compile libxc-2.0.1 library:
-------------------------------

cd ~/OFQE2.0.1/lib/libxc-2.0.1
./configure --prefix="`pwd`/../libxc-2.0.1_intel_mpi" CC=mpicc FC=mpif90
make clean
make
make install

D. Compile OFDFT library:
-------------------------

cd ~/OFQE2.0.1/PROFESS3.0m5B
rm -rf Makefile
ln -s Makefile_intel_3_lib Makefile
make clean (**NOTE! This will remove previous installations of Profess, serial or parallel)
           (**instead of "make clean" one can just remove "obj" and/or "pobj" subdirectories)
make parallel

E. Compile Profess@Quantum-ESPRESSO:
-------------------------------------

cd ~/OFQE2.0.1/espresso-5.2.1m5
./configure MPIF90=mpif90 CC=mpicc F77=mpif77
cd PW/src
rm -rf Makefile
ln -s Makefile_WithOFDFT_par_m5d_explicit_lib Makefile
cd ../tools
rm -rf Makefile
ln -s Makefile-VVK Makefile
cd ../../PP/src
rm -rf Makefile
ln -s Makefile-VVK Makefile
cd ../..
(**build PWscf(pw.x) and Postprocessings)
make clean
make pw
make pp

F. Compilation of modified Profess as a stand-alone package (recommended):
--------------------------------------------------------------------------

cd ~/OFQE2.0.1/PROFESS3.0m5B
rm -f Makefile
ln -s Makefile_intel_3 Makefile
make clean  (**NOTE! This will remove previous installations of Profess, serial or parallel)
            (**instead of "make clean" one can just remove "obj" and/or "pobj" subdirectories)
make parallel

If you intend only parallel compilation, skip to Sect. IX. "Run Examples ..."

VIII. Serial compilation
========================
(Be sure that compiler modules are loaded,
e.g. "module load intel",
request interactive session and load the following modules on HighPerGator at UF:
srun -p hpg2-dev --time=03:00:00 --mem-per-cpu=3600 --pty -u bash -i
module load intel/2016.0.109
or
module load intel/2017.1.132 (*** not tested)
NOTE: compilation of the LAPACK library with intel/2017.1.132 gets stuck 
at one of the internal tests running together with compilation. 
To avoid that, replace "-O2" with "-O1" or with "-O3" in make.inc,
see instructions below.
)

A. Compile fftw-3.3.4 library:
------------------------------

cd ~/OFQE2.0.1/lib/fftw-3.3.4
./configure --prefix="`pwd`/../fftw-3.3.4_intel" CC=icc F77=ifort
make clean
make
make install

B. Compile lapack library: 
--------------------------
required only for compilation of modified Profess as a stand-alone package

cd ~/OFQE2.0.1/lib
cp -R lapack-3.5.0 lapack-3.5.0_intel
cd lapack-3.5.0_intel
cp make.inc.example make.inc
(*edit make.inc: 
replace "gfortran" with "ifort"  in two places
comment or remove "-frecursive" option in two places
uncomment 25th line: "TIMER    = EXT_ETIME"
comment 29th line: "TIMER    = INT_ETIME"
if intel/2017.1.132 compiler is used, replace also "-O2" with "-O1" or with "-O3"
)
cd BLAS/SRC
make
cd ../..
make

C. Compile libxc-2.0.1 library:
-------------------------------

cd ~/OFQE2.0.1/lib/libxc-2.0.1
./configure --prefix="`pwd`/../libxc-2.0.1_intel" CC=icc FC=ifort
make clean
make
make install

D. Compile OFDFT library:
-------------------------

cd ~/OFQE2.0.1/PROFESS3.0m5B
rm -rf Makefile
ln -s Makefile_intel_3_lib Makefile
make clean (**NOTE! This will remove previous installations of Profess, serial or parallel)
            (**instead of "make clean" one can just remove "obj" and/or "pobj" subdirectories)
make

E. Compile Profess@Quantum-ESPRESSO interface:
-----------------------------------------------

cd ~/OFQE2.0.1/espresso-5.2.1m5
./configure MPIF90=ifort CC=icc F77=ifort
make clean
cd PW/src
rm -rf Makefile
ln -s Makefile_WithOFDFT_seq_m5d_explicit_lib Makefile
cd ../tools
rm -rf Makefile
ln -s Makefile-VVK_seq Makefile
cd ../../PP/src
rm -rf Makefile
ln -s Makefile-VVK_seq Makefile
cd ../..
(**build PWscf(pw.x) and Postprocessings)
make clean
make pw
make pp

F. Compilation of modified PROFESS as a stand-alone package (recommended):
--------------------------------------------------------------------------

cd ~/OFQE2.0.1/PROFESS3.0m5B
rm -f Makefile
ln -s Makefile_intel_3 Makefile
make clean (**NOTE! This will remove previous installations of Profess, serial or parallel)
           (**instead of "make clean" one can just remove "obj" and/or "pobj" subdirectories)
make

IX. Run examples with modified Profess
======================================
remark: for interactive runs a stack size change may be required:
ulimit -s unlimited

Use SLURM scripts (*.slrm) or bash scripts (*.sh) to run examples.
Sample output directories (only output from parallel runs) could be found 
in "sampleoutput" subdirectories.

----------------------------------------------------------------
A. fcc-Al static lattice (Profess alone) calculation of energy 
   vs. lattice constant for the VT84F free-energy and the LDA XC 
   functionals at electronic temperature T_el=100K:
----------------------------------------------------------------
 
cd ~/OFQE2.0.1/examples-OFDFT/Al.--locmodreg_rc1.15-qtpHA/scripts
Modify and submit Al4-fcc_1X1X1r0.slrm job,
or
sh Al4-fcc_1X1X1r0.sh
for serial interactive run.

extract data:
cd ../Al-fcc_1X1X1r0-lda-ntn-500eV-two-T100K
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh VT84F+XC.T100

and find results in the V-E-P-Ax-Rho.VT84F+XC.T100.data file.

------------------------------------------------------------
B. sc-H static lattice (Profess alone) calculation of energy 
   vs. lattice constant for the VT84F, APBEF, PBETWF, KST2, 
   SGA and TF free-energy and the LDA XC functionals
   at electronic temperature T_el=100K:
------------------------------------------------------------

cd ~/OFQE2.0.1/examples-OFDFT/H.pz-locmodreg_rc0.25-qtp/scripts
Modify and submit H-sc_2X2X2r0.slrm job,
or
sh H-sc_2X2X2r0.sh
for serial interactive run.

extract data:
cd ../H-sc_2X2X2r0-lda-ntn-3000eV-two-T100K
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh VT84F+XC.T100
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh APBEF+XC.T100
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh PBETWF+XC.T100
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh KST2+XC.T100
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh TSGA+XC.T100
sh ../../../tools/extr-V-E-P-Ax-Rho-profess.sh TTF+XC.T100

find results here:
V-E-P-Ax-Rho.VT84F+XC.T100.data
V-E-P-Ax-Rho.APBEF+XC.T100.data
V-E-P-Ax-Rho.PBETWF+XC.T100.data
V-E-P-Ax-Rho.KST2+XC.T100.data
V-E-P-Ax-Rho.TSGA+XC.T100.data
V-E-P-Ax-Rho.TTF+XC.T100.data

X. Run OF-DFT molecular dynamics with Profess@Quantum-ESPRESSO
==============================================================

--------------------------------------------------------------
A. Hydrogen, 128 atoms, Rho_H=0.983 g/cm^3, T=125000K, 
   OFDFT=TF(Fs)+KSDT(XC), 100 MD steps 
   starting from simple-cubic positions:
--------------------------------------------------------------

cd ~/OFQE2.0.1/examples-PROFESS@QE/H128.md.verl.andr.OFDFT/scripts
Modify and submit md-H128.TTF.R0.983.T125kK.slrm job,
or 
sh md-H128.TTF.R0.983.T125kK.sh
for serial interactive run.
cd ../TTF+ksdt.ecut3000.R0.983.T125000.stn.nr20

remarks: 
  during calculation, in this directory the most recent MD step can be 
monitored via files pos.last (top line), ofdft.out, and H.*.out

find results here:
H.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.out
  modified QE output

md.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.xyz
  cartesian fractional positions of all atoms at each MD step

ofdft.err
  Profess error messages if any (should be empty)

ofdft.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.out
  Profess (as UF modified) output

pwscf.msd.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.dat
  QE mean square displacements

pwscf.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.md
  QE most recent MD step information

pwscf.rdf.R0.983.T125000.TTF+ksdt.ecut3000.NMDSTEP100.dt56as.nr20.dat
  QE radial distribution function

Remark: though the sample output for MD simulation examples is provided,
the reproduced data should be in agreement on the first MD step only 
due to the use of random number generator during MD simulations. 

------------------------------------------------------------------
B. Hydrogen, 128 atoms, Rho_H=0.983 g/cm^3, T=125000K, 
   OFDFT=VT84F(Fs)+KSDT(XC), [Refs. 4, 5], 10 MD steps 
   starting from the last configuration in previous 
   simulation stored in pos.last-TTF.R0.983.T125000.101steps file:
------------------------------------------------------------------

cd ~/OFQE2.0.1/examples-PROFESS@QE/H128.md.verl.andr.OFDFT/scripts
Modify and submit md-H128.VT84F.R0.983.T125kK.slrm job,
or
sh md-H128.VT84F.R0.983.T125kK.sh
for serial interactive run.
cd ../VT84F+ksdt.ecut3000.R0.983.T125000.stn.nr20

find results here:
  files analogous with those in preceding example

-------------------------------------------------------------------
C. Hydrogen, 128 atoms, Rho_H=0.983 g/cm^3, T=62500K, 
   Kohn-Sham MD with T-dependent XC (KS+KSDT(XC)), [Ref. 5], Gamma point
   only, 5 MD steps  starting from the last configuration in 
   OFDFT=TF(Fs)+KSDT(XC)  simulation  stored in 
   pos.last-TTF.R0.983.T125000.101steps file:
-------------------------------------------------------------------

cd ~/OFQE2.0.1/examples-PROFESS@QE/H128.md.verl.andr.OFDFT/scripts
Modify and submit md-H128.KS.R0.983.T62.5kK.slrm job,
or
sh md-H128.KS.R0.983.T62.5kK.sh
for serial interactive run.
cd ../H128-R0.983.T62500.nr20

find results here:
  files analogous with those in preceding examples except the OFDFT output.

additional QE Kohn-Sham  output (eigenvalues and occupation 
numbers for the last (or most recent) MD step) can be found here:

pwscf.save.R0.983.T62500.KPGxGxG.NBND544.ECUT75.0.ksdt.NMDSTEP5.dt80as.nr20/K00001/eigenval.xml
(after execution) 

pwscf.save/K00001/eigenval.xml 
(during execution)

------------------------------------------------------------------
D. Aluminum, 108 atoms, Rho_Al=2.37 g/cm^3, T=20000K, 
   OFDFT=VT84F(Fs)+KSDT(XC), Gamma-point only, 10 MD steps 
   starting from the fcc configuration 
------------------------------------------------------------------

cd ~/OFQE2.0.1/examples-PROFESS@QE/Al108.md.verl.andr.--locmodreg_rc1.15-qtpHA.OFDFT/scripts
Modify and submit md-Al108R2.37.T20kK.slrm job,
or
sh md-Al108R2.37.T20kK.sh
for serial interactive run.
cd ../VT84F+ksdt.ecut500.R2.37.T20000.ntn.nr10

find results here:
  files analogous with those in preceding examples

--end--