DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim > Class Template Reference

A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete Kohn-Sham operator on vectors. More...

#include <KohnShamOperatorContextFE.h>

Inheritance diagram for dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >:
Collaboration diagram for dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >:

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 > > >
 
- Public Types inherited from dftefe::linearAlgebra::OperatorContext< linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis >, linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff >, 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
 
- Public Member Functions inherited from dftefe::linearAlgebra::OperatorContext< linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionBasis >, linearAlgebra::blasLapack::scalar_type< ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff >, memorySpace >
 ~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< HamiltonianPtrVariantd_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
 

Detailed Description

template<typename ValueTypeElectrostaticsCoeff, typename ValueTypeElectrostaticsBasis, typename ValueTypeWaveFunctionCoeff, typename ValueTypeWaveFunctionBasis, utils::MemorySpace memorySpace, size_type dim>
class dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >

A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete Kohn-Sham operator on vectors.

Template Parameters
ValueTypeOperatorThe datatype (float, double, complex<double>, etc.) for the underlying operator
ValueTypeOperandThe datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act
memorySpaceThe meory sapce (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside

Member Typedef Documentation

◆ HamiltonianPtrVariant

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
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> >>

◆ Storage

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::Storage = utils::MemoryStorage<ValueTypeOperator, memorySpace>

◆ ValueType

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand>

◆ ValueTypeOperand

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
using dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::ValueTypeOperand = linearAlgebra::blasLapack::scalar_type<ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionCoeff>

◆ ValueTypeOperator

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
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)

Constructor & Destructor Documentation

◆ KohnShamOperatorContextFE()

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
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.

Here is the call graph for this function:

◆ ~KohnShamOperatorContextFE()

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::~KohnShamOperatorContextFE ( )
default

Member Function Documentation

◆ apply()

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::apply ( linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &  X,
linearAlgebra::MultiVector< ValueType, memorySpace > &  Y,
bool  updateGhostX = false,
bool  updateGhostY = false 
) const
override
Here is the call graph for this function:

◆ reinit()

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
void dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::reinit ( const basis::FEBasisManager< ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim > &  feBasisManager,
const std::vector< HamiltonianPtrVariant > &  hamiltonianVec 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ d_electroONCVHamiltonian

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr< const ElectrostaticONCVNonLocFE<ValueTypeElectrostaticsBasis, ValueTypeElectrostaticsCoeff, ValueTypeWaveFunctionBasis, ValueTypeWaveFunctionCoeff, memorySpace, dim> > dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_electroONCVHamiltonian
mutableprivate

◆ d_feBasisManager

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
const basis::FEBasisManager<ValueTypeOperand, ValueTypeWaveFunctionBasis, memorySpace, dim>* dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_feBasisManager
private

◆ d_hamiltonianComponentsVec

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
std::vector<HamiltonianPtrVariant> dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_hamiltonianComponentsVec
private

◆ d_hamiltonianInAllCells

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
Storage dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_hamiltonianInAllCells
private

◆ d_linAlgOpContext

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace> > dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_linAlgOpContext
private

◆ d_maxCellBlock

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
const size_type dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_maxCellBlock
private

◆ d_maxWaveFnBatch

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
const size_type dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_maxWaveFnBatch
private

◆ d_scratchNonLocPSPApply

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
linearAlgebra::MultiVector<ValueTypeOperator, memorySpace> dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_scratchNonLocPSPApply
mutableprivate

◆ d_useOptimizedImplement

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
const bool dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_useOptimizedImplement
private

◆ d_XCellValues

template<typename ValueTypeElectrostaticsCoeff , typename ValueTypeElectrostaticsBasis , typename ValueTypeWaveFunctionCoeff , typename ValueTypeWaveFunctionBasis , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage<ValueTypeOperand, memorySpace> dftefe::ksdft::KohnShamOperatorContextFE< ValueTypeElectrostaticsCoeff, ValueTypeElectrostaticsBasis, ValueTypeWaveFunctionCoeff, ValueTypeWaveFunctionBasis, memorySpace, dim >::d_XCellValues
mutableprivate

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