26#ifndef dftefeKineticFE_h
27#define dftefeKineticFE_h
43 template <
typename ValueTypeBasisData,
44 typename ValueTypeBasisCoeff,
48 :
public Hamiltonian<ValueTypeBasisData, memorySpace>,
49 public Energy<linearAlgebra::blasLapack::real_type<
50 linearAlgebra::blasLapack::scalar_type<ValueTypeBasisData,
51 ValueTypeBasisCoeff>>>
86 evalEnergy(
const std::vector<RealType> & occupation,
92 memorySpace> &waveFunc);
101 bool updateGhostY)
const override;
120 std::shared_ptr<linearAlgebra::LinAlgOpContext<memorySpace>>
132 std::shared_ptr<linearAlgebra::MultiVector<ValueType, memorySpace>>
134 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:54
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
Definition: FEBasisOperations.h:64
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on...
Definition: LaplaceOperatorContextFE.h:63
Definition: Hamiltonian.h:35
Definition: KineticFE.h:52
bool hasNonLocalComponent() const override
Definition: KineticFE.t.cpp:441
std::vector< size_type > d_numCellDofs
Definition: KineticFE.h:129
void applyNonLocal(linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &X, linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &Y, bool updateGhostX, bool updateGhostY) const override
Definition: KineticFE.t.cpp:414
size_type d_S
Definition: KineticFE.h:127
void getLocal(Storage &cellWiseStorage) const override
Definition: KineticFE.t.cpp:131
linearAlgebra::blasLapack::scalar_type< ValueTypeBasisData, ValueTypeBasisCoeff > ValueType
Definition: KineticFE.h:56
size_type d_basisOverlapSize
Definition: KineticFE.h:130
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_psiBatchSmall
Definition: KineticFE.h:133
void reinit(std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > feBasisDataStorage)
Definition: KineticFE.t.cpp:84
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_YBatch
Definition: KineticFE.h:133
SpinStorageLayout d_layout
Definition: KineticFE.h:128
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > d_linAlgOpContext
Definition: KineticFE.h:121
std::shared_ptr< Storage > d_cellWiseStorageKineticEnergy
Definition: KineticFE.h:124
const size_type d_waveFuncBatchSize
Definition: KineticFE.h:119
std::shared_ptr< electrostatics::LaplaceOperatorContextFE< ValueTypeBasisData, ValueTypeBasisCoeff, memorySpace, dim > > d_laplaceOp
Definition: KineticFE.h:142
RealType d_energy
Definition: KineticFE.h:118
RealType getEnergy() const override
Definition: KineticFE.t.cpp:403
const size_type d_maxCellBlock
Definition: KineticFE.h:119
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_YBatchSmall
Definition: KineticFE.h:133
SpinMode d_spinMode
Definition: KineticFE.h:126
std::shared_ptr< linearAlgebra::MultiVector< ValueType, memorySpace > > d_psiBatch
Definition: KineticFE.h:133
void evalEnergy(const std::vector< RealType > &occupation, const basis::FEBasisManager< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > &feBMPsi, const linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &waveFunc)
Definition: KineticFE.t.cpp:163
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition: KineticFE.h:135
std::shared_ptr< basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace, dim > > d_feBasisOp
Definition: KineticFE.h:117
std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeBasisData, memorySpace > > d_feBasisDataStorage
Definition: KineticFE.h:112
linearAlgebra::blasLapack::real_type< ValueType > RealType
Definition: KineticFE.h:58
bool hasLocalComponent() const override
Definition: KineticFE.t.cpp:430
Definition: LinAlgOpContext.h:52
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
SpinMode
Definition: KSAttributes.h:55
SpinStorageLayout
Definition: HamiltonianSpinBlockCopyKernels.h:40
typeInternal::real_type< ValueType > real_type
Definition: BlasLapackTypedef.h:177
typeInternal::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:183
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9