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_;
149 Int outputFileIndex );
153 void LoadRealSymmetricMatrix(
205 void SelInvRealSymmetricMatrix(
208 double* AinvnzvalLocal );
210 void SelInvComplexSymmetricMatrix(
213 double* AinvnzvalLocal );
245 const std::vector<Real>& shiftVec,
246 std::vector<Real>& inertiaVec,
281 Real numElectronExact,
282 Real numElectronTolerance,
285 Real& numElectronDrvMu );
290 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:403
Interface with SuperLU_Dist (version 3.0 and later)
const DistSparseMatrix< Real > & EnergyDensityRealMat() const
Energy density matrix.
Definition: ppexsi.hpp:333
Main class for parallel PEXSI.
Definition: ppexsi.hpp:66
void DFTDriver(Real numElectronExact, Real temperature, Real gap, Real deltaE, Int numPole, Int isInertiaCount, Int maxPEXSIIter, Real muMin0, Real muMax0, 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:1493
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:902
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:748
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:294
Definition: SuperLUGrid.hpp:112
Definition: SuperLUGrid.hpp:102
Pole expansion subroutines.