From a3c01864398f5ac3cea09fcd4c3330b835913ca2 Mon Sep 17 00:00:00 2001 From: Frederick Stein Date: Mon, 25 Jan 2021 14:19:49 +0100 Subject: [PATCH] LibXC: Add section for every functional SIRIUS: Append XC_ to LibXC functional names if absent --- data/xc_section/vdW-DF-cx.sec | 5 +- data/xc_section/vdW-DF-cx0p.sec | 5 +- data/xc_section/vdW-DF-optB88.sec | 5 +- data/xc_section/vdW-DF-optPBE.sec | 5 +- data/xc_section/vdW-DF1-C09.sec | 5 +- data/xc_section/vdW-DF2-b86r.sec | 5 +- data/xc_section/vdW-DF2.sec | 5 +- src/input_cp2k_check.F | 6 +- src/input_cp2k_xc.F | 10 +- src/sirius_interface.F | 11 +- src/xc/xc_derivatives.F | 14 +- src/xc/xc_libxc.F | 653 +++++++++++------- src/xc/xc_libxc_wrap.F | 100 ++- src/xc_write_output.F | 9 +- tests/ATOM/regtest-libxc/C_tpss_libxc.inp | 5 +- tests/ATOM/regtest-libxc/He_4.inp | 10 +- tests/QS/regtest-dft-vdw-corr-3/argon11.inp | 10 +- tests/QS/regtest-dft-vdw-corr-3/argon12.inp | 10 +- tests/QS/regtest-dft-vdw-corr-3/argon14.inp | 10 +- tests/QS/regtest-gpw-9/nlcc-mix.inp | 5 +- tests/QS/regtest-gw2x/H2O-B3LYP-GW2Xs.inp | 10 +- .../QS/regtest-gw2x/H2O-B3LYP-pseudo_cano.inp | 10 +- tests/QS/regtest-gw2x/Ne-pbc-shortrange.inp | 29 +- tests/QS/regtest-gw2x/Ne-pbc-truncated.inp | 20 +- .../regtest-gw2x/SiH4-BHandHLYP-xps_only.inp | 5 +- tests/QS/regtest-hybrid-4/wB97X-V.inp | 5 +- tests/QS/regtest-kg/H2-libxc-diag.inp | 3 +- tests/QS/regtest-kg/H2-libxc-ot.inp | 3 +- tests/QS/regtest-kg/H2-libxc.inp | 3 +- .../regtest-libxc/H2O-hybrid-b3lyp_libxc.inp | 5 +- .../H2O-hybrid-b3lyp_libxc_uks.inp | 5 +- .../QS/regtest-libxc/H2O-hybrid-cam-lda0.inp | 5 +- .../regtest-libxc/H2O-hybrid-wb97mv-libxc.inp | 5 +- tests/QS/regtest-libxc/H2O-tpss_lsd.inp | 10 +- tests/QS/regtest-libxc/H2O-tpssx_libxc.inp | 5 +- .../regtest-libxc/H2O_lda_libxc_tddfpt-s.inp | 20 +- .../H2O_lda_libxc_tddfpt-t_uks.inp | 20 +- .../regtest-libxc/H2O_pbe_libxc_tddfpt-s.inp | 20 +- .../H2O_pbe_libxc_tddfpt-t_uks.inp | 20 +- tests/QS/regtest-libxc/diamond_br89_libxc.inp | 5 +- .../regtest-libxc/diamond_br89_libxc_uks.inp | 5 +- .../QS/regtest-xastdp/C2H2-PBE-ri_region.inp | 10 +- tests/QS/regtest-xastdp/CH3-PBE-uks.inp | 10 +- tests/QS/regtest-xastdp/CO-PBE0.inp | 20 +- tests/QS/regtest-xastdp/H2O-32-ot_solver.inp | 5 +- tests/QS/regtest-xastdp/H2O-B3LYP-full.inp | 10 +- tests/QS/regtest-xastdp/He-LDA-extRI_XAS.inp | 5 +- tests/QS/regtest-xastdp/Ne-LDA-e_range.inp | 5 +- .../Ne-pbc-shortrange-ovlp_metric.inp | 29 +- .../Ne-pbc-shortrange-sr_metric.inp | 29 +- tests/QS/regtest-xastdp/Ne-pbc-shortrange.inp | 29 +- .../Ne-pbc-truncated-tc_metric.inp | 20 +- tests/QS/regtest-xastdp/Ne-pbc-truncated.inp | 20 +- .../regtest-xastdp/SiH4-PBE0-admm-pseudo.inp | 10 +- tests/SIRIUS/regtest-1/Au.inp | 10 +- tests/SIRIUS/regtest-1/Au_GTH.inp | 10 +- tests/SIRIUS/regtest-1/Fe.inp | 10 +- tests/SIRIUS/regtest-1/Fe_dos.inp | 10 +- tests/SIRIUS/regtest-1/He-full-potential.inp | 10 +- tests/SIRIUS/regtest-1/LiF.inp | 10 +- tests/SIRIUS/regtest-1/NiO.inp | 10 +- tests/SIRIUS/regtest-1/SrVO.inp | 10 +- 62 files changed, 747 insertions(+), 636 deletions(-) diff --git a/data/xc_section/vdW-DF-cx.sec b/data/xc_section/vdW-DF-cx.sec index 92d417410c..40dab9ae59 100644 --- a/data/xc_section/vdW-DF-cx.sec +++ b/data/xc_section/vdW-DF-cx.sec @@ -6,9 +6,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_LV_RPW86 - &END LIBXC + &GGA_X_LV_RPW86 + &END GGA_X_LV_RPW86 &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF-cx0p.sec b/data/xc_section/vdW-DF-cx0p.sec index c25d36f5d7..8569a2b2ee 100644 --- a/data/xc_section/vdW-DF-cx0p.sec +++ b/data/xc_section/vdW-DF-cx0p.sec @@ -8,10 +8,9 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_LV_RPW86 + &GGA_X_LV_RPW86 SCALE 0.80 - &END LIBXC + &END GGA_X_LV_RPW86 &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF-optB88.sec b/data/xc_section/vdW-DF-optB88.sec index f6a57d4b79..33d7ee7ca5 100644 --- a/data/xc_section/vdW-DF-optB88.sec +++ b/data/xc_section/vdW-DF-optB88.sec @@ -7,9 +7,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_OPTB88_VDW - &END LIBXC + &GGA_X_OPTB88_VDW + &END GGA_X_OPTB88_VDW &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF-optPBE.sec b/data/xc_section/vdW-DF-optPBE.sec index f54fbb2197..2a0e879e05 100644 --- a/data/xc_section/vdW-DF-optPBE.sec +++ b/data/xc_section/vdW-DF-optPBE.sec @@ -7,9 +7,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_OPTPBE_VDW - &END LIBXC + &GGA_X_OPTPBE_VDW + &END GGA_X_OPTPBE_VDW &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF1-C09.sec b/data/xc_section/vdW-DF1-C09.sec index f78ae0f9ff..40adbf8ce5 100644 --- a/data/xc_section/vdW-DF1-C09.sec +++ b/data/xc_section/vdW-DF1-C09.sec @@ -5,9 +5,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_C09X - &END LIBXC + &GGA_X_C09X + &END GGA_X_C09X &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF2-b86r.sec b/data/xc_section/vdW-DF2-b86r.sec index 601322ee00..8e97b00732 100644 --- a/data/xc_section/vdW-DF2-b86r.sec +++ b/data/xc_section/vdW-DF2-b86r.sec @@ -5,9 +5,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_B86_R - &END LIBXC + &GGA_X_B86_R + &END GGA_X_B86_R &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/data/xc_section/vdW-DF2.sec b/data/xc_section/vdW-DF2.sec index 4597206c99..44bad63ae9 100644 --- a/data/xc_section/vdW-DF2.sec +++ b/data/xc_section/vdW-DF2.sec @@ -6,9 +6,8 @@ # &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_RPW86 - &END LIBXC + &GGA_X_RPW86 + &END GGA_X_RPW86 &PW92 &END PW92 &END XC_FUNCTIONAL diff --git a/src/input_cp2k_check.F b/src/input_cp2k_check.F index f47567d457..869dca8c65 100644 --- a/src/input_cp2k_check.F +++ b/src/input_cp2k_check.F @@ -173,11 +173,9 @@ CONTAINS !The cp2k-native PW92 gives disagreeing results (in the 0.01E_H !decimal) and yields inconsistent forces in a DEBUG run. !(rk, 6.3.2014) - CALL section_vals_val_set(functionals, "LIBXC%_SECTION_PARAMETERS_", & !60%LDA + CALL section_vals_val_set(functionals, "LDA_C_PW%_SECTION_PARAMETERS_", & !60%LDA l_val=.TRUE.) - CALL section_vals_val_set(functionals, "LIBXC%FUNCTIONAL", & - c_val="LDA_C_PW") - CALL section_vals_val_set(functionals, "LIBXC%SCALE", & + CALL section_vals_val_set(functionals, "LDA_C_PW%SCALE", & r_val=0.6001664769_dp) CALL section_vals_val_set(functionals, "BEEF%_SECTION_PARAMETERS_", & !BEEF exchange diff --git a/src/input_cp2k_xc.F b/src/input_cp2k_xc.F index 7699c063f4..aa4d8638ae 100644 --- a/src/input_cp2k_xc.F +++ b/src/input_cp2k_xc.F @@ -51,6 +51,7 @@ MODULE input_cp2k_xc xc_old_f_routine, xc_pbe_orig, xc_pbe_rev, xc_pbe_sol, xc_rho_nn10, xc_rho_nn50, & xc_rho_no_smooth, xc_rho_spline2_smooth, xc_rho_spline3_smooth, xc_test_lsd_f_routine, & xgga_b88x, xgga_ev93, xgga_opt, xgga_pbex, xgga_pw86, xgga_pw91, xgga_revpbe + USE xc_libxc, ONLY: libxc_add_sections #include "./base/base_uses.f90" IMPLICIT NONE @@ -76,7 +77,8 @@ CONTAINS CPASSERT(.NOT. ASSOCIATED(section)) CALL section_create(section, __LOCATION__, name="xc_functional", & - description="The xc functional to use", & + description="The xc functional to use. For Functionals "// & + "of the LibXC library use the appropriate section.", & n_keywords=0, n_subsections=4, repeats=.FALSE., & citations=(/Ortiz1994, Becke1988, Perdew1996, Zhang1998, Lee1988, & Heyd2004, Vosko1980, Goedecker1996, Perdew1981, & @@ -283,6 +285,8 @@ CONTAINS CALL section_add_subsection(section, subsection) CALL section_release(subsection) + CALL libxc_add_sections(section) + CALL section_create(subsection, __LOCATION__, name="CS1", & description="Uses the CS1 functional", & n_keywords=0, n_subsections=0, repeats=.FALSE.) @@ -789,7 +793,9 @@ CONTAINS citations=(/Marques2012, Lehtola2018/)) CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", & description="activates functionals from libxc library", & - lone_keyword_l_val=.TRUE., default_l_val=.FALSE.) + lone_keyword_l_val=.TRUE., default_l_val=.FALSE., & + deprecation_notice="Instead of &"//name//" with set keyword "// & + "FUNCTIONAL use the section &.") CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) CALL keyword_create(keyword, __LOCATION__, name="FUNCTIONAL", & diff --git a/src/sirius_interface.F b/src/sirius_interface.F index 1394703895..656dc8b184 100644 --- a/src/sirius_interface.F +++ b/src/sirius_interface.F @@ -70,6 +70,7 @@ MODULE sirius_interface sirius_option_set_double, sirius_option_set_int, sirius_option_set_logical, & sirius_option_set_string, sirius_set_atom_position, sirius_set_atom_type_dion, & sirius_set_atom_type_radial_grid, sirius_set_lattice_vectors, sirius_update_ground_state + USE xc_libxc, ONLY: libxc_check_existence_in_libxc #include "./base/base_uses.f90" IMPLICIT NONE @@ -181,8 +182,16 @@ CONTAINS CALL section_vals_get(xc_fun, n_repetition=n) DO i = 1, n CALL section_vals_val_get(xc_fun, "FUNCTIONAL", i_rep_section=i, c_val=section_name) - CALL sirius_option_add_string_to(sctx, 'parameters', 'xc_functionals', section_name) + IF (section_name(1:3) == "XC_") THEN + CALL sirius_option_add_string_to(sctx, 'parameters', 'xc_functionals', section_name) + ELSE + CALL sirius_option_add_string_to(sctx, 'parameters', 'xc_functionals', "XC_"//section_name) + END IF END DO + ELSE IF (libxc_check_existence_in_libxc(xc_fun)) THEN + ! Here, we do not have to check whether the functional name starts with XC_ + ! because we only allow the shorter form w/o XC_ + CALL sirius_option_add_string_to(sctx, 'parameters', 'xc_functionals', "XC_"//TRIM(xc_fun%section%name)) ENDIF END DO ENDIF diff --git a/src/xc/xc_derivatives.F b/src/xc/xc_derivatives.F index 165a862cc8..98e207d3cc 100644 --- a/src/xc/xc_derivatives.F +++ b/src/xc/xc_derivatives.F @@ -323,7 +323,12 @@ CONTAINS CASE ("SRLDA") CALL sr_lda_info(reference, shortform, lsd, needs, max_deriv) CASE default - CPABORT("unknown functional '"//TRIM(functional%section%name)//"'") + ! If the functional has not been implemented internally, it's from LibXC + IF (lsd) THEN + CALL libxc_lsd_info(functional, reference, shortform, needs, max_deriv, print_warn) + ELSE + CALL libxc_lda_info(functional, reference, shortform, needs, max_deriv, print_warn) + ENDIF END SELECT END SUBROUTINE xc_functional_get_info @@ -551,7 +556,12 @@ CONTAINS CALL sr_lda_eval(rho_set, deriv_set, deriv_order, functional) END IF CASE default - CPABORT("unknown functional '"//TRIM(functional%section%name)//"'") + ! If functional not natively supported, ask LibXC + IF (lsd) THEN + CALL libxc_lsd_eval(rho_set, deriv_set, deriv_order, functional) + ELSE + CALL libxc_lda_eval(rho_set, deriv_set, deriv_order, functional) + ENDIF END SELECT CALL timestop(handle) diff --git a/src/xc/xc_libxc.F b/src/xc/xc_libxc.F index 71ddd806d5..b99e266cf1 100644 --- a/src/xc/xc_libxc.F +++ b/src/xc/xc_libxc.F @@ -29,9 +29,6 @@ MODULE xc_libxc USE bibliography, ONLY: Lehtola2018, & Marques2012, & cite_reference - - USE input_section_types, ONLY: section_vals_type, & - section_vals_val_get USE kinds, ONLY: default_string_length, & dp USE xc_derivative_set_types, ONLY: xc_derivative_set_type, & @@ -42,15 +39,34 @@ MODULE xc_libxc USE xc_rho_set_types, ONLY: xc_rho_set_get, & xc_rho_set_type #if defined (__LIBXC) - USE iso_c_binding, ONLY: C_SIZE_T + USE input_keyword_types, ONLY: keyword_create, & + keyword_release, & + keyword_type + USE input_section_types, ONLY: section_add_keyword, & + section_add_subsection, & + section_create, & + section_release, & + section_type, & + section_vals_type, & + section_vals_val_get + USE iso_c_binding, ONLY: C_SIZE_T, C_INT, C_DOUBLE USE xc_libxc_wrap, ONLY: xc_f03_func_t, & xc_f03_func_init, & xc_f03_func_end, & xc_f03_func_info_t, & + xc_f03_functional_get_name, & xc_f03_func_get_info, & xc_f03_func_info_get_family, & xc_f03_func_info_get_kind, & + xc_f03_func_info_get_n_ext_params, & xc_f03_func_info_get_name, & + xc_f03_available_functional_numbers, & + xc_f03_available_functional_names, & + xc_f03_maximum_name_length, & + xc_f03_number_of_functionals, & + xc_f03_func_info_get_ext_params_name, & + xc_f03_func_info_get_ext_params_description, & + xc_f03_func_info_get_ext_params_default_value, & xc_f03_gga_exc, & xc_f03_gga_exc_vxc, & xc_f03_gga_exc_vxc_fxc, & @@ -88,7 +104,8 @@ MODULE xc_libxc xc_libxc_wrap_needs_laplace, & xc_libxc_wrap_functional_set_params, & xc_libxc_wrap_is_under_development, & - xc_libxc_get_reference_length + xc_libxc_get_reference_length, & + xc_libxc_check_functional #endif #include "../base/base_uses.f90" @@ -99,7 +116,8 @@ MODULE xc_libxc CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'xc_libxc' PUBLIC :: libxc_lda_info, libxc_lda_eval, libxc_lsd_info, libxc_lsd_eval, & - libxc_version_info, libxc_get_reference_length + libxc_version_info, libxc_get_reference_length, libxc_add_sections, & + libxc_check_existence_in_libxc #if defined (__LIBXC) INTEGER(C_SIZE_T), PARAMETER, PRIVATE :: one = 1 @@ -107,6 +125,26 @@ MODULE xc_libxc CONTAINS +! ************************************************************************************************** +!> \brief This function checks whether a functional name belongs to LibXC +!> \param libxc_params (possible) LibXC input section +!> \return exists whether the functional exists in LibXC +! ************************************************************************************************** + FUNCTION libxc_check_existence_in_libxc(libxc_params) RESULT(exists) + + TYPE(section_vals_type), POINTER, INTENT(IN) :: libxc_params + LOGICAL :: exists + +#if defined (__LIBXC) + + exists = xc_libxc_check_functional(libxc_params%section%name) +#else + MARK_USED(libxc_params) + exists = .FALSE. +#endif + + END FUNCTION libxc_check_existence_in_libxc + ! ************************************************************************************************** !> \brief This function returns the maximum length of the reference string for a given LibXC functional !> \param libxc_params LibXC input section @@ -125,7 +163,10 @@ CONTAINS TYPE(xc_f03_func_t) :: xc_func TYPE(xc_f03_func_info_t) :: xc_info - CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + func_name = libxc_params%section%name + IF (func_name == "LIBXC" .OR. func_name == "KE_LIBXC") THEN + CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + END IF func_id = xc_libxc_wrap_functional_get_number(func_name) !$OMP CRITICAL(libxc_init) @@ -150,6 +191,98 @@ CONTAINS END FUNCTION libxc_get_reference_length +! ************************************************************************************************** +!> \brief ... +!> \param section ... +! ************************************************************************************************** + SUBROUTINE libxc_add_sections(section) + + TYPE(section_type), POINTER, INTENT(IN) :: section + + CHARACTER(len=*), PARAMETER :: routineN = 'libxc_add_sections' + +#if defined (__LIBXC) + TYPE(section_type), POINTER :: subsection + TYPE(keyword_type), POINTER :: keyword + INTEGER :: no_func, len_name, ii, func_id, n_param, iparam + REAL(KIND=C_DOUBLE) :: default_val + CHARACTER(LEN=128) :: func_name, param_name, param_descr, description + CHARACTER(LEN=2*default_string_length) :: warning + INTEGER(KIND=C_INT), DIMENSION(:), ALLOCATABLE :: func_ids + TYPE(xc_f03_func_t) :: xc_func + TYPE(xc_f03_func_info_t) :: xc_info + + CPASSERT(ASSOCIATED(section)) + NULLIFY (subsection, keyword) + + no_func = xc_f03_number_of_functionals() + len_name = xc_f03_maximum_name_length() + + ALLOCATE (func_ids(no_func)) + + CALL xc_f03_available_functional_numbers(func_ids) + + DO ii = 1, no_func + + func_id = func_ids(ii) +!$OMP CRITICAL(libxc_init) + CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED) + xc_info = xc_f03_func_get_info(xc_func) +!$OMP END CRITICAL(libxc_init) +!$OMP BARRIER + + func_name = xc_f03_functional_get_name(func_id) + description = xc_f03_func_info_get_name(xc_info) + n_param = xc_f03_func_info_get_n_ext_params(xc_info) + + NULLIFY (subsection) + CALL section_create(subsection, __LOCATION__, name=TRIM(func_name), description=TRIM(description), & + n_keywords=2 + n_param, n_subsections=0, repeats=.FALSE.) + + IF (description(1:1) == "_") THEN + warning = " This parameter is an internal parameter of the functional. Changing this "// & + "parameter effectively changes the functional." + ELSE + warning = " " + END IF + + NULLIFY (keyword) + CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", & + description="Activates the functional."//TRIM(warning), & + lone_keyword_l_val=.TRUE., default_l_val=.FALSE.) + CALL section_add_keyword(subsection, keyword) + CALL keyword_release(keyword) + + CALL keyword_create(keyword, __LOCATION__, name="SCALE", description="Scales this functional", & + default_r_val=1.0_dp) + CALL section_add_keyword(subsection, keyword) + CALL keyword_release(keyword) + + DO iparam = 1, n_param + param_name = xc_f03_func_info_get_ext_params_name(xc_info, iparam - 1) + param_descr = xc_f03_func_info_get_ext_params_description(xc_info, iparam - 1) + default_val = xc_f03_func_info_get_ext_params_default_value(xc_info, iparam - 1) + + NULLIFY (keyword) + CALL keyword_create(keyword, __LOCATION__, name=TRIM(param_name), & + description=TRIM(param_descr), default_r_val=default_val) + CALL section_add_keyword(subsection, keyword) + CALL keyword_release(keyword) + END DO + + CALL section_add_subsection(section, subsection) + CALL section_release(subsection) + + CALL xc_f03_func_end(xc_func) + + END DO +#else + MARK_USED(section) + +#endif + + END SUBROUTINE libxc_add_sections + ! ************************************************************************************************** !> \brief info about the functional from libxc !> \param libxc_params input parameter (functional name, scaling and parameters) @@ -178,7 +311,10 @@ CONTAINS TYPE(xc_f03_func_t) :: xc_func TYPE(xc_f03_func_info_t) :: xc_info - CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + func_name = libxc_params%section%name + IF (func_name == "LIBXC" .OR. func_name == "KE_LIBXC") THEN + CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + END IF CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale) CALL cite_reference(Marques2012) @@ -250,7 +386,9 @@ CONTAINS MARK_USED(needs) MARK_USED(max_deriv) MARK_USED(print_warn) - CPABORT("In order to use libxc you need to download and install it") + + CALL cp_abort(__LOCATION__, "Unknown functional! If you are asking for a functional of the LibXC library, & + you have to download and install the library!") #endif END SUBROUTINE libxc_lda_info @@ -283,7 +421,10 @@ CONTAINS TYPE(xc_f03_func_t) :: xc_func TYPE(xc_f03_func_info_t) :: xc_info - CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + func_name = libxc_params%section%name + IF (func_name == "LIBXC" .OR. func_name == "KE_LIBXC") THEN + CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + END IF CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale) CALL cite_reference(Marques2012) @@ -357,7 +498,9 @@ CONTAINS MARK_USED(needs) MARK_USED(max_deriv) MARK_USED(print_warn) - CPABORT("In order to use libxc you need to download and install it") + + CALL cp_abort(__LOCATION__, "Unknown functional! If you are asking for a functional of the LibXC library, & + you have to download and install the library!") #endif END SUBROUTINE libxc_lsd_info @@ -403,9 +546,8 @@ CONTAINS CHARACTER(LEN=default_string_length) :: func_name INTEGER :: func_id, handle, npoints INTEGER, DIMENSION(:, :), POINTER :: bo - LOGICAL :: has_laplace + LOGICAL :: has_laplace, no_exc REAL(KIND=dp) :: epsilon_rho, epsilon_tau, func_scale - REAL(KIND=dp), DIMENSION(:), POINTER :: params REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: dummy, e_0, e_laplace_rho, & e_laplace_rho_laplace_rho, e_laplace_rho_tau, e_ndrho, & e_ndrho_laplace_rho, e_ndrho_ndrho, e_ndrho_rho, e_ndrho_tau, e_rho, & @@ -426,18 +568,18 @@ CONTAINS CPASSERT(ASSOCIATED(deriv_set)) CPASSERT(deriv_set%ref_count > 0) - CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + func_name = libxc_params%section%name + IF (func_name == "LIBXC" .OR. func_name == "KE_LIBXC") THEN + CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + END IF CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale) - CALL section_vals_val_get(libxc_params, "parameters", r_vals=params) IF (ABS(func_scale - 1.0_dp) < 1.0e-10_dp) func_scale = 1.0_dp func_id = xc_libxc_wrap_functional_get_number(func_name) -!$OMP CRITICAL(libxc_init) CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED) xc_info = xc_f03_func_get_info(xc_func) -!$OMP END CRITICAL(libxc_init) -!$OMP BARRIER + CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, libxc_params, no_exc) CALL xc_rho_set_get(rho_set, can_return_null=.TRUE., & rho=rho, norm_drho=norm_drho, laplace_rho=laplace_rho, & @@ -590,7 +732,7 @@ CONTAINS !$OMP SHARED(e_laplace_rho_tau,e_tau_tau,e_rho_rho_rho),& !$OMP SHARED(grad_deriv,npoints),& !$OMP SHARED(epsilon_rho,epsilon_tau),& -!$OMP SHARED(func_name,func_scale,params) +!$OMP SHARED(func_name,func_scale,xc_func,xc_info,no_exc) CALL libxc_lda_calc(rho=rho, norm_drho=norm_drho, & laplace_rho=laplace_rho, tau=tau, & @@ -604,7 +746,7 @@ CONTAINS grad_deriv=grad_deriv, npoints=npoints, & epsilon_rho=epsilon_rho, & epsilon_tau=epsilon_tau, func_name=func_name, & - sc=func_scale, params=params) + sc=func_scale, xc_func=xc_func, xc_info=xc_info, no_exc=no_exc) !$OMP END PARALLEL @@ -618,7 +760,8 @@ CONTAINS MARK_USED(deriv_set) MARK_USED(grad_deriv) MARK_USED(libxc_params) - CPABORT("In order to use libxc you need to download and install it") + CALL cp_abort(__LOCATION__, "Unknown functional! If you are asking for a functional of the LibXC library, & + you have to download and install the library!") #endif END SUBROUTINE libxc_lda_eval @@ -646,9 +789,8 @@ CONTAINS CHARACTER(LEN=default_string_length) :: func_name INTEGER :: func_id, handle, npoints INTEGER, DIMENSION(:, :), POINTER :: bo - LOGICAL :: has_laplace + LOGICAL :: has_laplace, no_exc REAL(KIND=dp) :: epsilon_rho, epsilon_tau, func_scale - REAL(KIND=dp), DIMENSION(:), POINTER :: params REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: dummy, e_0, e_laplace_rhoa, & e_laplace_rhoa_laplace_rhoa, e_laplace_rhoa_laplace_rhob, & e_laplace_rhoa_tau_a, e_laplace_rhoa_tau_b, e_laplace_rhob, & @@ -684,18 +826,18 @@ CONTAINS CPASSERT(ASSOCIATED(deriv_set)) CPASSERT(deriv_set%ref_count > 0) - CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + func_name = libxc_params%section%name + IF (func_name == "LIBXC" .OR. func_name == "KE_LIBXC") THEN + CALL section_vals_val_get(libxc_params, "functional", c_val=func_name) + END IF CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale) - CALL section_vals_val_get(libxc_params, "parameters", r_vals=params) IF (ABS(func_scale - 1.0_dp) < 1.0e-10_dp) func_scale = 1.0_dp func_id = xc_libxc_wrap_functional_get_number(func_name) -!$OMP CRITICAL(libxc_init) CALL xc_f03_func_init(xc_func, func_id, XC_POLARIZED) xc_info = xc_f03_func_get_info(xc_func) -!$OMP END CRITICAL(libxc_init) -!$OMP BARRIER + CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, libxc_params, no_exc) CALL xc_rho_set_get(rho_set, can_return_null=.TRUE., & rhoa=rhoa, rhob=rhob, norm_drho=norm_drho, & @@ -1095,7 +1237,7 @@ CONTAINS !$OMP SHARED(e_rhoa_rhoa_rhoa,e_rhoa_rhoa_rhob,e_rhoa_rhob_rhob,e_rhob_rhob_rhob),& !$OMP SHARED(grad_deriv,npoints),& !$OMP SHARED(epsilon_rho,epsilon_tau),& -!$OMP SHARED(func_name,func_scale,params) +!$OMP SHARED(func_name,func_scale,xc_func,xc_info, no_exc) CALL libxc_lsd_calc(rhoa=rhoa, rhob=rhob, norm_drho=norm_drho, & norm_drhoa=norm_drhoa, norm_drhob=norm_drhob, laplace_rhoa=laplace_rhoa, & @@ -1142,7 +1284,7 @@ CONTAINS grad_deriv=grad_deriv, npoints=npoints, & epsilon_rho=epsilon_rho, & epsilon_tau=epsilon_tau, func_name=func_name, & - sc=func_scale, params=params) + sc=func_scale, xc_func=xc_func, xc_info=xc_info, no_exc=no_exc) !$OMP END PARALLEL @@ -1156,7 +1298,9 @@ CONTAINS MARK_USED(deriv_set) MARK_USED(grad_deriv) MARK_USED(libxc_params) - CPABORT("In order to use libxc you need to download and install it") + + CALL cp_abort(__LOCATION__, "Unknown functional! If you are asking for a functional of the LibXC library, & + you have to download and install the library!") #endif END SUBROUTINE libxc_lsd_eval @@ -1189,8 +1333,10 @@ CONTAINS !> \param epsilon_rho ... !> \param epsilon_tau ... !> \param func_name name of the functional -!> \param sc scaling factor -!> \param params parameters of the functional +!> \param sc scaling factor of the functional +!> \param xc_func libxc functional object +!> \param xc_info libxc functional info object +!> \param no_exc whether the EXC function is not available for the given functional !> \author F. Tran ! ************************************************************************************************** #if defined (__LIBXC) @@ -1200,105 +1346,97 @@ CONTAINS e_ndrho_tau, e_laplace_rho_laplace_rho, e_laplace_rho_tau, & e_tau_tau, e_rho_rho_rho, & grad_deriv, npoints, epsilon_rho, & - epsilon_tau, func_name, sc, params) + epsilon_tau, func_name, sc, xc_func, xc_info, no_exc) REAL(KIND=dp), DIMENSION(*), INTENT(IN) :: rho, norm_drho, laplace_rho, tau REAL(KIND=dp), DIMENSION(*), INTENT(INOUT) :: e_0, e_rho, e_ndrho, e_laplace_rho, e_tau, & - e_rho_rho, e_ndrho_rho, e_ndrho_ndrho, e_rho_laplace_rho, e_rho_tau, e_ndrho_laplace_rho, & - e_ndrho_tau, e_laplace_rho_laplace_rho, e_laplace_rho_tau, e_tau_tau, e_rho_rho_rho + e_rho_rho, e_ndrho_rho, e_ndrho_ndrho, e_rho_laplace_rho, e_rho_tau, e_ndrho_laplace_rho, & + e_ndrho_tau, e_laplace_rho_laplace_rho, e_laplace_rho_tau, e_tau_tau, e_rho_rho_rho INTEGER, INTENT(in) :: grad_deriv, npoints REAL(KIND=dp), INTENT(in) :: epsilon_rho, epsilon_tau CHARACTER(LEN=default_string_length), INTENT(IN) :: func_name - REAL(KIND=dp), INTENT(in) :: sc - REAL(KIND=dp), DIMENSION(:), INTENT(IN), POINTER :: params + REAL(KIND=dp), INTENT(IN) :: sc + TYPE(xc_f03_func_info_t), INTENT(IN) :: xc_info + TYPE(xc_f03_func_t), INTENT(IN) :: xc_func + LOGICAL, INTENT(IN) :: no_exc - INTEGER :: func_id, ii - LOGICAL :: no_exc + INTEGER :: ii REAL(KIND=dp), DIMENSION(1) :: exc, my_tau, sigma, v2lapl2, v2lapltau, v2rho2, v2rholapl, & - v2rhosigma, v2rhotau, v2sigma2, v2sigmalapl, v2sigmatau, v2tau2, v3rho3, vlapl, vrho, & - vsigma, vtau - TYPE(xc_f03_func_info_t) :: xc_info - TYPE(xc_f03_func_t) :: xc_func + v2rhosigma, v2rhotau, v2sigma2, v2sigmalapl, v2sigmatau, v2tau2, v3rho3, vlapl, vrho, & + vsigma, vtau ! init vlapl (prevent libxc-4.0.x bug) vlapl = 0.0_dp - func_id = xc_libxc_wrap_functional_get_number(func_name) -!$OMP CRITICAL(libxc_init) - CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED) - xc_info = xc_f03_func_get_info(xc_func) - CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc) -!$OMP END CRITICAL(libxc_init) -!$OMP BARRIER SELECT CASE (xc_f03_func_info_get_family(xc_info)) CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA) IF (grad_deriv == 0) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_exc(xc_func, one, rho(ii), exc) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_exc(xc_func, one, rho(ii), exc) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -1) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_vxc(xc_func, one, rho(ii), vrho) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_vxc(xc_func, one, rho(ii), vrho) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 1) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_exc_vxc(xc_func, one, rho(ii), exc, vrho) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_exc_vxc(xc_func, one, rho(ii), exc, vrho) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -2) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_fxc(xc_func, one, rho(ii), v2rho2) - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_fxc(xc_func, one, rho(ii), v2rho2) + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 2) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_exc_vxc_fxc(xc_func, one, rho(ii), exc, vrho, v2rho2) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_exc_vxc_fxc(xc_func, one, rho(ii), exc, vrho, v2rho2) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -3) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda_kxc(xc_func, one, rho(ii), v3rho3) - e_rho_rho_rho(ii) = e_rho_rho_rho(ii) + sc*v3rho3(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda_kxc(xc_func, one, rho(ii), v3rho3) + e_rho_rho_rho(ii) = e_rho_rho_rho(ii) + sc*v3rho3(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 3) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - CALL xc_f03_lda(xc_func, one, rho(ii), exc, vrho, v2rho2, v3rho3) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - e_rho_rho_rho(ii) = e_rho_rho_rho(ii) + sc*v3rho3(1) - END IF + IF (rho(ii) > epsilon_rho) THEN + CALL xc_f03_lda(xc_func, one, rho(ii), exc, vrho, v2rho2, v3rho3) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + e_rho_rho_rho(ii) = e_rho_rho_rho(ii) + sc*v3rho3(1) + END IF END DO !$OMP END DO END IF @@ -1306,84 +1444,84 @@ CONTAINS IF (grad_deriv == 0) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - sigma = norm_drho(ii)**2 - CALL xc_f03_gga_exc(xc_func, one, rho(ii), sigma, exc) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - END IF + IF (rho(ii) > epsilon_rho) THEN + sigma = norm_drho(ii)**2 + CALL xc_f03_gga_exc(xc_func, one, rho(ii), sigma, exc) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -1) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - sigma = norm_drho(ii)**2 - CALL xc_f03_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) - END IF + IF (rho(ii) > epsilon_rho) THEN + sigma = norm_drho(ii)**2 + CALL xc_f03_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 1) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - sigma = norm_drho(ii)**2 - IF (no_exc) THEN - CALL xc_f03_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma) - exc = 0.0_dp - ELSE - CALL xc_f03_gga_exc_vxc(xc_func, one, rho(ii), sigma, & - exc, vrho, vsigma) - END IF - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + IF (rho(ii) > epsilon_rho) THEN + sigma = norm_drho(ii)**2 + IF (no_exc) THEN + CALL xc_f03_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma) + exc = 0.0_dp + ELSE + CALL xc_f03_gga_exc_vxc(xc_func, one, rho(ii), sigma, & + exc, vrho, vsigma) END IF + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -2) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - sigma = norm_drho(ii)**2 - IF (no_exc) THEN - CALL xc_f03_gga_vxc_fxc(xc_func, one, rho(ii), sigma, vrho, vsigma, & - v2rho2, v2rhosigma, v2sigma2) - ELSE - CALL xc_f03_gga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, & - exc, vrho, vsigma, v2rho2, & - v2rhosigma, v2sigma2) - END IF - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) - e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & - sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + IF (rho(ii) > epsilon_rho) THEN + sigma = norm_drho(ii)**2 + IF (no_exc) THEN + CALL xc_f03_gga_vxc_fxc(xc_func, one, rho(ii), sigma, vrho, vsigma, & + v2rho2, v2rhosigma, v2sigma2) + ELSE + CALL xc_f03_gga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, & + exc, vrho, vsigma, v2rho2, & + v2rhosigma, v2sigma2) END IF + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) + e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & + sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 2) THEN !$OMP DO DO ii = 1, npoints - IF (rho(ii) > epsilon_rho) THEN - sigma = norm_drho(ii)**2 - IF (no_exc) THEN - CALL xc_f03_gga_vxc_fxc(xc_func, one, rho(ii), sigma, vrho, vsigma, & - v2rho2, v2rhosigma, v2sigma2) - exc = 0.0_dp - ELSE - CALL xc_f03_gga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, & - exc, vrho, vsigma, & - v2rho2, v2rhosigma, v2sigma2) - END IF - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) - e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & - sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + IF (rho(ii) > epsilon_rho) THEN + sigma = norm_drho(ii)**2 + IF (no_exc) THEN + CALL xc_f03_gga_vxc_fxc(xc_func, one, rho(ii), sigma, vrho, vsigma, & + v2rho2, v2rhosigma, v2sigma2) + exc = 0.0_dp + ELSE + CALL xc_f03_gga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, & + exc, vrho, vsigma, & + v2rho2, v2rhosigma, v2sigma2) END IF + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) + e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & + sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + END IF END DO !$OMP END DO END IF @@ -1391,120 +1529,120 @@ CONTAINS IF (grad_deriv == 0) THEN !$OMP DO DO ii = 1, npoints - IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN - sigma = norm_drho(ii)**2 - my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) - CALL xc_f03_mgga_exc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, exc) - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - END IF + IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN + sigma = norm_drho(ii)**2 + my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) + CALL xc_f03_mgga_exc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, exc) + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -1) THEN !$OMP DO DO ii = 1, npoints - IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN - sigma = norm_drho(ii)**2 - my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) - CALL xc_f03_mgga_vxc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) - e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) - e_tau(ii) = e_tau(ii) + sc*vtau(1) - END IF + IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN + sigma = norm_drho(ii)**2 + my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) + CALL xc_f03_mgga_vxc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) + e_tau(ii) = e_tau(ii) + sc*vtau(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 1) THEN !$OMP DO DO ii = 1, npoints - IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN - sigma(1) = norm_drho(ii)**2 - my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) - IF (no_exc) THEN - CALL xc_f03_mgga_vxc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau) - exc = 0.0_dp - ELSE - CALL xc_f03_mgga_exc_vxc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau) - END IF - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) - e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) - e_tau(ii) = e_tau(ii) + sc*vtau(1) + IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN + sigma(1) = norm_drho(ii)**2 + my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) + IF (no_exc) THEN + CALL xc_f03_mgga_vxc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau) + exc = 0.0_dp + ELSE + CALL xc_f03_mgga_exc_vxc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau) END IF + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) + e_tau(ii) = e_tau(ii) + sc*vtau(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == -2) THEN !$OMP DO DO ii = 1, npoints - IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN - sigma = norm_drho(ii)**2 - my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) - IF (no_exc) THEN - CALL xc_f03_mgga_vxc_fxc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau, & - v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & - v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) - ELSE - CALL xc_f03_mgga(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau, & - v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & - v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) - END IF - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) - e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & - sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) - e_rho_laplace_rho(ii) = e_rho_laplace_rho(ii) + sc*v2rholapl(1) - e_rho_tau(ii) = e_rho_tau(ii) + sc*v2rhotau(1) - e_ndrho_laplace_rho(ii) = e_ndrho_laplace_rho(ii) + & - sc*2.0_dp*v2sigmalapl(1)*norm_drho(ii) - e_ndrho_tau(ii) = e_ndrho_tau(ii) + sc*2.0_dp*v2sigmatau(1)*norm_drho(ii) - e_laplace_rho_laplace_rho(ii) = e_laplace_rho_laplace_rho(ii) + sc*v2lapl2(1) - e_laplace_rho_tau(ii) = e_laplace_rho_tau(ii) + sc*v2lapltau(1) - e_tau_tau(ii) = e_tau_tau(ii) + sc*v2tau2(1) + IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN + sigma = norm_drho(ii)**2 + my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) + IF (no_exc) THEN + CALL xc_f03_mgga_vxc_fxc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau, & + v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & + v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) + ELSE + CALL xc_f03_mgga(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau, & + v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & + v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) END IF + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) + e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & + sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + e_rho_laplace_rho(ii) = e_rho_laplace_rho(ii) + sc*v2rholapl(1) + e_rho_tau(ii) = e_rho_tau(ii) + sc*v2rhotau(1) + e_ndrho_laplace_rho(ii) = e_ndrho_laplace_rho(ii) + & + sc*2.0_dp*v2sigmalapl(1)*norm_drho(ii) + e_ndrho_tau(ii) = e_ndrho_tau(ii) + sc*2.0_dp*v2sigmatau(1)*norm_drho(ii) + e_laplace_rho_laplace_rho(ii) = e_laplace_rho_laplace_rho(ii) + sc*v2lapl2(1) + e_laplace_rho_tau(ii) = e_laplace_rho_tau(ii) + sc*v2lapltau(1) + e_tau_tau(ii) = e_tau_tau(ii) + sc*v2tau2(1) + END IF END DO !$OMP END DO ELSE IF (grad_deriv == 2) THEN !$OMP DO DO ii = 1, npoints - IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN - sigma = norm_drho(ii)**2 - my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) - IF (no_exc) THEN - CALL xc_f03_mgga_vxc_fxc(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau, & - v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & - v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) - exc = 0.0_dp - ELSE - CALL xc_f03_mgga(xc_func, one, rho(ii), sigma, & - laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau, & - v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & - v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) - END IF - e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) - e_rho(ii) = e_rho(ii) + sc*vrho(1) - e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) - e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) - e_tau(ii) = e_tau(ii) + sc*vtau(1) - e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) - e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) - e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & - sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) - e_rho_laplace_rho(ii) = e_rho_laplace_rho(ii) + sc*v2rholapl(1) - e_rho_tau(ii) = e_rho_tau(ii) + sc*v2rhotau(1) - e_ndrho_laplace_rho(ii) = e_ndrho_laplace_rho(ii) + & - sc*2.0_dp*v2sigmalapl(1)*norm_drho(ii) - e_ndrho_tau(ii) = e_ndrho_tau(ii) + sc*2.0_dp*v2sigmatau(1)*norm_drho(ii) - e_laplace_rho_laplace_rho(ii) = e_laplace_rho_laplace_rho(ii) + sc*v2lapl2(1) - e_laplace_rho_tau(ii) = e_laplace_rho_tau(ii) + sc*v2lapltau(1) - e_tau_tau(ii) = e_tau_tau(ii) + sc*v2tau2(1) + IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN + sigma = norm_drho(ii)**2 + my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii))) + IF (no_exc) THEN + CALL xc_f03_mgga_vxc_fxc(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, vrho, vsigma, vlapl, vtau, & + v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & + v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) + exc = 0.0_dp + ELSE + CALL xc_f03_mgga(xc_func, one, rho(ii), sigma, & + laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl, vtau, & + v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma, v2rholapl, & + v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau) END IF + e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii) + e_rho(ii) = e_rho(ii) + sc*vrho(1) + e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii) + e_laplace_rho(ii) = e_laplace_rho(ii) + sc*vlapl(1) + e_tau(ii) = e_tau(ii) + sc*vtau(1) + e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1) + e_ndrho_rho(ii) = e_ndrho_rho(ii) + sc*2.0_dp*v2rhosigma(1)*norm_drho(ii) + e_ndrho_ndrho(ii) = e_ndrho_ndrho(ii) + & + sc*2.0_dp*(2.0_dp*sigma(1)*v2sigma2(1) + vsigma(1)) + e_rho_laplace_rho(ii) = e_rho_laplace_rho(ii) + sc*v2rholapl(1) + e_rho_tau(ii) = e_rho_tau(ii) + sc*v2rhotau(1) + e_ndrho_laplace_rho(ii) = e_ndrho_laplace_rho(ii) + & + sc*2.0_dp*v2sigmalapl(1)*norm_drho(ii) + e_ndrho_tau(ii) = e_ndrho_tau(ii) + sc*2.0_dp*v2sigmatau(1)*norm_drho(ii) + e_laplace_rho_laplace_rho(ii) = e_laplace_rho_laplace_rho(ii) + sc*v2lapl2(1) + e_laplace_rho_tau(ii) = e_laplace_rho_tau(ii) + sc*v2lapltau(1) + e_tau_tau(ii) = e_tau_tau(ii) + sc*v2tau2(1) + END IF END DO !$OMP END DO END IF @@ -1512,8 +1650,6 @@ CONTAINS CPABORT(TRIM(func_name)//": this XC_FAMILY is currently not supported.") END SELECT - CALL xc_f03_func_end(xc_func) - END SUBROUTINE libxc_lda_calc #endif @@ -1594,8 +1730,10 @@ CONTAINS !> \param epsilon_rho ... !> \param epsilon_tau ... !> \param func_name name of the functional -!> \param sc scaling factor -!> \param params parameters of the functional +!> \param sc scaling factor of the functional +!> \param xc_func libxc functional object +!> \param xc_info libxc functional info object +!> \param no_exc whether the EXC function is not available for the given functional !> \author F. Tran ! ************************************************************************************************** #if defined (__LIBXC) @@ -1626,32 +1764,33 @@ CONTAINS e_rhoa_rhoa_rhoa, e_rhoa_rhoa_rhob, & e_rhoa_rhob_rhob, e_rhob_rhob_rhob, & grad_deriv, npoints, epsilon_rho, & - epsilon_tau, func_name, sc, params) + epsilon_tau, func_name, sc, xc_func, xc_info, no_exc) REAL(KIND=dp), DIMENSION(*), INTENT(IN) :: rhoa, rhob, norm_drho, norm_drhoa, & norm_drhob, laplace_rhoa, & laplace_rhob, tau_a, tau_b REAL(KIND=dp), DIMENSION(*), INTENT(INOUT) :: e_0, e_rhoa, e_rhob, e_ndrho, e_ndrhoa, & - e_ndrhob, e_laplace_rhoa, e_laplace_rhob, e_tau_a, e_tau_b, e_rhoa_rhoa, e_rhoa_rhob, & - e_rhob_rhob, e_ndrho_rhoa, e_ndrho_rhob, e_ndrhoa_rhoa, e_ndrhoa_rhob, e_ndrhob_rhoa, & - e_ndrhob_rhob, e_ndrho_ndrho, e_ndrho_ndrhoa, e_ndrho_ndrhob, e_ndrhoa_ndrhoa, & - e_ndrhoa_ndrhob, e_ndrhob_ndrhob, e_rhoa_laplace_rhoa, e_rhoa_laplace_rhob, & - e_rhob_laplace_rhoa, e_rhob_laplace_rhob, e_rhoa_tau_a, e_rhoa_tau_b, e_rhob_tau_a, & - e_rhob_tau_b, e_ndrho_laplace_rhoa, e_ndrho_laplace_rhob, e_ndrhoa_laplace_rhoa + e_ndrhob, e_laplace_rhoa, e_laplace_rhob, e_tau_a, e_tau_b, e_rhoa_rhoa, e_rhoa_rhob, & + e_rhob_rhob, e_ndrho_rhoa, e_ndrho_rhob, e_ndrhoa_rhoa, e_ndrhoa_rhob, e_ndrhob_rhoa, & + e_ndrhob_rhob, e_ndrho_ndrho, e_ndrho_ndrhoa, e_ndrho_ndrhob, e_ndrhoa_ndrhoa, & + e_ndrhoa_ndrhob, e_ndrhob_ndrhob, e_rhoa_laplace_rhoa, e_rhoa_laplace_rhob, & + e_rhob_laplace_rhoa, e_rhob_laplace_rhob, e_rhoa_tau_a, e_rhoa_tau_b, e_rhob_tau_a, & + e_rhob_tau_b, e_ndrho_laplace_rhoa, e_ndrho_laplace_rhob, e_ndrhoa_laplace_rhoa REAL(KIND=dp), DIMENSION(*), INTENT(INOUT) :: e_ndrhoa_laplace_rhob, e_ndrhob_laplace_rhoa, & - e_ndrhob_laplace_rhob, e_ndrho_tau_a, e_ndrho_tau_b, e_ndrhoa_tau_a, e_ndrhoa_tau_b, & - e_ndrhob_tau_a, e_ndrhob_tau_b, e_laplace_rhoa_laplace_rhoa, e_laplace_rhoa_laplace_rhob, & - e_laplace_rhob_laplace_rhob, e_laplace_rhoa_tau_a, e_laplace_rhoa_tau_b, & - e_laplace_rhob_tau_a, e_laplace_rhob_tau_b, e_tau_a_tau_a, e_tau_a_tau_b, e_tau_b_tau_b, & - e_rhoa_rhoa_rhoa, e_rhoa_rhoa_rhob, e_rhoa_rhob_rhob, e_rhob_rhob_rhob + e_ndrhob_laplace_rhob, e_ndrho_tau_a, e_ndrho_tau_b, e_ndrhoa_tau_a, e_ndrhoa_tau_b, & + e_ndrhob_tau_a, e_ndrhob_tau_b, e_laplace_rhoa_laplace_rhoa, e_laplace_rhoa_laplace_rhob, & + e_laplace_rhob_laplace_rhob, e_laplace_rhoa_tau_a, e_laplace_rhoa_tau_b, & + e_laplace_rhob_tau_a, e_laplace_rhob_tau_b, e_tau_a_tau_a, e_tau_a_tau_b, e_tau_b_tau_b, & + e_rhoa_rhoa_rhoa, e_rhoa_rhoa_rhob, e_rhoa_rhob_rhob, e_rhob_rhob_rhob INTEGER, INTENT(in) :: grad_deriv, npoints REAL(KIND=dp), INTENT(in) :: epsilon_rho, epsilon_tau CHARACTER(LEN=default_string_length), INTENT(IN) :: func_name - REAL(KIND=dp), INTENT(in) :: sc - REAL(KIND=dp), DIMENSION(:), INTENT(IN), POINTER :: params + REAL(KIND=dp), INTENT(IN) :: sc + TYPE(xc_f03_func_info_t), INTENT(IN) :: xc_info + TYPE(xc_f03_func_t), INTENT(IN) :: xc_func + LOGICAL, INTENT(IN) :: no_exc - INTEGER :: func_id, ii - LOGICAL :: no_exc + INTEGER :: ii REAL(KIND=dp) :: my_norm_drho, my_norm_drhoa, & my_norm_drhob, my_rhoa, my_rhob, & my_tau_a, my_tau_b @@ -1662,20 +1801,10 @@ CONTAINS REAL(KIND=dp), DIMENSION(4, 1) :: v2lapltau, v2rholapl, v2rhotau, v3rho3 REAL(KIND=dp), DIMENSION(6, 1) :: v2rhosigma, v2sigma2, v2sigmalapl, & v2sigmatau - TYPE(xc_f03_func_info_t) :: xc_info - TYPE(xc_f03_func_t) :: xc_func vlapl(1, 1) = 0.0_dp vlapl(2, 1) = 0.0_dp - func_id = xc_libxc_wrap_functional_get_number(func_name) -!$OMP CRITICAL(libxc_init) - CALL xc_f03_func_init(xc_func, func_id, XC_POLARIZED) - xc_info = xc_f03_func_get_info(xc_func) - CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc) -!$OMP END CRITICAL(libxc_init) -!$OMP BARRIER - SELECT CASE (xc_f03_func_info_get_family(xc_info)) CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA) IF (grad_deriv == 0) THEN @@ -2324,8 +2453,6 @@ CONTAINS CPABORT(TRIM(func_name)//": this XC_FAMILY is currently not supported.") END SELECT - CALL xc_f03_func_end(xc_func) - END SUBROUTINE libxc_lsd_calc #endif diff --git a/src/xc/xc_libxc_wrap.F b/src/xc/xc_libxc_wrap.F index cdf1e960e3..1e31997021 100644 --- a/src/xc/xc_libxc_wrap.F +++ b/src/xc/xc_libxc_wrap.F @@ -32,8 +32,13 @@ MODULE xc_libxc_wrap USE kinds, ONLY: dp USE xc_f03_lib_m, ONLY: xc_f03_func_end, & xc_f03_func_init, & + xc_f03_functional_get_name, & xc_f03_func_set_ext_params, & xc_f03_functional_get_number, & + xc_f03_available_functional_numbers, & + xc_f03_available_functional_names, & + xc_f03_maximum_name_length, & + xc_f03_number_of_functionals, & ! xc_f03_gga_exc, & xc_f03_gga_exc_vxc, & @@ -49,6 +54,8 @@ MODULE xc_libxc_wrap xc_f03_func_info_get_references, & xc_f03_func_info_get_flags, & xc_f03_func_info_get_n_ext_params, & + xc_f03_func_info_get_ext_params_name, & + xc_f03_func_info_get_ext_params_default_value, & xc_f03_func_info_get_ext_params_description, & ! xc_f03_func_reference_get_ref, & @@ -92,6 +99,11 @@ MODULE xc_libxc_wrap XC_FLAGS_HAVE_EXC, & XC_FLAGS_DEVELOPMENT + USE input_section_types, ONLY: section_add_keyword, & + section_add_subsection, & + section_create, & + section_release, & + section_type, section_vals_type, section_vals_val_get #include "../base/base_uses.f90" IMPLICIT NONE @@ -103,8 +115,12 @@ MODULE xc_libxc_wrap PUBLIC :: xc_f03_func_t, xc_f03_func_info_t PUBLIC :: xc_f03_func_init, xc_f03_func_end + PUBLIC :: xc_f03_functional_get_name, xc_f03_available_functional_numbers, xc_f03_maximum_name_length, & + xc_f03_number_of_functionals, xc_f03_available_functional_names PUBLIC :: xc_f03_func_get_info, xc_f03_func_info_get_family, xc_f03_func_info_get_kind, & - xc_f03_func_info_get_name + xc_f03_func_info_get_name, xc_f03_func_info_get_ext_params_name, & + xc_f03_func_info_get_ext_params_description, xc_f03_func_info_get_ext_params_default_value, & + xc_f03_func_info_get_n_ext_params PUBLIC :: xc_f03_gga_exc, xc_f03_gga_exc_vxc, xc_f03_gga_exc_vxc_fxc, xc_f03_gga_fxc, & xc_f03_gga_vxc, xc_f03_gga_vxc_fxc PUBLIC :: xc_f03_lda, & @@ -127,7 +143,8 @@ MODULE xc_libxc_wrap xc_libxc_wrap_needs_laplace, & xc_libxc_wrap_functional_set_params, & xc_libxc_wrap_is_under_development, & - xc_libxc_get_reference_length + xc_libxc_get_reference_length, & + xc_libxc_check_functional CONTAINS @@ -152,7 +169,7 @@ CONTAINS ! We are counting the number of necessary lines by carrying out a dry run of xc_libxc_wrap_info_refs i_ref = 0 idx = 1 - length = 10 + length = 0 DO WHILE (i_ref >= 0) ! information about functional references xc_ref = xc_f03_func_info_get_references(xc_info, i_ref) @@ -167,7 +184,7 @@ CONTAINS END IF DO i = 1, n_params descr_string = xc_f03_func_info_get_ext_params_description(xc_info, i - 1) - length = length + LEN_TRIM(descr_string) - 1 + 3 + length = length + LEN_TRIM(descr_string) + 3 IF (MOD(length, maxlen) /= 0) length = length + maxlen - MOD(length, maxlen) END DO idx = idx + 1 @@ -237,6 +254,7 @@ CONTAINS first = last + 1 empty = last + (maxlen - 1) - MOD(last - 1, maxlen) ! fill up line with 'spaces' + IF (empty /= last) THEN reference(first:empty) = ' ' first = empty + 1 @@ -286,6 +304,36 @@ CONTAINS END SUBROUTINE xc_libxc_wrap_version +! ************************************************************************************************** +!> \brief Checks existence of functional in LibXC +!> \param func_string ... +!> \return ... +!> \author F. Stein +!> \note Remove prefix to keep compatibility, functionals can be specified (in +!> LIBXC section) as: +!> GGA_X_... or XC_GGA_X_... +!> Starting from version 2.2.0 both name conventions are allowed, before +!> the 'XC_' prefix was necessary. +!> +! ************************************************************************************************** + LOGICAL FUNCTION xc_libxc_check_functional(func_string) RESULT(exists) + CHARACTER(LEN=*), INTENT(IN) :: func_string + + CHARACTER(LEN=*), PARAMETER :: routineN = 'xc_libxc_check_functional' + + INTEGER :: func_id + + IF (func_string(1:3) == "XC_") THEN + func_id = xc_f03_functional_get_number(func_string(4:LEN_TRIM(func_string))) + ELSE + func_id = xc_f03_functional_get_number(func_string(1:LEN_TRIM(func_string))) + END IF + + exists = .TRUE. + IF (func_id == -1) exists = .FALSE. + + END FUNCTION xc_libxc_check_functional + ! ************************************************************************************************** !> \brief Provides the functional ID. !> \param func_string ... @@ -388,33 +436,55 @@ CONTAINS !> \brief Wrapper for functionals that need special parameters. !> \param xc_func ... !> \param xc_info ... -!> \param params ... +!> \param libxc_params ... !> \param no_exc ... !> !> \author A. Gloess (agloess) ! ************************************************************************************************** - SUBROUTINE xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc) + SUBROUTINE xc_libxc_wrap_functional_set_params(xc_func, xc_info, libxc_params, no_exc) TYPE(xc_f03_func_t), INTENT(INOUT) :: xc_func TYPE(xc_f03_func_info_t), INTENT(IN) :: xc_info - REAL(KIND=dp), DIMENSION(:), INTENT(IN), POINTER :: params + TYPE(section_vals_type), POINTER, INTENT(IN) :: libxc_params LOGICAL, INTENT(INOUT) :: no_exc CHARACTER(LEN=*), PARAMETER :: routineN = 'xc_libxc_wrap_functional_set_params' - INTEGER :: handle, i_params, n_params + INTEGER :: handle, i, i_params, n_params + REAL(KIND=dp), DIMENSION(:), ALLOCATABLE :: params + REAL(KIND=dp), DIMENSION(:), POINTER :: params_pointer + CHARACTER(LEN=128) :: param_name CALL timeset(routineN, handle) n_params = xc_f03_func_info_get_n_ext_params(xc_info) - i_params = SIZE(params) + IF (n_params > 0) THEN + IF (libxc_params%section%name == "LIBXC" .OR. libxc_params%section%name == "KE_LIBXC") THEN + NULLIFY (params_pointer) + CALL section_vals_val_get(libxc_params, "parameters", r_vals=params_pointer) + CPASSERT(ASSOCIATED(params_pointer)) - IF ((n_params > 0) .AND. (i_params > 0) .AND. (params(1) < HUGE(0.0_dp))) THEN - IF (i_params == n_params) THEN - CALL xc_f03_func_set_ext_params(xc_func, params) + i_params = SIZE(params_pointer) + + IF ((n_params > 0) .AND. (i_params > 0) .AND. (params(1) < HUGE(0.0_dp))) THEN + IF (i_params == n_params) THEN + CALL xc_f03_func_set_ext_params(xc_func, params) + ELSE + CALL cp_abort(__LOCATION__, & + "LIBXC: Inconsistent number of optional external parameters. (required: "& + &//cp_to_string(n_params)//", given: "//cp_to_string(i_params)//")") + END IF + END IF + + CALL xc_f03_func_set_ext_params(xc_func, params_pointer) ELSE - CALL cp_abort(__LOCATION__, & - "LIBXC: Inconsistent number of optional external parameters. (required: "& - &//cp_to_string(n_params)//", given: "//cp_to_string(i_params)//")") + ALLOCATE (params(n_params)) + DO i = 1, n_params + param_name = xc_f03_func_info_get_ext_params_name(xc_info, i - 1) + + CALL section_vals_val_get(libxc_params, TRIM(param_name), r_val=params(i)) + END DO + + CALL xc_f03_func_set_ext_params(xc_func, params) END IF END IF diff --git a/src/xc_write_output.F b/src/xc_write_output.F index af4c00db3d..efe9d1be0a 100644 --- a/src/xc_write_output.F +++ b/src/xc_write_output.F @@ -22,7 +22,8 @@ MODULE xc_write_output section_vals_val_get USE kinds, ONLY: default_string_length USE xc_derivatives, ONLY: xc_functional_get_info - USE xc_libxc, ONLY: libxc_get_reference_length,& + USE xc_libxc, ONLY: libxc_check_existence_in_libxc,& + libxc_get_reference_length,& libxc_version_info #include "./base/base_uses.f90" @@ -75,7 +76,11 @@ CONTAINS xc_fun => section_vals_get_subs_vals2(xc_fun_section, i_section=ifun) IF (.NOT. ASSOCIATED(xc_fun)) EXIT IF (TRIM(xc_fun%section%name) /= "LIBXC") THEN - ALLOCATE (CHARACTER(LEN=20*default_string_length) :: reference) + IF (libxc_check_existence_in_libxc(xc_fun)) THEN + ALLOCATE (CHARACTER(LEN=libxc_get_reference_length(xc_fun, lsd)) :: reference) + ELSE + ALLOCATE (CHARACTER(LEN=20*default_string_length) :: reference) + END IF CALL xc_functional_get_info(xc_fun, lsd=lsd, reference=reference, shortform=shortform) WRITE (output_unit, fmt="(' FUNCTIONAL| ',a,':')") & TRIM(xc_fun%section%name) diff --git a/tests/ATOM/regtest-libxc/C_tpss_libxc.inp b/tests/ATOM/regtest-libxc/C_tpss_libxc.inp index ea49ba447b..815349f101 100644 --- a/tests/ATOM/regtest-libxc/C_tpss_libxc.inp +++ b/tests/ATOM/regtest-libxc/C_tpss_libxc.inp @@ -9,9 +9,8 @@ METHOD_TYPE KOHN-SHAM &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_MGGA_X_TPSS - &END LIBXC + &MGGA_X_TPSS + &END MGGA_X_TPSS &END XC_FUNCTIONAL &END XC &END METHOD diff --git a/tests/ATOM/regtest-libxc/He_4.inp b/tests/ATOM/regtest-libxc/He_4.inp index 098304ca35..546307cccf 100644 --- a/tests/ATOM/regtest-libxc/He_4.inp +++ b/tests/ATOM/regtest-libxc/He_4.inp @@ -11,12 +11,10 @@ METHOD_TYPE UKS &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL MGGA_X_TPSS - &END LIBXC - &LIBXC - FUNCTIONAL MGGA_C_TPSS - &END LIBXC + &MGGA_X_TPSS + &END MGGA_X_TPSS + &MGGA_C_TPSS + &END MGGA_C_TPSS &END XC_FUNCTIONAL &END XC &END METHOD diff --git a/tests/QS/regtest-dft-vdw-corr-3/argon11.inp b/tests/QS/regtest-dft-vdw-corr-3/argon11.inp index d4f158907b..36810c7adf 100644 --- a/tests/QS/regtest-dft-vdw-corr-3/argon11.inp +++ b/tests/QS/regtest-dft-vdw-corr-3/argon11.inp @@ -22,12 +22,10 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_RPW86 - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_RPW86 + &END GGA_X_RPW86 + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &vdW_POTENTIAL DISPERSION_FUNCTIONAL NON_LOCAL diff --git a/tests/QS/regtest-dft-vdw-corr-3/argon12.inp b/tests/QS/regtest-dft-vdw-corr-3/argon12.inp index f297598035..00beb03b50 100644 --- a/tests/QS/regtest-dft-vdw-corr-3/argon12.inp +++ b/tests/QS/regtest-dft-vdw-corr-3/argon12.inp @@ -22,12 +22,10 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_RPW86 - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_RPW86 + &END GGA_X_RPW86 + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &vdW_POTENTIAL DISPERSION_FUNCTIONAL NON_LOCAL diff --git a/tests/QS/regtest-dft-vdw-corr-3/argon14.inp b/tests/QS/regtest-dft-vdw-corr-3/argon14.inp index fa2e91e889..5ae3bde50f 100644 --- a/tests/QS/regtest-dft-vdw-corr-3/argon14.inp +++ b/tests/QS/regtest-dft-vdw-corr-3/argon14.inp @@ -25,12 +25,10 @@ USE_FINER_GRID &END XC_GRID &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_RPW86 - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_RPW86 + &END GGA_X_RPW86 + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &vdW_POTENTIAL DISPERSION_FUNCTIONAL NON_LOCAL diff --git a/tests/QS/regtest-gpw-9/nlcc-mix.inp b/tests/QS/regtest-gpw-9/nlcc-mix.inp index 47a4419104..4c7fae6fbb 100644 --- a/tests/QS/regtest-gpw-9/nlcc-mix.inp +++ b/tests/QS/regtest-gpw-9/nlcc-mix.inp @@ -47,9 +47,8 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_XC_PBE1W - &END LIBXC + &GGA_XC_PBE1W + &END GGA_XC_PBE1W &END XC_FUNCTIONAL &VDW_POTENTIAL POTENTIAL_TYPE PAIR_POTENTIAL diff --git a/tests/QS/regtest-gw2x/H2O-B3LYP-GW2Xs.inp b/tests/QS/regtest-gw2x/H2O-B3LYP-GW2Xs.inp index 15a61a1d07..081e17fb3a 100644 --- a/tests/QS/regtest-gw2x/H2O-B3LYP-GW2Xs.inp +++ b/tests/QS/regtest-gw2x/H2O-B3LYP-GW2Xs.inp @@ -20,9 +20,8 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &HF FRACTION 0.2 @@ -48,9 +47,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &EXACT_EXCHANGE FRACTION 0.2 diff --git a/tests/QS/regtest-gw2x/H2O-B3LYP-pseudo_cano.inp b/tests/QS/regtest-gw2x/H2O-B3LYP-pseudo_cano.inp index 6f104e5abf..5be2a31e8c 100644 --- a/tests/QS/regtest-gw2x/H2O-B3LYP-pseudo_cano.inp +++ b/tests/QS/regtest-gw2x/H2O-B3LYP-pseudo_cano.inp @@ -20,9 +20,8 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &HF FRACTION 0.2 @@ -48,9 +47,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &EXACT_EXCHANGE FRACTION 0.2 diff --git a/tests/QS/regtest-gw2x/Ne-pbc-shortrange.inp b/tests/QS/regtest-gw2x/Ne-pbc-shortrange.inp index 22ae7ce476..2d9ec0d8c5 100644 --- a/tests/QS/regtest-gw2x/Ne-pbc-shortrange.inp +++ b/tests/QS/regtest-gw2x/Ne-pbc-shortrange.inp @@ -16,19 +16,16 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC + &LDA_C_VWN + &END LDA_C_VWN !Range separated, need 100% of long-range and 75% of short range LDA exchange !Long-range obtained by subtracting short-range from normal => end up with -0.25 scale - &LIBXC - FUNCTIONAL LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_X + &END LDA_X + &LDA_X_ERF SCALE -0.25 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -57,14 +54,12 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X_ERF SCALE 0.75 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-gw2x/Ne-pbc-truncated.inp b/tests/QS/regtest-gw2x/Ne-pbc-truncated.inp index de7c48e53c..9838447451 100644 --- a/tests/QS/regtest-gw2x/Ne-pbc-truncated.inp +++ b/tests/QS/regtest-gw2x/Ne-pbc-truncated.inp @@ -16,13 +16,11 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -51,13 +49,11 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-gw2x/SiH4-BHandHLYP-xps_only.inp b/tests/QS/regtest-gw2x/SiH4-BHandHLYP-xps_only.inp index 63fecd772c..7a6ba82629 100644 --- a/tests/QS/regtest-gw2x/SiH4-BHandHLYP-xps_only.inp +++ b/tests/QS/regtest-gw2x/SiH4-BHandHLYP-xps_only.inp @@ -20,9 +20,8 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_BHandHLYP - &END LIBXC + &HYB_GGA_XC_BHandHLYP + &END HYB_GGA_XC_BHandHLYP &END XC_FUNCTIONAL &HF FRACTION 0.5 diff --git a/tests/QS/regtest-hybrid-4/wB97X-V.inp b/tests/QS/regtest-hybrid-4/wB97X-V.inp index 301744899b..7c130a953e 100644 --- a/tests/QS/regtest-hybrid-4/wB97X-V.inp +++ b/tests/QS/regtest-hybrid-4/wB97X-V.inp @@ -25,9 +25,8 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_WB97X_V - &END LIBXC + &HYB_GGA_XC_WB97X_V + &END HYB_GGA_XC_WB97X_V &END XC_FUNCTIONAL &HF FRACTION 1.000 diff --git a/tests/QS/regtest-kg/H2-libxc-diag.inp b/tests/QS/regtest-kg/H2-libxc-diag.inp index 8550383b5e..0fe957ab96 100644 --- a/tests/QS/regtest-kg/H2-libxc-diag.inp +++ b/tests/QS/regtest-kg/H2-libxc-diag.inp @@ -25,8 +25,7 @@ &KG_METHOD &XC &XC_FUNCTIONAL - &KE_LIBXC - FUNCTIONAL XC_GGA_K_LLP + &GGA_K_LLP &END &END &XC_GRID diff --git a/tests/QS/regtest-kg/H2-libxc-ot.inp b/tests/QS/regtest-kg/H2-libxc-ot.inp index 480b34eda1..968b93b143 100644 --- a/tests/QS/regtest-kg/H2-libxc-ot.inp +++ b/tests/QS/regtest-kg/H2-libxc-ot.inp @@ -29,8 +29,7 @@ &KG_METHOD &XC &XC_FUNCTIONAL - &KE_LIBXC - FUNCTIONAL XC_GGA_K_LLP + &GGA_K_LLP &END &END &XC_GRID diff --git a/tests/QS/regtest-kg/H2-libxc.inp b/tests/QS/regtest-kg/H2-libxc.inp index d6b956f8bd..ab53344ceb 100644 --- a/tests/QS/regtest-kg/H2-libxc.inp +++ b/tests/QS/regtest-kg/H2-libxc.inp @@ -25,8 +25,7 @@ &KG_METHOD &XC &XC_FUNCTIONAL - &KE_LIBXC - FUNCTIONAL XC_GGA_K_LLP + &GGA_K_LLP &END &END &XC_GRID diff --git a/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc.inp b/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc.inp index bf439970e9..9f8f20f920 100644 --- a/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc.inp +++ b/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc.inp @@ -22,9 +22,8 @@ #This is B3LYP using VWN3 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_HYB_GGA_XC_B3LYP - &END LIBXC + &HYB_GGA_XC_B3LYP + &END HYB_GGA_XC_B3LYP &END XC_FUNCTIONAL &HF &SCREENING diff --git a/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc_uks.inp b/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc_uks.inp index 575d9f580a..837ecfd085 100644 --- a/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc_uks.inp +++ b/tests/QS/regtest-libxc/H2O-hybrid-b3lyp_libxc_uks.inp @@ -23,9 +23,8 @@ #This is B3LYP using VWN3 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_HYB_GGA_XC_B3LYP - &END LIBXC + &HYB_GGA_XC_B3LYP + &END HYB_GGA_XC_B3LYP &END XC_FUNCTIONAL &HF &SCREENING diff --git a/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp b/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp index c912e678c6..1023e0d52b 100644 --- a/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp +++ b/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp @@ -24,9 +24,8 @@ DENSITY_SMOOTH_CUTOFF_RANGE 0 FUNCTIONAL_ROUTINE NEW &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_HYB_LDA_XC_CAM_LDA0 - &END LIBXC + &HYB_LDA_XC_CAM_LDA0 + &END HYB_LDA_XC_CAM_LDA0 &END XC_FUNCTIONAL &HF &SCREENING diff --git a/tests/QS/regtest-libxc/H2O-hybrid-wb97mv-libxc.inp b/tests/QS/regtest-libxc/H2O-hybrid-wb97mv-libxc.inp index b63490a00d..59d91e6de8 100644 --- a/tests/QS/regtest-libxc/H2O-hybrid-wb97mv-libxc.inp +++ b/tests/QS/regtest-libxc/H2O-hybrid-wb97mv-libxc.inp @@ -21,9 +21,8 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_MGGA_XC_WB97M_V - &END LIBXC + &HYB_MGGA_XC_WB97M_V + &END HYB_MGGA_XC_WB97M_V &END XC_FUNCTIONAL &HF FRACTION 1.000 diff --git a/tests/QS/regtest-libxc/H2O-tpss_lsd.inp b/tests/QS/regtest-libxc/H2O-tpss_lsd.inp index 1296e8e4cb..a8afd2b193 100644 --- a/tests/QS/regtest-libxc/H2O-tpss_lsd.inp +++ b/tests/QS/regtest-libxc/H2O-tpss_lsd.inp @@ -17,12 +17,10 @@ DENSITY_SMOOTH_CUTOFF_RANGE 0 FUNCTIONAL_ROUTINE NEW &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL MGGA_X_TPSS - &END LIBXC - &LIBXC - FUNCTIONAL MGGA_C_TPSS - &END LIBXC + &MGGA_X_TPSS + &END MGGA_X_TPSS + &MGGA_C_TPSS + &END MGGA_C_TPSS &END XC_FUNCTIONAL &XC_GRID XC_DERIV NN50_SMOOTH diff --git a/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp b/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp index b03c135772..89a3a2feb0 100644 --- a/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp +++ b/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp @@ -15,9 +15,8 @@ DENSITY_SMOOTH_CUTOFF_RANGE 0 FUNCTIONAL_ROUTINE NEW &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_MGGA_X_TPSS - &END LIBXC + &MGGA_X_TPSS + &END MGGA_X_TPSS &END XC_FUNCTIONAL &XC_GRID XC_DERIV NN50_SMOOTH diff --git a/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-s.inp b/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-s.inp index 68b5515456..277417042b 100644 --- a/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-s.inp +++ b/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-s.inp @@ -28,12 +28,10 @@ RESTARTS 2 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_VWN - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_VWN + &END LDA_C_VWN &END XC_FUNCTIONAL &XC_GRID XC_DERIV SPLINE2_SMOOTH @@ -42,12 +40,10 @@ &END TDDFPT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_VWN - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_VWN + &END LDA_C_VWN &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-t_uks.inp b/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-t_uks.inp index 21f11e8943..39c73bd5ba 100644 --- a/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-t_uks.inp +++ b/tests/QS/regtest-libxc/H2O_lda_libxc_tddfpt-t_uks.inp @@ -29,12 +29,10 @@ RESTARTS 2 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_VWN - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_VWN + &END LDA_C_VWN &END XC_FUNCTIONAL &XC_GRID XC_DERIV SPLINE2_SMOOTH @@ -43,12 +41,10 @@ &END TDDFPT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_VWN - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_VWN + &END LDA_C_VWN &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-s.inp b/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-s.inp index 39e6a7aa5b..e942d0d3f4 100644 --- a/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-s.inp +++ b/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-s.inp @@ -28,12 +28,10 @@ RESTARTS 2 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &XC_GRID XC_DERIV SPLINE2_SMOOTH @@ -42,12 +40,10 @@ &END TDDFPT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-t_uks.inp b/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-t_uks.inp index 8e4098f016..4431cdf80a 100644 --- a/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-t_uks.inp +++ b/tests/QS/regtest-libxc/H2O_pbe_libxc_tddfpt-t_uks.inp @@ -29,12 +29,10 @@ RESTARTS 2 &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &XC_GRID XC_DERIV SPLINE2_SMOOTH @@ -43,12 +41,10 @@ &END TDDFPT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL XC_GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/QS/regtest-libxc/diamond_br89_libxc.inp b/tests/QS/regtest-libxc/diamond_br89_libxc.inp index abba0c7f4c..59ac575f42 100644 --- a/tests/QS/regtest-libxc/diamond_br89_libxc.inp +++ b/tests/QS/regtest-libxc/diamond_br89_libxc.inp @@ -22,9 +22,8 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_MGGA_X_BR89 - &END LIBXC + &MGGA_X_BR89 + &END MGGA_X_BR89 &END XC_FUNCTIONAL &END XC &PRINT diff --git a/tests/QS/regtest-libxc/diamond_br89_libxc_uks.inp b/tests/QS/regtest-libxc/diamond_br89_libxc_uks.inp index 67a9778dad..66ff6d8298 100644 --- a/tests/QS/regtest-libxc/diamond_br89_libxc_uks.inp +++ b/tests/QS/regtest-libxc/diamond_br89_libxc_uks.inp @@ -23,9 +23,8 @@ &END SCF &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_MGGA_X_BR89 - &END LIBXC + &MGGA_X_BR89 + &END MGGA_X_BR89 &END XC_FUNCTIONAL &END XC &PRINT diff --git a/tests/QS/regtest-xastdp/C2H2-PBE-ri_region.inp b/tests/QS/regtest-xastdp/C2H2-PBE-ri_region.inp index e9c1a8301d..8e8b590caf 100644 --- a/tests/QS/regtest-xastdp/C2H2-PBE-ri_region.inp +++ b/tests/QS/regtest-xastdp/C2H2-PBE-ri_region.inp @@ -40,12 +40,10 @@ &KERNEL RI_REGION 3.0 &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &END KERNEL diff --git a/tests/QS/regtest-xastdp/CH3-PBE-uks.inp b/tests/QS/regtest-xastdp/CH3-PBE-uks.inp index d76c60ff36..3b432ff8a7 100644 --- a/tests/QS/regtest-xastdp/CH3-PBE-uks.inp +++ b/tests/QS/regtest-xastdp/CH3-PBE-uks.inp @@ -44,12 +44,10 @@ &KERNEL RI_RADIUS 3.0 &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL GGA_X_PBE - &END LIBXC - &LIBXC - FUNCTIONAL GGA_C_PBE - &END LIBXC + &GGA_X_PBE + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &END KERNEL diff --git a/tests/QS/regtest-xastdp/CO-PBE0.inp b/tests/QS/regtest-xastdp/CO-PBE0.inp index cba26c7d2e..b034183d48 100644 --- a/tests/QS/regtest-xastdp/CO-PBE0.inp +++ b/tests/QS/regtest-xastdp/CO-PBE0.inp @@ -20,13 +20,11 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL GGA_C_PBE - &END LIBXC - &LIBXC - FUNCTIONAL GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE + &GGA_X_PBE SCALE 0.75 - &END LIBXC + &END GGA_X_PBE &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -48,13 +46,11 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL GGA_C_PBE - &END LIBXC - &LIBXC - FUNCTIONAL GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE + &GGA_X_PBE SCALE 0.75 - &END LIBXC + &END GGA_X_PBE &END XC_FUNCTIONAL &EXACT_EXCHANGE FRACTION 0.25 diff --git a/tests/QS/regtest-xastdp/H2O-32-ot_solver.inp b/tests/QS/regtest-xastdp/H2O-32-ot_solver.inp index e320c2afcb..95355d7ceb 100644 --- a/tests/QS/regtest-xastdp/H2O-32-ot_solver.inp +++ b/tests/QS/regtest-xastdp/H2O-32-ot_solver.inp @@ -39,9 +39,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_XC_TETER93 - &END LIBXC + &LDA_XC_TETER93 + &END LDA_XC_TETER93 &END XC_FUNCTIONAL &END KERNEL diff --git a/tests/QS/regtest-xastdp/H2O-B3LYP-full.inp b/tests/QS/regtest-xastdp/H2O-B3LYP-full.inp index 05453d7213..cbaf14d20b 100644 --- a/tests/QS/regtest-xastdp/H2O-B3LYP-full.inp +++ b/tests/QS/regtest-xastdp/H2O-B3LYP-full.inp @@ -20,9 +20,8 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &HF FRACTION 0.2 @@ -43,9 +42,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL HYB_GGA_XC_B3LYP5 - &END LIBXC + &HYB_GGA_XC_B3LYP5 + &END HYB_GGA_XC_B3LYP5 &END XC_FUNCTIONAL &EXACT_EXCHANGE FRACTION 0.2 diff --git a/tests/QS/regtest-xastdp/He-LDA-extRI_XAS.inp b/tests/QS/regtest-xastdp/He-LDA-extRI_XAS.inp index f47996850b..f5d84c0fe4 100644 --- a/tests/QS/regtest-xastdp/He-LDA-extRI_XAS.inp +++ b/tests/QS/regtest-xastdp/He-LDA-extRI_XAS.inp @@ -37,9 +37,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_XC_TETER93 - &END LIBXC + &LDA_XC_TETER93 + &END LDA_XC_TETER93 &END XC_FUNCTIONAL &END KERNEL diff --git a/tests/QS/regtest-xastdp/Ne-LDA-e_range.inp b/tests/QS/regtest-xastdp/Ne-LDA-e_range.inp index 3c91199c0a..534bd3de4b 100644 --- a/tests/QS/regtest-xastdp/Ne-LDA-e_range.inp +++ b/tests/QS/regtest-xastdp/Ne-LDA-e_range.inp @@ -38,9 +38,8 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_XC_TETER93 - &END LIBXC + &LDA_XC_TETER93 + &END LDA_XC_TETER93 &END XC_FUNCTIONAL &END KERNEL diff --git a/tests/QS/regtest-xastdp/Ne-pbc-shortrange-ovlp_metric.inp b/tests/QS/regtest-xastdp/Ne-pbc-shortrange-ovlp_metric.inp index 7a7d630ddb..526e45b023 100644 --- a/tests/QS/regtest-xastdp/Ne-pbc-shortrange-ovlp_metric.inp +++ b/tests/QS/regtest-xastdp/Ne-pbc-shortrange-ovlp_metric.inp @@ -15,19 +15,16 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC + &LDA_C_VWN + &END LDA_C_VWN !Range separated, need 100% of long-range and 75% of short range LDA exchange !Long-range obtained by substracting short-range from normal => end up with -0.25 scale - &LIBXC - FUNCTIONAL LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_X + &END LDA_X + &LDA_X_ERF SCALE -0.25 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -53,14 +50,12 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X_ERF SCALE 0.75 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-xastdp/Ne-pbc-shortrange-sr_metric.inp b/tests/QS/regtest-xastdp/Ne-pbc-shortrange-sr_metric.inp index e3a54e2f71..0c7e3f2497 100644 --- a/tests/QS/regtest-xastdp/Ne-pbc-shortrange-sr_metric.inp +++ b/tests/QS/regtest-xastdp/Ne-pbc-shortrange-sr_metric.inp @@ -15,19 +15,16 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC + &LDA_C_VWN + &END LDA_C_VWN !Range separated, need 100% of long-range and 75% of short range LDA exchange !Long-range obtained by subtracting short-range from normal => end up with -0.25 scale - &LIBXC - FUNCTIONAL LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_X + &END LDA_X + &LDA_X_ERF SCALE -0.25 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -53,14 +50,12 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X_ERF SCALE 0.75 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-xastdp/Ne-pbc-shortrange.inp b/tests/QS/regtest-xastdp/Ne-pbc-shortrange.inp index f13435a91e..e5e7c01131 100644 --- a/tests/QS/regtest-xastdp/Ne-pbc-shortrange.inp +++ b/tests/QS/regtest-xastdp/Ne-pbc-shortrange.inp @@ -16,19 +16,16 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC + &LDA_C_VWN + &END LDA_C_VWN !Range separated, need 100% of long-range and 75% of short range LDA exchange !Long-range obtained by subtracting short-range from normal => end up with -0.25 scale - &LIBXC - FUNCTIONAL LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_X + &END LDA_X + &LDA_X_ERF SCALE -0.25 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -54,14 +51,12 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X_ERF + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X_ERF SCALE 0.75 - PARAMETERS 0.6 - &END LIBXC + _OMEGA 0.6 + &END LDA_X_ERF &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-xastdp/Ne-pbc-truncated-tc_metric.inp b/tests/QS/regtest-xastdp/Ne-pbc-truncated-tc_metric.inp index c78382046f..44956905f7 100644 --- a/tests/QS/regtest-xastdp/Ne-pbc-truncated-tc_metric.inp +++ b/tests/QS/regtest-xastdp/Ne-pbc-truncated-tc_metric.inp @@ -15,13 +15,11 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -47,13 +45,11 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-xastdp/Ne-pbc-truncated.inp b/tests/QS/regtest-xastdp/Ne-pbc-truncated.inp index cde479090a..adcc04d5d8 100644 --- a/tests/QS/regtest-xastdp/Ne-pbc-truncated.inp +++ b/tests/QS/regtest-xastdp/Ne-pbc-truncated.inp @@ -16,13 +16,11 @@ &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &HF FRACTION 0.25 @@ -48,13 +46,11 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL LDA_C_VWN - &END LIBXC - &LIBXC - FUNCTIONAL LDA_X + &LDA_C_VWN + &END LDA_C_VWN + &LDA_X SCALE 0.75 - &END LIBXC + &END LDA_X &END XC_FUNCTIONAL &EXACT_EXCHANGE diff --git a/tests/QS/regtest-xastdp/SiH4-PBE0-admm-pseudo.inp b/tests/QS/regtest-xastdp/SiH4-PBE0-admm-pseudo.inp index c4ace234ba..ce5fc30c89 100644 --- a/tests/QS/regtest-xastdp/SiH4-PBE0-admm-pseudo.inp +++ b/tests/QS/regtest-xastdp/SiH4-PBE0-admm-pseudo.inp @@ -59,13 +59,11 @@ &KERNEL &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL GGA_X_PBE + &GGA_X_PBE SCALE 0.75 - &END LIBXC - &LIBXC - FUNCTIONAL GGA_C_PBE - &END LIBXC + &END GGA_X_PBE + &GGA_C_PBE + &END GGA_C_PBE &END XC_FUNCTIONAL &EXACT_EXCHANGE OPERATOR COULOMB diff --git a/tests/SIRIUS/regtest-1/Au.inp b/tests/SIRIUS/regtest-1/Au.inp index 3b6188fc6c..e1e91c4ce8 100644 --- a/tests/SIRIUS/regtest-1/Au.inp +++ b/tests/SIRIUS/regtest-1/Au.inp @@ -37,12 +37,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/Au_GTH.inp b/tests/SIRIUS/regtest-1/Au_GTH.inp index b408216998..8f9e1d8dda 100644 --- a/tests/SIRIUS/regtest-1/Au_GTH.inp +++ b/tests/SIRIUS/regtest-1/Au_GTH.inp @@ -36,12 +36,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/Fe.inp b/tests/SIRIUS/regtest-1/Fe.inp index 1d3f4856e0..530dd8deda 100644 --- a/tests/SIRIUS/regtest-1/Fe.inp +++ b/tests/SIRIUS/regtest-1/Fe.inp @@ -37,12 +37,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/Fe_dos.inp b/tests/SIRIUS/regtest-1/Fe_dos.inp index e60418164a..f912cdcaae 100644 --- a/tests/SIRIUS/regtest-1/Fe_dos.inp +++ b/tests/SIRIUS/regtest-1/Fe_dos.inp @@ -42,12 +42,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/He-full-potential.inp b/tests/SIRIUS/regtest-1/He-full-potential.inp index 6d4c9b5098..7840555a10 100644 --- a/tests/SIRIUS/regtest-1/He-full-potential.inp +++ b/tests/SIRIUS/regtest-1/He-full-potential.inp @@ -42,12 +42,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/LiF.inp b/tests/SIRIUS/regtest-1/LiF.inp index e33bd663d4..aeeef8bb73 100644 --- a/tests/SIRIUS/regtest-1/LiF.inp +++ b/tests/SIRIUS/regtest-1/LiF.inp @@ -36,12 +36,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/NiO.inp b/tests/SIRIUS/regtest-1/NiO.inp index 95a5433856..5428fdefc2 100644 --- a/tests/SIRIUS/regtest-1/NiO.inp +++ b/tests/SIRIUS/regtest-1/NiO.inp @@ -36,12 +36,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT diff --git a/tests/SIRIUS/regtest-1/SrVO.inp b/tests/SIRIUS/regtest-1/SrVO.inp index 8881fa49bd..fe35975457 100644 --- a/tests/SIRIUS/regtest-1/SrVO.inp +++ b/tests/SIRIUS/regtest-1/SrVO.inp @@ -36,12 +36,10 @@ &DFT &XC &XC_FUNCTIONAL - &LIBXC - FUNCTIONAL XC_LDA_X - &END LIBXC - &LIBXC - FUNCTIONAL XC_LDA_C_PZ - &END LIBXC + &LDA_X + &END LDA_X + &LDA_C_PZ + &END LDA_C_PZ &END XC_FUNCTIONAL &END XC &END DFT