19#ifndef KohnShamDFTBaseOperatorClass_H_
20#define KohnShamDFTBaseOperatorClass_H_
34 template <dftfe::utils::MemorySpace memorySpace>
51 basisOperationsPtrHost,
54 pseudopotentialClassPtr,
60 const MPI_Comm &mpi_comm_parent,
61 const MPI_Comm &mpi_comm_domain);
64 init(
const std::vector<double> &kPointCoordinates,
65 const std::vector<double> &kPointWeights);
108 auxDensityXCRepresentationPtr,
127 const std::map<dealii::CellId, std::vector<double>>
128 &externalPotCorrValues);
133 auxDensityXCRepresentationPtr,
164 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
181 const double scalarHX,
182 const double scalarY,
183 const double scalarX,
185 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
201 const double scalarHX,
202 const double scalarY,
203 const double scalarX,
206 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
221 const double scalarHX,
222 const double scalarY,
223 const double scalarX,
225 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false);
239 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
258 std::vector<dftfe::utils::MemoryStorage<dataTypes::number, memorySpace>>
260 std::vector<dftfe::utils::MemoryStorage<dataTypes::numberFP32, memorySpace>>
298 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
300 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
302 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
305 std::shared_ptr<dftUtils::constraintMatrixInfo<memorySpace>>
307 std::shared_ptr<dftUtils::constraintMatrixInfo<memorySpace>>
Definition AtomicCenteredNonLocalOperator.h:66
Definition AuxDensityMatrix.h:41
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::numberFP32, memorySpace > > d_pseudopotentialNonLocalOperatorSinglePrec
Definition KohnShamDFTBaseOperator.h:237
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) override
Computing Y = scalarHX*HX + scalarX*X + scalarY*Y for a given X and Y in full precision.
dftfe::uInt d_cellsBlockSizeHamiltonianConstruction
Definition KohnShamDFTBaseOperator.h:335
void setVEffExternalPotCorrToZero()
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition KohnShamDFTBaseOperator.h:240
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
Definition KohnShamDFTBaseOperator.h:344
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixSrcSinglePrec
Definition KohnShamDFTBaseOperator.h:272
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition KohnShamDFTBaseOperator.h:251
dftUtils::constraintMatrixInfo< memorySpace > * getOverloadedConstraintMatrix() const
Definition KohnShamDFTBaseOperator.h:84
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffExtPotJxW
Definition KohnShamDFTBaseOperator.h:289
dftfe::uInt d_HamiltonianIndex
Definition KohnShamDFTBaseOperator.h:329
void reinitNumberWavefunctions(const dftfe::uInt numWfc)
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_srcNonLocalTemp
Definition KohnShamDFTBaseOperator.h:347
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBZBlockNonCollin
Definition KohnShamDFTBaseOperator.h:321
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_srcNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:352
bool d_isExternalPotCorrHamiltonianComputed
Definition KohnShamDFTBaseOperator.h:330
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixRealBlock
Definition KohnShamDFTBaseOperator.h:314
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffxJxW
Definition KohnShamDFTBaseOperator.h:287
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:306
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_derExcwithTauTimesinvJacKpointTimesJxW
Definition KohnShamDFTBaseOperator.h:303
dftfe::utils::MemoryStorage< double, memorySpace > d_cellHamiltonianMatrixExtPot
Definition KohnShamDFTBaseOperator.h:263
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_invJacKPointTimesJxW
Definition KohnShamDFTBaseOperator.h:299
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffyJxW
Definition KohnShamDFTBaseOperator.h:288
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:282
dftfe::uInt d_nOMPThreads
Definition KohnShamDFTBaseOperator.h:338
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)
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBXBlockNonCollin
Definition KohnShamDFTBaseOperator.h:317
void resetExtPotHamFlag()
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagYTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:294
void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixSrc
Definition KohnShamDFTBaseOperator.h:267
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixImagBlock
Definition KohnShamDFTBaseOperator.h:315
const dftfe::uInt n_mpi_processes
Definition KohnShamDFTBaseOperator.h:333
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:345
const MPI_Comm & getMPICommunicatorDomain()
const MPI_Comm d_mpiCommParent
Definition KohnShamDFTBaseOperator.h:331
const MPI_Comm d_mpiCommDomain
Definition KohnShamDFTBaseOperator.h:332
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...
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) override
Computing Y = scalarHX*HX + 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:259
dftfe::uInt d_numVectorsInternal
Definition KohnShamDFTBaseOperator.h:337
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlock
Definition KohnShamDFTBaseOperator.h:277
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_dstNonLocalTempSinglePrec
Definition KohnShamDFTBaseOperator.h:354
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacinvJacderExcWithTauJxW
Definition KohnShamDFTBaseOperator.h:297
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_dstNonLocalTemp
Definition KohnShamDFTBaseOperator.h:349
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagXTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:293
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffJxW
Definition KohnShamDFTBaseOperator.h:287
const dftfe::uInt d_densityQuadratureID
Definition KohnShamDFTBaseOperator.h:324
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:292
dftfe::uInt d_kPointIndex
Definition KohnShamDFTBaseOperator.h:327
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_halfKSquareTimesDerExcwithTauJxW
Definition KohnShamDFTBaseOperator.h:301
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffzJxW
Definition KohnShamDFTBaseOperator.h:288
void computeCellHamiltonianMatrixExtPotContribution()
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlockSinglePrec
Definition KohnShamDFTBaseOperator.h:279
dftParameters * d_dftParamsPtr
Definition KohnShamDFTBaseOperator.h:256
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBYBlockNonCollin
Definition KohnShamDFTBaseOperator.h:319
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixDst
Definition KohnShamDFTBaseOperator.h:269
void computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)
KohnShamDFTBaseOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, 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 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:255
const dftfe::uInt d_feOrderPlusOneQuadratureID
Definition KohnShamDFTBaseOperator.h:326
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:246
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamDFTBaseOperator.h:308
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_tempBlockVectorOverlapInvXSinglePrec
Definition KohnShamDFTBaseOperator.h:284
dftfe::uInt d_spinIndex
Definition KohnShamDFTBaseOperator.h:328
const dftfe::uInt this_mpi_process
Definition KohnShamDFTBaseOperator.h:334
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixDstSinglePrec
Definition KohnShamDFTBaseOperator.h:274
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagZTimesGradRhoJxW
Definition KohnShamDFTBaseOperator.h:295
dftfe::uInt d_cellsBlockSizeHX
Definition KohnShamDFTBaseOperator.h:336
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_pseudopotentialNonLocalOperator
Definition KohnShamDFTBaseOperator.h:233
std::vector< double > d_kPointWeights
Definition KohnShamDFTBaseOperator.h:312
std::vector< dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > > d_cellHamiltonianMatrixSinglePrec
Definition KohnShamDFTBaseOperator.h:261
std::vector< double > d_kPointCoordinates
Definition KohnShamDFTBaseOperator.h:310
dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > d_mapNodeIdToProcId
Definition KohnShamDFTBaseOperator.h:356
dealii::TimerOutput computing_timer
Definition KohnShamDFTBaseOperator.h:342
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > d_pseudopotentialClassPtr
Definition KohnShamDFTBaseOperator.h:254
dealii::ConditionalOStream pcout
Definition KohnShamDFTBaseOperator.h:339
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
Definition KohnShamDFTBaseOperator.h:243
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > * getOverloadedConstraintMatrixHost() const
void computeCellHamiltonianMatrix(const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
const dftfe::uInt d_lpspQuadratureID
Definition KohnShamDFTBaseOperator.h:325
Definition FEBasisOperations.h:87
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:41
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10