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,
124 const double scalarOinvX,
125 const double scalarY,
126 const double scalarX,
135 const double scalarHX,
136 const double scalarY,
137 const double scalarX,
139 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
140 const bool skip1 =
false,
141 const bool skip2 =
false,
142 const bool skip3 =
false) = 0;
147 const double scalarHX,
148 const double scalarY,
149 const double scalarX,
152 const bool onlyHPrimePartForFirstOrderDensityMatResponse =
false,
153 const bool skip1 =
false,
154 const bool skip2 =
false,
155 const bool skip3 =
false) = 0;
163 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 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:43
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10