122#include "../base/base_uses.f90"
128 LOGICAL,
PARAMETER :: debug_this_module = .false.
129 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xc_derivatives'
149 needs, max_deriv, print_warn)
151 LOGICAL,
INTENT(in) :: lsd
152 CHARACTER(LEN=*),
INTENT(OUT),
OPTIONAL :: reference, shortform
154 INTEGER,
INTENT(out),
OPTIONAL :: max_deriv
155 LOGICAL,
INTENT(IN),
OPTIONAL :: print_warn
158 REAL(kind=
dp) :: r_param
160 cpassert(
ASSOCIATED(functional))
161 SELECT CASE (functional%section%name)
164 CALL b97_lsd_info(reference=reference, shortform=shortform, &
165 needs=needs, max_deriv=max_deriv, b97_params=functional)
167 CALL b97_lda_info(reference=reference, shortform=shortform, &
168 needs=needs, max_deriv=max_deriv, b97_params=functional)
170 CASE (
"BECKE88_LR_ADIABATIC")
173 needs=needs, max_deriv=max_deriv)
176 needs=needs, max_deriv=max_deriv)
178 CASE (
"LYP_ADIABATIC")
181 needs=needs, max_deriv=max_deriv)
184 needs=needs, max_deriv=max_deriv)
189 needs=needs, max_deriv=max_deriv)
192 needs=needs, max_deriv=max_deriv)
196 CALL xb88_lsd_info(reference=reference, shortform=shortform, &
197 needs=needs, max_deriv=max_deriv)
199 CALL xb88_lda_info(reference=reference, shortform=shortform, &
200 needs=needs, max_deriv=max_deriv)
205 needs=needs, max_deriv=max_deriv)
208 needs=needs, max_deriv=max_deriv)
212 CALL lyp_lsd_info(reference=reference, shortform=shortform, &
213 needs=needs, max_deriv=max_deriv)
215 CALL lyp_lda_info(reference=reference, shortform=shortform, &
216 needs=needs, max_deriv=max_deriv)
219 CALL pade_info(reference, shortform, lsd=lsd, needs=needs)
223 CALL hcth_lda_info(i_param, reference, shortform, needs, max_deriv)
232 CALL cs1_lsd_info(reference, shortform, needs, max_deriv)
234 CALL cs1_lda_info(reference, shortform, needs=needs, max_deriv=max_deriv)
238 CALL xgga_info(i_param, lsd, reference, shortform, needs, max_deriv)
241 CALL ke_gga_info(i_param, lsd, reference, shortform, needs, max_deriv)
244 cpabort(
"BP functional not implemented with LSD")
246 CALL p86_lda_info(reference, shortform, needs, max_deriv)
250 CALL perdew_wang_info(i_param, lsd, reference, shortform, needs, max_deriv, &
254 CALL pz_info(i_param, lsd, reference, shortform, needs, max_deriv)
257 CALL tfw_lsd_info(reference, shortform, needs, max_deriv)
259 CALL tfw_lda_info(reference, shortform, needs, max_deriv)
265 CALL vwn_lsd_info(reference, shortform, needs, max_deriv)
267 CALL vwn_lda_info(reference, shortform, needs, max_deriv)
271 CALL xalpha_info(lsd, reference, shortform, needs, max_deriv, &
272 xa_parameter=r_param)
275 cpabort(
"TPSS functional not implemented with LSD. Use the LIBXC version instead.")
277 CALL tpss_lda_info(functional, reference, shortform, needs, max_deriv)
281 CALL pbe_lsd_info(functional, reference, shortform, needs, max_deriv)
283 CALL pbe_lda_info(functional, reference, shortform, needs, max_deriv)
286 IF (gauxc_model_none_selected(functional))
THEN
287 CALL gauxc_model_none_xc_info(functional, lsd, reference, shortform, &
288 needs, max_deriv, print_warn)
290 CALL skala_info(functional, lsd, reference, shortform, needs, max_deriv)
300 CASE (
"BECKE_ROUSSEL")
306 CASE (
"LDA_HOLE_T_C_LR")
312 CASE (
"PBE_HOLE_T_C_LR")
353 SUBROUTINE xc_functional_eval(functional, lsd, rho_set, deriv_set, deriv_order)
356 LOGICAL,
INTENT(in) :: lsd
359 INTEGER,
INTENT(IN) :: deriv_order
361 CHARACTER(len=*),
PARAMETER :: abort_message_skala = &
362 "GauXC functionals are evaluated only through the QS GauXC path. "// &
363 "Higher XC derivatives for response and kernel properties are not implemented.", &
364 routinen =
'xc_functional_eval'
366 INTEGER :: handle, i_param
367 LOGICAL :: fun_active
368 REAL(kind=
dp) :: density_cut, gradient_cut, r_param
370 CALL timeset(routinen, handle)
373 drho_cutoff=gradient_cut)
376 IF (.NOT. fun_active)
THEN
377 CALL timestop(handle)
381 SELECT CASE (functional%section%name)
384 CALL b97_lsd_eval(rho_set, deriv_set, deriv_order, functional)
386 CALL b97_lda_eval(rho_set, deriv_set, deriv_order, functional)
388 CASE (
"BECKE88_LR_ADIABATIC")
394 CASE (
"LYP_ADIABATIC")
402 CALL xb88_lsd_eval(rho_set, deriv_set, deriv_order, functional)
404 CALL xb88_lda_eval(rho_set, deriv_set, deriv_order, functional)
420 CALL lyp_lsd_eval(rho_set, deriv_set, deriv_order, functional)
422 CALL lyp_lda_eval(rho_set, deriv_set, deriv_order, functional)
437 CALL optx_lsd_eval(rho_set, deriv_set, deriv_order, functional)
439 CALL optx_lda_eval(rho_set, deriv_set, deriv_order, functional)
449 CALL xgga_eval(i_param, lsd, rho_set, deriv_set, deriv_order)
459 CALL p86_lda_eval(rho_set, deriv_set, deriv_order, functional)
473 CALL pz_lsd_eval(i_param, rho_set, deriv_set, deriv_order, functional)
475 CALL pz_lda_eval(i_param, rho_set, deriv_set, deriv_order, functional)
491 CALL vwn_lsd_eval(rho_set, deriv_set, deriv_order, functional)
493 CALL vwn_lda_eval(rho_set, deriv_set, deriv_order, functional)
499 xa_parameter=r_param, xa_params=functional)
502 xa_parameter=r_param, xa_params=functional)
506 cpabort(
"TPSS functional not implemented with LSD. Use the LIBXC version instead.")
508 CALL tpss_lda_eval(rho_set, deriv_set, deriv_order, functional)
512 CALL pbe_lsd_eval(rho_set, deriv_set, deriv_order, functional)
514 CALL pbe_lda_eval(rho_set, deriv_set, deriv_order, functional)
517 IF (gauxc_model_none_selected(functional))
THEN
518 CALL gauxc_model_none_xc_eval(functional, lsd, rho_set, deriv_set, deriv_order)
520 cpabort(abort_message_skala)
528 CASE (
"BECKE_ROUSSEL")
534 CASE (
"LDA_HOLE_T_C_LR")
540 CASE (
"PBE_HOLE_T_C_LR")
563 CALL timestop(handle)
564 END SUBROUTINE xc_functional_eval
571 FUNCTION gauxc_model_none_selected(functional)
573 LOGICAL :: gauxc_model_none_selected
575 CHARACTER(LEN=default_string_length) :: model_key, model_name, xc_fun_name, &
580 model_key = adjustl(model_name)
581 xc_key = adjustl(xc_fun_name)
584 gauxc_model_none_selected = (trim(model_key) ==
"" .OR. trim(model_key) ==
"NONE" .OR. &
585 trim(model_key) == trim(xc_key))
586 END FUNCTION gauxc_model_none_selected
595 SUBROUTINE gauxc_model_none_libxc_names(functional, xc_fun_name, libxc_names, nfunc)
597 CHARACTER(LEN=*),
INTENT(OUT) :: xc_fun_name
598 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(OUT) :: libxc_names
599 INTEGER,
INTENT(OUT) :: nfunc
601 CHARACTER(LEN=default_string_length) :: xc_key
604 xc_key = adjustl(xc_fun_name)
607 SELECT CASE (trim(xc_key))
610 libxc_names(1) =
"LDA_X"
611 libxc_names(2) =
"LDA_C_PW"
614 libxc_names(1) =
"LDA_X"
615 libxc_names(2) =
"LDA_C_VWN"
618 libxc_names(1) =
"GGA_X_PBE"
619 libxc_names(2) =
"GGA_C_PBE"
622 libxc_names(1) =
"GGA_X_B88"
623 libxc_names(2) =
"GGA_C_LYP"
626 libxc_names(1) =
"GGA_X_B88"
627 libxc_names(2) =
"GGA_C_P86"
630 libxc_names(1) =
"MGGA_X_TPSS"
631 libxc_names(2) =
"MGGA_C_TPSS"
634 libxc_names(1) =
"MGGA_X_R2SCAN"
635 libxc_names(2) =
"MGGA_C_R2SCAN"
638 libxc_names(1) = trim(xc_key)
640 END SUBROUTINE gauxc_model_none_libxc_names
652 SUBROUTINE gauxc_model_none_xc_info(functional, lsd, reference, shortform, &
653 needs, max_deriv, print_warn)
655 LOGICAL,
INTENT(in) :: lsd
656 CHARACTER(LEN=*),
INTENT(OUT),
OPTIONAL :: reference, shortform
658 INTEGER,
INTENT(out),
OPTIONAL :: max_deriv
659 LOGICAL,
INTENT(IN),
OPTIONAL :: print_warn
661 CHARACTER(LEN=default_string_length) :: libxc_names(2), xc_fun_name
662 INTEGER :: ifunc, max_deriv_i, max_deriv_min, nfunc
664 CALL gauxc_model_none_libxc_names(functional, xc_fun_name, libxc_names, nfunc)
665 max_deriv_min = huge(max_deriv_min)
669 print_warn=print_warn, &
670 func_name_override=trim(libxc_names(ifunc)))
673 print_warn=print_warn, &
674 func_name_override=trim(libxc_names(ifunc)))
676 max_deriv_min = min(max_deriv_min, max_deriv_i)
678 IF (
PRESENT(max_deriv)) max_deriv = max_deriv_min
679 IF (
PRESENT(reference))
THEN
680 reference =
"Functional computed by GauXC (underlying: "//trim(xc_fun_name)//
")"
682 IF (
PRESENT(shortform)) shortform =
"GAUXC ("//trim(xc_fun_name)//
")"
683 END SUBROUTINE gauxc_model_none_xc_info
693 SUBROUTINE gauxc_model_none_xc_eval(functional, lsd, rho_set, deriv_set, deriv_order)
695 LOGICAL,
INTENT(in) :: lsd
698 INTEGER,
INTENT(IN) :: deriv_order
700 CHARACTER(LEN=default_string_length) :: libxc_names(2), xc_fun_name
701 INTEGER :: ifunc, nfunc
703 CALL gauxc_model_none_libxc_names(functional, xc_fun_name, libxc_names, nfunc)
707 func_name_override=trim(libxc_names(ifunc)))
710 func_name_override=trim(libxc_names(ifunc)))
713 END SUBROUTINE gauxc_model_none_xc_eval
736 LOGICAL,
INTENT(in) :: lsd
739 INTEGER,
INTENT(in) :: deriv_order
744 cpassert(
ASSOCIATED(functionals))
749 IF (.NOT.
ASSOCIATED(xc_fun))
EXIT
750 CALL xc_functional_eval(xc_fun, &
753 deriv_set=deriv_set, &
754 deriv_order=deriv_order)
771 LOGICAL,
INTENT(in) :: lsd
772 LOGICAL,
INTENT(in),
OPTIONAL :: calc_potential
776 LOGICAL :: my_calc_potential
779 my_calc_potential = .false.
780 IF (
PRESENT(calc_potential)) my_calc_potential = calc_potential
782 cpassert(
ASSOCIATED(functionals))
789 IF (.NOT.
ASSOCIATED(xc_fun))
EXIT
793 IF (my_calc_potential)
THEN
795 needs%rho_spin = .true.
796 needs%tau_spin = needs%tau_spin .OR. needs%tau
800 IF (needs%norm_drho .OR. needs%norm_drho_spin)
THEN
802 needs%drho_spin = .true.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
calculates the b97 correlation functional
subroutine, public b97_lda_info(b97_params, reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public b97_lda_eval(rho_set, deriv_set, grad_deriv, b97_params)
evaluates the b97 correlation functional for lda
subroutine, public b97_lsd_info(b97_params, reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public b97_lsd_eval(rho_set, deriv_set, grad_deriv, b97_params)
evaluates the b 97 xc functional for lsd
Calculate the CS1 Functional (Handy s improved LYP functional)
subroutine, public cs1_lda_eval(rho_set, deriv_set, order)
...
subroutine, public cs1_lsd_eval(rho_set, deriv_set, order)
...
subroutine, public cs1_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public cs1_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
represent a group ofunctional derivatives
type(xc_rho_cflags_type) function, public xc_functionals_get_needs(functionals, lsd, calc_potential)
...
subroutine, public xc_functional_get_info(functional, lsd, reference, shortform, needs, max_deriv, print_warn)
get the information about the given functional
subroutine, public xc_functionals_eval(functionals, lsd, rho_set, deriv_set, deriv_order)
...
Calculate several different exchange energy functionals with a GGA form.
subroutine, public xgga_eval(functional, lsd, rho_set, deriv_set, order)
evaluates different exchange gga
subroutine, public xgga_info(functional, lsd, reference, shortform, needs, max_deriv)
return various information on the xgga functionals
subroutine, public skala_info(functional, lsd, reference, shortform, needs, max_deriv)
Return information about the Skala functional.
calculate the Hamprecht, Cohen, Tozer, and Handy (HCTH) exchange functional
subroutine, public hcth_lda_info(iparset, reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public hcth_lda_eval(iparset, rho_set, deriv_set, grad_deriv)
evaluates the hcth functional for lda
Calculate the several different kinetic energy functionals with a GGA form.
subroutine, public ke_gga_lsd_eval(functional, rho_set, deriv_set, order)
...
subroutine, public ke_gga_info(functional, lsd, reference, shortform, needs, max_deriv)
...
subroutine, public ke_gga_lda_eval(functional, rho_set, deriv_set, order)
...
calculates a functional from libxc and its derivatives
subroutine, public libxc_spin_unpolarized_info(libxc_params, reference, shortform, needs, max_deriv, print_warn, func_name_override)
info about the functional from libxc
subroutine, public libxc_spin_unpolarized_eval(rho_set, deriv_set, grad_deriv, libxc_params, func_name_override)
evaluates the functional from libxc
subroutine, public libxc_spin_polarized_info(libxc_params, reference, shortform, needs, max_deriv, print_warn, func_name_override)
info about the functional from libxc
subroutine, public libxc_spin_polarized_eval(rho_set, deriv_set, grad_deriv, libxc_params, func_name_override)
evaluates the functional from libxc
Calculates the density_scaled Lyp functional when used in adiabatic hybrids. The energy is given as.
subroutine, public lyp_adiabatic_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public lyp_adiabatic_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public lyp_adiabatic_lda_eval(rho_set, deriv_set, grad_deriv, lyp_adiabatic_params)
...
subroutine, public lyp_adiabatic_lsd_eval(rho_set, deriv_set, grad_deriv, lyp_adiabatic_params)
...
calculates the lyp correlation functional
subroutine, public lyp_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public lyp_lsd_eval(rho_set, deriv_set, grad_deriv, lyp_params)
evaluates the becke 88 exchange functional for lsd
subroutine, public lyp_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public lyp_lda_eval(rho_set, deriv_set, grad_deriv, lyp_params)
evaluates the lyp correlation functional for lda
subroutine, public optx_lda_info(reference, shortform, needs, max_deriv)
info about the optx functional
subroutine, public optx_lsd_eval(rho_set, deriv_set, grad_deriv, optx_params)
evaluates the optx functional for lsd
subroutine, public optx_lda_eval(rho_set, deriv_set, grad_deriv, optx_params)
evaluates the optx functional for lda
subroutine, public optx_lsd_info(reference, shortform, needs, max_deriv)
info about the optx functional (LSD)
Calculate the LDA functional in the Pade approximation Literature: S. Goedecker, M....
subroutine, public pade_init(cutoff, debug)
...
subroutine, public pade_lsd_pw_eval(deriv_set, rho_set, order)
...
subroutine, public pade_info(reference, shortform, lsd, needs, max_deriv)
...
subroutine, public pade_lda_pw_eval(deriv_set, rho_set, order)
...
calculates the pbe correlation functional
subroutine, public pbe_lda_eval(rho_set, deriv_set, grad_deriv, pbe_params)
evaluates the pbe correlation functional for lda
subroutine, public pbe_lsd_info(pbe_params, reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public pbe_lsd_eval(rho_set, deriv_set, grad_deriv, pbe_params)
evaluates the becke 88 exchange functional for lsd
subroutine, public pbe_lda_info(pbe_params, reference, shortform, needs, max_deriv)
return various information on the functional
Calculate the Perdew Correlation from 1986.
subroutine, public p86_lda_info(reference, shortform, needs, max_deriv)
...
subroutine, public p86_lda_eval(rho_set, deriv_set, order, p86_params)
...
Calculate the Perdew-Wang correlation potential and energy density and ist derivatives with respect t...
subroutine, public perdew_wang_lda_eval(method, rho_set, deriv_set, order, scale)
Calculate the correlation energy and its derivatives wrt to rho (the electron density) up to 3rd orde...
subroutine, public perdew_wang_info(method, lsd, reference, shortform, needs, max_deriv, scale)
Return some info on the functionals.
subroutine, public perdew_wang_lsd_eval(method, rho_set, deriv_set, order, scale)
Calculate the correlation energy and its derivatives wrt to rho (the electron density) up to 3rd orde...
Calculate the Perdew-Zunger correlation potential and energy density and ist derivatives with respect...
subroutine, public pz_lda_eval(method, rho_set, deriv_set, order, pz_params)
Calculate the correlation energy and its derivatives wrt to rho (the electron density) up to 3rd orde...
subroutine, public pz_lsd_eval(method, rho_set, deriv_set, order, pz_params)
Calculate the correlation energy and its derivatives wrt to rho (the electron density) up to 3rd orde...
subroutine, public pz_info(method, lsd, reference, shortform, needs, max_deriv)
Return some info on the functionals.
elemental subroutine, public xc_rho_cflags_setall(cflags, value)
sets all the flags to the given value
subroutine, public xc_rho_set_get(rho_set, can_return_null, rho, drho, norm_drho, rhoa, rhob, norm_drhoa, norm_drhob, rho_1_3, rhoa_1_3, rhob_1_3, laplace_rho, laplace_rhoa, laplace_rhob, drhoa, drhob, rho_cutoff, drho_cutoff, tau_cutoff, tau, tau_a, tau_b, local_bounds)
returns the various attributes of rho_set
Calculate the Thomas-Fermi kinetic energy functional plus the von Weizsaecker term.
subroutine, public tfw_lda_info(reference, shortform, needs, max_deriv)
...
subroutine, public tfw_lda_eval(rho_set, deriv_set, order)
...
subroutine, public tfw_lsd_info(reference, shortform, needs, max_deriv)
...
subroutine, public tfw_lsd_eval(rho_set, deriv_set, order)
...
Calculate the Thomas-Fermi kinetic energy functional.
subroutine, public thomas_fermi_lsd_eval(rho_set, deriv_set, order)
...
subroutine, public thomas_fermi_lda_eval(rho_set, deriv_set, order)
...
subroutine, public thomas_fermi_info(lsd, reference, shortform, needs, max_deriv)
...
Calculates the tpss functional.
subroutine, public tpss_lda_eval(rho_set, deriv_set, grad_deriv, tpss_params)
evaluates the tpss functional in the spin unpolarized (lda) case
subroutine, public tpss_lda_info(tpss_params, reference, shortform, needs, max_deriv)
return various information on the functional
Calculate the LDA functional according to Vosk, Wilk and Nusair Literature: S. H. Vosko,...
subroutine, public vwn_lda_info(reference, shortform, needs, max_deriv)
...
subroutine, public vwn_lda_eval(rho_set, deriv_set, order, vwn_params)
...
subroutine, public vwn_lsd_eval(rho_set, deriv_set, order, vwn_params)
...
subroutine, public vwn_lsd_info(reference, shortform, needs, max_deriv)
...
Calculate the local exchange functional.
subroutine, public xalpha_lda_eval(rho_set, deriv_set, order, xa_params, xa_parameter)
...
subroutine, public xalpha_info(lsd, reference, shortform, needs, max_deriv, xa_parameter, scaling)
...
subroutine, public xalpha_lsd_eval(rho_set, deriv_set, order, xa_params, xa_parameter)
...
calculates the longrange part of Becke 88 exchange functional
subroutine, public xb88_lr_lda_eval(rho_set, deriv_set, grad_deriv, xb88_lr_params)
evaluates the becke 88 longrange exchange functional for lda
subroutine, public xb88_lr_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xb88_lr_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xb88_lr_lsd_eval(rho_set, deriv_set, grad_deriv, xb88_lr_params)
evaluates the becke 88 longrange exchange functional for lsd
Calculates the density_scaled BECKE88 long-range functional when used in adiabatic hybrids....
subroutine, public xb88_lr_adiabatic_lda_eval(rho_set, deriv_set, grad_deriv, xb88_lr_ad_params)
evaluates the becke 88 longrange exchange functional for lda
subroutine, public xb88_lr_adiabatic_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xb88_lr_adiabatic_lsd_eval(rho_set, deriv_set, grad_deriv, xb88_lr_ad_params)
evaluates the becke 88 longrange exchange functional for lsd
subroutine, public xb88_lr_adiabatic_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
calculates the Becke 88 exchange functional
subroutine, public xb88_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xb88_lda_eval(rho_set, deriv_set, grad_deriv, xb88_params)
evaluates the becke 88 exchange functional for lda
subroutine, public xb88_lsd_eval(rho_set, deriv_set, grad_deriv, xb88_params)
evaluates the becke 88 exchange functional for lsd
subroutine, public xb88_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
Calculates the exchange energy based on the Becke-Roussel exchange hole. Takes advantage of an analyt...
subroutine, public xbecke_roussel_lsd_eval(rho_set, deriv_set, grad_deriv, br_params)
evaluates the Becke Roussel exchange functional for lda
subroutine, public xbecke_roussel_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xbecke_roussel_lda_eval(rho_set, deriv_set, grad_deriv, br_params)
evaluates the Becke Roussel exchange functional for lda
subroutine, public xbecke_roussel_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
calculates the Exchange contribution in the BEEF-vdW functional
subroutine, public xbeef_lda_eval(rho_set, deriv_set, grad_deriv, xbeef_params)
evaluates the beef exchange functional for lda
subroutine, public xbeef_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xbeef_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xbeef_lsd_eval(rho_set, deriv_set, grad_deriv, xbeef_params)
evaluates the beef 88 exchange functional for lsd
This functional is a combination of three different exchange hole models. The ingredients are:
subroutine, public xbr_pbe_lda_hole_tc_lr_lsd_eval(rho_set, deriv_set, grad_deriv, params)
Intermediate routine that gets grids, derivatives and some params.
subroutine, public xbr_pbe_lda_hole_tc_lr_lda_eval(rho_set, deriv_set, grad_deriv, params)
Intermediate routine that gets grids, derivatives and some params.
subroutine, public xbr_pbe_lda_hole_tc_lr_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xbr_pbe_lda_hole_tc_lr_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
Calculates the lda exchange hole in a truncated coulomb potential. Can be used as longrange correctio...
subroutine, public xlda_hole_t_c_lr_lda_eval(rho_set, deriv_set, order, params)
evaluates the truncated lda exchange hole
subroutine, public xlda_hole_t_c_lr_lda_info(reference, shortform, needs, max_deriv)
returns various information on the functional
subroutine, public xlda_hole_t_c_lr_lsd_eval(rho_set, deriv_set, order, params)
evaluates the truncated lsd exchange hole. Calls the lda routine and applies spin scaling relation
subroutine, public xlda_hole_t_c_lr_lsd_info(reference, shortform, needs, max_deriv)
returns various information on the functional
Calculates the exchange energy for the pbe hole model in a truncated coulomb potential,...
subroutine, public xpbe_hole_t_c_lr_lda_info(reference, shortform, needs, max_deriv)
returns various information on the functional
subroutine, public xpbe_hole_t_c_lr_lda_eval(rho_set, deriv_set, order, params)
evaluates the pbe-hole exchange in a truncated coulomb potential
subroutine, public xpbe_hole_t_c_lr_lsd_eval(rho_set, deriv_set, order, params)
evaluates the pbe-hole exchange in a truncated coulomb potential
subroutine, public xpbe_hole_t_c_lr_lsd_info(reference, shortform, needs, max_deriv)
returns various information on the functional
Calculates short range exchange part for wPBE functional and averaged PBE exchange-hole functional (o...
subroutine, public xwpbe_lda_eval(rho_set, deriv_set, order, xwpbe_params)
evaluates the screened hole averaged PBE exchange functional for lda
subroutine, public xwpbe_lsd_eval(rho_set, deriv_set, order, xwpbe_params)
evaluates the screened hole averaged PBE exchange functional for lsd
subroutine, public xwpbe_lda_info(reference, shortform, needs, max_deriv)
return various information on the functional
subroutine, public xwpbe_lsd_info(reference, shortform, needs, max_deriv)
return various information on the functional
A derivative set contains the different derivatives of a xc-functional in form of a linked list.
contains a flag for each component of xc_rho_set, so that you can use it to tell which components you...
represent a density, with all the representation and data needed to perform a functional evaluation