19#ifndef KohnShamDFTBaseOperatorClass_H_
20#define KohnShamDFTBaseOperatorClass_H_
34 template <dftfe::utils::MemorySpace memorySpace>
48 basisOperationsPtrHost,
51 pseudopotentialClassPtr,
57 const MPI_Comm &mpi_comm_parent,
58 const MPI_Comm &mpi_comm_domain);
61 init(
const std::vector<double> &kPointCoordinates,
62 const std::vector<double> &kPointWeights);
105 auxDensityXCRepresentationPtr,
124 const std::map<dealii::CellId, std::vector<double>>
125 &externalPotCorrValues);
130 auxDensityXCRepresentationPtr,
161 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
178 const double scalarHX,
179 const double scalarY,
180 const double scalarX,
182 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
197 const double scalarHX,
198 const double scalarY,
199 const double scalarX,
202 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
216 const double scalarHX,
217 const double scalarY,
218 const double scalarX,
220 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
358 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
374 std::vector<dftfe::utils::MemoryStorage<dataTypes::number, memorySpace>>
376 std::vector<dftfe::utils::MemoryStorage<dataTypes::numberFP32, memorySpace>>
410 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
412 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
414 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
417 std::shared_ptr<dftUtils::constraintMatrixInfo<memorySpace>>
419 std::shared_ptr<dftUtils::constraintMatrixInfo<memorySpace>>
Definition AtomicCenteredNonLocalOperator.h:58
Definition AuxDensityMatrix.h:40
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::numberFP32, memorySpace > > d_pseudopotentialNonLocalOperatorSinglePrec
Definition KohnShamDFTBaseOperator.h:356
dftfe::uInt d_cellsBlockSizeHamiltonianConstruction
Definition KohnShamDFTBaseOperator.h:440
void setVEffExternalPotCorrToZero()
Computing Y = scalarOX*OX + scalarX*X + scalarY*Y for a given X and Y in full precision.
void HX(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)
Computing Y = scalarHX*HX + scalarX*X + scalarY*Y for a given X and Y in full precision.
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition KohnShamDFTBaseOperator.h:359
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
Definition KohnShamDFTBaseOperator.h:449
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixSrcSinglePrec
Definition KohnShamDFTBaseOperator.h:388
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition KohnShamDFTBaseOperator.h:367
dftUtils::constraintMatrixInfo< memorySpace > * getOverloadedConstraintMatrix() const
Definition KohnShamDFTBaseOperator.h:81
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffExtPotJxW
Definition KohnShamDFTBaseOperator.h:404
dftfe::uInt d_HamiltonianIndex
Definition KohnShamDFTBaseOperator.h:434
void reinitNumberWavefunctions(const dftfe::uInt numWfc)
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_srcNonLocalTemp
Definition KohnShamDFTBaseOperator.h:452
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_srcNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:457
bool d_isExternalPotCorrHamiltonianComputed
Definition KohnShamDFTBaseOperator.h:435
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixRealBlock
Definition KohnShamDFTBaseOperator.h:426
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:418
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_derExcwithTauTimesinvJacKpointTimesJxW
Definition KohnShamDFTBaseOperator.h:415
dftfe::utils::MemoryStorage< double, memorySpace > d_cellHamiltonianMatrixExtPot
Definition KohnShamDFTBaseOperator.h:379
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_invJacKPointTimesJxW
Definition KohnShamDFTBaseOperator.h:411
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:398
dftfe::uInt d_nOMPThreads
Definition KohnShamDFTBaseOperator.h:443
void setVEff(const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &vKS_quadValues, const dftfe::uInt spinIndex)
Sets the V-eff potential.
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & getScratchFEMultivectorSinglePrec(const dftfe::uInt numVectors, const dftfe::uInt index)
void resetExtPotHamFlag()
void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixSrc
Definition KohnShamDFTBaseOperator.h:383
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixImagBlock
Definition KohnShamDFTBaseOperator.h:427
const dftfe::uInt n_mpi_processes
Definition KohnShamDFTBaseOperator.h:438
void computeVEffPrime(std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCRepresentationPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoPrimeValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoPrimeValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiPrimeValues, const dftfe::uInt spinIndex)
bool d_useHubbard
Definition KohnShamDFTBaseOperator.h:450
const MPI_Comm & getMPICommunicatorDomain()
const MPI_Comm d_mpiCommParent
Definition KohnShamDFTBaseOperator.h:436
const MPI_Comm d_mpiCommDomain
Definition KohnShamDFTBaseOperator.h:437
void HXWithLowdinOrthonormalisedInput(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)
Computing Y = scalarHX*M^{1/2}HM^{1/2}X + scalarX*X + scalarY*Y for a given X and Y in full precision...
std::vector< dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > > d_cellHamiltonianMatrix
Definition KohnShamDFTBaseOperator.h:375
dftfe::uInt d_numVectorsInternal
Definition KohnShamDFTBaseOperator.h:442
void HX(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=false)
Computing Y = scalarHX*HX + scalarX*X + scalarY*Y for a given X and Y in full precision.
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlock
Definition KohnShamDFTBaseOperator.h:393
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_dstNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:459
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacinvJacderExcWithTauJxW
Definition KohnShamDFTBaseOperator.h:409
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_dstNonLocalTemp
Definition KohnShamDFTBaseOperator.h:454
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffJxW
Definition KohnShamDFTBaseOperator.h:403
const dftfe::uInt d_densityQuadratureID
Definition KohnShamDFTBaseOperator.h:429
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:407
dftfe::uInt d_kPointIndex
Definition KohnShamDFTBaseOperator.h:432
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_halfKSquareTimesDerExcwithTauJxW
Definition KohnShamDFTBaseOperator.h:413
void computeCellHamiltonianMatrixExtPotContribution()
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlockSinglePrec
Definition KohnShamDFTBaseOperator.h:395
dftParameters * d_dftParamsPtr
Definition KohnShamDFTBaseOperator.h:372
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixDst
Definition KohnShamDFTBaseOperator.h:385
void computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)
void computeVEff(std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCRepresentationPtr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiValues, const dftfe::uInt spinIndex=0)
Computes effective potential involving exchange-correlation functionals.
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
Definition KohnShamDFTBaseOperator.h:371
const dftfe::uInt d_feOrderPlusOneQuadratureID
Definition KohnShamDFTBaseOperator.h:431
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector(const dftfe::uInt numVectors, const dftfe::uInt index)
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
Definition KohnShamDFTBaseOperator.h:362
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:420
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_tempBlockVectorOverlapInvXSinglePrec
Definition KohnShamDFTBaseOperator.h:400
dftfe::uInt d_spinIndex
Definition KohnShamDFTBaseOperator.h:433
const dftfe::uInt this_mpi_process
Definition KohnShamDFTBaseOperator.h:439
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:390
dftfe::uInt d_cellsBlockSizeHX
Definition KohnShamDFTBaseOperator.h:441
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_pseudopotentialNonLocalOperator
Definition KohnShamDFTBaseOperator.h:341
std::vector< double > d_kPointWeights
Definition KohnShamDFTBaseOperator.h:424
std::vector< dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > > d_cellHamiltonianMatrixSinglePrec
Definition KohnShamDFTBaseOperator.h:377
std::vector< double > d_kPointCoordinates
Definition KohnShamDFTBaseOperator.h:422
dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > d_mapNodeIdToProcId
Definition KohnShamDFTBaseOperator.h:461
dealii::TimerOutput computing_timer
Definition KohnShamDFTBaseOperator.h:447
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > d_pseudopotentialClassPtr
Definition KohnShamDFTBaseOperator.h:370
dealii::ConditionalOStream pcout
Definition KohnShamDFTBaseOperator.h:444
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > * getOverloadedConstraintMatrixHost() const
void computeCellHamiltonianMatrix(const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
const dftfe::uInt d_lpspQuadratureID
Definition KohnShamDFTBaseOperator.h:430
Definition FEBasisOperations.h:85
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:43
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
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:43
Definition pseudopotentialBaseClass.h:60
Definition MemoryStorage.h:33
double number
Definition dftfeDataTypes.h:42
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10