(git:37370f3)
Loading...
Searching...
No Matches
dft_plus_u.F File Reference

Go to the source code of this file.

Modules

module  dft_plus_u
 Add the DFT+U contribution to the Hamiltonian matrix.

Functions/Subroutines

subroutine, public dft_plus_u::plus_u (qs_env, matrix_h, matrix_w)
 Add the DFT+U contribution to the Hamiltonian matrix.
Wrapper routine for all "+U" methods.
subroutine, public dft_plus_u::lowdin_kp_init (qs_env)
 Select the AO columns used by the existing orbital-diagonal Lowdin functional.
subroutine, public dft_plus_u::lowdin_kp_prepare (kp, orbitals, use_real_wfn, smat)
 Prepare selected Lowdin projectors and their reusable product workspace.
subroutine, public dft_plus_u::lowdin_kp_initial_density (qs_env, fmwork)
 Complete the initial density's Lowdin coordinates, including atomic and density restarts.
subroutine, public dft_plus_u::lowdin_kp_population (kpoints, delta, alpha)
 Cache the current occupations, optionally measure their residual and accept or mix them.
subroutine, public dft_plus_u::lowdin_kp_apply (kp, v, rmat, cmat)
 Add B diag(v) B**H before any solver, DIIS residual, or history storage uses H(k).
subroutine, public dft_plus_u::lowdin_kp_apply_mo (kp, v, coeff, hc)
 Add B diag(v) B**H C to the complex orbital gradient, without forming an AO matrix.
subroutine, public dft_plus_u::lowdin_kp_kernel (qs_env, density, response)
 Project a Bloch density response and return its orbital potential response, including +J.
subroutine, public dft_plus_u::lowdin_kp_forces (kpoints)
 Add -dE_U/dS(k) to W(k), before its ordinary inverse Fourier transform. If A=S**(1/2), A*dA+dA*A=dS. In the overlap eigenbasis its adjoint is G_ij=(U**H*(P*A*V+V*A*P)*U)_ij/(sqrt(s_i)+sqrt(s_j)). W <- W-U*G*U**H; the existing overlap derivatives give forces and virial. k-point weights belong to the Fourier transform and are not applied here.