JDFTx  1.7.0
TetrahedralDOS Class Reference

Evaluate DOS using the tetrahedron method. More...

#include <TetrahedralDOS.h>

Public Types

typedef std::pair< double, std::vector< double > > LsplineElem
 Single rnergy and DOS values with all weights at that energy.
typedef std::vector< LsplineElemLspline
 Set of all energy and DOS values as a linear spline.

Public Member Functions

 TetrahedralDOS (std::vector< vector3<>> kmesh, std::vector< int > iReduced, const matrix3<> &R, const matrix3< int > &super, int nSpins, int nBands, int nWeights, double weightSum=1.)
double & e (int iState, int iBand)
 access eigenvalue
const double & e (int iState, int iBand) const
 access eigenvalue (const version)
double & w (int iWeight, int iState, int iBand)
 access weight
const double & w (int iWeight, int iState, int iBand) const
 access weight (const version)
void setEigs (const std::vector< diagMatrix > &E)
 set all eigenvalues together (instead of using e())
void setWeights (int iWeight, const std::vector< diagMatrix > &weights)
 set all weights for given iWeight together (instead of using e()); all weights are initially 1
void weldEigenvalues (double Etol)
 Replace clusters of eigenvalues that differ by less than Etol by a single value equal to their mean.
Lspline getDOS (int iSpin, double Etol) const
Lspline gaussSmooth (const Lspline &in, double Esigma) const
 Apply gaussian smoothing of width Esigma.
void printDOS (const Lspline &dos, string filename, string header=string())
 Write the given DOS Lspline to a file (optionally with a header)

Public Attributes

const int nSpins
 number of separate spin channels
const int nBands
 number of bands
const int nWeights
 number of weighted-DOS's beig calculated (also counting total DOS i.e. weight = 1)
const int nReduced
 number of reduced k-points
const int nStates
 nReduced * nSpins

Detailed Description

Evaluate DOS using the tetrahedron method.

Constructor & Destructor Documentation

◆ TetrahedralDOS()

TetrahedralDOS::TetrahedralDOS ( std::vector< vector3<>>  kmesh,
std::vector< int >  iReduced,
const matrix3<> &  R,
const matrix3< int > &  super,
int  nSpins,
int  nBands,
int  nWeights,
double  weightSum = 1. 

Initialize calculator for a given uniform k-point mesh kmesh and indices iReduced to reduced mesh. If iReduced is empty, then nReduced = kmesh.size() and eigenvalues / weights must be provided on the full mesh R is the unit cell lattice vectors, while super are its linear combinations in the k-point sampled supercell. nSpins, nBands and nWeights initialize corresponding members of class. weightSum sets the net contribution from the BZ integral (can include spin-degeneracy factors here, if any).

Member Function Documentation

◆ getDOS()

Lspline TetrahedralDOS::getDOS ( int  iSpin,
double  Etol 
) const

Generate the density of states for a given spin channel Etol sets the width of the delta-function DOS of bands that are completely flat (potentially welded within Etol)

The documentation for this class was generated from the following file: