Go to the documentation of this file.
7 #ifndef __IPCOMPOUNDSYMMATRIX_HPP__
8 #define __IPCOMPOUNDSYMMATRIX_HPP__
17 class CompoundSymMatrixSpace;
73 return ConstComp(irow, jcol);
88 return Comp(irow, jcol);
124 const std::string& name,
126 const std::string& prefix
154 std::vector<std::vector<SmartPtr<Matrix> > >
comps_;
176 if(
IsValid(comps_[irow][jcol]) )
180 else if(
IsValid(const_comps_[irow][jcol]) )
182 return GetRawPtr(const_comps_[irow][jcol]);
199 if(
IsValid(comps_[irow][jcol]) )
257 bool auto_allocate =
false
271 return comp_spaces_[irow][jcol];
278 return ncomp_spaces_;
287 return MakeNewCompoundSymMatrix();
void SetCompSpace(Index irow, Index jcol, const MatrixSpace &mat_space, bool auto_allocate=false)
Set the component SymMatrixSpace.
Class for symmetric matrices consisting of other matrices.
CompoundSymMatrix * MakeNewCompoundSymMatrix() const
Method for creating a new matrix of this specific type.
MatrixSpace base class, corresponding to the Matrix base class.
Index NComps_Dim() const
Number of block rows and columns.
CompoundSymMatrix()
Default Constructor.
void SetComp(Index irow, Index jcol, const Matrix &matrix)
Method for setting an individual component at position (irow, icol) in the compound matrix.
bool dimensions_set_
boolean indicating if the compound matrix space is in a "valid" state
bool DimensionsSet() const
Method to check whether or not the spaces are valid.
CompoundSymMatrix(const CompoundSymMatrix &)
Copy Constructor.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
double Number
Type of all numbers.
bool MatricesValid() const
method to check wether or not the matrices are valid
SmartPtr< const Matrix > GetComp(Index irow, Index jcol) const
Method for retrieving one block from the compound matrix.
SmartPtr< Matrix > GetCompNonConst(Index irow, Index jcol)
Non const version of GetComp.
This is the matrix space for CompoundSymMatrix.
const CompoundSymMatrixSpace * owner_space_
Copy of the owner_space ptr as a CompoundSymMatrixSpace.
SmartPtr< CompoundSymMatrix > MakeNewCompoundSymMatrix() const
Method for creating a new matrix of this specific type.
EJournalLevel
Print Level Enum.
std::vector< std::vector< SmartPtr< const MatrixSpace > > > comp_spaces_
2-dim std::vector of matrix spaces for the components.
int Index
Type of all indices of vectors, matrices etc.
U * GetRawPtr(const SmartPtr< U > &smart_ptr)
std::vector< std::vector< SmartPtr< Matrix > > > comps_
Vector of vectors containing the components.
Template class for Smart Pointers.
SmartPtr< const MatrixSpace > GetCompSpace(Index irow, Index jcol) const
Obtain the component MatrixSpace in block row irow and block column jcol.
EJournalCategory
Category Selection Enum.
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
CompoundSymMatrixSpace(const CompoundSymMatrix &)
Copy Constructor.
void operator=(const CompoundSymMatrix &)
Default Assignment Operator.
CompoundSymMatrixSpace()
Default constructor.
CompoundSymMatrix(const CompoundSymMatrixSpace *owner_space)
Constructor, taking only the number for block components into the row and column direction.
void SetCompNonConst(Index irow, Index jcol, Matrix &matrix)
Non const version of the same method.
bool matrices_valid_
boolean indicating if the compound matrix is in a "valid" state
std::vector< Index > block_dim_
Vector of the number of rows in each comp column.
Index ncomp_spaces_
Number of components per row and column.
Class responsible for all message output.
Index GetBlockDim(Index irow_jcol) const
Get the dimension dim for block row (or column) irow_jcol.
This is the base class for all derived symmetric matrix types.
virtual SymMatrix * MakeNewSymMatrix() const
Pure virtual method for creating a new matrix of this specific type.
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
std::vector< std::vector< SmartPtr< const Matrix > > > const_comps_
Vector of vectors containing the const components.
SymMatrixSpace base class, corresponding to the SymMatrix base class.
void SetBlockDim(Index irow_jcol, Index dim)
Set the dimension dim for block row (or column) irow_jcol.
bool IsValid(const SmartPtr< U > &smart_ptr)
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.
bool IsNull(const SmartPtr< U > &smart_ptr)
const Matrix * ConstComp(Index irow, Index jcol) const
Internal method to return a const pointer to one of the comps.
~CompoundSymMatrixSpace()
Destructor.
~CompoundSymMatrix()
Destructor.
CompoundSymMatrixSpace & operator=(const CompoundSymMatrixSpace &)
Default Assignment Operator.
std::vector< std::vector< bool > > allocate_block_
2-dim std::vector of booleans deciding whether to allocate a new matrix for the blocks automagically
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
Matrix * Comp(Index irow, Index jcol)
Internal method to return a non-const pointer to one of the comps.
CompoundSymMatrixSpace(Index ncomp_spaces, Index total_dim)
Constructor, given the number of blocks (same for rows and columns), as well as the total dimension o...