19#ifndef KohnShamDFTStandardEigenOperatorClass_H_
20#define KohnShamDFTStandardEigenOperatorClass_H_
38 template <dftfe::utils::MemorySpace memorySpace>
53 basisOperationsPtrHost,
56 pseudopotentialClassPtr,
62 const MPI_Comm &mpi_comm_parent,
63 const MPI_Comm &mpi_comm_domain);
80 const double scalarOX,
84 const bool useApproximateMatrixEntries =
true);
100 const double scalarOinvX,
101 const double scalarY,
102 const double scalarX,
118 const double scalarOinvX,
119 const double scalarY,
120 const double scalarX,
141 const double scalarHX,
142 const double scalarY,
143 const double scalarX,
146 const bool onlyHPrimePartForFirstOrderDensityMatResponse,
168 const double scalarHX,
169 const double scalarY,
170 const double scalarX,
172 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
173 const bool skip1 =
false,
174 const bool skip2 =
false,
175 const bool skip3 =
false);
205 d_pseudopotentialNonLocalProjectorTimesVectorBlockSinglePrec;
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::numberFP32, memorySpace > > d_pseudopotentialNonLocalOperatorSinglePrec
Definition KohnShamDFTBaseOperator.h:358
dftfe::uInt d_cellsBlockSizeHamiltonianConstruction
Definition KohnShamDFTBaseOperator.h:442
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition KohnShamDFTBaseOperator.h:361
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
Definition KohnShamDFTBaseOperator.h:451
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixSrcSinglePrec
Definition KohnShamDFTBaseOperator.h:390
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition KohnShamDFTBaseOperator.h:369
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffExtPotJxW
Definition KohnShamDFTBaseOperator.h:406
dftfe::uInt d_HamiltonianIndex
Definition KohnShamDFTBaseOperator.h:436
void reinitNumberWavefunctions(const dftfe::uInt numWfc)
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_srcNonLocalTemp
Definition KohnShamDFTBaseOperator.h:454
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_srcNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:459
bool d_isExternalPotCorrHamiltonianComputed
Definition KohnShamDFTBaseOperator.h:437
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixRealBlock
Definition KohnShamDFTBaseOperator.h:428
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:420
dftfe::utils::MemoryStorage< double, memorySpace > d_cellHamiltonianMatrixExtPot
Definition KohnShamDFTBaseOperator.h:381
void reinitkPointSpinIndex(const dftfe::uInt kPointIndex, const dftfe::uInt spinIndex)
sets the data member to appropriate kPoint and spin Index
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_tempBlockVectorOverlapInvX
Definition KohnShamDFTBaseOperator.h:400
dftfe::uInt d_nOMPThreads
Definition KohnShamDFTBaseOperator.h:445
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixSrc
Definition KohnShamDFTBaseOperator.h:385
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixImagBlock
Definition KohnShamDFTBaseOperator.h:429
const dftfe::uInt n_mpi_processes
Definition KohnShamDFTBaseOperator.h:440
bool d_useHubbard
Definition KohnShamDFTBaseOperator.h:452
const MPI_Comm d_mpiCommParent
Definition KohnShamDFTBaseOperator.h:438
const MPI_Comm d_mpiCommDomain
Definition KohnShamDFTBaseOperator.h:439
std::vector< dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > > d_cellHamiltonianMatrix
Definition KohnShamDFTBaseOperator.h:377
dftfe::uInt d_numVectorsInternal
Definition KohnShamDFTBaseOperator.h:444
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlock
Definition KohnShamDFTBaseOperator.h:395
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_dstNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:461
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_dstNonLocalTemp
Definition KohnShamDFTBaseOperator.h:456
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffJxW
Definition KohnShamDFTBaseOperator.h:405
const dftfe::uInt d_densityQuadratureID
Definition KohnShamDFTBaseOperator.h:431
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:409
dftfe::uInt d_kPointIndex
Definition KohnShamDFTBaseOperator.h:434
dftParameters * d_dftParamsPtr
Definition KohnShamDFTBaseOperator.h:374
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixDst
Definition KohnShamDFTBaseOperator.h:387
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
Definition KohnShamDFTBaseOperator.h:373
const dftfe::uInt d_feOrderPlusOneQuadratureID
Definition KohnShamDFTBaseOperator.h:433
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
Definition KohnShamDFTBaseOperator.h:364
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:422
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_tempBlockVectorOverlapInvXSinglePrec
Definition KohnShamDFTBaseOperator.h:402
dftfe::uInt d_spinIndex
Definition KohnShamDFTBaseOperator.h:435
const dftfe::uInt this_mpi_process
Definition KohnShamDFTBaseOperator.h:441
KohnShamDFTBaseOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > pseudopotentialClassPtr, std::shared_ptr< excManager< memorySpace > > excManagerPtr, dftParameters *dftParamsPtr, const dftfe::uInt densityQuadratureID, const dftfe::uInt lpspQuadratureID, const dftfe::uInt feOrderPlusOneQuadratureID, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixDstSinglePrec
Definition KohnShamDFTBaseOperator.h:392
dftfe::uInt d_cellsBlockSizeHX
Definition KohnShamDFTBaseOperator.h:443
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_pseudopotentialNonLocalOperator
Definition KohnShamDFTBaseOperator.h:343
std::vector< double > d_kPointWeights
Definition KohnShamDFTBaseOperator.h:426
std::vector< dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > > d_cellHamiltonianMatrixSinglePrec
Definition KohnShamDFTBaseOperator.h:379
std::vector< double > d_kPointCoordinates
Definition KohnShamDFTBaseOperator.h:424
dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > d_mapNodeIdToProcId
Definition KohnShamDFTBaseOperator.h:463
dealii::TimerOutput computing_timer
Definition KohnShamDFTBaseOperator.h:449
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > d_pseudopotentialClassPtr
Definition KohnShamDFTBaseOperator.h:372
dealii::ConditionalOStream pcout
Definition KohnShamDFTBaseOperator.h:446
const dftfe::uInt d_lpspQuadratureID
Definition KohnShamDFTBaseOperator.h:432
KohnShamDFTStandardEigenOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > pseudopotentialClassPtr, std::shared_ptr< excManager< memorySpace > > excManagerPtr, dftParameters *dftParamsPtr, const dftfe::uInt densityQuadratureID, const dftfe::uInt lpspQuadratureID, const dftfe::uInt feOrderPlusOneQuadratureID, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
void HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse, const bool skip1, const bool skip2, const bool skip3)
Computing Y = scalarHX*HM^{-1}X + scalarX*X + scalarY*Y for a given X and Y in reduced precision.
void overlapInverseMatrixTimesX(dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &src, const double scalarOinvX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > &dst)
Computing Y = scalarOinvX*O^{-1}X + scalarX*X + scalarY*Y for a given X and Y in Reduced precision.
void HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)
Computing Y = scalarHX*M^{-1}HX + scalarX*X + scalarY*Y for a given X and Y in full precision.
void overlapInverseMatrixTimesX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarOinvX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst)
Computing Y = scalarOinvX*O^{-1}X + scalarX*X + scalarY*Y for a given X and Y in full precision.
void overlapMatrixTimesX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarOX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool useApproximateMatrixEntries=true)
Computing Y = scalarOX*OX + scalarX*X + scalarY*Y for a given X and Y in full precision.
Definition FEBasisOperations.h:85
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Definition excManager.h:28
Definition BLASWrapper.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition pseudopotentialBaseClass.h:60
double number
Definition dftfeDataTypes.h:40
float numberFP32
Definition dftfeDataTypes.h:41
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10