DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::KohnShamDFTStandardEigenOperator< memorySpace > Class Template Reference

#include <KohnShamDFTStandardEigenOperator.h>

Inheritance diagram for dftfe::KohnShamDFTStandardEigenOperator< memorySpace >:
dftfe::KohnShamDFTBaseOperator< memorySpace > dftfe::operatorDFTClass< memorySpace >

Public Member Functions

 KohnShamDFTStandardEigenOperator (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 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.
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 overlapSqrtInverseMatrixTimesX (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/2}X + scalarX*X + scalarY*Y for a given X and Y in full 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::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 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.
Public Member Functions inherited from dftfe::KohnShamDFTBaseOperator< memorySpace >
 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 init (const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)
void resetExtPotHamFlag ()
void resetKohnShamOp ()
const MPI_Comm & getMPICommunicatorDomain ()
dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > * getOverloadedConstraintMatrixHost () const
dftUtils::constraintMatrixInfo< memorySpace > * getOverloadedConstraintMatrix () const
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector (const dftfe::uInt numVectors, const dftfe::uInt index)
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & getScratchFEMultivectorSinglePrec (const dftfe::uInt numVectors, const dftfe::uInt index)
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.
void setVEff (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &vKS_quadValues, const dftfe::uInt spinIndex)
 Sets the V-eff potential.
void computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)
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)
void reinitkPointSpinIndex (const dftfe::uInt kPointIndex, const dftfe::uInt spinIndex)
 sets the data member to appropriate kPoint and spin Index
void reinitNumberWavefunctions (const dftfe::uInt numWfc)
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector ()
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector ()
void computeCellHamiltonianMatrix (const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
void computeCellHamiltonianMatrixExtPotContribution ()
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.
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.
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. Used for TD-DFT and Inverse DFT calc.
void setVEffExternalPotCorrToZero ()
Public Member Functions inherited from dftfe::operatorDFTClass< memorySpace >
virtual ~operatorDFTClass ()
 Destructor.

Additional Inherited Members

Protected Attributes inherited from dftfe::KohnShamDFTBaseOperator< memorySpace >
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_pseudopotentialNonLocalOperator
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::numberFP32, memorySpace > > d_pseudopotentialNonLocalOperatorSinglePrec
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > d_pseudopotentialClassPtr
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
dftParametersd_dftParamsPtr
std::vector< dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > > d_cellHamiltonianMatrix
std::vector< dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > > d_cellHamiltonianMatrixSinglePrec
dftfe::utils::MemoryStorage< double, memorySpace > d_cellHamiltonianMatrixExtPot
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixSrc
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixDst
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixSrcSinglePrec
dftfe::utils::MemoryStorage< dataTypes::numberFP32, memorySpace > d_cellWaveFunctionMatrixDstSinglePrec
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlock
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_pseudopotentialNonLocalProjectorTimesVectorBlockSinglePrec
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_tempBlockVectorOverlapInvX
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_tempBlockVectorOverlapInvXSinglePrec
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffxJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffyJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_BeffzJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffExtPotJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagXTimesGradRhoJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagYTimesGradRhoJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesMagZTimesGradRhoJxW
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacinvJacderExcWithTauJxW
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_invJacKPointTimesJxW
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_halfKSquareTimesDerExcwithTauJxW
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_derExcwithTauTimesinvJacKpointTimesJxW
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseMassVectorScaledConstraintsNoneDataInfoPtr
std::shared_ptr< dftUtils::constraintMatrixInfo< memorySpace > > inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
std::vector< double > d_kPointCoordinates
std::vector< double > d_kPointWeights
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixRealBlock
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixImagBlock
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBXBlockNonCollin
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBYBlockNonCollin
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixBZBlockNonCollin
const dftfe::uInt d_densityQuadratureID
const dftfe::uInt d_lpspQuadratureID
const dftfe::uInt d_feOrderPlusOneQuadratureID
dftfe::uInt d_kPointIndex
dftfe::uInt d_spinIndex
dftfe::uInt d_HamiltonianIndex
bool d_isExternalPotCorrHamiltonianComputed
const MPI_Comm d_mpiCommParent
const MPI_Comm d_mpiCommDomain
const dftfe::uInt n_mpi_processes
const dftfe::uInt this_mpi_process
dftfe::uInt d_cellsBlockSizeHamiltonianConstruction
dftfe::uInt d_cellsBlockSizeHX
dftfe::uInt d_numVectorsInternal
dftfe::uInt d_nOMPThreads
dealii::ConditionalOStream pcout
dealii::TimerOutput computing_timer
std::shared_ptr< hubbard< dataTypes::number, memorySpace > > d_hubbardClassPtr
bool d_useHubbard
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_srcNonLocalTemp
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_dstNonLocalTemp
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_srcNonLocalTempSinglePrec
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > d_dstNonLocalTempSinglePrec
dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > d_mapNodeIdToProcId

Constructor & Destructor Documentation

◆ KohnShamDFTStandardEigenOperator()

template<dftfe::utils::MemorySpace memorySpace>
dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::KohnShamDFTStandardEigenOperator ( 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 )

Member Function Documentation

◆ HXCheby() [1/2]

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::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 )
virtual

