Electronic system auxiliary information, fillings and related functions. More...
#include <ElecInfo.h>
Classes | |
| struct | ColumnBundleReadConversion |
| < Utility to convert columnbundle basis / bands More... | |
Public Types | |
| enum | FillingsUpdate { FillingsConst, FillingsHsub } |
| Fillings update mode. More... | |
| enum | SmearingType { SmearingFermi, SmearingGauss, SmearingCold } |
| Smearing options. More... | |
Public Member Functions | |
| bool | isMine (int q) const |
| check if state index is local | |
| int | whose (int q) const |
| find out which process this state index belongs to | |
| int | qStartOther (int iProc) const |
| find out qStart for another process | |
| int | qStopOther (int iProc) const |
| find out qStop for another process | |
| bool | isNoncollinear () const |
| int | spinorLength () const |
| int | nSpins () const |
| vector3< int > | kFoldingCount () const |
| void | setup (const Everything &e, std::vector< diagMatrix > &F, Energies &ener) |
| setup bands and initial fillings | |
| void | printFillings (FILE *fp) const |
| void | smearReport (const double *muOverride=0) const |
| void | updateFillingsEnergies (const std::vector< diagMatrix > &eps, Energies &) const |
| Calculate variable fillings Legendre multipliers (TS/muN) | |
| double | muEff (double mu, double Bz, int q) const |
| effective mu for each spin | |
| double | smear (double mu, double eps) const |
| smearing function | |
| double | smearPrime (double mu, double eps) const |
| derivative of smearing function | |
| double | smearEntropy (double mu, double eps) const |
| entropy associated with smearing function | |
| diagMatrix | smear (double mu, const diagMatrix &eps) const |
| elementwise smearing function | |
| diagMatrix | smearPrime (double mu, const diagMatrix &eps) const |
| elementwise smearing function derivative | |
| diagMatrix | smearEntropy (double mu, const diagMatrix &eps) const |
| element-wise smearing function entropy | |
| matrix | smearGrad (double mu, const diagMatrix &eps, const matrix &gradF) const |
| Propagate matrix gradient w.r.t F to gradient w.r.t. eps (in the basis where fillings are diagonal) | |
| double | nElectronsCalc (double mu, const std::vector< diagMatrix > &eps, double &Bz) const |
| double | findMu (const std::vector< diagMatrix > &eps, double nElectrons, double &Bz) const |
| void | kpointsPrint (FILE *fp, bool printSpin=false) const |
| Output k-points, weights and optionally spins. | |
| void | kpointPrint (FILE *fp, int q, bool printSpin=false) const |
| Output k-points, weights and optionally spins. | |
| int | findHOMO (int q) const |
| Returns the band index of the Highest Occupied Kohn-Sham Orbital. | |
| void | read (std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const |
| parallel read array of diagonal matrices | |
| void | read (std::vector< matrix > &, const char *fname, int nRowsOverride=0, int nColsOverride=0) const |
| parallel read array of matrices | |
| void | write (const std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const |
| parallel write array of diagonal matrices | |
| void | write (const std::vector< matrix > &, const char *fname, int nRowsOverride=0, int nColsOverride=0) const |
| parallel write array of matrices | |
| void | appendWrite (const std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const |
| append-write array of diagonal matrices | |
| void | read (std::vector< class ColumnBundle > &, const char *fname, const ColumnBundleReadConversion *conversion=0) const |
| Read array of columnbundles, optionally with conversion. | |
| void | write (const std::vector< class ColumnBundle > &, const char *fname) const |
| write an array of columnbundles to file | |
Public Attributes | |
| int | nBands |
| int | nStates |
| Number of bands and total number of states. | |
| int | nDensities |
| int | spinWeight |
| int | qWeightSum |
| number of density components, spin weight factor (= max occupation per state) and sum of k-point weights | |
| int | qStart |
| int | qStop |
| Range of states handled by current process (= 0 and nStates for non-MPI jobs) | |
| SpinType | spinType |
| type of spin treatment | |
| double | nElectrons |
| the number of electrons = Sum w Tr[F] | |
| std::vector< QuantumNumber > | qnums |
| k-points, spins and weights for each state | |
| enum ElecInfo::FillingsUpdate | fillingsUpdate |
| fillings update mode | |
| bool | scalarFillings |
| whether fillings are scalar (equal for all bands) at all quantum numbers | |
| enum ElecInfo::SmearingType | smearingType |
| smearing option | |
| double | smearingWidth |
| Smearing width (temperature in the Fermi case) | |
| double | mu |
| If NaN, fix nElectrons, otherwise fix/target chemical potential to this. | |
| bool | muLoop |
| Whether to optimize mu in an outer loop over fixed charge calculations. | |
| bool | hasU |
| string | initialFillingsFilename |
| Flag to check whether the calculation has a DFT+U self-interaction correction. More... | |
Electronic system auxiliary information, fillings and related functions.
| double ElecInfo::findMu | ( | const std::vector< diagMatrix > & | eps, |
| double | nElectrons, | ||
| double & | Bz | ||
| ) | const |
Find the chemical potential for which the smearing function with specified eigenvalues adds up to nElectrons If magnetization is constrained, retrieve corresponding Lagrange multiplier Bz as well
| double ElecInfo::nElectronsCalc | ( | double | mu, |
| const std::vector< diagMatrix > & | eps, | ||
| double & | Bz | ||
| ) | const |
Compute number of electrons for the smearing function with specified eigenvalues If magnetization is constrained, bisect on corresponding Lagrange multiplier Bz, and retrieve it too
| string ElecInfo::initialFillingsFilename |
Flag to check whether the calculation has a DFT+U self-interaction correction.
filename for initial fillings (zero-length if none)