26#ifndef dftefe_HamiltonianSpinBlockCopyKernels_h
27#define dftefe_HamiltonianSpinBlockCopyKernels_h
45 template <
typename ValueType, utils::MemorySpace memorySpace>
71 const std::vector<std::pair<size_type, size_type>> &spinIdsFilled,
72 const std::vector<size_type> & numCellDofs,
76 template <
typename ValueType, utils::MemorySpace memorySpace>
83 const std::vector<std::pair<size_type, size_type>> &spinIdsFilled,
84 const std::vector<size_type> & numCellDofs,
90 basisOverlapSize += d * d;
92 const ValueType *srcPtr = src.
begin();
93 ValueType * dstPtr = dst.
begin();
97 const size_type sRow = spinIdsFilled[k].first;
98 const size_type sCol = spinIdsFilled[k].second;
109 cellDstOffset + (sCol * d + j) * Sd + sRow * d + i :
110 cellDstOffset + (j * S + sCol) * Sd + i * S + sRow;
112 srcPtr[k * basisOverlapSize + cellSrcOffset + j * d + i];
114 cellSrcOffset += d * d;
115 cellDstOffset += Sd * Sd;
120#ifdef DFTEFE_WITH_DEVICE
121 template <
typename ValueType>
131 const std::vector<std::pair<size_type, size_type>> &spinIdsFilled,
132 const std::vector<size_type> & numCellDofs,
Definition: HamiltonianSpinBlockCopyKernels.h:47
static void copyIntoBlock(const utils::MemoryStorage< ValueType, memorySpace > &src, utils::MemoryStorage< ValueType, memorySpace > &dst, size_type S, SpinStorageLayout layout, const std::vector< std::pair< size_type, size_type > > &spinIdsFilled, const std::vector< size_type > &numCellDofs, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext)
Definition: HamiltonianSpinBlockCopyKernels.h:78
Definition: LinAlgOpContext.h:52
Definition: MemoryStorage.h:38
iterator begin()
Return iterator pointing to the beginning of point data.
Definition: MemoryStorage.t.cpp:127
SpinStorageLayout
Definition: HamiltonianSpinBlockCopyKernels.h:40
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9