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< LsplineElem > | Lspline |

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

Evaluate DOS using the tetrahedron method.

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

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:

- electronic/TetrahedralDOS.h