|
| | MultiVectorProductSpace (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, size_type numSpaces, size_type numVectorsPerSpace, ValueType initVal=utils::Types< ValueType >::zero) |
| |
| | ~MultiVectorProductSpace ()=default |
| |
| size_type | numSpaces () const |
| |
| size_type | numVectorsPerSpace () const |
| |
| | MultiVector ()=default |
| | Default Constructor. More...
|
| |
| virtual | ~MultiVector ()=default |
| | Default Destructor. More...
|
| |
| | MultiVector (const size_type size, const size_type numVectors, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const ValueType initVal=utils::Types< ValueType >::zero) |
| | Constructor for serial MultiVector with vector size, number of vectors and initial value arguments. More...
|
| |
| | MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext) |
| | Constructor for a \serial MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage). This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the MultiVector::Storage (i.e., utils::MemoryStorage). The locallyOwnedSize, ghostSize, etc., are automatically set using the size of the input Storage object. More...
|
| |
| | MultiVector (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors, const ValueType initVal=utils::Types< ValueType >::zero) |
| | Constructor for a distributed MultiVector based on an input MPIPatternP2P. More...
|
| |
| | MultiVector (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors, const ValueType min, const ValueType max) |
| | Constructor for a distributed random MultiVector based on an input MPIPatternP2P. More...
|
| |
| | MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors) |
| | Constructor for a distributed MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage) and MPIPatternP2P. This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the input MultiVector::Storage (i.e., utils::MemoryStorage). More...
|
| |
| | MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const utils::mpi::MPIComm &mpiComm, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors, ValueType initVal=utils::Types< ValueType >::zero) |
| | Constructor for a \distributed MultiVector based on locally owned and ghost indices. More...
|
| |
| | MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange, const utils::mpi::MPIComm &mpiComm, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors, const ValueType initVal=utils::Types< ValueType >::zero) |
| | Constructor for a special case of distributed MultiVector where none none of the processors have any ghost indices. More...
|
| |
| | MultiVector (const global_size_type globalSize, const utils::mpi::MPIComm &mpiComm, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const size_type numVectors, const ValueType initVal=utils::Types< ValueType >::zero) |
| | Constructor for a distributed MultiVector based on total number of global indices. The resulting MultiVector will not contain any ghost indices on any of the processors. Internally, the vector is divided to ensure as much equitable distribution across all the processors much as possible. More...
|
| |
| | MultiVector (const MultiVector &u) |
| | Copy constructor. More...
|
| |
| | MultiVector (const MultiVector &u, const ValueType initVal) |
| | Copy constructor with reinitialisation. More...
|
| |
| | MultiVector (MultiVector &&u) noexcept |
| | Move constructor. More...
|
| |
| MultiVector & | operator= (const MultiVector &u) |
| | Copy assignment operator. More...
|
| |
| MultiVector & | operator= (MultiVector &&u) |
| | Move assignment operator. More...
|
| |
| iterator | begin () |
| | Return iterator pointing to the beginning of MultiVector data. More...
|
| |
| const_iterator | begin () const |
| | Return iterator pointing to the beginning of MultiVector data. More...
|
| |
| iterator | end () |
| | Return iterator pointing to the end of MultiVector data. More...
|
| |
| const_iterator | end () const |
| | Return iterator pointing to the end of MultiVector data. More...
|
| |
| ValueType * | data () |
| | Return the raw pointer to the MultiVector data. More...
|
| |
| const ValueType * | data () const |
| | Return the constant raw pointer to the MultiVector data. More...
|
| |
| void | setValue (const ValueType val) |
| | Set all entries of the MultiVector to a given value. More...
|
| |
| std::vector< double > | l2Norms () const |
| | Returns \( l_2 \) norms of all the \(N\) vectors in the MultiVector. More...
|
| |
| std::vector< double > | lInfNorms () const |
| | Returns \( l_{\inf} \) norms of all the \(N\) vectors in the MultiVector. More...
|
| |
| size_type | getNumberComponents () const |
| | Returns the nunber of vectors in this multi-vector. More...
|
| |
| void | updateGhostValues (const size_type communicationChannel=0) |
| |
| void | accumulateAddLocallyOwned (const size_type communicationChannel=0) |
| |
| void | updateGhostValuesBegin (const size_type communicationChannel=0) |
| |
| void | updateGhostValuesEnd () |
| |
| void | accumulateAddLocallyOwnedBegin (const size_type communicationChannel=0) |
| |
| void | accumulateAddLocallyOwnedEnd () |
| |
| bool | isCompatible (const MultiVector< ValueType, memorySpace > &rhs) const |
| |
| std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > | getMPIPatternP2P () const |
| |
| std::shared_ptr< LinAlgOpContext< memorySpace > > | getLinAlgOpContext () const |
| |
| global_size_type | globalSize () const |
| |
| size_type | localSize () const |
| |
| size_type | locallyOwnedSize () const |
| |
| size_type | ghostSize () const |
| |
| size_type | numVectors () const |
| |
template<typename ValueType,
utils::MemorySpace memorySpace>
class dftefe::linearAlgebra::MultiVectorProductSpace< ValueType, memorySpace >
MultiVector for product spaces: flat layout M × S × N where S = numSpaces, N = numVectorsPerSpace.
The base MultiVector sees numVectors = S*N (Nflattened). Flat offset for DOF i, space s, orbital n: i*S*N + s*N + n.
Covers unpolarized (S=1) and non-collinear (S=2). For collinear (S=2) use MultiVectorProductSpaceBlocked instead.