20#ifndef operatorDFTClass_h
21#define operatorDFTClass_h
30#if defined(DFTFE_WITH_DEVICE)
41 template <dftfe::utils::MemorySpace memorySpace>
56 const unsigned int index) = 0;
61 const unsigned int index) = 0;
64 init(
const std::vector<double> &kPointCoordinates,
65 const std::vector<double> &kPointWeights) = 0;
69 const unsigned int spinIndex) = 0;
77 const double scalarHX,
81 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false) = 0;
86 const double scalarHX,
90 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false) = 0;
95 const double scalarOX,
99 const bool useApproximateMatrixEntries =
true) = 0;
104 const double scalarOinvX,
105 const double scalarY,
106 const double scalarX,
114 const double scalarOinvX,
115 const double scalarY,
116 const double scalarX,
125 const double scalarHX,
126 const double scalarY,
127 const double scalarX,
129 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
130 const bool skip1 =
false,
131 const bool skip2 =
false,
132 const bool skip3 =
false) = 0;
137 const double scalarHX,
138 const double scalarY,
139 const double scalarX,
142 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
143 const bool skip1 =
false,
144 const bool skip2 =
false,
145 const bool skip3 =
false) = 0;
153 virtual const MPI_Comm &
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:43
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
virtual 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)=0
virtual 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)=0
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()=0
virtual 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)=0
virtual void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)=0
virtual 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)=0
virtual 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)=0
virtual 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)=0
virtual void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)=0
virtual ~operatorDFTClass()
Destructor.
Definition operator.h:51
virtual dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & getScratchFEMultivectorSinglePrec(const unsigned int numVectors, const unsigned int index)=0
virtual dftUtils::constraintMatrixInfo< memorySpace > * getOverloadedConstraintMatrix() const =0
virtual dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > * getOverloadedConstraintMatrixHost() const =0
virtual void reinitNumberWavefunctions(const unsigned int numWfc)=0
virtual 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=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)=0
virtual const MPI_Comm & getMPICommunicatorDomain()=0
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()=0
virtual dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector(const unsigned int numVectors, const unsigned int index)=0
Definition MemoryStorage.h:33
float numberFP32
Definition dftfeDataTypes.h:45
Definition pseudoPotentialToDftfeConverter.cc:34