DFT-FE 1.1.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::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 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::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)
 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)
 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 ()
 Computing Y = scalarOX*OX + scalarX*X + scalarY*Y for a given X and Y in full precision.
 
- 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::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_VeffExtPotJxW
 
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
 
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
 
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::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 >.


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