mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 14:15:19 -04:00
LibXC: Add section for every functional
SIRIUS: Append XC_ to LibXC functional names if absent
This commit is contained in:
parent
439702f443
commit
a3c0186439
62 changed files with 747 additions and 636 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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", &
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@
|
|||
&KG_METHOD
|
||||
&XC
|
||||
&XC_FUNCTIONAL
|
||||
&KE_LIBXC
|
||||
FUNCTIONAL XC_GGA_K_LLP
|
||||
&GGA_K_LLP
|
||||
&END
|
||||
&END
|
||||
&XC_GRID
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@
|
|||
&KG_METHOD
|
||||
&XC
|
||||
&XC_FUNCTIONAL
|
||||
&KE_LIBXC
|
||||
FUNCTIONAL XC_GGA_K_LLP
|
||||
&GGA_K_LLP
|
||||
&END
|
||||
&END
|
||||
&XC_GRID
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@
|
|||
&KG_METHOD
|
||||
&XC
|
||||
&XC_FUNCTIONAL
|
||||
&KE_LIBXC
|
||||
FUNCTIONAL XC_GGA_K_LLP
|
||||
&GGA_K_LLP
|
||||
&END
|
||||
&END
|
||||
&XC_GRID
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue