7#ifndef __IPCOMPOUNDMATRIX_HPP__
8#define __IPCOMPOUNDMATRIX_HPP__
17class CompoundMatrixSpace;
108 inline Index NComps_Rows()
const;
111 inline Index NComps_Cols()
const;
162 const std::string&
name,
190 std::vector<std::vector<SmartPtr<Matrix> > >
comps_;
206 inline const Matrix* ConstComp(
321 return MakeNewCompoundMatrix();
This is the matrix space for CompoundMatrix.
bool Diagonal() const
True if the blocks lie on the diagonal - can make some operations faster.
Index NComps_Rows() const
Number of block rows.
std::vector< std::vector< bool > > allocate_block_
2-dim std::vector of booleans deciding whether to allocate a new matrix for the blocks automagically
CompoundMatrixSpace()
Default constructor.
Index ncomps_cols_
Number of block columns.
Index GetBlockRows(Index irow) const
Get the number nrows of rows in row-block number irow.
CompoundMatrixSpace & operator=(const CompoundMatrixSpace &)
Default Assignment Operator.
Index NComps_Cols() const
Number of block columns.
void SetBlockRows(Index irow, Index nrows)
Set the number nrows of rows in row-block number irow.
void SetCompSpace(Index irow, Index jcol, const MatrixSpace &mat_space, bool auto_allocate=false)
Set the component MatrixSpace.
Index GetBlockCols(Index jcol) const
Set the number ncols of columns in column-block number jcol.
virtual Matrix * MakeNew() const
Pure virtual method for creating a new Matrix of the corresponding type.
CompoundMatrixSpace(Index ncomps_rows, Index ncomps_cols, Index total_nRows, Index total_nCols)
Constructor, given the number of row and columns blocks, as well as the totel number of rows and colu...
SmartPtr< const MatrixSpace > GetCompSpace(Index irow, Index jcol) const
Obtain the component MatrixSpace in block row irow and block column jcol.
std::vector< Index > block_cols_
Vector of the number of cols in each comp row.
CompoundMatrixSpace(const CompoundMatrixSpace &)
Copy Constructor.
std::vector< Index > block_rows_
Vector of the number of rows in each comp column.
bool diagonal_
true if the CompoundMatrixSpace only has Matrix spaces along the diagonal.
std::vector< std::vector< SmartPtr< const MatrixSpace > > > comp_spaces_
2-dim std::vector of matrix spaces for the components
Index ncomps_rows_
Number of block rows.
CompoundMatrix * MakeNewCompoundMatrix() const
Method for creating a new matrix of this specific type.
void SetBlockCols(Index jcol, Index ncols)
Set the number ncols of columns in column-block number jcol.
bool DimensionsSet() const
Auxiliary function for debugging to set if all block dimensions have been set.
~CompoundMatrixSpace()
Destructor.
bool dimensions_set_
Store whether or not the dimensions are valid.
Class for Matrices consisting of other matrices.
void CreateBlockFromSpace(Index irow, Index jcol)
Method to create a new matrix from the space for this block.
virtual void TransMultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix(transpose) vector multiply.
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
void operator=(const CompoundMatrix &)
Default Assignment Operator.
void SetComp(Index irow, Index jcol, const Matrix &matrix)
Method for setting an individual component at position (irow, icol) in the compound matrix.
virtual ~CompoundMatrix()
Destructor.
SmartPtr< Matrix > GetCompNonConst(Index irow, Index jcol)
Method for retrieving one block from the compound matrix as a non-const Matrix.
void SetCompNonConst(Index irow, Index jcol, Matrix &matrix)
Method to set a non-const Matrix entry.
SmartPtr< const Matrix > GetComp(Index irow, Index jcol) const
Method for retrieving one block from the compound matrix as a const Matrix.
const Matrix * ConstComp(Index irow, Index jcol) const
const CompoundMatrixSpace * owner_space_
Copy of the owner_space ptr as a CompoundMatrixSpace instead of MatrixSpace.
std::vector< std::vector< SmartPtr< const Matrix > > > const_comps_
Matrix of const matrix's containing the components.
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).
bool MatricesValid() const
Method to check whether or not the matrices are valid.
Index NComps_Rows() const
Number of block rows of this compound matrix.
virtual void ComputeColAMaxImpl(Vector &cols_norms, bool init) const
Compute the max-norm of the columns in the matrix.
virtual void AddMSinvZImpl(Number alpha, const Vector &S, const Vector &Z, Vector &X) const
X = X + alpha*(Matrix S^{-1} Z).
CompoundMatrix(const CompoundMatrixSpace *owner_space)
Constructor, taking the owner_space.
CompoundMatrix()
Default Constructor.
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
std::vector< std::vector< SmartPtr< Matrix > > > comps_
Matrix of matrix's containing the components.
Index NComps_Cols() const
Number of block colmuns of this compound matrix.
Matrix * Comp(Index irow, Index jcol)
bool matrices_valid_
boolean indicating if the compound matrix is in a "valid" state
CompoundMatrix(const CompoundMatrix &)
Copy Constructor.
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
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.
Templated class which stores one entry for the CachedResult class.
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.
bool IsValid(const SmartPtr< U > &smart_ptr)
U * GetRawPtr(const SmartPtr< U > &smart_ptr)
ipindex Index
Type of all indices of vectors, matrices etc.
EJournalCategory
Category Selection Enum.
EJournalLevel
Print Level Enum.
ipnumber Number
Type of all numbers.