This repository contains input files, output files and scripts for reproducing the results of the article "Testing Koopmans spectral functionals on the analytically-solvable Hooke's atom".
The three folders "omega_one_tenth", "omega_one_half", and "omega_ten" contain the corresponding files for the three different values of omega presented in the article. They follow a very similar structure:
For our calculations we used the following versions of Koopmans and Quantum ESPRESSO:
Please provide in "omega_*/paths.txt" your installation paths:
Further you might need to change some settings in the source code of the different QE versions used to run the calculations to get exactly the same results (see below)
in q-e:
in Modules/read_pseudo.f90
readpp()
set the parameter rcut
from 10.0
to 12.0
for $\omega=0.5$ and to 30.0
for $\omega=0.1$, leave unchanged for $\omega=10$in XClib/xc_input_params_mod.f90
MODULE dft_par_mod
set the parameter rho_threshold_gga
from E-6
to E-10
and grho_threshold_gga
from E-10
to E-14
in koopmans:
in quantum_espresso/cp_koopmans/Modules/functionals.f90:
gcxc()
set the parameter small
from E-10
to E-14
gcx_spin()
set the parameter small
from E-10
to E-14
gcc_spin()
set the parameter small
from E-10
to E-14
and epsr
from E-6
to E-10
in quantum_espresso/cp_koopmans/CPV/pseudo_base.f90
formfn()
change <10.0d0
to <12.0d0
for $\omega=0.5$ and to <30.0d0
for $\omega=0.1$, leave unchanged for $\omega=10$in quantum_espresso/cp_koopmans/CPV/exch_corr.f90
exch_corr_wrapper()
set the parameter epsr
from E-6
to E-10
and epsg
from E-10
to E-14
in quantum_espresso/cp_koopmans/CPV/nksiclib.f90
if (draw_pot) then
add a line call write_pot_sic ( vsic(:, 1) )
. Uncomment this line for the KIPZ_LUMO-calculationin quantum_espresso/cp_koopmans/Modules/xml_io_base.f90
CALL iotk_write_begin( potunit, "EFFECTIVE-POTENTIAL" )
to CALL iotk_write_begin( potunit, "CHARGE-DENSITY" )
CALL iotk_write_begin( potunit, "EFFECTIVE-POTENTIAL" )
to CALL iotk_write_end( potunit, "CHARGE-DENSITY" )
in koopmans/workflows/_koopmans_dscf.py:
introducing mixing can improve the convergence of the self-consistent computation of the screening parameters for KIPZ. To introduce mixing change
alpha = alpha_guess * (dE - lambda_0) / (lambda_a - lambda_0)
approx. in line 1015 to
mixing = 0.9
alpha_new = alpha_guess * (dE - lambda_0) / (lambda_a - lambda_0)
alpha = alpha_guess * mixing + (1-mixing)*alpha_new"
in old_q-e:
in espresso-4.1/PW/read_pseudo.f90
readpp()
set the parameter rcut
from 10.0
to 12.0
for $\omega=0.5$ and to $30.0$ for $\omega=0.1$, leave unchanged for $\omega=10$in espresso-4.1/PW/gradcorr.f90
exch_corr_wrapper()
set the parameter epsr
from E-6
to E-10
and epsg
from E-10
to E-14
in espresso-4.1/Modules/functionals.f90:
gcxc()
set the parameter small
from E-10
to E-14
gcx_spin()
set the parameter small
from E-10
to E-14
gcc_spin()
set the parameter small
from E-10
to E-14
and epsr
from E-6
to E-10