20#ifndef operatorDFTClass_h
21#define operatorDFTClass_h
30#if defined(DFTFE_WITH_DEVICE)
41 template <dftfe::utils::MemorySpace memorySpace>
64 init(
const std::vector<double> &kPointCoordinates,
65 const std::vector<double> &kPointWeights) = 0;
77 const double scalarHX,
81 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false) = 0;
86 const double scalarHX,
91 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false) = 0;
96 const double scalarHX,
100 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false) = 0;
105 const double scalarOX,
106 const double scalarY,
107 const double scalarX,
109 const bool useApproximateMatrixEntries =
true) = 0;
114 const double scalarOinvX,
115 const double scalarY,
116 const double scalarX,
123 const double scalarOinvX,
124 const double scalarY,
125 const double scalarX,
134 const double scalarOinvX,
135 const double scalarY,
136 const double scalarX,
145 const double scalarHX,
146 const double scalarY,
147 const double scalarX,
149 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
150 const bool skip1 =
false,
151 const bool skip2 =
false,
152 const bool skip3 =
false) = 0;
157 const double scalarHX,
158 const double scalarY,
159 const double scalarX,
162 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
163 const bool skip1 =
false,
164 const bool skip2 =
false,
165 const bool skip3 =
false) = 0;
173 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 reinitNumberWavefunctions(const dftfe::uInt numWfc)=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 dftfe::linearAlgebra::MultiVector< dataTypes::numberFP32, memorySpace > & getScratchFEMultivectorSinglePrec(const dftfe::uInt numVectors, const dftfe::uInt index)=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 overlapSqrtInverseMatrixTimesX(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 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)=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 ~operatorDFTClass()
Destructor.
Definition operator.h:51
virtual dftUtils::constraintMatrixInfo< memorySpace > * getOverloadedConstraintMatrix() const =0
virtual dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > * getOverloadedConstraintMatrixHost() const =0
virtual dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector(const dftfe::uInt numVectors, const dftfe::uInt index)=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 void reinitkPointSpinIndex(const dftfe::uInt kPointIndex, const dftfe::uInt spinIndex)=0
virtual const MPI_Comm & getMPICommunicatorDomain()=0
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()=0
Definition MemoryStorage.h:33
float numberFP32
Definition dftfeDataTypes.h:42
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10