73 std::vector<Complex> zshift_;
74 std::vector<Complex> zweightRho_;
75 std::vector<Complex> zweightRhoDrvMu_;
76 std::vector<Complex> zweightRhoDrvT_;
77 std::vector<Complex> zweightHelmholtz_;
78 std::vector<Complex> zweightForce_;
119 bool isMatrixLoaded_;
122 bool isRealSymmetricSymbolicFactorized_;
123 bool isComplexSymmetricSymbolicFactorized_;
132 std::vector<Int> diagIdxLocal_;
139 Real totalFreeEnergy_;
151 Int outputFileIndex );
155 void LoadRealSymmetricMatrix(
208 void SelInvRealSymmetricMatrix(
211 double* AinvnzvalLocal );
213 void SelInvComplexSymmetricMatrix(
216 double* AinvnzvalLocal );
247 const std::vector<Real>& shiftVec,
248 std::vector<Real>& inertiaVec,
283 Real numElectronExact,
284 Real numElectronTolerance,
287 Real& numElectronDrvMu );
292 Real numElectronExact,
302 Real muInertiaTolerance,
303 Real muInertiaExpansion,
304 Real muPEXSISafeGuard,
305 Real numElectronPEXSITolerance,
307 Int isSymbolicFactorize,
312 Real& numElectronPEXSI,
315 Int& numTotalInertiaIter,
316 Int& numTotalPEXSIIter );
323 const GridType* GridPole()
const {
return gridPole_;}
348 Real TotalEnergyH()
const {
return totalEnergyH_;}
350 Real TotalEnergyS()
const {
return totalEnergyS_;}
352 Real TotalFreeEnergy()
const {
return totalFreeEnergy_;}
359 #endif // _PPEXSI_HPP_
A thin interface for passing parameters to set the SuperLU options.
Definition: superlu_dist_internal.hpp:62
const DistSparseMatrix< Real > & FreeEnergyDensityRealMat() const
Total Helmholtz free energy matrix (band energy part only).
Definition: ppexsi.hpp:346
SuperNodeType describes mapping between supernode and column, the permutation information, and potentially the elimination tree (not implemented here).
Definition: pselinv.hpp:143
void SymbolicFactorizeComplexSymmetricMatrix(std::string ColPerm, Int numProcSymbFact, Int verbosity)
Symbolically factorize the loaded matrices for complex arithmetic factorization and selected inversio...
Definition: ppexsi.cpp:408
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:1512
const DistSparseMatrix< Real > & EnergyDensityRealMat() const
Energy density matrix.
Definition: ppexsi.hpp:336
Main class for parallel PEXSI.
Definition: ppexsi.hpp:67
Main file for parallel selected inversion.
Definition: SuperLUMatrix.hpp:206
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:910
Definition: SuperLUMatrix.hpp:337
Sparse matrix and Distributed sparse matrix in compressed column format.
GridType is the PSelInv way of defining the grid.
Definition: pselinv.hpp:106
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:750
const DistSparseMatrix< Real > & RhoRealMat() const
Density matrix.
Definition: ppexsi.hpp:329
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:298
Definition: SuperLUGrid.hpp:124
Definition: SuperLUGrid.hpp:111
Pole expansion subroutines.