74 std::vector<Complex> zshift_;
75 std::vector<Complex> zweightRho_;
76 std::vector<Complex> zweightRhoDrvMu_;
77 std::vector<Complex> zweightRhoDrvT_;
78 std::vector<Complex> zweightHelmholtz_;
79 std::vector<Complex> zweightForce_;
123 bool isMatrixLoaded_;
126 bool isRealSymmetricSymbolicFactorized_;
127 bool isComplexSymmetricSymbolicFactorized_;
128 bool isRealUnsymmetricSymbolicFactorized_;
129 bool isComplexUnsymmetricSymbolicFactorized_;
138 std::vector<Int> diagIdxLocal_;
145 Real totalFreeEnergy_;
157 Int outputFileIndex );
161 void LoadRealSymmetricMatrix(
173 void LoadRealUnsymmetricMatrix(
278 void SelInvRealSymmetricMatrix(
281 double* AinvnzvalLocal );
283 void SelInvRealUnsymmetricMatrix(
286 double* AinvnzvalLocal );
289 void SelInvComplexSymmetricMatrix(
292 double* AinvnzvalLocal );
294 void SelInvComplexUnsymmetricMatrix(
297 double* AinvnzvalLocal );
330 const std::vector<Real>& shiftVec,
331 std::vector<Real>& inertiaVec,
366 Real numElectronExact,
367 Real numElectronTolerance,
370 Real& numElectronDrvMu );
375 Real numElectronExact,
385 Real muInertiaTolerance,
386 Real muInertiaExpansion,
387 Real muPEXSISafeGuard,
388 Real numElectronPEXSITolerance,
390 Int isSymbolicFactorize,
395 Real& numElectronPEXSI,
398 Int& numTotalInertiaIter,
399 Int& numTotalPEXSIIter );
406 const GridType* GridPole()
const {
return gridPole_;}
431 Real TotalEnergyH()
const {
return totalEnergyH_;}
433 Real TotalEnergyS()
const {
return totalEnergyS_;}
435 Real TotalFreeEnergy()
const {
return totalFreeEnergy_;}
442 #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:429
SuperNodeType describes mapping between supernode and column, the permutation information, and potentially the elimination tree (not implemented here).
Definition: pselinv.hpp:165
void SymbolicFactorizeComplexSymmetricMatrix(std::string ColPerm, Int numProcSymbFact, Int verbosity)
Symbolically factorize the loaded matrices for complex arithmetic factorization and selected inversio...
Definition: ppexsi.cpp:725
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:2197
const DistSparseMatrix< Real > & EnergyDensityRealMat() const
Energy density matrix.
Definition: ppexsi.hpp:419
Main class for parallel PEXSI.
Definition: ppexsi.hpp:68
Main file for parallel selected inversion on unsymmetric matrices.
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:1595
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:128
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:1435
const DistSparseMatrix< Real > & RhoRealMat() const
Density matrix.
Definition: ppexsi.hpp:412
Various utility subroutines.
void SymbolicFactorizeComplexUnsymmetricMatrix(std::string ColPerm, std::string RowPerm, Int numProcSymbFact, Int Transpose, double *AnzvalLocal, Int verbosity)
Symbolically factorize the loaded matrices for complex arithmetic factorization and selected inversio...
Definition: ppexsi.cpp:834
void SymbolicFactorizeRealSymmetricMatrix(std::string ColPerm, Int numProcSymbFact, Int verbosity)
Symbolically factorize the loaded matrices for real arithmetic factorization and selected inversion...
Definition: ppexsi.cpp:473
Definition: SuperLUGrid.hpp:124
Definition: SuperLUGrid.hpp:111
void SymbolicFactorizeRealUnsymmetricMatrix(std::string ColPerm, std::string RowPerm, Int numProcSymbFact, Int Transpose, double *AnzvalLocal, Int verbosity)
Symbolically factorize the loaded matrices for real arithmetic factorization and selected inversion...
Definition: ppexsi.cpp:586
A thin interface for passing parameters to set the PSelInv options.
Definition: pselinv.hpp:101
Pole expansion subroutines.