(git:55939f2)
Loading...
Searching...
No Matches
dft_plus_u Module Reference

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.

Detailed Description

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)

Author
Matthias Krack (MK)
Date
14.01.2008
Version
1.0

Function/Subroutine Documentation

◆ plus_u()

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.

Parameters
[in]qs_envQuickstep environment
[in,out]matrix_hHamiltonian matrices for each spin
[in,out]matrix_wEnergy weighted density matrices for each spin
Date
14.01.2008
Author
Matthias Krack (MK)
Version
1.0

Definition at line 133 of file dft_plus_u.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lowdin_kp_init()

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.

Parameters
qs_envQuickstep environment, after S(k)**(1/2) has been prepared.

Definition at line 934 of file dft_plus_u.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lowdin_kp_prepare()

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.

Parameters
kpOne k point; SCF already provides its overlap square root.
orbitalsSelected global AO indices.
use_real_wfnWhether to use the real overlap square root.
smatOptional complex overlap for post-SCF reconstruction; remains unchanged.

Definition at line 1014 of file dft_plus_u.F.

Here is the caller graph for this function:

◆ lowdin_kp_initial_density()

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.

Parameters
qs_envQuickstep environment with an initialized real-space density.
fmworkGlobal AO matrix workspace from the SCF environment being initialized.

Definition at line 1073 of file dft_plus_u.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lowdin_kp_population()

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.

Parameters
kpointsOptional k-point state; absent or inactive Lowdin state is a no-op.
deltaInclude the unmixed occupation residual in this convergence measure.
alphaWeight of the current occupations in the accepted state; absent leaves it unchanged.

Definition at line 1133 of file dft_plus_u.F.

Here is the caller graph for this function:

◆ lowdin_kp_apply()

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).

Parameters
kpOne k point, with its private workspace.
vSelected orbital potentials for the same raw/mixed state as the supplied Hamiltonian.
rmatReal Hamiltonian.
cmatComplex Hamiltonian (exclusive with rmat).

Definition at line 1266 of file dft_plus_u.F.

Here is the caller graph for this function:

◆ lowdin_kp_apply_mo()

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.

Parameters
kpK point owning the selected overlap columns and a private GEMM context.
vOrbital potential, without k weights or occupations (applied by the caller).
coeffActive complex orbitals.
hcH*C, updated in place.

Definition at line 1310 of file dft_plus_u.F.

Here is the caller graph for this function:

◆ lowdin_kp_kernel()

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.

Parameters
qs_envQuickstep environment with selected Lowdin projectors and current U/J.
densityUnweighted split-complex Bloch density response (local k point, component, spin).
responseGlobally summed orbital potential response; ground-state caches are preserved.

Definition at line 1339 of file dft_plus_u.F.

Here is the caller graph for this function:

◆ lowdin_kp_forces()

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.

Parameters
kpointsFinal Bloch densities, orbital potentials and cached overlap spectra.

Definition at line 1379 of file dft_plus_u.F.

Here is the caller graph for this function: