7#ifndef __IPEXPANSIONMATRIX_HPP__
8#define __IPEXPANSIONMATRIX_HPP__
17class ExpansionMatrixSpace;
50 const Index* ExpandedPosIndices()
const;
61 const Index* CompressedPosIndices()
const;
110 const std::string&
name,
123 const std::string&
name,
125 const std::string&
prefix,
130 friend class ParExpansionMatrix;
185 delete[] compressed_pos_;
186 delete[] expanded_pos_;
198 return MakeNewExpansionMatrix();
211 return expanded_pos_;
225 return compressed_pos_;
Templated class which stores one entry for the CachedResult class.
This is the matrix space for ExpansionMatrix.
~ExpansionMatrixSpace()
Destructor.
ExpansionMatrixSpace(Index NLargeVec, Index NSmallVec, const Index *ExpPos, const int offset=0)
Constructor, given the list of elements of the large vector (of size NLargeVec) to be filtered into t...
virtual Matrix * MakeNew() const
Pure virtual method for creating a new Matrix of the corresponding type.
const Index * CompressedPosIndices() const
Accessor Method to obtain the Index array (of length NLargeVec=NRows()) that stores the mapping from ...
ExpansionMatrix * MakeNewExpansionMatrix() const
Method for creating a new matrix of this specific type.
const Index * ExpandedPosIndices() const
Accessor Method to obtain the Index array (of length NSmallVec=NCols()) that stores the mapping from ...
Class for expansion/projection matrices.
virtual void PrintImpl(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const
Print detailed information about the matrix.
ExpansionMatrix(const ExpansionMatrix &)
Copy Constructor.
virtual void SinvBlrmZMTdBrImpl(Number alpha, const Vector &S, const Vector &R, const Vector &Z, const Vector &D, Vector &X) const
X = S^{-1} (r + alpha*Z*M^Td).
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
const Index * ExpandedPosIndices() const
Return the vector of indices marking the expanded position.
virtual void ComputeColAMaxImpl(Vector &cols_norms, bool init) const
Compute the max-norm of the columns in the matrix.
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
~ExpansionMatrix()
Destructor.
const Index * CompressedPosIndices() const
Return the vector of indices marking the compressed position.
virtual void TransMultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix(transpose) vector multiply.
void PrintImplOffset(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix, Index row_offset, Index col_offset) const
void operator=(const ExpansionMatrix &)
Default Assignment Operator.
const ExpansionMatrixSpace * owner_space_
ExpansionMatrix(const ExpansionMatrixSpace *owner_space)
Constructor, taking the owner_space.
virtual void AddMSinvZImpl(Number alpha, const Vector &S, const Vector &Z, Vector &X) const
X = X + alpha*(Matrix S^{-1} Z).
ExpansionMatrix()
Default Constructor.
Class responsible for all message output.
MatrixSpace base class, corresponding to the Matrix base class.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipindex Index
Type of all indices of vectors, matrices etc.
EJournalCategory
Category Selection Enum.
EJournalLevel
Print Level Enum.
ipnumber Number
Type of all numbers.