![]() |
(git:55939f2)
|
Add the DFT+U contribution to the Hamiltonian matrix. More...
Functions/Subroutines | |
| subroutine, public | 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 | lowdin_kp_init (qs_env) |
| Select the AO columns used by the existing orbital-diagonal Lowdin functional. | |
| subroutine, public | lowdin_kp_prepare (kp, orbitals, use_real_wfn, smat) |
| Prepare selected Lowdin projectors and their reusable product workspace. | |
| subroutine, public | lowdin_kp_initial_density (qs_env, fmwork) |
| Complete the initial density's Lowdin coordinates, including atomic and density restarts. | |
| subroutine, public | lowdin_kp_population (kpoints, delta, alpha) |
| Cache the current occupations, optionally measure their residual and accept or mix them. | |
| subroutine, public | 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 | 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 | lowdin_kp_kernel (qs_env, density, response) |
| Project a Bloch density response and return its orbital potential response, including +J. | |
| subroutine, public | 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. | |
Add the DFT+U contribution to the Hamiltonian matrix.
The implemented methods refers to:
S. L. Dudarev, D. Nguyen Manh, and A. P. Sutton, Philos. Mag. B 75, 613 (1997)
S. L. Dudarev et al., Phys. Rev. B 57, 1505 (1998)
| subroutine, public dft_plus_u::plus_u | ( | type(qs_environment_type), pointer | qs_env, |
| type(dbcsr_p_type), dimension(:, :), optional, pointer | matrix_h, | ||
| type(dbcsr_p_type), dimension(:, :), optional, pointer | matrix_w ) |
Add the DFT+U contribution to the Hamiltonian matrix.
Wrapper routine for all "+U" methods.
| [in] | qs_env | Quickstep environment |
| [in,out] | matrix_h | Hamiltonian matrices for each spin |
| [in,out] | matrix_w | Energy weighted density matrices for each spin |
Definition at line 133 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_init | ( | type(qs_environment_type), pointer | qs_env | ) |
Select the AO columns used by the existing orbital-diagonal Lowdin functional.
| qs_env | Quickstep environment, after S(k)**(1/2) has been prepared. |
Definition at line 934 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_prepare | ( | type(kpoint_env_type), pointer | kp, |
| integer, dimension(:), intent(in) | orbitals, | ||
| logical, intent(in) | use_real_wfn, | ||
| type(cp_cfm_type), intent(in), optional | smat ) |
Prepare selected Lowdin projectors and their reusable product workspace.
| kp | One k point; SCF already provides its overlap square root. |
| orbitals | Selected global AO indices. |
| use_real_wfn | Whether to use the real overlap square root. |
| smat | Optional complex overlap for post-SCF reconstruction; remains unchanged. |
Definition at line 1014 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_initial_density | ( | type(qs_environment_type), pointer | qs_env, |
| type(cp_fm_type), intent(in) | fmwork ) |
Complete the initial density's Lowdin coordinates, including atomic and density restarts.
| qs_env | Quickstep environment with an initialized real-space density. |
| fmwork | Global AO matrix workspace from the SCF environment being initialized. |
Definition at line 1073 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_population | ( | type(kpoint_type), optional, pointer | kpoints, |
| real(kind=dp), intent(inout), optional | delta, | ||
| real(kind=dp), intent(in), optional | alpha ) |
Cache the current occupations, optionally measure their residual and accept or mix them.
| kpoints | Optional k-point state; absent or inactive Lowdin state is a no-op. |
| delta | Include the unmixed occupation residual in this convergence measure. |
| alpha | Weight of the current occupations in the accepted state; absent leaves it unchanged. |
Definition at line 1133 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_apply | ( | type(kpoint_env_type), pointer | kp, |
| real(kind=dp), dimension(:), intent(in) | v, | ||
| type(cp_fm_type), intent(inout), optional | rmat, | ||
| type(cp_cfm_type), intent(inout), optional | cmat ) |
Add B diag(v) B**H before any solver, DIIS residual, or history storage uses H(k).
| kp | One k point, with its private workspace. |
| v | Selected orbital potentials for the same raw/mixed state as the supplied Hamiltonian. |
| rmat | Real Hamiltonian. |
| cmat | Complex Hamiltonian (exclusive with rmat). |
Definition at line 1266 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_apply_mo | ( | type(kpoint_env_type), pointer | kp, |
| real(kind=dp), dimension(:), intent(in) | v, | ||
| type(cp_cfm_type), intent(in) | coeff, | ||
| type(cp_cfm_type), intent(inout) | hc ) |
Add B diag(v) B**H C to the complex orbital gradient, without forming an AO matrix.
| kp | K point owning the selected overlap columns and a private GEMM context. |
| v | Orbital potential, without k weights or occupations (applied by the caller). |
| coeff | Active complex orbitals. |
| hc | H*C, updated in place. |
Definition at line 1310 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_kernel | ( | type(qs_environment_type), pointer | qs_env, |
| type(cp_fm_type), dimension(:, :, :), intent(in) | density, | ||
| real(kind=dp), dimension(:, :), intent(out), allocatable | response ) |
Project a Bloch density response and return its orbital potential response, including +J.
| qs_env | Quickstep environment with selected Lowdin projectors and current U/J. |
| density | Unweighted split-complex Bloch density response (local k point, component, spin). |
| response | Globally summed orbital potential response; ground-state caches are preserved. |
Definition at line 1339 of file dft_plus_u.F.
| subroutine, public dft_plus_u::lowdin_kp_forces | ( | type(kpoint_type), pointer | 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.
| kpoints | Final Bloch densities, orbital potentials and cached overlap spectra. |
Definition at line 1379 of file dft_plus_u.F.