JDFTx  1.7.0
ElecInfo Class Reference

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 , SmearingMP1 , 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 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< QuantumNumberqnums
 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.
 
double Bz
 If NaN, fix magnetization, otherwise fix/target magnetic field to this value.
 
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...
 

Friends

struct CommandElecInitialFillings
 
struct CommandElecInitialCharge
 
struct CommandElecInitialMagnetization
 
struct CommandInitialState
 
class ElecVars
 
struct LCAOminimizer
 
struct CommandKpointFolding
 
class Everything
 
class Phonon
 
class DefectSupercell
 
void dumpFCI (const Everything &e, const char *filename)
 Dump coulomb matrix elements in FCIDUMP format.
 

Detailed Description

Electronic system auxiliary information, fillings and related functions.

Member Enumeration Documentation

◆ FillingsUpdate

Fillings update mode.

Enumerator
FillingsConst 

constant fillings (T=0)

FillingsHsub 

fillings are a function of subspace Hamiltonian

◆ SmearingType

Smearing options.

Enumerator
SmearingFermi 

Fermi-Dirac smearing.

SmearingGauss 

Gaussian smearing.

SmearingMP1 

Methfessel-Paxton order 1.

SmearingCold 

Cold smearing.

Member Function Documentation

◆ findMu()

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

◆ nElectronsCalc()

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

Member Data Documentation

◆ initialFillingsFilename

string ElecInfo::initialFillingsFilename

Flag to check whether the calculation has a DFT+U self-interaction correction.

filename for initial fillings (zero-length if none)


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