Computing Y = scalarHX*M^{-1}HX + scalarX*X + scalarY*Y for a given X and Y in full precision.

Parameters
srcX vector
scalarHXscalar for HX
scalarYscalar for Y
scalarXscalar for X
dstY vector
onlyHPrimePartForFirstOrderDensityMatResponseflag to compute only HPrime part for first order density matrix response
skip1flag to skip extraction
skip2flag to skip nonLoal All Reduce
skip3flag to skip local HX and Assembly

Implements dftfe::operatorDFTClass< memorySpace >.

◆ HXCheby() [2/2]

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::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 )
virtual

Computing Y = scalarHX*HM^{-1}X + scalarX*X + scalarY*Y for a given X and Y in reduced precision.

Parameters
srcX vector
scalarHXscalar for HX
scalarYscalar for Y
scalarXscalar for X
dstY vector
onlyHPrimePartForFirstOrderDensityMatResponseflag to compute only HPrime part for first order density matrix response
skip1flag to skip extraction
skip2flag to skip nonLoal All Reduce
skip3flag to skip local HX and Assembly

Implements dftfe::operatorDFTClass< memorySpace >.

◆ overlapInverseMatrixTimesX() [1/2]

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::overlapInverseMatrixTimesX ( dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarOinvX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst )
virtual

Computing Y = scalarOinvX*O^{-1}X + scalarX*X + scalarY*Y for a given X and Y in full precision.

Parameters
srcX vector
scalarOinvXscalar for O^{-1}X
scalarYscalar for Y
scalarXscalar for X
dstY vector

Implements dftfe::operatorDFTClass< memorySpace >.

◆ overlapInverseMatrixTimesX() [2/2]

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::overlapInverseMatrixTimesX ( dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & src,
const double scalarOinvX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & dst )
virtual

Computing Y = scalarOinvX*O^{-1}X + scalarX*X + scalarY*Y for a given X and Y in Reduced precision.

Parameters
srcX vector
scalarOinvXscalar for O^{-1}X
scalarYscalar for Y
scalarXscalar for X
dstY vector

Implements dftfe::operatorDFTClass< memorySpace >.

◆ overlapMatrixTimesX()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::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 )
virtual

Computing Y = scalarOX*OX + scalarX*X + scalarY*Y for a given X and Y in full precision.

Parameters
srcX vector
scalarHXscalar for OX
scalarYscalar for Y
scalarXscalar for X
dstY vector
useApproximateMatrixEntriesflag to use approximate overlap matrix

Implements dftfe::operatorDFTClass< memorySpace >.

◆ overlapSqrtInverseMatrixTimesX()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::KohnShamDFTStandardEigenOperator< memorySpace >::overlapSqrtInverseMatrixTimesX ( dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarOinvX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst )
virtual

Computing Y = scalarOinvX*O^{-1/2}X + scalarX*X + scalarY*Y for a given X and Y in full precision.

Parameters
srcX vector
scalarOinvXscalar for O^{-1}X
scalarYscalar for Y
scalarXscalar for X
dstY vector

Implements dftfe::operatorDFTClass< memorySpace >.


The documentation for this class was generated from the following file: