26#ifndef dftefeMultiVectorOps_h
27#define dftefeMultiVectorOps_h
41 namespace linearAlgebra
97 template <
typename ValueTypeOperator,
98 typename ValueTypeOperand,
110 memorySpace>> &scratchXin,
113 memorySpace>> &scratchXout,
116 memorySpace>> &scratchXinSmall,
119 memorySpace>> &scratchXoutSmall);
139 template <
typename ValueTypeOperator,
140 typename ValueTypeOperand,
152 memorySpace>> &scratchXin,
155 memorySpace>> &scratchXout,
158 memorySpace>> &scratchXinSmall,
161 memorySpace>> &scratchXoutSmall);
180 template <
typename ValueType, utils::MemorySpace memorySpace>
199 template <
typename ValueType, utils::MemorySpace memorySpace>
215 template <
typename ValueType1,
228 template <
typename ValueType1,
Manager class for ELPA and ScaLAPACK.
Definition: ElpaScalapackManager.h:43
Definition: LinAlgOpContext.h:52
Stateless class of static functions for spin-aware projection and rotation of product-space multivect...
Definition: MultiVectorOps.h:74
static void project(const OperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace > &Op, MultiVectorProductSpaceBlocked< ValueTypeOperand, memorySpace > &X, std::vector< ScaLAPACKMatrix< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > > > &Ps, const ElpaScalapackManager &elpa, std::shared_ptr< MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > > &scratchXin, std::shared_ptr< MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > > &scratchXout, std::shared_ptr< MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > > &scratchXinSmall, std::shared_ptr< MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > > &scratchXoutSmall)
Blocked overload (collinear, MultiVectorProductSpaceBlocked).
Definition: MultiVectorOps.t.cpp:650
static void copyToBatch(const MultiVectorProductSpace< ValueType1, memorySpace > &X, size_type srcStart, size_type numVecBatch, MultiVector< ValueType2, memorySpace > &Xbatch, LinAlgOpContext< memorySpace > &context)
Definition: MultiVectorOps.t.cpp:811
static void copyFromBatch(const MultiVector< ValueType1, memorySpace > &Ybatch, size_type dstStart, size_type numVecBatch, MultiVectorProductSpace< ValueType2, memorySpace > &Y, LinAlgOpContext< memorySpace > &context)
Definition: MultiVectorOps.t.cpp:847
static void rotate(MultiVectorProductSpaceBlocked< ValueType, memorySpace > &X, const std::vector< ScaLAPACKMatrix< ValueType > > &Qs, const ElpaScalapackManager &elpa)
Blocked rotate overload (collinear, MultiVectorProductSpaceBlocked).
Definition: MultiVectorOps.t.cpp:756
Type-tag subclass of MultiVectorProductSpace for collinear spin (S=2).
Definition: MultiVectorProductSpaceBlocked.h:47
MultiVector for product spaces: flat layout M × S × N where S = numSpaces, N = numVectorsPerSpace.
Definition: MultiVectorProductSpace.h:52
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Abstract class to encapsulate the action of a discrete operator on vectors, matrices,...
Definition: OperatorContext.h:51
Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
Definition: ScalapackWrapper.h:43
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