JDFTx  1.1.0
ElecInfo Class Reference

Public Types

enum  FillingsUpdate { ConstantFillings, FermiFillingsMix, FermiFillingsAux, MaximumOverlapMethod }
 

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
 
void setup (const Everything &e, std::vector< diagMatrix > &F, Energies &ener)
 setup bands and initial fillings
 
void printFillings (FILE *fp) const
 
void printFermi (const char *suffix, const double *muOverride=0) const
 
void mixFillings (std::vector< diagMatrix > &F, Energies &ener)
 Fermi fillings with mixing / mu control.
 
void updateFillingsEnergies (const std::vector< diagMatrix > &F, Energies &) const
 Calculate fermi fillings Legendre multipliers (TS/muN)
 
double muEff (double mu, double Bz, int q) const
 
double fermi (double mu, double eps) const
 fermi function
 
double fermiPrime (double mu, double eps) const
 derivative of fermi function
 
diagMatrix fermi (double mu, const diagMatrix &eps) const
 elementwise fermi function
 
diagMatrix fermiPrime (double mu, const diagMatrix &eps) const
 elementwise fermi function derivative
 
matrix fermiGrad (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 nElectronsFermi (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
 
void read (std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const
 Returns the band index of the Highest Occupied Kohn-Sham Orbital.
 
void read (std::vector< matrix > &, const char *fname, int nRowsOverride=0, int nColsOverride=0) const
 
void write (const std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const
 
void write (const std::vector< matrix > &, const char *fname, int nRowsOverride=0, int nColsOverride=0) const
 
void appendWrite (const std::vector< diagMatrix > &, const char *fname, int nRowsOverride=0) const
 

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
 tells us what sort of spins we are using if any
 
double nElectrons
 the number of electrons = Sum w Tr[F]
 
std::vector< QuantumNumberqnums
 k-points, spins and weights for each state
 
enum ElecInfo::FillingsUpdate fillingsUpdate
 
double kT
 Temperature for Fermi distribution of fillings.
 
double mu
 If NaN, fix nElectrons, otherwise fix/target chemical potential to this.
 
int mixInterval
 we recalc. fillings every so many iterations
 
bool subspaceRotation
 whether subspace variables are required (either rotation or aux hamiltonian)
 
bool hasU
 
std::vector< std::tuple< int, int, double > > customFillings
 Flag to check whether the calculation has a DFT+U self-interaction correction.
 
string initialFillingsFilename
 filename for initial fillings (zero-length if none)
 

Friends

struct CommandElecInitialFillings
 
struct CommandElecInitialCharge
 
struct CommandElecInitialMagnetization
 
struct CommandInitialState
 
class ElecVars
 
struct LCAOminimizer
 
struct CommandElecFermiFillings
 
struct CommandTargetMu
 
struct CommandKpointFolding
 
class Everything
 
class Phonon
 

Member Enumeration Documentation

Enumerator
ConstantFillings 

constant fillings (T=0)

FermiFillingsMix 

mix fermi functions every mixInterval iterations

FermiFillingsAux 

fillings are a fermi function of the (auxilliary) subspace hamiltonian (recommended)

MaximumOverlapMethod 

used as an alternative way of calculating excited states

Member Function Documentation

double ElecInfo::findMu ( const std::vector< diagMatrix > &  eps,
double  nElectrons,
double &  Bz 
) const

Find the chemical potential for which the fermi distribution with specified eigenvalues adds up to nElectrons If magnetization is constrained, retrieve corresponding Lagrange multiplier Bz as well

double ElecInfo::nElectronsFermi ( double  mu,
const std::vector< diagMatrix > &  eps,
double &  Bz 
) const

Compute number of electrons for a fermi distribution with specified eigenvalues If magnetization is constrained, bisect on corresponding Lagrange multiplier Bz, and retrieve it too


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