Octopus
simplex_oct_m Module Reference

Data Types

interface  simplex_t
 

Functions/Subroutines

type(simplex_t) function, pointer, public simplex_init (dim, naxis, nshifts, shift, kpoints, equiv, opt)
 Constructor for linear simplex methods. More...
 
subroutine, public simplex_end (this)
 Destructor for linear simplex methods. More...
 
subroutine, public simplex_weights (rdim, esimplex, eF, weights, dos)
 Get the weights and DOS contribution of a single simplex. More...
 
subroutine, public simplex_dos (rdim, esimplex, eF, dos)
 Get only the DOS contribution of a single simplex. More...
 
subroutine, public simplex_weights_1d (esegment, eF, weights, dos)
 Get the weights and DOS contribution of a single segment. More...
 
subroutine, public simplex_dos_1d (esegment, eF, dos)
 Get only the DOS contribution of a single segment. More...
 
subroutine, public simplex_weights_2d (etriangle, eF, weights, dos)
 Get the weights and DOS contribution of a single tetrahedron. More...
 
subroutine, public simplex_dos_2d (etriangle, eF, dos)
 Get only the DOS contribution of a single triangle. More...
 
subroutine, public simplex_weights_3d (etetra, eF, weights, dos)
 Get the weights and DOS contribution of a single tetrahedron. More...
 
subroutine, public simplex_dos_3d (etetra, eF, dos)
 Get only the DOS contribution of a single tetrahedron. More...
 

Function/Subroutine Documentation

◆ simplex_init()

type(simplex_t) function, pointer, public simplex_oct_m::simplex_init ( integer, intent(in)  dim,
integer, dimension(1:dim), intent(in)  naxis,
integer, intent(in)  nshifts,
real(real64), dimension(:,:), intent(in)  shift,
real(real64), dimension(:,:), intent(in)  kpoints,
integer, dimension(:), intent(in)  equiv,
logical, intent(in)  opt 
)

Constructor for linear simplex methods.

At the moment this performs a dumb tetrahedrization of the BZ by converting the coordinates of k-points back into integer triples. This only works for a two- and three-dimensional BZ and if there is only a single shift. Both of these conditions are ASSERTed.

Parameters
[in]dimDimension of the system
[in]naxisNumber of k-points along each dimension
[in]nshiftNumber of shifts
[in]shiftShifts along each dimension
[in]kpointsGrid of k-points in the unreduced BZ
[in]equivMapping of k-point indices in the full BZ to the reduced BZ
[in]optWhether to use the improved tetrahedron method
Returns
New linear simplex method instance

Definition at line 176 of file simplex.F90.

◆ simplex_end()

subroutine, public simplex_oct_m::simplex_end ( type(simplex_t), intent(inout)  this)

Destructor for linear simplex methods.

Parameters
[in,out]thisLinear simplex method instance

Definition at line 403 of file simplex.F90.

◆ simplex_weights()

subroutine, public simplex_oct_m::simplex_weights ( integer, intent(in)  rdim,
real(real64), dimension(:), intent(in)  esimplex,
real(real64), intent(in)  eF,
real(real64), dimension(:), intent(out)  weights,
real(real64), intent(out)  dos 
)

Get the weights and DOS contribution of a single simplex.

Parameters
[in]rdimReduced dimension of the problem (non-zero dimensions in k-space)
[in]esimplexEigenenergies on the corner points of a simplex
[in]eFReference energy
[out]weightsIntegration weights for each corner of the tetrahedron (including Bloechl correction)
[out]dosContribution to the DOS by the tetrahedron

Definition at line 417 of file simplex.F90.

◆ simplex_dos()

subroutine, public simplex_oct_m::simplex_dos ( integer, intent(in)  rdim,
real(real64), dimension(:), intent(in)  esimplex,
real(real64), intent(in)  eF,
real(real64), intent(out)  dos 
)

Get only the DOS contribution of a single simplex.

Parameters
[in]rdimReduced dimension of the problem (non-zero dimensions in k-space)
[in]esimplexEigenenergies on the corner points of a simplex
[in]eFReference energy
[out]dosContribution to the DOS by the simplex

