A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete Kohn-Sham operator on vectors. More...
#include <KohnShamOperatorContextFE.h>
Public Types | |
using | ValueTypeOperator = linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis > |
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set) More... | |
using | ValueTypeOperand = linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > |
using | ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > |
using | Storage = utils::MemoryStorage< ValueTypeOperator, memorySpace > |
using | HamiltonianPtrVariant = std::variant< std::shared_ptr< Hamiltonian< float, memorySpace > >, std::shared_ptr< Hamiltonian< double, memorySpace > >, std::shared_ptr< Hamiltonian< std::complex< float >, memorySpace > >, std::shared_ptr< Hamiltonian< std::complex< double >, memorySpace > > > |
![]() | |
using | ValueTypeUnion = blasLapack::scalar_type< linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis >, linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff > > |
Public Member Functions | |
KohnShamOperatorContextFE (const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > &feBasisManager, const std::vector< HamiltonianPtrVariant > &hamiltonianComponentsVec, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type maxCellBlock, const size_type maxWaveFnBatch, const bool useOptimizedImplement=true) | |
Constructor. More... | |
~KohnShamOperatorContextFE ()=default | |
void | reinit (const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > &feBasisManager, const std::vector< HamiltonianPtrVariant > &hamiltonianVec) |
void | apply (linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y, bool updateGhostX=false, bool updateGhostY=false) const override |
![]() | |
~OperatorContext ()=default | |
Default Destructor. More... | |
virtual void | apply (MultiVector< linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff >, memorySpace > &X, MultiVector< ValueTypeUnion, memorySpace > &Y, bool updateGhostX=false, bool updateGhostY=false) const=0 |
Private Attributes | |
const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > * | d_feBasisManager |
Storage | d_hamiltonianInAllCells |
const size_type | d_maxCellBlock |
const size_type | d_maxWaveFnBatch |
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | d_linAlgOpContext |
std::vector< HamiltonianPtrVariant > | d_hamiltonianComponentsVec |
linearAlgebra::MultiVector< ValueTypeOperator, memorySpace > | d_scratchNonLocPSPApply |
const bool | d_useOptimizedImplement |
utils::MemoryStorage< ValueTypeOperand, memorySpace > | d_XCellValues |
std::shared_ptr< const ElectrostaticONCVNonLocFE< ValueTypeElectrostaticsBasis, ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim > > | d_electroONCVHamiltonian |
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete Kohn-Sham operator on vectors.
ValueTypeOperator | The datatype (float, double, complex<double>, etc.) for the underlying operator |
ValueTypeOperand | The datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act |
memorySpace | The meory sapce (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside |
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::HamiltonianPtrVariant = std::variant< std::shared_ptr<Hamiltonian<float, memorySpace> >, std::shared_ptr<Hamiltonian<double, memorySpace> >, std::shared_ptr<Hamiltonian<std::complex<float>, memorySpace> >, std::shared_ptr<Hamiltonian<std::complex<double>, memorySpace> >> |
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::Storage = utils::MemoryStorage<ValueTypeOperator, memorySpace> |
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand> |
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueTypeOperand = linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff> |
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueTypeOperator = linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis> |
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set)
dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::KohnShamOperatorContextFE | ( | const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > & | feBasisManager, |
const std::vector< HamiltonianPtrVariant > & | hamiltonianComponentsVec, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext, | ||
const size_type | maxCellBlock, | ||
const size_type | maxWaveFnBatch, | ||
const bool | useOptimizedImplement = true |
||
) |
Constructor.
|
default |
|
override |
void dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::reinit | ( | const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > & | feBasisManager, |
const std::vector< HamiltonianPtrVariant > & | hamiltonianVec | ||
) |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
mutableprivate |