Octopus
singularity_oct_m Module Reference

Data Types

type  singularity_t
 Treatment of the singularity in solids. More...
 

Functions/Subroutines

subroutine, public singularity_init (this, namespace, space, st, kpoints)
 
subroutine, public singularity_end (this)
 
real(real64) function singularity_kernel_value (this, ik)
 Value of the exchange kernel at \(q+G = 0\) for the k-point ik. More...
 
subroutine singularity_correction (this, namespace, space, st, kpoints)
 This routine implements the general treatment of the singularity for periodic solids, as described in Carrier et al. PRB 75, 205126 (2007) More...
 

Variables

integer, parameter, public singularity_none = 0
 
integer, parameter, public singularity_general = 1
 
integer, parameter, public singularity_gygi = 2
 
integer, parameter, public singularity_sphere = 3
 

Function/Subroutine Documentation

◆ singularity_init()

subroutine, public singularity_oct_m::singularity_init ( type(singularity_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(states_elec_t), intent(in)  st,
type(kpoints_t), intent(in)  kpoints 
)

Definition at line 166 of file singularity.F90.

◆ singularity_end()

subroutine, public singularity_oct_m::singularity_end ( type(singularity_t), intent(inout)  this)

Definition at line 235 of file singularity.F90.

◆ singularity_kernel_value()

real(real64) function singularity_oct_m::singularity_kernel_value ( class(singularity_t), intent(in)  this,
integer, intent(in)  ik 
)
private

Value of the exchange kernel at \(q+G = 0\) for the k-point ik.

In the sum over the k-points of the exchange, the \(q = 0\) term enters with the weight \(1/N\) of a point of the full grid, and the integrable singularity requires \((1/N) v_0 = -\Omega (F_k - F)\). \(F_k\) and \(F\) are computed by singularity_correction (both carry the factor 4 pi/Omega), hence, in the units of the kernel, \(4 pi/|q+G|^2\):

\[ v_0 = -\Omega N (F_k - F) \]

The 1D convention is kept.

Definition at line 257 of file singularity.F90.

◆ singularity_correction()

subroutine singularity_oct_m::singularity_correction ( type(singularity_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(states_elec_t), intent(in)  st,
type(kpoints_t), intent(in)  kpoints 
)
private

This routine implements the general treatment of the singularity for periodic solids, as described in Carrier et al. PRB 75, 205126 (2007)

Definition at line 282 of file singularity.F90.

Variable Documentation

◆ singularity_none

integer, parameter, public singularity_oct_m::singularity_none = 0

Definition at line 144 of file singularity.F90.

◆ singularity_general

integer, parameter, public singularity_oct_m::singularity_general = 1

Definition at line 144 of file singularity.F90.

◆ singularity_gygi

integer, parameter, public singularity_oct_m::singularity_gygi = 2

Definition at line 144 of file singularity.F90.

◆ singularity_sphere

integer, parameter, public singularity_oct_m::singularity_sphere = 3

Definition at line 144 of file singularity.F90.