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-14in koopmans:
in quantum_espresso/cp_koopmans/Modules/functionals.f90:
gcxc() set the parameter small from E-10 to E-14gcx_spin() set the parameter small from E-10 to E-14gcc_spin() set the parameter small from E-10 to E-14 and epsr from E-6 to E-10in 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-14in 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-14in espresso-4.1/Modules/functionals.f90:
gcxc() set the parameter small from E-10 to E-14gcx_spin() set the parameter small from E-10 to E-14gcc_spin() set the parameter small from E-10 to E-14 and epsr from E-6 to E-10