72 std::vector<Complex> zshift_;
73 std::vector<Complex> zweightRho_;
74 std::vector<Complex> zweightRhoDrvMu_;
75 std::vector<Complex> zweightRhoDrvT_;
76 std::vector<Complex> zweightHelmholtz_;
77 std::vector<Complex> zweightForce_;
116 bool isMatrixLoaded_;
119 bool isRealSymmetricSymbolicFactorized_;
120 bool isComplexSymmetricSymbolicFactorized_;
129 std::vector<Int> diagIdxLocal_;
136 Real totalFreeEnergy_;
148 Int outputFileIndex );
152 void LoadRealSymmetricMatrix(
204 void SelInvRealSymmetricMatrix(
207 double* AinvnzvalLocal );
209 void SelInvComplexSymmetricMatrix(
212 double* AinvnzvalLocal );
244 const std::vector<Real>& shiftVec,
245 std::vector<Real>& inertiaVec,
280 Real numElectronExact,
281 Real numElectronTolerance,
284 Real& numElectronDrvMu );
289 Real numElectronExact,
299 Real muInertiaTolerance,
300 Real muInertiaExpansion,
301 Real muPEXSISafeGuard,
302 Real numElectronPEXSITolerance,
304 Int isSymbolicFactorize,
309 Real& numElectronPEXSI,
312 Int& numTotalInertiaIter,
313 Int& numTotalPEXSIIter );
320 const GridType* GridPole()
const {
return gridPole_;}
345 Real TotalEnergyH()
const {
return totalEnergyH_;}
347 Real TotalEnergyS()
const {
return totalEnergyS_;}
349 Real TotalFreeEnergy()
const {
return totalFreeEnergy_;}
356 #endif // _PPEXSI_HPP_
const DistSparseMatrix< Real > & FreeEnergyDensityRealMat() const
Total Helmholtz free energy matrix (band energy part only).
Definition: ppexsi.hpp:343
SuperNodeType describes mapping between supernode and column, the permutation information, and potentially the elimination tree (not implemented here).
Definition: pselinv.hpp:122
void SymbolicFactorizeComplexSymmetricMatrix(std::string ColPerm, Int numProcSymbFact, Int verbosity)
Symbolically factorize the loaded matrices for complex arithmetic factorization and selected inversio...
Definition: ppexsi.cpp:416
Interface with SuperLU_Dist (version 3.0 and later)
void DFTDriver(Real numElectronExact, Real temperature, Real gap, Real deltaE, Int numPole, Int isInertiaCount, Int maxPEXSIIter, Real muMin0, Real muMax0, Real mu0, Real muInertiaTolerance, Real muInertiaExpansion, Real muPEXSISafeGuard, Real numElectronPEXSITolerance, Int matrixType, Int isSymbolicFactorize, Int ordering, Int numProcSymbFact, Int verbosity, Real &muPEXSI, Real &numElectronPEXSI, Real &muMinInertia, Real &muMaxInertia, Int &numTotalInertiaIter, Int &numTotalPEXSIIter)
Main driver for solving KSDFT.
Definition: ppexsi.cpp:1508
const DistSparseMatrix< Real > & EnergyDensityRealMat() const
Energy density matrix.
Definition: ppexsi.hpp:333
Main class for parallel PEXSI.
Definition: ppexsi.hpp:66
Main file for parallel selected inversion.
Definition: SuperLUMatrix.hpp:235
void CalculateFermiOperatorReal(Int numPole, Real temperature, Real gap, Real deltaE, Real mu, Real numElectronExact, Real numElectronTolerance, Int verbosity, Real &numElectron, Real &numElectronDrvMu)
Compute the Fermi operator for a given chemical potential for real symmetric matrices.
Definition: ppexsi.cpp:915
Definition: SuperLUMatrix.hpp:363
Sparse matrix and Distributed sparse matrix in compressed column format.
GridType is the PSelInv way of defining the grid.
Definition: pselinv.hpp:85
Interface with MPI to facilitate communication.
void CalculateNegativeInertiaReal(const std::vector< Real > &shiftVec, std::vector< Real > &inertiaVec, Int verbosity)
Compute the negative inertia (the number of eigenvalues below a shift) for real symmetric matrices...
Definition: ppexsi.cpp:761
const DistSparseMatrix< Real > & RhoRealMat() const
Density matrix.
Definition: ppexsi.hpp:326
Various utility subroutines.
void SymbolicFactorizeRealSymmetricMatrix(std::string ColPerm, Int numProcSymbFact, Int verbosity)
Symbolically factorize the loaded matrices for real arithmetic factorization and selected inversion...
Definition: ppexsi.cpp:307
Definition: SuperLUGrid.hpp:112
Definition: SuperLUGrid.hpp:102
Pole expansion subroutines.