Interface
API documentation for DftFunctionals.
See in particular the key functions potential_terms and kernel_terms.
More details on the public interface are needed.
DftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.DftFunctionalDftFunctionals.change_parametersDftFunctionals.familyDftFunctionals.has_energyDftFunctionals.identifierDftFunctionals.kernel_termsDftFunctionals.kindDftFunctionals.needs_ΔρDftFunctionals.needs_σDftFunctionals.needs_τDftFunctionals.parametersDftFunctionals.potential_termsDftFunctionals.spinindex_σ
DftFunctionals.DftFunctional — MethodDftFunctional(identifier::Symbol, args...; kwargs...)A generic DFT functional implementation. Valid identifiers are the ones supported by Libxc as symbols, e.g. :lda_x, hyb_gga_xc_b3lyp. Only a subset of functionals is currently available. Additional arguments and kwargs are passed to the functional (e.g. to modify functional parameters).
DftFunctionals.DftFunctional — MethodAPBE correlation. Constantin, Fabiano, Laricchia 2011 (DOI 10.1103/physrevlett.106.186406)
DftFunctionals.DftFunctional — MethodPBEmol correlation. del Campo, Gazqez, Trickey and others 2012 (DOI 10.1063/1.3691197)
DftFunctionals.DftFunctional — MethodPBESol correlation. Perdew, Ruzsinszky, Csonka and others 2008 (DOI 10.1103/physrevlett.100.136406)
DftFunctionals.DftFunctional — MethodPBEfe correlation. Sarmiento-Perez, Silvana, Marques 2015 (DOI 10.1021/acs.jctc.5b00529)
DftFunctionals.DftFunctional — MethodStandard PBE correlation. Perdew, Burke, Ernzerhof 1996 (DOI: 10.1103/PhysRevLett.77.3865)
DftFunctionals.DftFunctional — MethodXPBE correlation. Xu, Goddard 2004 (DOI 10.1063/1.1771632)
DftFunctionals.DftFunctional — MethodAPBE exchange. Constantin, Fabiano, Laricchia 2011 (DOI 10.1103/physrevlett.106.186406)
DftFunctionals.DftFunctional — MethodPBEmol exchange. del Campo, Gazqez, Trickey and others 2012 (DOI 10.1063/1.3691197)
DftFunctionals.DftFunctional — MethodRevised PBE exchange. Zhang, Yang 1998 (DOI 10.1103/physrevlett.80.890)
DftFunctionals.DftFunctional — MethodPBESol exchange. Perdew, Ruzsinszky, Csonka and others 2008 (DOI 10.1103/physrevlett.100.136406)
DftFunctionals.DftFunctional — MethodPBEfe exchange. Sarmiento-Perez, Silvana, Marques 2015 (DOI 10.1021/acs.jctc.5b00529)
DftFunctionals.DftFunctional — MethodStandard PBE exchange. Perdew, Burke, Ernzerhof 1996 (DOI: 10.1103/PhysRevLett.77.3865)
DftFunctionals.DftFunctional — MethodXPBE exchange. Xu, Goddard 2004 (DOI 10.1063/1.1771632)
DftFunctionals.DftFunctional — MethodPerdew, Wang correlation from 1992 (10.1103/PhysRevB.45.13244)
DftFunctionals.DftFunctional — MethodVWN5 LDA correlation according to Vosko, Wilk, and Nusair, (DOI 10.1139/p80-159).
DftFunctionals.DftFunctional — MethodLDA Slater exchange (DOI: 10.1017/S0305004100016108 and 10.1007/BF01340281)
DftFunctionals.change_parameters — FunctionReturn a new version of the passed functional with its parameters adjusted. This may not be a copy in case no changes are done to its internal parameters. Generally the identifier of the functional will be changed to reflect the change in parameter values unless keep_identifier is true. To get the tuple of adjustable parameters and their current values check out parameters. It is not checked that the correct parameters are passed.
change_parameters(f::Functional, params_new; keep_identifier=false)::Functional
DftFunctionals.family — MethodReturn the family of a functional. Results are :lda, :gga, :mgga and :mggal (Meta-GGA requiring Laplacian of ρ)
DftFunctionals.has_energy — MethodDoes this functional support energy evaluations? Some don't, in which case energy terms will not be returned by potential_terms and kernel_terms, i.e. e will be false (a strong zero).
DftFunctionals.identifier — FunctionReturn the identifier corresponding to a functional
DftFunctionals.kernel_terms — Functionkernel_terms(f::Functional, ρ, [σ, τ, Δρ])Evaluate energy, potential and kernel terms at a real-space grid of densities, density derivatives etc. Not required derivatives for the functional type will be ignored. Returns a named tuple with the same keys as potential_terms and additionally second-derivative cross terms such as Vρσ ($\frac{∂^2e}{∂ρ∂σ}$).
DftFunctionals.kind — MethodReturn the functional kind: :x (exchange), :c (correlation), :k (kinetic) or :xc (exchange and correlation combined)
DftFunctionals.needs_Δρ — MethodTrue if the functional needs $Δ ρ$.
DftFunctionals.needs_σ — MethodTrue if the functional needs $σ = 𝛁ρ ⋅ 𝛁ρ$.
DftFunctionals.needs_τ — MethodTrue if the functional needs $τ$ (kinetic energy density).
DftFunctionals.parameters — MethodReturn adjustable parameters of the functional and their values.
DftFunctionals.potential_terms — Functionpotential_terms(f::Functional, ρ, [σ, τ, Δρ])Evaluate energy and potential terms at a real-space grid of densities, density derivatives etc. Not required derivatives for the functional type will be ignored. Returns a named tuple with keys e (Energy per unit volume), Vρ ($\frac{∂e}{∂ρ}$), Vσ ($\frac{∂e}{∂σ}$), Vτ ($\frac{∂e}{∂τ}$), Vl ($\frac{∂e}{∂(Δρ)}$).
DftFunctionals.spinindex_σ — MethodIn the functional interface we explicitly use the symmetry $σ_{αβ} = σ_{βα}$ for the contracted density gradient $σ_ij = ∇ρ_i ⋅ ∇ρ_j$ where $i,j ∈ \{α, β\}$. Instead of treating $σ$ to have the spin components $σ_{αα}$, $σ_{αβ}$, $σ_{βα}$ and $σ_{ββ}$, we consider it to have three pseudo-spin components $σ_{αα}$, $σ_x$ and $σ_{ββ}$, where $σ_x = (σ_{αβ} + σ_{βα})/2 = σ_{αβ}$. Input arrays like σ or output arrays like Vσ or Vρσ will therefore feature a spin axis of length 3 refering to the $σ_{αα}$, $σ_{αβ}$ and $σ_{ββ}$ components / derivatives respectively. E.g. σ is of shape (3, n_p) (where n_p is the number of points where evaluation takes place.
This function maps the "unfolded" spin tuple (i, j) in $σ_ij$ to the corresponding place in the length-3 spin axis of σ.