LibXC: Add section for every functional

SIRIUS: Append XC_ to LibXC functional names if absent
This commit is contained in:
Frederick Stein 2021-01-25 14:19:49 +01:00 committed by Frederick Stein
parent 439702f443
commit a3c0186439
62 changed files with 747 additions and 636 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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 <FUNCTIONAL_KEY> use the section &<FUNCTIONAL_KEY>.")
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
CALL keyword_create(keyword, __LOCATION__, name="FUNCTIONAL", &

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -25,8 +25,7 @@
&KG_METHOD
&XC
&XC_FUNCTIONAL
&KE_LIBXC
FUNCTIONAL XC_GGA_K_LLP
&GGA_K_LLP
&END
&END
&XC_GRID

View file

@ -29,8 +29,7 @@
&KG_METHOD
&XC
&XC_FUNCTIONAL
&KE_LIBXC
FUNCTIONAL XC_GGA_K_LLP
&GGA_K_LLP
&END
&END
&XC_GRID

View file

@ -25,8 +25,7 @@
&KG_METHOD
&XC
&XC_FUNCTIONAL
&KE_LIBXC
FUNCTIONAL XC_GGA_K_LLP
&GGA_K_LLP
&END
&END
&XC_GRID

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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