Definition at line 444 of file simplex.F90.

◆ simplex_weights_1d()

subroutine, public simplex_oct_m::simplex_weights_1d ( real(real64), dimension(:), intent(in)  esegment,
real(real64), intent(in)  eF,
real(real64), dimension(:), intent(out)  weights,
real(real64), intent(out)  dos 
)

Get the weights and DOS contribution of a single segment.

Parameters
[in]esegmentEigenenergies on the corner points of a segment
[in]eFReference energy
[out]weightsIntegration weights for each corner of the tetrahedron (including Bloechl correction)
[out]dosContribution to the DOS by the tetrahedron

Definition at line 470 of file simplex.F90.

◆ simplex_dos_1d()

subroutine, public simplex_oct_m::simplex_dos_1d ( real(real64), dimension(:), intent(in)  esegment,
real(real64), intent(in)  eF,
real(real64), intent(out)  dos 
)

Get only the DOS contribution of a single segment.

Parameters
[in]esegmentEigenenergies on the corner points of a segment
[in]eFReference energy
[out]dosContribution to the DOS by the segment

Definition at line 546 of file simplex.F90.

◆ simplex_weights_2d()

subroutine, public simplex_oct_m::simplex_weights_2d ( real(real64), dimension(:), intent(in)  etriangle,
real(real64), intent(in)  eF,
real(real64), dimension(:), intent(out)  weights,
real(real64), intent(out)  dos 
)

Get the weights and DOS contribution of a single tetrahedron.

The expressions for the Bl\U000000f6chl-type correction is given in Eq. 4 of J.-H. Lee, et al., Phys. Rev. B 66, 233102 (2002).

Parameters
[in]etriangleEigenenergies on the corner points of a triangle
[in]eFReference energy
[out]weightsIntegration weights for each corner of the tetrahedron (including Bloechl correction)
[out]dosContribution to the DOS by the tetrahedron

Definition at line 602 of file simplex.F90.

◆ simplex_dos_2d()

subroutine, public simplex_oct_m::simplex_dos_2d ( real(real64), dimension(:), intent(in)  etriangle,
real(real64), intent(in)  eF,
real(real64), intent(out)  dos 
)

Get only the DOS contribution of a single triangle.

Parameters
[in]etriangleEigenenergies on the corner points of a triangle
[in]eFReference energy
[out]dosContribution to the DOS by the triangle

Definition at line 698 of file simplex.F90.

◆ simplex_weights_3d()

subroutine, public simplex_oct_m::simplex_weights_3d ( real(real64), dimension(:), intent(in)  etetra,
real(real64), intent(in)  eF,
real(real64), dimension(:), intent(out)  weights,
real(real64), intent(out)  dos 
)

Get the weights and DOS contribution of a single tetrahedron.

The expressions are given in Appendix C of P. E. Bloechl, et al., Phys. Rev. B 49, 16223 (1994).

The expressions for the weights of the improved tetrahedron method are given in Eq. (18)-(21) of M. Kawamura, et al., Phys. Rev. B 89, 094515 (2014).

Parameters
[in]etetraEigenenergies on the corner points of a tetrahedron
[in]eFReference energy
[out]weightsIntegration weights for each corner of the tetrahedron (including Bloechl correction)
[out]dosContribution to the DOS by the tetrahedron

Definition at line 768 of file simplex.F90.

◆ simplex_dos_3d()

subroutine, public simplex_oct_m::simplex_dos_3d ( real(real64), dimension(:), intent(in)  etetra,
real(real64), intent(in)  eF,
real(real64), intent(out)  dos 
)

Get only the DOS contribution of a single tetrahedron.

The expressions are given in Appendix C of P. E. Bloechl, et al., Phys. Rev. B 49, 16223 (1994).

The expressions for the weights of the improved tetrahedron method are given in Eq. (18)-(21) of M. Kawamura, et al., Phys. Rev. B 89, 094515 (2014).

Parameters
[in]etetraEigenenergies on the corner points of a tetrahedron
[in]eFReference energy
[out]dosContribution to the DOS by the tetrahedron

Definition at line 896 of file simplex.F90.